wpʗ$ddlZddlZddlZddlZddlmZmZddlmZddl m Z ddl m Z m Z ddlmZddlmZddlmZdd lmZmZdd lmZmZdd lmZdd lmZdd lmZddlm Z ddl!m"Z"ej#e$Z%Gdde j&Z'dS)N) DoesNotExistIntegrityError) MessageType)run_in_executor)ValidationErrorlookup)run_in_executor_decorator) web_server)Scope)Modsec Permissions) DisabledRuleDisabledRuleDomain)modsec_app_version_detector)shared_disabled_rules)waf_rules_configurator) hosting_panel)GenericPanelModSecExceptionceZdZejZfdZejddddZ dZ ejdddZ ejdd e dd Z ejdd d Zejdd dZe dZdefdZedZxZS)DisabledRulesEndpointsczt|tj|_dSN)super__init__r HostingPanelhp)selfsink __class__s T/opt/imunify360/venv/lib/python3.11/site-packages/im360/simple_rpc/disabled_rules.pyrzDisabledRulesEndpoints.__init__s/ ,..rulesdisableNc K||pg}|r|dkrtdt|jd{V}t||s2tdt||z |||||d{V}|dkr+|t||zd{V|j tj ||||pdtj d{VdS)Nmodsecz&Domains only allowed for plugin=modsecz-Some of the provided domains do not exist: {}) plugin_idrulenamedomains timestamp)._DisabledRulesEndpoints__check_edit_is_enabledrsetrget_user_domainsissubsetformat_store_disabled_rule_sync_modsec_configs_sinkprocess_messager RuleDisabledtime)rpluginidr(r) panel_domains sync_domainss r disable_rulez#DisabledRulesEndpoints.disable_rule"s $$&&&-R  Lv))!"JKK K$'":":"<"<<<<<<<== 7||$$]33 !?FFLL=0 "66 Bg         X  ++C ,=,= ,MNN N N N N N N Nj((  $  D)++               r!chKtj}t|fdd{VdS)NctjtjktjkSr)rdeletewherer6rule_idexecuter7r6sr z>DisabledRulesEndpoints._delete_disabled_rule..Ls;L')) U<&&0,2F"2L M M WYYr!)asyncioget_event_loopr)rr6r7loops `` r _delete_disabled_rulez,DisabledRulesEndpoints._delete_disabled_ruleHsl%''                 r!enablecK|tj} t|fdd{Vn#t$rYdSwxYwdkrdt|fdd{VD}|d{Vt |jd{V}| t ||zd{Vn|d{V|j tj tjd{VdS)Nc0tjS)Nr6r?)rgetrAsr rBz4DisabledRulesEndpoints.enable_rule..Xsl.fbIIIr!r%cg|] }|d S)r).0ds r z6DisabledRulesEndpoints.enable_rule..^s,   !   r!ctjtjtjjkSr)rselectdomainr>disabled_rule_id_idr7tuples)drsr rBz4DisabledRulesEndpoints.enable_rule..bsA.5*1U-ARUJKKVXX r!)r&r'r*)r+rCrDrrrFr,rr-r1r2r3r RuleEnabledr5)rr6r7rEr)r8rVs `` @r enable_rulez"DisabledRulesEndpoints.enable_ruleQs $$&&&%'' &IIIIIBB    FF  X    .     G,,VR88 8 8 8 8 8 8 8dg&>&>&@&@ @ @ @ @ @ @AAM++CLL=,HII I I I I I I I I,,VR88 8 8 8 8 8 8 8j((  # rTY[[              sA AAz list-disabledc.tj|||Sr)rfetch)rlimitoffsetorder_bys r list_disabled_rulesz*DisabledRulesEndpoints.list_disabled_rulesus!%:::r!zupdate-app-specific-rulescKtjstd tjd{VdS#tjt jtf$r!}tt|d}~wwxYw)Nz)App specific ruleset setting is disabled.) r APP_SPECIFIC_RULESETrrupdate_waf_rules_configNotSupportedWebserverErrorrDatabaseNotFoundErrorNotImplementedErrorstr)res r update_app_based_rulesz-DisabledRulesEndpoints.update_app_based_ruleszs* O!"MNN N *(@BB B B B B B B B B B " = ' =   * * * "#a&&)) )  *s:!A<A77A<zupdate-shared-disabled-rulescKtj}ttjd}t d||D}td|rd |nd|j |d{V}|rtj d{VdSdS)Nr%c,g|]}t|SrM)re)rNr's r rPzLDisabledRulesEndpoints.list_update_shared_disabled_rules..sGGGDc$iiGGGr!z!Syncing shared disabled rules: %s z(empty))disabled_rules$get_shared_disabled_modsec_rules_idsr,rget_global_disabledlistunionloggerinfojoinrsync_global_disabled_rulesr graceful_restart)r rules_filerules_dbr"changeds r !list_update_shared_disabled_rulesz8DisabledRulesEndpoints.list_update_shared_disabled_ruless#HJJ |7AABBGGHNN:,F,FGGGHH /$ 3CHHUOOO)   ::5AAAAAAAA  0-// / / / / / / / / / 0 0r!ct|} tj|||}|D]}t j||n#t $rtj||}t j tj |j kD]}| |j t j tj |j k|D]}t j|j |YnwxYwt!|S)N)r6r?r()rTrSrJ)r,rinsertr@rcreaterrKrRr>rTr7addrSr= create_or_getrn) rr6r7r(r)r9 inserted_idrOrVs r r0z+DisabledRulesEndpoints._store_disabled_rules{7||  &-rgii $  ")(3A    !<<z>DisabledRulesEndpoints._sync_modsec_configs..s`  %$8(Ar!c*tjdS)Nr%)rrmrMr!r rBz=DisabledRulesEndpoints._sync_modsec_configs..s,:8DDr!)rCrDrngatherrsync_disabled_rules_for_domainsdictziprrrerrsr rt)rr) domain_list rules_listrfr"rwrEs @r r1z+DisabledRulesEndpoints._sync_modsec_configss%''7mm ">%         1 g==[*5566+ 1 1 1"#a&&))q 0 1 & DD        ::5AAAAAAAA  0-// / / / / / / / / / 0 0s=B B1B,,B1c<tjstddS)Nz"Local rule management is disabled.)r ALLOW_LOCAL_RULES_MANAGEMENTrrMr!r __check_edit_is_enabledz.DisabledRulesEndpoints.__check_edit_is_enableds)7 H!"FGG G H Hr!r)__name__ __module__ __qualname__r IM360SCOPErrbindr:rFrXr r^rgrxr0r,r1 staticmethodr+ __classcell__)rs@r rrs KE/////V[)$$# # # %$# J   V[(##! ! $#! FV[/**;;;+*;V[566 * *76 *V[899 0 0:9 0"""60#0000>HH\HHHHHr!r)(rCrloggingr5peeweerr"defence360agent.contracts.messagesr$defence360agent.model.simplificationrdefence360agent.rpc_toolsrrdefence360agent.rpc_tools.utilsr defence360agent.subsysr defence360agent.utilsr im360.contracts.configr r im360.model.incidentrr im360.subsysrrrkrim360.subsys.panelsr(im360.subsys.panels.generic.mod_securityr getLoggerrrp RootEndpointsrrMr!r rs ////////::::::@@@@@@========EEEEEE------''''''66666666AAAAAAAA444444@@@@@@//////------  8 $ $wHwHwHwHwHV1wHwHwHwHwHr!