cMr&ddlZddlmZddlmZddlmZddlmZm Z m Z ddl m Z ddl mZmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZmZmZmZddlm Z ddl!m"Z"m#Z#ee$Z%ede j&Z'GddeZ(dS)N) getLogger)utils) MessageType) MessageSinkScopeexpect) FILES_DIR)ModsecVendorsErrorPanelException)register_lock_file)recurring_check) check_lock)DAY)Modsec)ModsecImunifyVendorNotInstalledModsecNotInstalledVendorsis_modsec_lockeduse_modsec_lock) HostingPanel)/update_account_compromise_prevention_rule_stateupdate_vendorszmodsec-rules-checkc&eZdZedz ZdZdZdZedZ e e de dz e d Zd Zed efd Zeejejd ZeejdZdS)ModsecRulesetCheckerzmodsec/v2/VERSIONc>d|_d|_d|_d|_dSN)_loop_task_install_rules_taskpanelselfs Y/opt/imunify360/venv/lib/python3.11/site-packages/im360/plugins/modsec_ruleset_checker.py__init__zModsecRulesetChecker.__init__%s#  #'  cKt|_||_|j||_|j||_dSr)rrr create_taskreinstall_vendor_if_neededr update_rulesr)r!loops r" create_sinkz ModsecRulesetChecker.create_sink+se!^^  Z++D,K,K,M,MNN #':#9#9$:K:K:M:M#N#N   r$cK|j|j|jd{V|jd{VdSr)rcancelrr s r"shutdownzModsecRulesetChecker.shutdown1sj   '')))j&&&&&&&&&&r$cKtd}|jd} |d{V}n#tt f$rd}YnwxYw| t j|vrZt dt|tt j| d{VnA#tj$rt$r%}td|Yd}~nd}~wwxYw|j|dS#|j|wxYw)NT)check_for_changeszhInstalled i360 vendor %s does not match expected type of ruleset: %s Trying to reinstall modsec rulesetz;Something went wrong during reinstalling modsec ruleset: %s)rinstalling_settings_varsetget_i360_vendor_namerrrRULESETlowerloggerinfostrapply_modsec_files_updateasyncioCancelledError Exceptionerrorreset)r!rtokeninstalled_im360_vendores r"r'z/ModsecRulesetChecker.reinstall_vendor_if_needed7st444-11$77 7 .05/I/I/K/K)K)K)K)K)K)K&&)/ . . . *.&&&  .'.>''))1GGG G.//''  55777777777%        LLM           ) / / 6 6 6 6 6E ) / / 6 6 6 6sNA C A C A  A?C D= D9DD=DD==ET)check_period_firstcheck_lock_period lock_filec>K|d{VdS)zY Reinstall ModSec rules if installed version is not the same as in files N) _update_rulesr s r"r(z!ModsecRulesetChecker.update_rules]s2  """""""""""r$cJKtrdS |jd{V}n#ttf$rYdSwxYw|}|r=|r=||kr9t d||tddd{VdSdSdSdS)Nz7Reinstalling ModSec rules. Installed: %s. Available: %sT) is_updated) rrget_i360_vendor_versionr r get_vendor_version_from_filesr5r6r)r!installed_vendor_versionavailable_vendor_versions r"rFz"ModsecRulesetChecker._update_rulesis     F j88:::::::: % $#N3    FF #'#E#E#G#G # <(@ <'+CCC M,, %Td;;;;;;;;;;;; < < < <CCs4A A returnc t|j5}|cdddS#1swxYwYdS#t$rYdSwxYw)N)open VERSION_FILEreadstripFileNotFoundError)clsfs r"rJz2ModsecRulesetChecker.get_vendor_version_from_files~s c&'' (1vvxx~~'' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (    22 s3A&A  A A  AA A A$#A$c>K|d{VdSr)r'r!_s r"on_config_updatez%ModsecRulesetChecker.on_config_updates2--///////////r$c2Ktd{VdS)z{ Update *WP_REDIRECT_CONF* to apply changes to *cms_account_compromise_prevention* config setting. N)rrXs r"'check_cms_account_compromise_preventionz???????????r$N)__name__ __module__ __qualname__r rQr#r*r-rr'r rr LOCK_FILEr(rF classmethodr7rJrr ConfigUpdaterlog_error_and_ignorerZr\r$r"rr"sM22L OOO ''' #7#7_#7J_'  ##  # <<<*c[ VK $%%U!!00"!&%0 VK $%%@@&%@@@r$r))r9loggingrdefence360agentr"defence360agent.contracts.messagesr!defence360agent.contracts.pluginsrrrdefence360agent.filesr "defence360agent.subsys.panels.baser r 'defence360agent.subsys.persistent_stater defence360agent.utilsr defence360agent.utils.check_lockrdefence360agent.utils.commonrim360.contracts.configrim360.subsys.panels.baserrrr!im360.subsys.panels.hosting_panelr im360.subsys.panels.update_hooksrrr]r5IM360r`rrdr$r"rts!!!!!!::::::HHHHHHHHHH++++++GFFFFF111111777777,,,,,,)))))) ;::::: 8    3U[ A A o@o@o@o@o@;o@o@o@o@o@r$