pLy}dZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZmZdd lmZdd lmZmZdd lmZd gZejeZedZedZ edZ!Gdd eZdS)zeServices manager plugin. It enables/disables various service based on an imunify360 config change. N)Path)randint)NamedTemporaryFile)utils)plugins)svcctl) load_state save_state)ServiceManager)configmessages)csfr zB/opt/imunify360/venv/share/imunify360/imunify360-ual.cron.templatez/etc/cron.d/imunify360-ual.cronz/etc/cron.d/imunify360-ualceZdZdZejjZej ddZ ddfd Z dZ e jejdejfd Zd Zd Zd Zd ZxZS)r zDService manager plugin: stop/start services based on config changes.LOGGERsyscall_monitorNunitctlct||j|j|j|j|jg|j |ptj |ptj |ptj |ptjdtd|_|js dii|_dSdS)Nr) dos_protectorualauditdscanlogdservice_managerr)super__init__ _servicesextend&_ensure_consistent_dos_protector_state_ensure_consistent_ual_state_ensure_consistend_auditd_state!_ensure_consistent_scanlogd_state_unitsupdater imunify360_dos_protector_serviceimunify360_ual_serviceimunify360_auditd_serviceimunify360_scanlogd_servicer _configs)selfr __class__s R/opt/imunify360/venv/lib/python3.11/site-packages/im360/plugins/service_manager.pyrzServiceManager.__init__'s ))) ;146      !("=:<<A&"?"A"A!GV%E%G%G#Kv'I'K'K      ##455 } 2,b1DMMM 2 2c\K|jd}|sdS|jd}tj}tjjot jd{V }||d|||kd{V||jd<td|jdS)Nr DosProtectorreloadr) r"r(r EnhancedDOSas_dictENABLEDr is_running&_ServiceManager__ensure_service_statusr )r)r old_config new_configshould_be_runnings r+rz5ServiceManager._ensure_consistent_dos_protector_state>s+o.  F]?3 '//11   & ES^5E5E/E/E/E/E/E/E+E **   *, +         *4 o&$dm44444r,_messagecK|j4d{V|d{Vdddd{VdS#1d{VswxYwYdS)N)_lockr)r)r9s r+on_strategy_changez!ServiceManager.on_strategy_changeQs: @ @ @ @ @ @ @ @==?? ? ? ? ? ? ? ? @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s> A AcKtjj}|jd}|rtd||d|dd{V|s|dSdS)NrT) missing_okUnifiedAccessLoggerFr/)r r?r3r" UAL_CRON_PATHunlinkr5_create_ual_cronjobr)r8rs r+rz+ServiceManager._ensure_consistent_ual_stateXs"6>+e$  2  D 1 1 1** *,=e+         ! '  $ $ & & & & & ' 'r,ctrt tt ddd}n1#t$r$t dtYdSwxYwtrt}d}t| | D]S\}}d|vr@|| dd zd}|| dd zd}||krd }nT|rdStd d 5}t|j}||dddn #1swxYwY|d t'j|tdS)Nr;5m) random_minutereport_intervalzUAL cron template not found: %sTz* * * Fw)deletei)UAL_OLD_CRON_PATHexistsrAUAL_CRON_TEMPLATE_PATH read_textformatrFileNotFoundErrorloggerwarningr@zip splitlinesfindrrnamewritechmodshutilmove)r)cronjob_contentold_cronjob_content identicalold_linenew_lineftemp_cronjob_paths r+rBz"ServiceManager._create_ual_cronjobfs9  # # % % '  $ $ & & & 4>>@@GG%anndHOO!    NN13I    FF      ! ! "/"9"9";"; I&)#..00/2L2L2N2N''  "(h&&' c(:(:Q(>(@(@AH' c(:(:Q(>(@(@AHx'' %IE(  E 2 2 2 %a $QV  GGO $ $ $ % % % % % % % % % % % % % % % &&& %}55555s#rst  ''''''!!!!!!------))))))JJJJJJJJMMMMMM>>>>>>>>    8 $ $HD:;;122 x x x x x 'x x x x x r,