ddlZddlZddlZddlmZmZddlmZddlm Z m Z ddl m Z ddl mZddlmZddlmZmZdd lmZmZejZGd d eeZGd d eeZGddeZdS)N)ABCabstractmethod) defaultdict)heappopheappush)Dict)Core) MessageType)BaseMessageProcessorexpect)is_safe_subdir_namermtreeceZdZdZdZdZeejdZ 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_messages2scs8}}%% = =A&&wx'8'8';<< < < < < < < < < = =rc KdS)z Modify hookNrs rr3z"EventProcessorBase._process_modify6 rc KdSz Create hookNr@rs rr4z"EventProcessorBase._process_create:rArc KdSzchange_package hookNr@rs rr5z*EventProcessorBase._process_change_package>rArc KdS)z Remove hookNr@rs rr6z+EventProcessorBase._process_account_removedBrArcdSz'Whether the message should be processedNr@rs rr1z(EventProcessorBase._message_is_relatableFrc KdSz$Whether messages should be processedNr@r*s r is_enabledzEventProcessorBase.is_enabledJrArN)__name__ __module__ __qualname__rr r+r r cPanelEventr7r#rr3r4r5r6r1rLr@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 rr3z"SettingsChangeBase._process_modifyRsI"(GL"8"8i ++G]CCCCCCCCCCCrcDK||ddd{VdS)NrTTrWrs rr4z"SettingsChangeBase._process_createVs6++GVTBBBBBBBBBBBrcDK||ddd{VdS)Nnew_pkgTrZrs rr5z*SettingsChangeBase._process_change_packageYs6++GYEEEEEEEEEEErc KdSrr@rs rr6z+SettingsChangeBase._process_account_removed\s  rFrXadd_to_packagereturnNcKtd|||d{V}|||||d{VdS)NzGet settings from %s)loggerinfo_get_settings_from_message_apply_settings)rrrXr^settingss rrWz+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 rTr2r-c3K|]}|duV dSrr@)r$values rr&z5SettingsChangeBase._apply_settings..ts&AAeETMAAAAAArz'No information about package in messagez,Settings specified in hook message %s for %sr) rarbgetallr)rV_get_package_settingsKeyErrorwarning_default_settingsitemson_settings_change) rrrXr^re package_namefallback_settingsfeaturerhs rrdz"SettingsChangeBase._apply_settingsks  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 B888C32C3cdSrHr@rs rr1z(SettingsChangeBase._message_is_relatablerIrc KdS)z9What to do after settings were changed (e.g. sync the DB)Nr@)ruserrsrhs rrpz%SettingsChangeBase.on_settings_changerArcdS)zGet default package settingsNr@r@rrrnz$SettingsChangeBase._default_settingsrIrc KdS)z"Retrieve settings from the messageNr@rs rrcz-SettingsChangeBase._get_settings_from_messagerArrqc KdS)zGet current package settingsNr@)clsrqr^s rrkz(SettingsChangeBase._get_package_settingsrArc KdSrKr@r*s rrLzSettingsChangeBase.is_enabledrAr)F)rMrNrO__doc__r3r4r5r6strboolrWrdrr1rp staticmethodrrnrc classmethodrkrLr@rrrRrROs11DDDCCCFFF    %            OOOB66^6HH^H+tCH~+++^\+11^1++04+ c3h+++^[+ 33^333rrRc2eZdZdZdZdZdZdZdZdS)UserConfigProcessorcdSNTr@rs rr1z)UserConfigProcessor._message_is_relatablestrc KdSrr@r*s rrLzUserConfigProcessor.is_enableds trctK|dp|d}t|sdStjt j|} t|dS#t$rYdSt$r'}t d||Yd}~dSd}~wwxYw)Nrvrz'Failed to remove user_config dir %s: %s) rir ospathjoinr USER_CONFDIRrFileNotFoundErrorOSErrorrarm)rrrvtargetes rr6z,UserConfigProcessor._process_account_removeds{{6""=gkk*&=&="4((  Fd/66  6NNNNN     DD    NN961          s)A:: B7 B7B22B7cK|jd}|j}|rt|rt|sdS t jtjtj |tjtj |dS#t$rYdSt$r(}t d|||Yd}~dSd}~wwxYw)N old_usernamez)Failed to rename user_config %s -> %s: %s)rVrirr rrenamerrr rrrrarm)rrr new_usernamers rr3z#UserConfigProcessor._process_modifys|''77 '  #L11 $L11  F  I T. == T. ==     !    DD    NN;           sA%B.. C,; C,C''C,c KdSrCr@rs rr4z#UserConfigProcessor._process_createrArc KdSrEr@rs rr5z+UserConfigProcessor._process_change_packagerArN) rMrNrOr1rLr6r3r4r5r@rrrrsn   0"""""rr)r'loggingrabcrr collectionsrheapqrrtypingr defence360agent.contracts.configr "defence360agent.contracts.messagesr !defence360agent.contracts.pluginsr r defence360agent.utilsr r getLoggerrarrRrr@rrrsq ######################111111::::::JJJJJJJJ========    ;3;3;3;3;3-s;3;3;3|W3W3W3W3W3+SW3W3W3t1"1"1"1"1",1"1"1"1"1"r