wo4h{)ddlZddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z mZddlmZddlmZmZmZmZmZmZmZmZddlmZdd lmZdd lmZm Z m!Z!dd l"m#Z#dd l$m%Z%m&Z&dd l'm(Z(ddl)m*Z*ddl+m,Z,ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3ddl4m5Z5m6Z6ddl7m8Z8dZ9e e:Z;hdZe1dZ?e1dZ@e1dZAe1dZBe1dZCe1dZDe1dZEd ZFe1d!ZGd"ZHd#e fd$ZIGd%d&ee ZJd#e eKeLffd'ZMd(ZNd#eOfd)ZPd#eKfd*ZQd#eKfd+ZRd#eKfd,ZSdS)-N) lru_cache) getLogger)Path)DictList)sentry) ConfigFileCoreCustomBillingConfigMalwareMalwareSignatures SystemConfigint_from_envvarFREEMIUM_FEATURE_FLAG) LicenseCLN) MessageType) MessageSink MessageSourceexpect)get_myimunify_users)$is_native_feature_management_enabled&is_native_feature_management_supported)IndependentAgentIDAPI) HostingPanel)cPanel)log_error_and_ignorerecurring_checkScopestub_unexpected_errorsafe_runsystem_packages_info) load_state save_state) WhmcsConf)z/var/imunify360/imunify360.dbz!/var/imunify360/imunify360.db-shmz!/var/imunify360/imunify360.db-wal>ai-bolit imunify-ui imunify-coreimunify360-pamimunify360-venvimunify-notifierimunify-patchmanimunify-antivirusimunify-realtime-avimunify360-firewallimunify360-php-i360app-version-detectorimunify360-ossec-serverimunify-auditd-log-readerimunify360-webshield-bundle imunify360-unified-access-loggerc|td5}|cdddS#1swxYwYdS)Nz /proc/cpuinfo)openread)fs _/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/plugins/send_server_config.py read_cpu_infor:Qs| o  !vvxxs 155)maxsizect}tjd|tj}g}i}|D]-\}}|dkr|rd|vr||i}|||<.|||S)Nz^(.*?)[ ]*:[ ]*(.*)$)flags processor)r:refindallMappend)texttuplesrescurrentkeyvalues r9 get_cpu_inforJVs ??D Z2D E E EFCG U +   ;'11 7### JJw Jci}tD]H}|d|dx}|vr&t|dd||<It|S)Nz physical idr?z cpu coresr;)rJgetintsumvalues) physical_idsr? physical_ids r9 get_cpu_coresrSgsL!^^KK $== +8NOO OK  ),IMM+q,I,I(J(JL % |""$$ % %%rKctd}d|dp|d|dp|dS)Nrz{} {}z model name Processorr>Features)rJformatrM)r?s r9get_cpu_model_and_flagsrXrsXq!I >> l##=y'= g7)J"7  rKc:K|d{VSN)versionhps r9get_hosting_panel_versionr^{s&      rKc:K|d{VSrZ) users_countr\s r9get_users_amountras(!! ! ! ! ! ! !!rKcTKt|d{VSrZ)lenget_domain_to_ownerr\s r9get_domains_amountres2 R++-------- . ..rKctjtjr6t tjtjSdSrZ)ospathexistsr AI_BOLIT_HOSTERrNgetmtimerKr9get_malware_db_update_timermsK w~~'788H27##$5$EFFGGGHHrKcZKtd{Vrtd{VSdSrZ)rrrlrKr9 get_nfm_staterosN 3 5 5555555<9;;;;;;;;;<">3@??-B-B-B-B-B-B+--*,'.. !+ + &J%K%K  rKreturnc,Kt} t|d{V}n8#t$r+tdt}YnwxYwt jdtj }ttj  |D]K}|jj|vr;t!|jjd||jj<L|S)zv Return dict that includes users config values that are explicitly set in the corresponding config files. Nz(Failed to get the list of panel's users.*)usernameF) normalize)dict frozenset get_users Exceptionlogger exceptionrgrhjoinr USER_CONFIG_FILE_NAMEr USER_CONFDIRglobparentnamer config_to_dict)r]result current_users users_conf userconf_files r9get_users_configsrs VVF$! "6"6"6"6"6"677 $$$CDDD! $c4#=>>Jd/0055jAA..   $ 5 50:&-2111nun-- =', - Ms':2A/.A/ceZdZdZejZd dZdZe e j e dZ dZdZdZd ZdS) SendServerConfigz This plugin is to provide central server with different server metrics. Message is sent on plugin creation, and then every :period: seconds Ncd|_d|_|r ||_dStdt t jddz |_dS)N$IMUNIFY360_SEND_SERVER_CONFIG_PERIODr;)days)_task_last_send_time_periodrrNdatetime timedelta total_seconds)selfperiods r9__init__zSendServerConfig.__init__sf #  !DLLL*6H&A...<<>>BCCDLLLrKc KdS)zMessageSink methodNrl)rloops r9 create_sinkzSendServerConfig.create_sinks rKcK|j d|_dSt|dtsdS|d|jr;|d|_|j|dSdS)Nrconf timestamp)r isinstancermodified_since_loop create_task_send_server_config)rmessages r9on_config_update_messagez)SendServerConfig.on_config_update_messages   '#$D F'&/<88  F 6? ) )$*> ? ? ?#*;#7D J " "4#;#;#=#= > > > > > ? ?rKcK||_||_|jt|j|j|_dSrZ)r_sinkrrrrr)rrsinks r9 create_sourcezSendServerConfig.create_sourcesT  Z++ C )ODL ) )$*B C C E E   rKcrK|j-d|jc|_}||d{VdSdSrZ)rcancel)rts r9shutdownzSendServerConfig.shutdownsG : ! $*MDJ HHJJJGGGGGGGGG " !rKcKtjt}t}|r||d<t }t j}|tj |t|d{V|j tj krtd{V|d<tj|d<t j|d<t#d{Vt%d{Vt'd{Vd|d<t)t-z|d<t/|d{V|d <t1t2d{V|d <t5t6d{V|d <|d |dd <|d|dd<t;dd|dd<t=dddi|S)N)uname diskstatsusersiaidstatus_license) uptime_sincedevicesmac system_infoagent_global_configagent_users_configspathscomponents_versions upgrade_urlz$CUSTOM_BILLING.effective_upgrade_urlupgrade_url_360z(CUSTOM_BILLING.effective_upgrade_url_360 doctor_keyzCORE.doctor_report)r ServerConfig _uname_info _diskstatrr license_infoupdatertagsrNAMErrrget_iaidis_valid_uptime_blkid _mac_addressr rr r_get_path_sizesCH_PATHSr!PACKAGES_TO_REPORTrMr"r#)rmsgdiskstatr]rs r9_create_server_config_msgz*SendServerConfig._create_server_config_msgs&[]];;;;;  ('C  ^^!.00  6;==!!! ,R00000000111 7fk ! !!4!6!6666666CL+466F * 3 5 5 ")))OOOOOO#XX~~~~~~%''''''  M LL ' ' ) )!##2244 5 !",=R+@+@%@%@%@%@%@%@ !",X66666666G +? , , & & & & & &  !"   ] + + !" 2   . / / !" 6 size mapping for *paths*. Send -errno on error. z!Can't get size for %s, reason: %sN) maprgfspathrhgetsizeOSErrorrwarningerrno)rsizesrhsizees r9rr6s EBIu%% 7??4((D E$KK  # # # NN>a H H H7(E$KKKKKK # LsA B'A==Bc td5}|cdddS#1swxYwYdS#t$r3}tdt |Yd}~dSd}~wwxYw)Nz/proc/diskstatszCan't get diskstat: %s)r6r7rrrstr)r8rs r9rrGs9 # $ $ 6688                   999/Q8888888889s-?2 ?6?6? A< (A77A<c^ttdtjS)N)sysnamenodenamereleaser[machine)rziprgrrlrKr9rrOs-  D HJJ    rKc4Ktddgd{VS)zSystem up sinceuptimez--sinceNr rlrKr9rrXs+8Y/00 0 0 0 0 0 00rKc2Ktdgd{VS)z8Executes utility to locate/print block device attributesblkidNrrlrKr9rr]s(7)$$ $ $ $ $ $ $$rKcKtjtjdddS)zOMAC address in formatted way, like it specifies in /sys/class/net/*/addressbig:)binasciihexlifyuuidgetnodeto_bytesdecoderlrKr9rrbs=  DLNN33Au==s C C J J L LLrK)Tr rrqrgr@r functoolsrloggingrpathlibrtypingrrdefence360agent.contractsr defence360agent.contracts.configr r r r r rrr!defence360agent.contracts.licenser"defence360agent.contracts.messagesr!defence360agent.contracts.pluginsrrr&defence360agent.contracts.myimunify_idr*defence360agent.feature_management.controlrrdefence360agent.internals.iaidr+defence360agent.subsys.panels.hosting_panelr$defence360agent.subsys.panels.cpanelrdefence360agent.utilsrrrrr r!'defence360agent.subsys.persistent_stater"r#defence360agent.utils.whmcsr$rrrrr:rJrSrXr^rarermrorvr{rrrrrNrrrrrrrrlrKr9r$s ,,,,,,                    988888:::::: GFFFFFA@@@@@DDDDDD777777KJJJJJJJ111111  8  (  1    &&&"""///HHH <<< (((&4(e e e e e {Me e e PDcN"999T1s1111 %c%%%% MCMMMMMMrK