wo4hQddlZddlZddlZddlmZmZddlmZddlm Z m Z ddl m Z ddl mZmZddlmZddlmZmZejZGd d eeZGd d eeZGd deZdS)N)ABCabstractmethod) defaultdict)heappopheappush)Dict) ConfigFileCore) MessageType)BaseMessageProcessorexpectceZdZdZdZdZeejdZ dZ e dZ e dZ e dZe d Ze d Ze d Zd S) EventProcessorBasecFtt|_||_dSN)rlist_msg_buf_loop)selfloops l/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/plugins/event_monitor_message_processor.py__init__zEventProcessorBase.__init__s#D))  cXt|j|d|d|fdS)Nusername timestamp)rrrmessages r add_messagezEventProcessorBase.add_messages9 M'*- .1Ew0O     rczKtjfdjDd{VdS)Nc3BK|]}|VdSr)process_user_messages).0 user_messagesrs r z6EventProcessorBase.process_messages..sE!**=99r)asynciogatherrvaluesrs`rprocess_messagesz#EventProcessorBase.process_messagessrn%)]%9%9%;%;          rcxK||sdS|jdkr||d{VdS|jdkr||d{VdS|jdkr||d{VdS|jdkr||d{VdSdS)NModifyCreatechange_packageRemove)_message_is_relatablehook_process_modify_process_create_process_change_package_process_account_removedrs r process_eventz EventProcessorBase.process_event#s))'22  F <8 # #&&w// / / / / / / / / / \X % %&&w// / / / / / / / / / \- - -..w77 7 7 7 7 7 7 7 7 7 \X % %//88 8 8 8 8 8 8 8 8 8& %rcKtt|D]0}|t|dd{V1dS)N)rangelenprocess_messager)rmessages_s rr"z(EventProcessorBase.process_user_messages1scs8}}%% = =A&&wx'8'8';<< < < < < < < < < = =rc KdS)z Modify hookNrs rr2z"EventProcessorBase._process_modify5 rc KdSz Create hookNr?rs rr3z"EventProcessorBase._process_create9r@rc KdSzchange_package hookNr?rs rr4z*EventProcessorBase._process_change_package=r@rc KdS)z Remove hookNr?rs rr5z+EventProcessorBase._process_account_removedAr@rcdSz'Whether the message should be processedNr?rs rr0z(EventProcessorBase._message_is_relatableErc KdSz$Whether messages should be processedNr?r)s r is_enabledzEventProcessorBase.is_enabledIr@rN)__name__ __module__ __qualname__rrr*r r cPanelEventr6r"rr2r3r4r5r0rKr?rrrrs        VK #$$ 9 9%$ 9===^^""^"^66^633^333rrc eZdZdZdZdZdZdZ ddede d d fd Z d Z e d Z e dZee d eeeffdZe dZee dede d eeeffdZe dZd S)SettingsChangeBasez'Process hook event messages from cPanelc\Kd|jvrdnd}|||d{VdS)Nplanexclude)data_get_settings_and_update)rr package_fields rr2z"SettingsChangeBase._process_modifyQsI"(GL"8"8i ++G]CCCCCCCCCCCrcDK||ddd{VdS)NrSTrVrs rr3z"SettingsChangeBase._process_createUs6++GVTBBBBBBBBBBBrcDK||ddd{VdS)Nnew_pkgTrYrs rr4z*SettingsChangeBase._process_change_packageXs6++GYEEEEEEEEEEErc KdSrr?rs rr5z+SettingsChangeBase._process_account_removed[s  rFrWadd_to_packagereturnNcKtd|||d{V}|||||d{VdS)NzGet settings from %s)loggerinfo_get_settings_from_message_apply_settings)rrrWr]settingss rrVz+SettingsChangeBase._get_settings_and_update^s  *G44488AAAAAAAA"" ]NH           rcKtd||d9|ddkr-td|DrdSt|s |j|}|||d{V}n>#t$r1td| }YnwxYw| D]\}}| ||||<td||d| D](\}}| |d||d{V)dS) Nz Step 1 %s rSr1r,c3K|]}|duV dSrr?)r#values rr%z5SettingsChangeBase._apply_settings..ss&AAeETMAAAAAArz'No information about package in messagez,Settings specified in hook message %s for %sr) r`ragetallr(rU_get_package_settingsKeyErrorwarning_default_settingsitemson_settings_change) rrrWr]rd package_namefallback_settingsfeaturergs rrcz"SettingsChangeBase._apply_settingsjs  L(+++ KK   '8++AAx/@/@AAAAA, F8??$$%% C &|M: +/*D*D .++%%%%%%!!  = = =HIII$($:$:$<$<!!! =#+.."2"2 C C=(9'(BHW% :  J    'nn.. O ONGU))'**=wNN N N N N N N N N O Os B888C32C3cdSrGr?rs rr0z(SettingsChangeBase._message_is_relatablerHrc KdS)z9What to do after settings were changed (e.g. sync the DB)Nr?)ruserrrrgs rroz%SettingsChangeBase.on_settings_changer@rcdS)zGet default package settingsNr?r?rrrmz$SettingsChangeBase._default_settingsrHrc KdS)z"Retrieve settings from the messageNr?rs rrbz-SettingsChangeBase._get_settings_from_messager@rrpc KdS)zGet current package settingsNr?)clsrpr]s rrjz(SettingsChangeBase._get_package_settingsr@rc KdSrJr?r)s rrKzSettingsChangeBase.is_enabledr@r)F)rLrMrN__doc__r2r3r4r5strboolrVrcrr0ro staticmethodrrmrb classmethodrjrKr?rrrQrQNs11DDDCCCFFF    %            OOOB66^6HH^H+tCH~+++^\+11^1++04+ c3h+++^[+ 33^333rrQc2eZdZdZdZdZdZdZdZdS)UserConfigProcessorcdSNTr?rs rr0z)UserConfigProcessor._message_is_relatablestrc KdSrr?r)s rrKzUserConfigProcessor.is_enableds trc$K|dp|d}|ra tjt|jdS#t $rYdSt $rtd|YdSwxYwdS)Nrurz0Cannot delete Imunify360 config file for user %s) rhosunlinkr pathFileNotFoundErrorOSErrorr`rl)rrrus rr5z,UserConfigProcessor._process_account_removeds{{6""=gkk*&=&=    *T**/00000$      F    s&A B %$B  B cK|jdx}rltjtjt j|tjt j|jdSdS)N old_username) rUrhrrenamerjoinr USER_CONFDIRr)rrrs rr2z#UserConfigProcessor._process_modifysz"<++N;; ;<  I T. == T.0@AA       rc KdSrBr?rs rr3z#UserConfigProcessor._process_creater@rc KdSrDr?rs rr4z+UserConfigProcessor._process_change_packager@rN) rLrMrNr0rKr5r2r3r4r?rrrrsn   """""rr)r&loggingrabcrr collectionsrheapqrrtypingr defence360agent.contracts.configr r "defence360agent.contracts.messagesr !defence360agent.contracts.pluginsr r getLoggerr`rrQrr?rrrs_ ######################========::::::JJJJJJJJ    ;3;3;3;3;3-s;3;3;3|W3W3W3W3W3+SW3W3W3t""""","""""r