F-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/m0Z0m1Z1m2Z2m3Z3m4Z4ddl5m6Z6m7Z7ddl8m9Z9dZ:e e;ZeddZ?e2dZ@e2dZAe2dZBe2dZCe2dZDe2dZEe2dZFd ZGe2d!ZHd"ZId#e fd$ZJGd%d&ee ZKd#e eLeMffd'ZNd(eLd#eMfd)ZOd*ZPd#eQfd+ZRd#eLfd,ZSd#eLfd-ZTd#eLfd.ZUdS)/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_checksafe_cancel_taskScopestub_unexpected_errorsafe_runsystem_packages_info) load_state save_state) WhmcsConf)z/var/imunify360/imunify360.dbz!/var/imunify360/imunify360.db-shmz!/var/imunify360/imunify360.db-walz/var/imunify360/gw.dir/>ai-bolit imunify-ui imunify-coreimunify360-pamimunify360-venvimunify-notifierimunify-patchmanimunify-antivirusimunify-realtime-avimunify-wp-securityimunify360-firewallimunify360-php-i360app-version-detectorimunify360-ossec-serverimunify-auditd-log-readerimunify-realtime-av-imrt2imunify360-webshield-bundle imunify360-unified-access-logger rustbolitc|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>Vs| o  !vvxxs 155)maxsizect}tjd|tj}g}i}|D]-\}}|dkr|rd|vr||i}|||<.|||S)Nz^(.*?)[ ]*:[ ]*(.*)$)flags processor)r>refindallMappend)texttuplesrescurrentkeyvalues r= get_cpu_inforN[s ??D Z2D E E EFCG U +   ;'11 7### JJw Jci}tD]H}|d|dx}|vr&t|dd||<It|S)Nz physical idrCz cpu coresr?)rNgetintsumvalues) physical_idsrC physical_ids r= get_cpu_coresrWlsL!^^KK $== +8NOO OK  ),IMM+q,I,I(J(JL % |""$$ % %%rOctd}d|dp|d|dp|dS)Nrz{} {}z model name ProcessorrBFeatures)rNformatrQ)rCs r=get_cpu_model_and_flagsr\wsXq!I >> l##=y'= g7)J"7  rOc:K|d{VSN)versionhps r=get_hosting_panel_versionrbs&      rOc:K|d{VSr^) users_countr`s r=get_users_amountres(!! ! ! ! ! ! !!rOcTKt|d{VSr^)lenget_domain_to_ownerr`s r=get_domains_amountris2 R++-------- . ..rOctjtjr6t tjtjSdSr^)ospathexistsr AI_BOLIT_HOSTERrRgetmtimerOr=get_malware_db_update_timerqsK w~~'788H27##$5$EFFGGGHHrOcZKtd{Vrtd{VSdSr^)rrrprOr= get_nfm_staterssN 3 5 5555555<9;;;;;;;;;<">3@??-B-B-B-B-B-B+--*,'.. !+ + &J%K%K  rOreturnc,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 exceptionrkrljoinr USER_CONFIG_FILE_NAMEr USER_CONFDIRglobparentnamer config_to_dict)raresult current_users users_conf userconf_files r=get_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_periodrrRdatetime timedelta total_seconds)selfperiods r=__init__zSendServerConfig.__init__sf #  !DLLL*6H&A...<<>>BCCDLLLrOc KdS)zMessageSink methodNrp)rloops r= create_sinkzSendServerConfig.create_sinks rOcK|j d|_dSt|dtsdS|d|jr;|d|_|j|dSdS)Nrconf timestamp)r isinstancermodified_since_loop create_task_send_server_config)rmessages r=on_config_update_messagez)SendServerConfig.on_config_update_messages   '#$D F'&/<88  F 6? ) )$*> ? ? ?#*;#7D J " "4#;#;#=#= > > > > > ? ?rOcK||_||_|jt|j|j|_dSr^)r_sinkrrrrr)rrsinks r= create_sourcezSendServerConfig.create_sourcesT  Z++ C )ODL ) )$*B C C E E   rOcdK|j&d|jc|_}t|d{VdSdSr^)rr)rts r=shutdownzSendServerConfig.shutdownsK : ! $*MDJ"1%% % % % % % % % % % " !rOcKtjt}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_REPORTrQr#r$)rmsgdiskstatrars r=_create_server_config_msgz*SendServerConfig._create_server_config_msg s&[]];;;;;  ('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) maprkfspathrlisdir_compute_dir_sizegetsizeOSErrorrwarningerrno)rsizesrlsizees r=rr:s EBIu%%   w}}T"" -(..wt,, E$KK  # # # NN>a H H H7(E$KKKKKK # LsAA66 B1'B,,B1directory_pathcd}dtfd}tj||dD]b\}}}|D]Y}tj||} |tj|z }F#t$r}|d}~wwxYwc|S)Nrerrc|r^rp)rs r=_onerrorz#_compute_dir_size.._onerrorQs rOF)onerror followlinks)rrkwalkrlrr) r total_sizerroot_dirsfiles file_name file_pathrs r=rrNsJg!geeU  I T955I bgooi888        s"A33 B=A??Bc td5}|cdddS#1swxYwYdS#t$r3}tdt |Yd}~dSd}~wwxYw)Nz/proc/diskstatszCan't get diskstat: %s)r:r;rrrstr)r<rs r=rr`s9 # $ $ 6688                   999/Q8888888889s-?2 ?6?6? A< (A77A<c^ttdtjS)N)sysnamenodenamereleaser_machine)rziprkrrprOr=rrhs-  D HJJ    rOc4Ktddgd{VS)zSystem up sinceuptimez--sinceNr!rprOr=rrqs+8Y/00 0 0 0 0 0 00rOc2Ktdgd{VS)z8Executes utility to locate/print block device attributesblkidNrrprOr=rrvs(7)$$ $ $ $ $ $ $$rOcKtjtjdddS)zOMAC address in formatted way, like it specifies in /sys/class/net/*/addressbig:)binasciihexlifyuuidgetnodeto_bytesdecoderprOr=rr{s=  DLNN33Au==s C C J J L LLrO)Vr rrurkrDr" 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!r"'defence360agent.subsys.persistent_stater#r$defence360agent.utils.whmcsr%rrrrr>rNrWr\rbrerirqrsrzrrrrrrRrrrrrrrrrprOr=r7s ,,,,,,                    988888:::::: GFFFFFA@@@@@DDDDDD777777KJJJJJJJ111111  8  .  1    &&&"""///HHH <<< (((&4(d d d d d {Md d d NDcN(cc$999T1s1111 %c%%%% MCMMMMMMrO