qj,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-coreimunify-commonimunify360-pamimunify-releaseimunify360-venvalt-php-internalimunify-notifierimunify-patchmanimunify360-ossecalt-php-hyperscanimunify-antivirusalt-common-releaseimunify-realtime-avimunify-wp-securityimunify360-firewallimunify360-php-i360app-version-detectorcloudlinux-backup-utilsimunify360-ossec-serverimunify-auditd-log-readerimunify-realtime-av-imrt2imunify360-webshield-bundle imunify360-unified-access-logger rustbolit minidaemonc|td5}|cdddS#1swxYwYdS)Nz /proc/cpuinfo)openread)fs _/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/plugins/send_server_config.py read_cpu_inforF^s| o  !vvxxs 155)maxsizect}tjd|tj}g}i}|D]-\}}|dkr|rd|vr||i}|||<.|||S)Nz^(.*?)[ ]*:[ ]*(.*)$)flags processor)rFrefindallMappend)texttuplesrescurrentkeyvalues rE get_cpu_inforVcs ??D Z2D E E EFCG U +   ;'11 7### JJw Jci}tD]H}|d|dx}|vr&t|dd||<It|S)Nz physical idrKz cpu coresrG)rVgetintsumvalues) physical_idsrK physical_ids rE get_cpu_coresr_tsL!^^KK $== +8NOO OK  ),IMM+q,I,I(J(JL % |""$$ % %%rWctd}d|dp|d|dp|dS)Nrz{} {}z model name ProcessorrJFeatures)rVformatrY)rKs rEget_cpu_model_and_flagsrdsXq!I >> l##=y'= g7)J"7  rWc:K|d{VSN)versionhps rEget_hosting_panel_versionrjs&      rWc:K|d{VSrf) users_countrhs rEget_users_amountrms(!! ! ! ! ! ! !!rWcTKt|d{VSrf)lenget_domain_to_ownerrhs rEget_domains_amountrqs2 R++-------- . ..rWctjtjr6t tjtjSdSrf)ospathexistsr AI_BOLIT_HOSTERrZgetmtimerWrEget_malware_db_update_timerysK w~~'788H27##$5$EFFGGGHHrWcZKtd{Vrtd{VSdSrf)rrrxrWrE get_nfm_stater{sN 3 5 5555555<9;;;;;;;;;<">3@??-B-B-B-B-B-B+--*,'.. !+ + &J%K%K  rWreturnc,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 exceptionrsrtjoinr USER_CONFIG_FILE_NAMEr USER_CONFDIRglobparentnamer config_to_dict)riresult current_users users_conf userconf_files rEget_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_PERIODrG)days)_task_last_send_time_periodrrZdatetime timedelta total_seconds)selfperiods rE__init__zSendServerConfig.__init__sf #  !DLLL*6H&A...<<>>BCCDLLLrWc KdS)zMessageSink methodNrx)rloops rE create_sinkzSendServerConfig.create_sinks rWcK|j d|_dSt|dtsdS|d|jr;|d|_|j|dSdS)Nrconf timestamp)r isinstancermodified_since_loop create_task_send_server_config)rmessages rEon_config_update_messagez)SendServerConfig.on_config_update_messages   '#$D F'&/<88  F 6? ) )$*> ? ? ?#*;#7D J " "4#;#;#=#= > > > > > ? ?rWcK||_||_|jt|j|j|_dSrf)r_sinkrrrrr)rrsinks rE create_sourcezSendServerConfig.create_sourcesT  Z++ C )ODL ) )$*B C C E E   rWcdK|j&d|jc|_}t|d{VdSdSrf)rr)rts rEshutdownzSendServerConfig.shutdown sK : ! $*MDJ"1%% % % % % % % % % % " !rWcKtjt}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_REPORTrYr#r$)rmsgdiskstatrirs rE_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) maprsfspathrtisdir_compute_dir_sizegetsizeOSErrorrwarningerrno)rsizesrtsizees rErrBs 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|rfrx)r s rE_onerrorz#_compute_dir_size.._onerrorYs rWF)onerror followlinks)rrswalkrtrr) r  total_sizer root_dirsfiles file_name file_pathrs rErrVsJg!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)rBrCrrrstr)rDrs rErrhs9 # $ $ 6688                   999/Q8888888889s-?2 ?6?6? A< (A77A<c^ttdtjS)N)sysnamenodenamereleasergmachine)rziprsrrxrWrErrps-  D HJJ    rWc4Ktddgd{VS)zSystem up sinceuptimez--sinceNr!rxrWrErrys+8Y/00 0 0 0 0 0 00rWc2Ktdgd{VS)z8Executes utility to locate/print block device attributesblkidNr!rxrWrErr~s(7)$$ $ $ $ $ $ $$rWcKtjtjdddS)zOMAC address in formatted way, like it specifies in /sys/class/net/*/addressbig:)binasciihexlifyuuidgetnodeto_bytesdecoderxrWrErrs=  DLNN33Au==s C C J J L LLrW)Vr(rr}rsrLr* 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%rrrrrFrVr_rdrjrmrqryr{rrrrrrrZrrrrrrrrrxrWrEr?s ,,,,,,                    988888:::::: GFFFFFA@@@@@DDDDDD777777KJJJJJJJ111111  8  >  1    &&&"""///HHH <<< (((&4(d d d d d {Md d d NDcN(cc$999T1s1111 %c%%%% MCMMMMMMrW