PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 131
fK5&$ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlmZddlmZmZddlmZmZddlmZddlmZddlmZddlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ddl%Z&ddl'Z'ddl(Z(ddl)Z)dd l*m+Z+dd l,m-Z-dd l.m/Z/m0Z0m1Z1dd l2m3Z3dd l4m5Z5m6Z6ddl7m8Z8ddl9m:Z:m;Z;mZ>ddl?m@Z@ddlAmBZBddlCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNddlOmPZPmQZQmRZRddlSmTZTddlUmVZVmWZWddlXmYZYmZZZddl[m\Z\ddl]m^Z^ddl_m`ZaddlbmcZcddldmeZemfZfddlgmhZhddlimjZjddlkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|dd l}m~Z~mZmZdd!lmZd"d#lmZd"d$lmZ dd%lmZdd&lmZmZmZmZmZmZdd'lmZdd(lmZddlm`Zn#e$remZemZemZemZemZemZemZdZdZdZYnwxYw dd)lmZn#e$rd*ZYnwxYwd+Zejd,Zd-Zd.Zd/Zd0Zd1Zd2Zd3Zd4Zd5ed6efd7ZGd8d9Zd:ZdS);N)deepcopy)Counter defaultdict) lru_cachepartial) cpu_count)Path)getfqdn)AnyAnyStrCallableDictListOptionalTupleUnion)get_hidepid_typing_from_mounts)cpapi) find_wp_pathsget_wp_cache_plugin get_wp_paths_with_enabled_module)Feature)is_panel_feature_supportedis_wp2_environment) MySQLGovernor) CLEditionsis_cl_shared_editionis_cl_solo_edition)client_activation_data)ACCELERATE_WP_INSTALLED_FROM_CM) SysCtlConf) ExternalProgramFailedget_cl_versionget_rhn_systemid_value get_virt_typegrepis_litespeed_runningis_nginx_runningis_secureboot_enabledis_testing_enabled_repo is_ubuntu run_command)cagefs_statistics_configclconfig_utilsdb_governor_lib)is_email_notification_enabled)print_dictionaryreplace_params)DEFAULTSLimitsDataStorage) EMPTY_LIMITS) ALL_MODULES) PKG_VERSION)LvpMap) CONFIG_PATH_read_config_file)WebsiteCollector)FeatureManager) SummaryStatusdummy_none_functionget_cl_plus_sender_statusget_client_data_from_jwt_token get_packages_with_lve_extensions$get_statistics_send_status_from_fileis_active_cloudlinux_licenseis_nodejs_selector_installedis_php_selector_installedis_python_selector_installedis_ruby_selector_installedis_sending_process_runningis_statistic_enabledis_statistic_rpm_enabled set_statistic_collection_enabled$set_statistic_rpm_collection_enabled$write_statistics_send_status_to_file) NotSupportedget_cpu_metricsget_memory_metrics)get_rpm_packages_info)parse_cloudlinux_summary_opts)StatisticsDict)get_default_version)get_default_php_versionget_mode_of_php_selectorget_native_version_safeget_php_selector_usageget_versions_statisticsiter_server_applications)CloudlinuxSelectorLib) PKG_RELEASElist_flags_infocgSNrbpy/clsummary/summary.pyr_r_s rcz/var/log/cloudlinux-summary.logzcloudlinux-summaryunknown installed not_installednot_initialized not_selectedenableddisabledz-42 site_dictreturncnttd|dS)zB Checks if wordpress site has at least one enabled module c|dS)Nrjrb)modules rdz*site_has_enabled_modules..s &"3rcmodules)anymapvalues)rls rdsite_has_enabled_modulesrvs1 s33Yy5I5P5P5R5RSS T TTrcc eZdZdZdZejgdeje j eje j eje j gZ dZdZdZdZdZed Zed Zed efd Zed ZedZedZd efdZedZdZdZ ed e!fdZ"edZ#eded efdZ$dZ%dZ&dZ'edZ(ddZ)eddZ*dZ+ed Z,ed!Z-ed"e.e/e/fd e!fd#Z0d$Z1d%Z2ed&e3d'e4d dfd(Z5d)e.e4e3fd*e4d+e!d dfd,Z6d-Z7ed.Z8d/Z9d0Z:d1Z;ed efd2Zed5Z?ed6Z@d7ZAed8ZBdd9ZCd eDe3fd:ZEd eDe3fd;ZFed eDe3fd<ZGdd=ZHd>eId dfd?ZJd>eId dfd@ZKd>eId dfdAZLddBZMddCZNdDZOdEZPdFZQdGZRedHedIeSfdJZTd eUeSeVeSeVe.ee3fffdKZWd eUeXeeXeffdLZYdMedNedOe.eefd e.eeZeSefffdPZ[dQed efdRZ\ee]dSdTZ^ddUZ_ddVZ`edWe3dXe3d eDe3fdYZaedWe3dZe3d eDe3fd[Zbed\ecd e3fd]Zded\ecd e3fd^Zeed\ecd e3fd_Zfed\ecd egfd`Zhd\ecd e3fdaZied\ecd e3fdbZjed\ecd e3fdcZkd\ecd efddZledeedfed ecefdgZmeded ecfdhZnddiZoed efdjZpddkZqedlZrdmZsednZtedoZuedpZved e!fdqZwed e!fdrZxed e3fdsZyed efdtZzeduZ{dvZ|dwZ}dxe4d eDe3fdyZ~dzZd{Zd|Zd}Zed e.fd~ZdZdZd eUe3e3e3ffdZed eUe3effdZdZdZddZddZddZdZdZdZdZdZedZdZd eDe3fdZd eDe3fdZedZedZedZd>eId ecee3efdffdZde3d>eId eDeUe3effdZdZe ddededzde3de!dzd ejf dZeddede3d eDdfdZed eDe.fdZedZedZedZedZed eDe.fdZed efdZeded e3fdZed eDe.fdZd e.fdZd eDe.fdZed eDe.fdZed eDe.fdZdS)CloudlinuxSummaryz/var/lve/dashboard_certificatez/etc/cl_plus/.disabled)pythonrubynodejsz-https://stat-api.cloudlinux.com/api/clos-statz/https://stat-api.cloudlinux.com/api/clos-uploadz-https://stat-api.cloudlinux.com/api/rpm-statsz6https://repo.cloudlinux.com/static/cl-settings-v1.jsonci|_d|_t|_d|_d|_||_d|_t|_ d|_ dSra) _opts_security_tokenrT statistics_lvpmap _system_id_is_process_not_limitedis_process_not_limitedpackages_by_lenr!sysctlremote_settingsselfs rd__init__zCloudlinuxSummary.__init__sa #*8*:*: &*&B&B&D&D## ll #rccttjd}ttjd}| o| S)zm Return true if process is running outside LVE or it's not running by utility `nice` RUNNING_BY_NICERUNNING_IN_LVE)boolosenvironget)is_running_by_niceis_running_in_lves rdrz)CloudlinuxSummary._is_process_not_limitedsP ""*..1B"C"CDD 0@!A!ABB%%?.?*??rccD|jt|_|jS)z. Load lvpmap only when needed )r _get_lvpmaprs rdlvpmapzCloudlinuxSummary.lvpmaps < &==DL|rcrmcF|jtd|_|jS)N system_id)rr$rs rdrzCloudlinuxSummary.system_ids# ? "4[AADOrcc&trdndS)Nubuntu rhel_like)r+rbrcrd _get_platformzCloudlinuxSummary._get_platforms$;;7xxK7rcc:trtntSra)r)ENABLEDDISABLEDrbrcrd_detect_securebootz$CloudlinuxSummary._detect_secureboots/11?wwx?rcctjtjzdfdt dD}|S)Nc3@K|]}tjVdSra)randomchoice).0_range_for_random_choices rd z=CloudlinuxSummary._generate_security_token..s. [ [A/F!G!G [ [ [ [ [ [rc@)string ascii_lettersdigitsjoinrange)security_tokenrs @rd_generate_security_tokenz*CloudlinuxSummary._generate_security_tokensI"("6"F [ [ [ [QVWYQZQZ [ [ [[[rcci}|j3d}t||d|id|j}t||j|jd}d} tj|j|d}n\#tj $rJ}t|}t||d|iYd}~nd}~wwxYw|j sCd|j d|j }t||d|itd  |d}t|dt r-|d|td n#t&t(f$r6d }t||d|iYndt*$rX}td t||j|dd t.diYd}~nd}~wwxYw|S)NzSecurity token is emptyresultzGetting statistics from server )rr<)paramstimeoutServer answer is: HTTP code ; Reason: z!Received response from the serverz,SUCCESS: received statistics from the serverz Can't parse api response to jsonz=Invalid json response from server, field %s not found in "%s"z"Invalid response from server. See z for details.)r app_loggererror_error_and_exit SUMMARY_URLinforrequestsrRequestExceptionstrok status_codereasonjson isinstancedictupdate_get_smart_advice_statistics TypeError ValueErrorKeyErrortextLOG_FILE)r stat_datamessagerresponsees rd_get_remote_dataz"CloudlinuxSummary._get_remote_datas   &/G   W % % %  (G!4 5 5 5FD4DFF   "1   6|D$4VRPPPHH( 6 6 6!ffG   W % % %  (G!4 5 5 5 5 5 5 5 5 6 { 6fX5IffU]UdffG OOG $ $ $  (G!4 5 5 5;<<< L 1I)H-t44 P(#**4+L+L+N+NOOO OOJ K K K K:& 6 6 68G   W % % %  (G!4 5 5 5 5 5 n n n   \^abc^d^dfnfs t t t  (,kT\,k,k,k!l m m m m m m m m n s:3BC)AC$$C)A"GAI5 I5AI00I5c |j|jStj|jr||_n2|}||r|nd|_|jSra)r~rpathisfileDASHBOARD_CERTIFICATE_read_token_from_filer_write_token_to_file)rtokens rdrz CloudlinuxSummary.security_tokens   +' ' 7>>$4 5 5 W#'#=#=#?#?D 1133E,0,E,Ee,L,L#V55RVD ##rccR t|jdd5}||dddn #1swxYwYtj|jddS#t t f$r3}tdt|Yd}~dSd}~wwxYw) z Write security token to file and return success/fail status :param token: generated security token :return: T/F status wutf-8encodingNiTz,Error while writing secure token to file: %sF) openrwriterchmodIOErrorOSErrorrrr)rrfrs rdrz&CloudlinuxSummary._write_token_to_file&s  d0#HHH A                HT/ 7 7 74!      KSQRVV T T T55555 s4A"; A"?A"?A""B&3(B!!B&cD t|jdd5}|pdcdddS#1swxYwYdS#tt f$r3}t dt|Yd}~dSd}~wwxYw)Nrrrz.Error while reading file with secure token: %s) rrreadstriprrrrr)rrrs rdrz'CloudlinuxSummary._read_token_from_file5s d0#HHH 0Avvxx~~''/4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0!      MsSTvv V V V44444 s:A(A AAAAAB,(BBcFtjtjdddS)z Detect old LVE limits integration presence according to https://docs.cloudlinux.com/index.html?lve_limits_with_packages.html :return: True/False - present/absent CUSTOM_GETPACKAGE_SCRIPT=F) file_name param_name separator default_val)detectget_boolean_paramCL_CONFIG_FILErbrcrd_detect_old_lve_integrationz-CloudlinuxSummary._detect_old_lve_integration=s-'+1     rcc@tjdS)zO Detects presence/absence of lsapi :return: True/False /usr/bin/switch_mod_lsapirrexistsrbrcrd_is_lsapi_presentz#CloudlinuxSummary._is_lsapi_presentLs w~~9:::rc interpreterc|dkrtstSnY|dkrtrtntS|dkrt stSn|dkrt stSt |}|tS|dvr@ |drtntS#t$r tcYSwxYw|dkr"| rtntStd|) zP Get selector status for nodejs, python, ruby and php selectors ryrzr{phpN)r{ryselector_enabledzUnknown interpreter: ) rF NOT_INSTALLEDrGrrDrEr\get_selector_statusrrphp_selector_is_disabledr)rlibs rd_get_status_of_selectorz)CloudlinuxSummary._get_status_of_selectorTs8 ( " "/11 %$$ % F " "8::M77 M H $ $/11 %$$ % E ! !*C*E*E ! #K00 ; . . . %"%"9"9";";>>???s'B;;CCc|jr|jS tj|d|_|jS#tj$rW}t dt||dt|iYd}~dSd}~wttf$r3}t dt|Yd}~dSd}~wwxYw)N )rz3Request exception while getting remote settings: %srz'Error while parsing remote settings: %s) rrrrrrrrrrr)r settings_urlrs rd_get_remote_settingsz&CloudlinuxSummary._get_remote_settingsrs   (' ' #+< b#I#I#I#N#N#P#PD ' '( 5 5 5   RTWXYTZTZ [ [ [  (CFF!3 4 4 4 4 4 4 4 4 4I&      FA O O O44444 s$3AC,A B%%C,9(C''C,c|jdrdSttjd}|rdS||j}|dS |dd}|ddo||S#ttf$rW}t d t|| d t|iYd}~dSd}~wwxYw) z- Return cl-statistics status --force-collectTCL_TEST_SYSTEMNFz cl-statisticsz rollout-grouprjz4Error occurred while trying to get rollout group: %sr)r}rrrrr SETTINGS_URL _match_serverrrrrrr)ris_test_environmentsettings rollout_grouprs rd_is_statistics_enabledz(CloudlinuxSummary._is_statistics_enableds :>>+ , , 4"2:>>2B#C#CDD  4,,T->??  5 5$_5oFMO,Y7]D._prepare_metadatasr b!A!ABB b!A!ABB*<*>*>!VFDTDVDV"&"@"@"B"B H OrcrT)rhtaccess)server_metadatarzFError occurred while trying to get decision for htaccess collection=%sN) rrrrr<r get_decision Exceptionrr)rrrr rhtaccess_collectionrs` rd_website_collector_statusz+CloudlinuxSummary._website_collector_statuss     #2:>>2B#C#CDD  4$$[11 "0J"G"G"G"T"TemGQ#U#S#S        e VV % % %IIIIII #"s*A.. B,8)B'!B,'B,c"t|dS)Nint) hash_servers rd _to_numberzCloudlinuxSummary._to_numbers;###rcNc|jdS|j}|r |jd|}tj|dd}||d|zzdkS)NT:r)rhashlibsha256encode hexdigestr$)rurl_numsalt hash_inputr#s rdr zCloudlinuxSummary._match_servers > !4^  4 N33T33JnZ%6%6%8%899CCEEcrcJ  ,,qG|;AArccd}|r9ts/|dz}tjd|rt)dSdSdSdS)zC Wait for running background process of cl-summary 2rRg?N)rHtimesleep)retriess rd_wait_for_background_processz.CloudlinuxSummary._wait_for_background_processsu  8::  qLG JsOOO 8::         rccL |jds |jdrBt|jdtjdd}t|ddS|jds |jdrBt |jdtjdd}t|ddS|jdrpt rd nd }tj|dd }|d tit|dtj d |j dr7| }| |t|j drts3|j ds|ddid ||j dr=||j|jdt(dnt|jddS|sIt.jdtjd}t3||ddid |j dr|j dsWtsIt.jdtjd}t3||ddid |jld}t(|t.jdt8d tjd}t3||d|i|j d!rt rtjd dd }npt3t.jtjdd"t=jd#dd$d%| tjdd}t|dtj d |jdr|j!rMt d&r=tjd dd }t|dtj d dSt3t.jtjdd"dSdS)'Nenabledisablesuccess timestamprT enable-rpm disable-rpmstatus collectingready)r;r>rsending_statusr get-remote)datarI rpm-packagesrrz\Sending RPM statistics is disabled by admin. Use --force-collect to ignore admin`s settings.) error_code--sendFsummaryurl save_statuszRPM statistics sentzkStatistics collection is disabled globally. Please, try again later or contact support if it happens again.)rrr;zYCollecting statistics is disabled globally. Use --force-collect to ignore global settingsz_Statistics collection is disabled by admin. Run `cloudlinux-summary enable` and then try again.zXSending statistics is disabled by admin. Use --force-collect to ignore admin`s settings.z8Statistics was not sent, because security token is emptyz^We are not able to collect statistics because we are not able to make a security token. Check z for details or contact support.--async)rr;rz9/usr/sbin/cloudlinux-summary --send --json &> /dev/null & /bin/bash)shell executablecheck) acquire_lock)"r}rKr2r1rLrHrrBsysexitrr_print_result_and_exitrIrJr_get_rpm_packages_summary _send_statistics_and_save_statusrRPM_PACKAGES_URLrrr r=FAILEDrMrrr IN_PROGRESS subprocessrunr5r)rrCr>r status_dictrs rd&_actions_before_run_process_as_limitedz8CloudlinuxSummary._actions_before_run_process_as_limitedsq :h  4:i#8  ,TZ-A B B B!% BBD T4 ( ( ( F :l # tz-'@  0L1I J J J!% BBD T4 ( ( ( F :h  %?%A%AN\\wF!%)TTD KK)+O+Q+QR S S S T4 ( ( ( HQKKK :>>, ' ' b**,,F  ' 'VJ^J`J` ' a a a :>>. ) ) +-- djnnEV6W6W $$ #J ! %  * * , , ,z~~h'' 855 O- %6  56666 $777 F**,, '.R!Y[[ K 1 = = =  D !    :>>( # # ::>>"344 =Q=S=S +2J!%  5[AAA$$ #J ! %"*T  )))+26GO666"&  5[AAA$$h%8999 :>>) $ $ )++ G&*Y[[LT]^^ 5,8ty{{^bccO*  11333%)Y[[IFF T4 ( ( ( HQKKK :h  * /IW[/\/\/\  &*Y[[LT]^^ t,,, 5,8ty{{^bcc  rcc tjtjddd}tj|5}|dt |gt jddt |dg|zttj d tj tj   cd d d S#1swxYwYd S) z Run same command in lve and set environ RUNNING_IN_LVE=1 in order to check it in child process. :return: ri@)ls_cpuls_cpus ls_memory_phy--lve-idz/bin/lve_suwrapper-n/usr/sbin/cloudlinux-summary1)rCPU_DATAenvN) lvectllibmake_liblve_settingscreate_liblve_settings temporary_lveextendrrYcallrrrrdumps CPUINFO_DATA)argsr lve_ids rd_run_self_in_lvez"CloudlinuxSummary._run_self_in_lve\s1  ,,      $X . . & KKS[[1 2 2 2?%tS[[:XY\``J#&"Z (>??                      sBCCCcjtjgd|zttjdS)z Run same command using utility `nice` and set environ RUNNING_BY_NICE=1 in order to check it in child process. :return: )z /usr/bin/nicerc19rdre)rrg)rYrnrrr)rqs rd_run_self_by_nicez#CloudlinuxSummary._run_self_by_nicexsE I I ID P #    rcoptsc|tfddDrdStfddDrdSdS)zK Check that passed command should run as unlimited process c3(K|] }|V dSrarbroptionrws rdrzECloudlinuxSummary._should_run_as_unlimited_process..s;    L       rc)rDr>rBr7r8r<r=Tc3(K|] }|V dSrarbrzs rdrzECloudlinuxSummary._should_run_as_unlimited_process..s;   L      rc)rFrK--jsonrF)rs)rws`rd _should_run_as_unlimited_processz2CloudlinuxSummary._should_run_as_unlimited_processs          4          5urcc|||_|jr)|||jrt jddSttj s+| |}t j|dS | |}t j|dS#tj $rc}d|}t|tjt"}||dt jdYd}~dSd}~wwxYw||jr]d}t'j|d}t(||jt-|dt jd |dS) Nrz"failed to run task in lve, error: T)exc_infoz|You shouldn't use env var "RUNNING_IN_LVE" or "RUNNING_BY_NICE" for run of any command except collection of main statistics.r:)extrarR) _parse_argsr}rr\r~rQrRrrLVErvrsri PyLveErrorprintlogging getLogger__name__ exceptionr2rrr1run_get_summary)rargvrcr error_msglogerr_msgrCs rdrZzCloudlinuxSummary.runs%%d++  &( #  7 7 9 9 944TZ@@ ! / << !++D11 !..t44BHRLLLLL +!!! HQ H HI)$$$!+H55CMM)dM;;;HRLLLLLLLLL !44TZ@@ *"&%    ;;; t,,,  " " " " "s,)CE &AEE cxtj}|tj|z }||jd<|jdr0|jt |j|ddd|jdr||j|j dt d  | dS#t$r&}td |Yd}~dSd}~wwxYwt|jddS) Ncl_summary_execution_timerbrcl_summary_max_mem_usedz,Can't get memory usage by cloudlinux-summaryrFTrGzMain statistics sentWebsite collector failed: %s)r2 _get_summaryrr} add_metricr_get_max_memoryrrUrrrwebsite_collectorrrr1)r start_time running_timers rdrz!CloudlinuxSummary.run_get_summarysZY[[  y{{Z/ 7C34 :j !  O & &,l;;)>     :>>( # # 4  1 1$  2    OO2 3 3 3 D&&((((( D D D  !?CCCCCCCCC D T_d 3 3 3 3 3sC22 D"<DD"r;summary_resultcvtj|d}|dkr||d<tj|d<t|dS)z@ Save status of sending statistics to json file rr;r9rrN)r=SUCCESSrWrM)r;rr[s rd _save_statuszCloudlinuxSummary._save_statussJ "/!6YOO Y & &$2K !$1$8K !,[99999rcrHrIrJcttj}||d<|||}||d}t|d|r|||dSdS)zH Send statistics data to server and save status to file r;)rIrTN)r"r2_send_statisticsr1r)rrHrIrJr;s_resultrs rdrUz2CloudlinuxSummary._send_statistics_and_save_statuss $$ ( ((c(::$9==&&&            rcc |dz }|dkrdSdddt|jdddd ttj|d g} t |d \}}}n3#t $r&}td |Yd}~dSd}~wwxYw|dkrLtj |} td|dDS#ttf$rYdSwxYwtd||dS)NrrRz/usr/sbin/lveinfor}z--idrbz--show-columnsmPMemz--periodmTreturn_full_outputz Unable to run lveinfo, error: %src3&K|] }|dV dS)rNrbrxs rdrz4CloudlinuxSummary._get_max_memory..%s&CC!1W:CCCCCCrcrCz-lveinfo failed with exit code: %i, output: %s)rr}r"mathceilr,r"rwarningrloadsmaxrrr) rr time_minutescmdrjson_strrr parsed_datas rdrz!CloudlinuxSummary._get_max_memorysM#b( !  4     :& ' '   49\**++ . . .   )#$GGGOB!!$      A1 E E E44444  77*X..K CC{6/BCCCCCC)   tt H"hWWWts*A)) B3BB7CC+*C+cfd} d|}t|tjd}t dD]P} tj||d}n7#tj$r#}|}tjd|zYd}~Id}~wwxYw||j d krtd n,d |j d |j }t|nE#tj$r3}t|}t |Yd}~nd}~wwxYw|S) z Sends statistics to server :param data: Statistics data dict :return: string - message for JSON 'result' key r9zSending statictics to server z*Unknown exception while sending statisticsr)rrNzSending statictics OKrr) rrrrrpostConnectionErrorr2r3rrrr)rCrI out_messager expected_errirerrs rdrz"CloudlinuxSummary._send_statistics+st  *;c;;G OOG $ $ $#45abbL1XX # #'}StRHHHH E  /%%%#&LJq!t$$$$$$$$% #"#s** 78888nX=Qnn]e]lnn  ,,,( * * *c((K   [ ) ) ) ) ) ) ) ) *sCAC, A" C,"B1B C,BAC,,D.;)D))D.c "|jstddStjt jkrtddStd}||}t dt|| ddkstd dStj rtd dS | d }tt| }||jpt|dn| d d|t#rdntj||j| dddS#t($r&}td|Yd}~dSd}~wwxYw)z4 Collect data via WebsiteCollector. z:Website collector is disabled because system_id is not setNz,Website collector is disabled for non-cPanelFcheck_expirationzWebsite collector status: %sdecisiononz0Website collector is disabled by remote settingsz.Website collector is disabled via opt-out file domains_limit)logger max_sitesrrconfig_versionre)rrplatformpanelserverapi_urlremote_config_versionr)rrdebugrrr CPANEL_NAMEr@rrrrr;is_collection_disabled send_dataUNKNOWN_RHN_IDrr_get_control_panel_apacheWEBSITE_COLLECTOR_URLrr)rrwebsite_collector_statusr collectorrs rdrz#CloudlinuxSummary.website_collectorNs ~    Y Z Z Z4    !2 2 2   K L L L44eLLL $(#A#A+#N#N 6&B&BCSU^&_&_            ;Q ? ? ?44444 sC G H(H  Hcdtjd}||j||SNrR)versionr;)r2_prepare_cl_normal_statisticsrrrrs rdrzCloudlinuxSummary._get_summary}sBTY[[99 **,,, v&&& rccdtjd}||j||Sr)r2'_fill_dict_with_rpm_packages_statisticsrrrs rdrTz+CloudlinuxSummary._get_rpm_packages_summarysBTY[[99 44666 v&&& rcc@tjtjS)z. Get version of control panel )rgetCP CP_VERSIONrbrcrd_get_panel_versionz$CloudlinuxSummary._get_panel_versions    rcc.|jtjd\}}|st|jd<dS|H||jd<|jdddd|jd ddd dSt |jd<dS) zN Fill dict with statistics by statistics about MySQL governor zCan't get MySQL governor modemysql_governor_statusNmysql_governor_modecBtSra)rget_governor_versionrbrcrdrqzCCloudlinuxSummary._fill_mysql_governor_statistics..s <<>>rcrmysql_governor_versionz Can't get MySQL governor versioncNtdSNr)rget_governor_statusrbrcrdrqzCCloudlinuxSummary._fill_mysql_governor_statistics..s ;;==a@rczCan't get MySQL governor status)r evaluate_safer/get_gov_mode_operationERRORrr)rr9mysql_gov_modes rd_fill_mysql_governor_statisticsz1CloudlinuxSummary._fill_mysql_governor_statisticss #'/"?"?  2 +# #  E7>(2     O & &@@'1      8EDO3 4 4 4rcc|jtjddd|jdddd|j|jddd |j|jdd d |jt d d d|jdd ddtjtjkr"|j|j d dd|j|j d dd|jtd dddS)zM Fill dict with statistics by statistics about control panel rcontrol_panel_namezCan't get control panel namec`dtjDS)Ncg|] \}}|| Srbrb)rname is_supporteds rd zVCloudlinuxSummary._fill_control_panel_statistics....s#nnn0dLamnTnnnrc)rget_supported_cl_featuresitemsrbrcrdrqzBCloudlinuxSummary._fill_control_panel_statistics..s*nnE4S4U4U4[4[4]4]nnnrcstr_listsupported_cl_featuresz8Can't get list of supported cl features by control panelcontrol_panel_versionzCan't get control panel versioncontrol_panel_apachezCan't get control panel apacher" nginx_runningzCan't get control panel nginxcBttjSra)lenrcpusersrbrcrdrqzBCloudlinuxSummary._fill_control_panel_statistics..s3u}+?+?rc users_totalzCan't get amount of usersinstalled_via_plesk_extz8Can't determine if CL was installed from Plesk Extensionlogin_via_whmcs_in_usez)Can't determine if Login via WHMCS in userz Can't if that is WP2 environmentN) rrrrrrr(r PLESK_NAME_is_installed_via_plesk_ext_is_login_via_whmcs_in_userrs rd_fill_control_panel_statisticsz0CloudlinuxSummary._fill_control_panel_statisticss ""    *    "" n n  # F    ""  #  # -     ""  *  " ,    ""#3UOMlmmm ""#?#? Wrsss    !1 1 1 O & &0)J     ""  +  $ 7     "" ';=_     rcc d}tjtjkr|Sgd}t j|ddd}t j|j}d|vr{d|dvrq|ddD]b}|ddkrTd }t| d d | d d | d d grd}nc|S)zA Determine whether the login method is via WHMCS r)z/usr/local/cpanel/bin/whmapi1&get_available_authentication_providersz--output=jsonprettyT)capture_outputrrOrC providers provider_namewhmcsrwhostmgrd_enabledFcpaneld_enabledwebmaild_enabledrR) rrrrrYrZrrstdoutrsr)r>commandrrCproviders rdrz,CloudlinuxSummary._is_login_via_whmcs_in_uses     !2 2 2Mttt4tTTTz&-(( T>>kT&\99 L5  O,77F$LL)>' " " F rcctr/tjrd}nDtjrd}n.d}n+|jddkrtjrdnd}nd}|S) z Wrapper to retrieve control panel Apache version: EA3 or EA4 for cPanel, native otherwise :return: EA3|EA4|native litespeed openlitespeedunknown_litespeedrcPanelEA4EA3native)r'rdetect_enterprise_litespeeddetect_open_litespeedris_ea4rs rdrz+CloudlinuxSummary._get_control_panel_apaches~ ! ! 133 -$-// -(- _1 2h > >$moo8UU5FFF rcctj}||Stjttjt dt dti}||dS)z Wrapper to convert internal values from cagefs_statistics_config.get_cagefs_status function to values for statistics :return: NEnabledDisabledUnknown) r-get_cagefs_statusCAGEFS_STATUS_NOT_INSTALLEDrCAGEFS_STATUS_NOT_INITIALIZEDNOT_INITIALIZEDrrr) cagefs_statuscagefs_status_maps rd_cagefs_status_wrapperz(CloudlinuxSummary._cagefs_status_wrapper*sX1BDD   $ @- $ BO w    !$$]I>>>rcc|j|jddd|jdttfvr d|jd<n'|jt jddd|jtt jdddd |jtt jd dd d dS) zF Fill dict with statistics by statistics about CageFS rr'zCan't get CageFS statusNcagefs_user_modezCan't get CageFS user modeTcagefs_enabled_quantityz/Can't get quantity of users with enabled CageFSFcagefs_disabled_quantityz0Can't get quantity of users with disabled CageFS) rrr)rr&r-get_cagefs_user_moder get_quantityrs rd_fill_cagefs_statisticsz)CloudlinuxSummary._fill_cagefs_statistics<s ""  '   %    ?? + /O O O26DO. / / O & &(=",     "" ,94 @ @  % =    "" ,95 A A  & >      rccD td|jD}n#tj$rYdSwxYwt |jjtfd| DS)zJ Get amount of end-users which belong to active resellers c3,K|]\}}|dk |VdSrNrbrrlvps rdrzLCloudlinuxSummary._get_amount_of_endusers_under_resellers..b2YY3QTWXQXQXQXQXQXQXYYrcNc3 K|]}|vV dSrarb)rlvp_idenabled_lvp_ids rdrzLCloudlinuxSummary._get_amount_of_endusers_under_resellers..fs(OO6^+OOOOOOrc) rr lve_lvp_pairsrrNsetname_mapid_listsumelements)r lvp_countr9s @rd'_get_amount_of_endusers_under_resellersz9CloudlinuxSummary._get_amount_of_endusers_under_resellers]s YY$+2K2K2M2MYYYYYII!   44 T[199;;<<OOOO):L:L:N:NOOOOOOs04AAc td|jD}n#tj$rYdSwxYwt |S)z/ Get total amount of end-users c3,K|]\}}|dk |VdSr3rbr4s rdrzBCloudlinuxSummary._get_total_amount_of_endusers..mr6rcN)rrr:rrNr>ru)rr@s rd_get_total_amount_of_endusersz/CloudlinuxSummary._get_total_amount_of_endusershsr YY$+2K2K2M2MYYYYYII!   44 9##%%&&&s03AAcp ttjS#tj$rYdSwxYw)z) Get amount of resellers N)rr resellersrNrbrcrd_get_amount_of_resellersz*CloudlinuxSummary._get_amount_of_resellersrsB  u(()) )!    DD s "55cjtjjdddjtjjdddjtjjdddjjddd jjdd d jj dd d jfddddjdr jdddddSdjd<djd <djd<dS)zP Fill dict with statistics by varied statistics about resellers r" reseller_limits_supported_kernelz8Can't detect status of support reseller limits by kernel'reseller_limits_supported_control_panelz?Can't detect status of support reseller limits by control panelreseller_limits_enabledz1Can't detect status of support of reseller limitsresellers_totalz#Can't get total amount of resellers(resellers_endusers_under_reseller_limitsz>Can't get amount of end-users which belong to active resellersresellers_endusers_totalz#Can't get total amount of end-usersc,Sra)_get_resellers_with_faultsrsrdrqz>CloudlinuxSummary._fill_resellers_statistics..sD3355rcresellers_with_faultsz:Can't get amount of resellers with faults for the past 24hc\tttjSra)rlistrilvp_listrbrcrdrqz>CloudlinuxSummary._fill_resellers_statistics..sD!3!5!56677rcresellers_activez$Can't get amount of active resellersN) rrrilveis_lve10is_panel_supportedreseller_limit_supportedrGrArDrs`rd_fill_resellers_statisticsz,CloudlinuxSummary._fill_resellers_statistics|s "" M "  . F    "" M ,  5 M    "" M 2  & ?     ""  )   1    ""  8  6 L    ""  .  & 1    "" 5 5 5 5  # H    ?4 5 < O & &77"6      37DO. /JNDOF G7;DO3 4 4 4rcxml_cfg_providerc|jt|jjt jjt jddd|jt|jjt jddd|jfdddd |jfd dd d |jfd ddd|jfdddd|jfdddd|jt|j jt j ddd|jt|j jt j ddddS)zN Fill dict with statistics by statistics about default limits r"default_limit_speedzCan't get default speed limitrdefault_limit_cpu_origin_unitsz+Can't get cpu origin units of default limitc2jtjSra)defaultsr3ncpur[srdrqzCCloudlinuxSummary._fill_default_limits_statistics..$-h7<rcdefault_limit_ncpuzCan't get default ncpu limitc2jtjSra)r`r3iorbsrdrqzCCloudlinuxSummary._fill_default_limits_statistics..$-h7:rcdefault_limit_iozCan't get default io limitc2jtjSra)r`r3nprocrbsrdrqzCCloudlinuxSummary._fill_default_limits_statistics..s$-h7=rcdefault_limit_nproczCan't get default nproc limitc2jtjSra)r`r3eprbsrdrqzCCloudlinuxSummary._fill_default_limits_statistics..rgrcdefault_limit_epzCan't get default ep limitc2jtjSra)r`r3iopsrbsrdrqzCCloudlinuxSummary._fill_default_limits_statistics..rcrcdefault_limit_iopszCan't get default iops limitdefault_limit_vmem_mbzCan't get default vmem limitdefault_limit_pmem_mbzCan't get default pmem limitN) rrr_cpu_limit_to_percentsr`r3cpura_get_cpu_limit_units_mempages_to_mbvmempmemrr[s `rd_fill_default_limits_statisticsz1CloudlinuxSummary._fill_default_limits_statisticss "" + )(37 )(38    ! +  "" D-/?/H/R/V W W  , 9    "" < < < <  *    "" : : : :   (    "" = = = =  ! +    "" : : : :   (    "" < < < <  *    "" D(*:*CH*M*R S S  # *    "" D(*:*CH*M*R S S  # *      rcc |jfdddd|jfdddd|jfddd d |j|jdd d d S)z Fill dict with statistics by other statistics about limits: packages_total, users_total, amount users/packages with custom limits c,tjSra)rpackagesrbsrdrqzACloudlinuxSummary._fill_other_limits_statistics..sC(122rcr"packages_totalz"Can't get total amount of packagescFtSra)rget_packages_with_custom_limitsrbsrdrqzACloudlinuxSummary._fill_other_limits_statistics..sC(HHJJKKrcpackages_with_custom_limitsz/Can't get amount of packages with custom limitscFtSra)rget_users_with_custom_limitsrbsrdrqzACloudlinuxSummary._fill_other_limits_statistics.. sC(EEGGHHrcusers_with_custom_limitsz,Can't get amount of users with custom limitsusers_with_faultsz6Can't get amount of users with faults for the past 24hN)rr_get_users_with_faultsrzs `rd_fill_other_limits_statisticsz/CloudlinuxSummary._fill_other_limits_statisticss "" 2 2 2 2   0    "" K K K K  ) =    "" H H H H  & :    ""  '   D      rcctddD]}jtj||d|d\}|rdSjfddd|d d jfd d d|d d jfdd d|dd jfddd|dd jfdd d|dd jfdd d|dd jfdd d|dd jfdd d|dd jfdd d|dd jfdd d|dd jfdd d|dd dS) zV Fill dict with statistics by statistics about top packages on server rRrzCan't get top z package by usersNcdjSNrRr top_resultsrdrqzACloudlinuxSummary._fill_top_packages_statistics..+s 1 *rcrtop_ _package_name log_messagec.tdSrr!rsrdrqzACloudlinuxSummary._fill_top_packages_statistics..1sJqM**rcr"_package_users_numcdjptjdjptjSr)rtlimitsr5rurarrsrdrqzACloudlinuxSummary._fill_top_packages_statistics..7s;33])9\>])9\?rc_package_limit_speedc\djptjSr)rvrr5rursrdrqzACloudlinuxSummary._fill_top_packages_statistics..@s)11])9\>rc_package_limit_cpu_origin_unitsc6djptjSr)rr5rarsrdrqzACloudlinuxSummary._fill_top_packages_statistics..HA-=Crc_package_limit_ncpuc6djptjSr)rr5rfrsrdrqzACloudlinuxSummary._fill_top_packages_statistics..NA-=Arc_package_limit_ioc6djptjSr)rr5rjrsrdrqzACloudlinuxSummary._fill_top_packages_statistics..TsA-=Drc_package_limit_nprocc6djptjSr)rr5rmrsrdrqzACloudlinuxSummary._fill_top_packages_statistics..Zrrc_package_limit_epc6djptjSr)rr5rprsrdrqzACloudlinuxSummary._fill_top_packages_statistics..`rrc_package_limit_iopsc\djptjSr)rwrr5rxrsrdrqzACloudlinuxSummary._fill_top_packages_statistics..f$,,jm.B.Rl-XYYrc_package_limit_vmem_mbc\djptjSr)rwrr5ryrsrdrqzACloudlinuxSummary._fill_top_packages_statistics..lrrc_package_limit_pmem_mb)rrrr#_get_top_package_by_number_of_usersr)rr[rr9rs` @rd_fill_top_packages_statisticsz/CloudlinuxSummary._fill_top_packages_statisticsss q!R R A"&/"?"?@!EUVV5555## GZ  j0 O & &****'q''' '    O & &****,q,,, '    O & &.q...  '    O & &9q999 '    O & &CCCC-q--- '    O & &AAAA+q+++ '    O & &DDDD.q... '    O & &AAAA+q+++ '    O & &CCCC-q--- '    O & &YYYYY0q000 '    O & &YYYYY0q000 '    [R R rcct}||||||dS)zN Fill dict with statistiscs by varied statistics about limits N)r4r{rrrzs rd_fill_limits_statisticsz)CloudlinuxSummary._fill_limits_statisticsssU-.. ,,-=>>> **+;<<< **+;<<<<rbraw_lsapi_infosrdrqz:CloudlinuxSummary._fill_lsapi_statistics..sv.x8rcrlsapi_criu_service_statusrc ddS)Nrrrbrsrdrqz:CloudlinuxSummary._fill_lsapi_statistics..sv.y9rclsapi_criu_service_versionc ddS)N lsapiConf lsapi_criurbrsrdrqz:CloudlinuxSummary._fill_lsapi_statistics..s{3LArclsapi_option_criuc ddS)Nrlsapi_with_connection_poolrbrsrdrqz:CloudlinuxSummary._fill_lsapi_statistics..s{34PQrclsapi_option_connection_poolcdS)N libVersionrbrsrdrqz:CloudlinuxSummary._fill_lsapi_statistics.. |4rclsapi_lib_versioncdS)N modStatusrbrsrdrqz:CloudlinuxSummary._fill_lsapi_statistics..s {3rccdS)N modVersionrbrsrdrqz:CloudlinuxSummary._fill_lsapi_statistics..rrclsapi_mod_versioncdS)N totalDomainrbrsrdrqz:CloudlinuxSummary._fill_lsapi_statistics..s }5rcr"lsapi_total_domain_countcdS)N domainStatrbrsrdrqz:CloudlinuxSummary._fill_lsapi_statistics..rrcint_dictlsapi_domain_statcdS)N controlPanelrbrsrdrqz:CloudlinuxSummary._fill_lsapi_statistics..s ~6rclsapi_apache_environment)rrget_raw_lsapi_inforrr)rr9rs @rd_fill_lsapi_statisticsz(CloudlinuxSummary._fill_lsapi_statistics|s #'/"?"?  # *# # A @27DO. / / /  ' O & &8888+ '    O & &9999, '    O & &AAAA# '    O & &QQQQ. '    O & &4444# '    O & &3333" '    O & &4444# '    O & &5555* '    O & &4444# '    O & &6666* '     3@DO. / / /rccJ|j|jddddS)Nstr_dict wmt_configz!Cant get status of wmt_api_config)rr_get_wmt_api_configrs rd_fill_wmt_settings_statisticsz/CloudlinuxSummary._fill_wmt_settings_statisticss3 ""  $j,@c     rcc |\}nF#t$r9}tdt |ggic}Yd}~nd}~wwxYwt t t |z } ||\nD#t$r7}tdt |iicYd}~nd}~wwxYw|r$dt|i|j fdddd|j fdd d d |j fd d d d|j fdddd|j fdddd|j fdd dddS)Nz+Error while getting WordPress statistics %sz3Error while getting WordPress plugins statistics %scloudlinux_wpos_object_cachec"tSrar) all_wp_pathssrdrqz7CloudlinuxSummary._fill_wp_statistics..sC %%rcr"wordpress_installed_totalz,Can't get total count of installed wordpresscSrarbobject_cache_pluginssrdrqz7CloudlinuxSummary._fill_wp_statistics..s(rcrwordpress_object_cache_pluginsz&Can't get WP object cache plugins infocSrarbadvanced_cache_pluginssrdrqz7CloudlinuxSummary._fill_wp_statistics..s*rc wordpress_advanced_cache_pluginsz(Can't get WP advanced cache plugins infocFtSrar>rursrdrqz7CloudlinuxSummary._fill_wp_statistics..sC,335566rc$wordpress_object_cache_plugins_totalz,Can't get WP object cache total plugins infocFtSrarrsrdrqz7CloudlinuxSummary._fill_wp_statistics..sC.557788rc&wordpress_advanced_cache_plugins_totalz.Can't get WP advanced cache total plugins infocSrarb)wp_php_versionssrdrqz7CloudlinuxSummary._fill_wp_statistics..sOrcwordpress_php_versionszCan't get WP php version info) _prepare_wp_statisticsrrrrrSr;_prepare_wp_plugins_statisticsrrrr)rpaths_with_wpos_object_cacherwithout_wpos_object_cacherrrrs @@@@rd_fill_wp_statisticsz%CloudlinuxSummary._fill_wp_statisticss UJNJeJeJgJg GL6 U U U   JCPQFF S S SJLbRT GL6 U%)\):):SA]=^=^)^$_$_! B;?;^;^)<< 8 "8"8 B B B   RTWXYTZTZ [ [ [;=r 8 "8"8"8"8"8"8 B ( m ' ')GMiIjIj(k l l l "" % % % %  ' :    "" ( ( ( (  , 4    "" * * * *  . 6    "" 6 6 6 6  2 :    "" 8 8 8 8  4 <    "" # # # #Z1IKj     s, A"/AA"B++ C,5-C''C,cB |\nC#t$r6}tdt |ggYd}~nd}~wwxYw|jfdddd|jfdddddS) Nz4Error while getting per-user WordPress statistics %sc"tSrar) users_with_wpsrdrqz@CloudlinuxSummary._fill_per_user_wp_statistics.. sC &&rcr"$users_count_with_wordpress_installedz7Can't get total count of users with wordpress installedc"tSrar)users_with_wp_and_litespeedsrdrqz@CloudlinuxSummary._fill_per_user_wp_statistics..sC344rc0users_count_with_wordpress_and_lscache_installedzECan't get total count of users with wordpress and LiteSpeed installed)_prepare_per_user_wp_statisticsrrrrrr)rrrrs @@rd_fill_per_user_wp_statisticsz.CloudlinuxSummary._fill_per_user_wp_statisticss -9=9]9]9_9_ 6M66 - - -   SUXYZU[U[ \ \ \M*, ' ' ' ' ' ' - "" & & & &  2 E    "" 4 4 4 4  > S      s A,AAcb|d|}|d|}||fS)zq Prepares dict with plugin-counter pairs e.g: {'w3-total-cache': 4, 'redis': 1, 'ls': 2} object-cacheadvanced-cache)_get_plugin_info)rwp_pathsrrs rdrz0CloudlinuxSummary._prepare_wp_plugins_statisticss= $44^XNN!%!6!67G!R!R#%;;;rc plugin_typercttdfd|D}tt}|D]}||xxdz cc<|S)Nc0g|]}t|Srb)r)rrrs rdrz6CloudlinuxSummary._get_plugin_info..$s%1n1n1n]a2EdK2X2X1n1n1nrcrR)rSfilterrr")rrrobject_plugin_counter_pairsplugins` rdrz"CloudlinuxSummary._get_plugin_info"ss#F41n1n1n1nem1n1n1n$o$opp&1#&6&6#* 5 5F ' / / /1 4 / / / /**rccjgg}}tt}tj}|D]} tj|}n#t $rY%wxYwtt }|D]?\}} tj | r||  |@|D]~} | || |} | d} | d} | | | | d| r#| dkr|| xxt| z cc<|||fS)z Return Wordpress absolute paths, paths with install WPOS object cache module and counter of php versions that are used by these Wordpresses. r php_version'wp_paths_with_enabled_wpos_object_cache undefined)rr"rr userdomainsrrSrrrappend_get_docroot_wp_informr) rr$paths_with_enabled_wpos_object_cache php_versions panel_usersuser domains_infodocroot_domains_mapdomaindocroot docroot_infodocroot_wp_pathsdocroot_php_versions rdrz(CloudlinuxSummary._prepare_wp_statistics*s >@: "3'' moo  O OD $066     #.d"3"3 #/ @ @7>>'**@'077???. O O#88wH[\\ #/ #; &2=&A###$45554;;LIr>'**@'077???. : :#88wH[\\ |J/00144!%%d+++|$KLMMPQQQ/33D999  :999sA  B(BBrrrcggtdd}fdtD}|s|Sfd|D|d< fdt||D|d<n*#t$rtdYnwxYw|dD]} t |d }n,#t$rtd d }YnwxYw|d |vr|d | t |d}n,#t$rtdd }YnwxYw|d |vr|d |D]$} || } | dkr| |d<n%|S)zM Return data about docroot's WP paths and used php versions. r )rr rr cg|]J}tj|ks"tj|vH|KSrb)rrr)rwp_pathrrs rdrz:CloudlinuxSummary._get_docroot_wp_info..vsZ    Wg..'99RW\\'SZ=[=[cv=v=v =v=v=vrccTg|]$}t|%Srbr joinpathrrrs rdrz:CloudlinuxSummary._get_docroot_wp_info..s-#V#V#VTDMM$:$:4$@$@#V#V#VrcrcXg|]&}|t|'Srar"r$s rdrz:CloudlinuxSummary._get_docroot_wp_info..s@GGG#W &&t,,###rcr z:Can't get WordPress sites with enabled Object Cache modulerz0Can't get Object Cache plugin for Wordpress siteNrrrz2Can't get Advanced Cache plugin for Wordpress siter ) r;rrrrrrr_get_php_version_for_domain) rrrrrrrobject_cache_pluginadvanced_cache_pluginrr s `` rdrz&CloudlinuxSummary._get_docroot_wp_infohss7958UU&        (11     #V#V#V#VX#V#V#V Z  _GGGG266G+Os7||mO<BB3GGK-+ -  rc)maxsizec tjd}n#t$rd}YnwxYwtj}t }| |d}ni}|||fS)z Return info about: - system_php_version (implemented only on cPanel) - domains_php_info (php versions and handlers turned on in MultiPHP) - selector_php_info (php version used by panel users via PHP Selector) default_version_idNdomains_by_php_version)rget_system_php_inforget_domains_php_inforY)system_php_versionr2php_selector_usager3s rdr/z&CloudlinuxSummary._get_system_php_infos &!&!:!. y/Brcr ssa_configzCan't get SSA configcdS)NrrbrFsrdrqz8CloudlinuxSummary._fill_ssa_statistics..s ),rcr ssa_versionzCan't get version of SSAcdS)Nr>rbrFsrdrqz8CloudlinuxSummary._fill_ssa_statistics..rHrczCan't get state of SSAcdS)N agent_statusrbrFsrdrqz8CloudlinuxSummary._fill_ssa_statistics..s .1rcssa_agent_statuszCan't get state of SSA agentc ddS)N autotracingr>rbrFsrdrqz8CloudlinuxSummary._fill_ssa_statistics..s -0:rcautotracing_statusz"Can't get state of SSA Autotracingc ddS)NrQdisabled_users_quantityrbrFsrdrqz8CloudlinuxSummary._fill_ssa_statistics..s -01JKrcr"#autotracing_disabled_users_quantityz1Can't get state of SSA Autotracing disabled usersc ddS)NrQ rules_versionrbrFsrdrqz8CloudlinuxSummary._fill_ssa_statistics.. -0Arcautotracing_rules_versionz'Can't get SSA Autotracing rules versionc ddS)NrQurls_processedrbrFsrdrqz8CloudlinuxSummary._fill_ssa_statistics..s -01ABrcautotracing_urls_processedz.Can't get SSA Autotracing processed URLs countc ddS)NrQ urls_selectedrbrFsrdrqz8CloudlinuxSummary._fill_ssa_statistics..rXrcautotracing_urls_selectedz-Can't get SSA Autotracing selected URLs countc ddS)NrQrejectsrbrFsrdrqz8CloudlinuxSummary._fill_ssa_statistics..s -0;rcrautotracing_rejectsz!Can't get SSA Autotracing rejects)rr get_ssa_statsrrr)rr9rGs @rd_fill_ssa_statisticsz&CloudlinuxSummary._fill_ssa_statisticss;"_::   &    ,1DOL ) F  O & &'B'B'B'BJP\^t u u u O & &,,,,e]D^    O & &'B'B'B'BE.)s+E22rcz+Can't get statistics about PHP interpretersselector_php_statusNrrz Can't get status of PHP selectorrselector_php_versions_installedrselector_php_versions_enabledselector_php_version_defaultz,Can't get default version of PHP interpreterselector_php_version_nativez+Can't get native version of PHP interpreterr"selector_php_enabled_uiz%Can't get state of UI of PHP selectorselector_php_modezCan't get mode of PHP selectorz'Can't get summary usage of PHP selector'selector_php_num_domains_by_interpreter%selector_php_num_users_by_interpretercLddDS)Nc4i|]\}}|t|Srbrrvr6s rd zUCloudlinuxSummary._fill_php_selector_statistics....bs$sssGQG sssrcr=rphp_usage_summarysrdrqzACloudlinuxSummary._fill_php_selector_statistics..bs)ss?PQi?j?p?p?r?rsssrcrcLddDS)Nc4i|]\}}|t|Srbrrrs rdrtzUCloudlinuxSummary._fill_php_selector_statistics....hs$qqqGQG qqqrcusers_by_php_versionrurvsrdrqzACloudlinuxSummary._fill_php_selector_statistics..hs)qq?PQg?h?n?n?p?pqqqrc)rrrrrr"_get_list_versions_of_interperters INSTALLEDrrVrXr\php_selector_is_enabledrWrYr)rr9php_interpretersrws @rd_fill_php_selector_statisticsz/CloudlinuxSummary._fill_php_selector_statistics#s %)O$A$A 2 24a% % !!B C5:DO1 2 2 2  ) O & &4e<<%2     O & &?AQS\]]1 '    O & &?AQSZ[[/ '    O & &'.>     O & &'-=     O & &%e,,D)7     O & &(#0     *.)F)F&9** &G& /7MQ IJKO GHHH**ssss= $ + **qqqq; $ +6CDO1 2 2 2rc total_appsamount_of_apps_per_domainc(|dks|dkrdS||zS)z Get average amount of applications per domain :param total_apps: total amount of applications :param amount_of_apps_per_domain: amount of applications per domain rRNrb)rrs rd_get_average_apps_per_domainz.CloudlinuxSummary._get_average_apps_per_domainps) >>6::4666rcamount_of_apps_per_userc(|dks|dkrdS||zS)z Get average amount of applications per user :param total_apps: total amount of applications :param amount_of_apps_per_user: amount of applications per user rRNrb)rrs rd_get_average_apps_per_userz,CloudlinuxSummary._get_average_apps_per_user|s) >>4q884444rcappsc4td|DS)z Get amount of running applications on server :param apps: list of applications for something selector c6g|]}|j |jdk|S)started) app_status)rapps rdrz@CloudlinuxSummary._get_amount_of_runned_apps..s,ZZZC3>ZcnPY>Y>YC>Y>Y>Yrcr)rs rd_get_amount_of_runned_appsz,CloudlinuxSummary._get_amount_of_runned_appss!ZZ4ZZZ[[[rcct}|D]}||jxxdz cc<|dpdg}|ddS)z Get maximum amount of applications per domain :param apps: list of applications for something selector rRrrr)rdoc_root most_common)rapps_per_domainr most_commonss rd_get_max_apps_per_domainz*CloudlinuxSummary._get_max_apps_per_domainsh")) / /C CL ) ) )Q . ) ) ) )'22155A& Aq!!rcct}|D]}||jxxdz cc<|dpdg}|ddS)z~ Get maximum amount of applications per user :param apps: list of applications for something selector rRrr)rrr)r apps_per_userrrs rd_get_max_apps_per_userz(CloudlinuxSummary._get_max_apps_per_usersh  ) )C #( # # #q ( # # # #%0033?x Aq!!rccVt}|D]}||jxxdz cc<|S)z Get Counter object which contains amount applications per version of interpreter :param apps: list of applications for something selector rR)rr)rapps_per_versionrs rd_get_counter_apps_per_versionz/CloudlinuxSummary._get_counter_apps_per_versionsD#99 / /C S[ ) ) )Q . ) ) ) )rccx||}|dpdg}|ddS)z Get maximum amount of applications per version of interpreter :param apps: list of applications for something selector rRrr)rr)rrrrs rd_get_max_apps_per_versionz+CloudlinuxSummary._get_max_apps_per_versionsC  ==dCC(33A66B6( Aq!!rcczt}|D]}||jt|S)zz Get amount of domains with applications :param apps: list of applications for something selector )r;rrr)rr6rs rd _get_amount_of_domains_with_appsz2CloudlinuxSummary._get_amount_of_domains_with_appss?%% & &C KK % % % %7||rcczt}|D]}||jt|S)zx Get amount of users with applications :param apps: list of applications for something selector )r;rrr)rusersrs rd_get_amount_of_users_with_appsz0CloudlinuxSummary._get_amount_of_users_with_appss?  C IIch    5zzrccJ||}t|S)z Get amount of applications per each version of interpeters :param apps: list of applications for something selector )rr)rrrs rd4_get_amount_of_apps_per_each_version_of_interpreterszFCloudlinuxSummary._get_amount_of_apps_per_each_version_of_interpreterss'  ==dCC$%%%rcinterpreters_statsstatecDfd|DS)z Get list of versions of interpreters on server :param interpreters_stats: dict with varied statistics about each version of interpeters :param state: state of interpeters (installed, enabled) c*g|]\}}| |Srbrb)rinterpreter_statsstatrs rdrzHCloudlinuxSummary._get_list_versions_of_interperters..s,kkk&=&7_cdi_jk!kkkrcru)rrs `rdr{z4CloudlinuxSummary._get_list_versions_of_interperterss-lkkkASAYAYA[A[kkkkrccFt|}|t|SgS)zI Get list of apllications on server for defined selector )r[rS)r iter_appss rd_get_list_of_applicationsz+CloudlinuxSummary._get_list_of_applicationss( -[99   ?? " rcc X|jD]}|jtt|d|d\}}|t |jd|zdz<P|st |jd|zdz<h|jt|j|dd|zdz|rd|dnd|jt|j |td d|zd zd |jt|j |td d|zd zd |jt|j |d |d\}|sY|jfddd|zdzd |jd|zdzdk|jd|zdz<|jt|j dd|zdzd |jtt|d|d\}}|r|||jd|zdz<|jt|jdd|zdzd|d|jt|jdd|zdzd|d|jt|jdd|zdzd|d|jt|jdd|zdzd |d|jt|j|jd|zdz|jd|zdzd!|d\}}|r|||jd|zd"z<|jt|j|jd|zdz|jd|zdzd#|d\}}|r|||jd|zd$z<|jt|jd%d|zd&zd'|d!dS)(zc Fill dict with statistics by varied statistics about ruby/nodejs/python selectors zCan't get statistics about z interpretersN selector__statusrzCan't get status of z selectorr_versions_installedr_versions_enabledzCan't get list of z applicationsc"tSrar)interpreter_appssrdrqz>CloudlinuxSummary._fill_selectors_statistics..3s,--rcr"_applications_amountr_used_applications_runningzCan't get default version of _default_version_max_applications_per_domainz*Can't get max applications per domain for z interpreter_max_applications_per_userz(Can't get max applications per user for _num_users_with_appsz0Can't get amount of users with applications for z interpeter_num_domains_with_appsz2Can't get amount of domains with applications for z8Can't get average amount of applications per domain for _average_applications_per_domainz6Can't get average amount of applications per user for _average_applications_per_userr _num_applications_by_interpreterz5Can't get amount of applications per each version of ) SELECTORSrrrrZrrrrr{r|rrrrUrrrrrrr)rselectorr9rdefault_version_of_selectoraverage_apps_per_domainaverage_apps_per_userrs @rd_fill_selectors_statisticsz,CloudlinuxSummary._fill_selectors_statisticss o o H*./*G*G/::EhEEE++ 'G'")FS h 6 BC FK h 6 BC O & &4h??h&2>EO:x::::4     O & &?ASU^__h&)>> '    O & &?ASU\]]h&)<< '    )-(E(E6AA_v h 69[ [\-1_-J-J3OK($:=S$STOK($:=S$ST `___ .. *G* s0<]r h 69Y YZ O & &QScddh&)KK____     Uo o rccddg}t|d\}}}|dkrt|tj|}i}|d|d<d|dD}tD]#}||t |d |z<$|S) zA Get wizard status and list of installed modules z/usr/sbin/cloudlinux-wizardr>Trr wizard_statusc,i|]}|d|dS)rr>rb)rrps rdrtz.s#```v&.&*:```rcrrwizard_module_)r,r"rrr6r NOT_SELECTED)rret_codestd_outstd_err parsed_jsonwizard_statisticsparsed_modulesrps rd_get_wizard_statisticsz(CloudlinuxSummary._get_wizard_statisticszs -h7%0%N%N%N"'7 q=='00 0j)) -8-I/*``U^I_```! d dF;I;M;MfVb;c;c .7 8 8  rcc|j|jd\}|jfddddtD]'|jfdddzd(dS) zX Fill dict with statistics by varied statistics about cloudlinux-wizard z,Can't get statistics about cloudlinux-wizardcdS)Nrrb)rsrdrqz;CloudlinuxSummary._fill_wizard_statistics..s %o6rcrrNrcdzS)Nrrb)rprsrdrqz;CloudlinuxSummary._fill_wizard_statistics..s)*:V*CDrcr)rrrrr6)rrrprs @@rd_fill_wizard_statisticsz)CloudlinuxSummary._fill_wizard_statisticss $<<  ' :    "" 6 6 6 6   #   "  F O & &DDDDD 6) '      rcct}g}|D],}|t||z }-|S)zH Returns list of implemented scripts in integration.ini )r:rSkeys)rEscriptssections rd$_get_implemented_integration_scriptsz6CloudlinuxSummary._get_implemented_integration_scriptssL #$$ 4 4G tF7O002233 3GGrccdgd}tjts|Sd|d<||d<|S)zh Checks integration script exists and if exists get list of implemented scripts F)integration_scripts_usedintegration_scripts_specifiedTrr)rrrr9rrs rd_get_integration_infoz'CloudlinuxSummary._get_integration_infosT /4VXYYw~~k** M-1)*262[2[2]2]./ rccd}tj}t|j|z }t|j|z }||fS)zG Gets memory usage: total and used memory in megabytes i)psutilvirtual_memoryfloattotalused) bytes_in_mbmem mem_totalmem_useds rd_get_memory_usedz"CloudlinuxSummary._get_memory_usedsH  #%%#)$${2 ??[0(""rccHtj}d}d}ttjrot j|rPt|dd5}| }dddn #1swxYwY||fS)za Gets kernel info release and module version (starting from 7h) :return: z/sys/module/kmodlve/versionNrrr) rreleaserrrrrrrrr)kernel_releasekmodlve_version_filekmodlve_versionrs rd_get_kernel_infoz"CloudlinuxSummary._get_kernel_infos ")++< %gk 2 2 3rw~~FZ7[7[ 3*C'BBB 3a"#&&((.."2"2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3..s"'BBBc8ttS)zp Gets info about lve extensions usage Calculates amount of packages with lve extensions )rrArbrcrd#_get_lve_extensions_packages_amountz5CloudlinuxSummary._get_lve_extensions_packages_amounts 355666rcc d}tj|sdSt|dd5}|}dddn #1swxYwYt t|S)zk Reads /proc/sys/fs/datacycle/enable in order to check datacycle enabled parameter z/proc/sys/fs/datacycle/enableFrrrN)rrrrrrrr")datacycle_filerrCs rd$_is_kernel_datacycle_enabled_in_filez6CloudlinuxSummary._is_kernel_datacycle_enabled_in_files 9w~~n-- 5 .# 8 8 8 $A6688>>##D $ $ $ $ $ $ $ $ $ $ $ $ $ $ $CIIs'A))A-0A-cd\}}tj|sdSt|dd5}|d}dddn #1swxYwY||vS)zR Checks if datacycle parameter was given for current boot )z /proc/cmdline datacycleFrrr N)rrrrrrsplit) cmdline_filerrrCs rd_is_datacycle_param_was_passedz0CloudlinuxSummary._is_datacycle_param_was_passeds $@ jw~~l++ 5 ,g 6 6 6 /!6688>>##))#..D / / / / / / / / / / / / / / /T!!s:A??BBctj}d}|D]&}|ttj|z }'|S)z= Returns general amount of domains on server r)rrrr ) cpusers_list domains_countrs rdrz+CloudlinuxSummary._get_total_domains_amountsH }    : :D S!24!8!899 9MMrcct}tt|d}tt|d}|r|rdS|rdS|rdSdS)zi Returns is links traversal protection enabled on server (symlinks or hardlinks) zfs.protected_symlinks_createzfs.protected_hardlinks_createall symlinks_onlyhardlinks_onlyno)r!rr"r)rsymlink_protection_enabledhardlink_protection_enableds rd%_is_link_traversal_protection_enabledz7CloudlinuxSummary._is_link_traversal_protection_enabled s %)#fjj9W.X.X*Y*Y%Z%Z"&*3vzz:Y/Z/Z+[+[&\&\# % *E 5 % #"? & $##trccd}d}d}tjdstjdr|Stjdr|S|S)Nisocldeployqcow2z/etc/cl-convert-savedz/var/log/cldeployz/etc/cloudlinux-qcow2-installr)rrrs rd_get_cl_installation_sourcez-CloudlinuxSummary._get_cl_installation_source sd 7>>1 2 2 bgnnEX6Y6Y O 7>>9 : : L rccttjrgjjdddjjdddjfddddtd s#jtdd djtdd djtdd djj dd djj dddjfddddjfddddjfddddjfddddjfddddjjdddttjr jfdddd jt"dd!d"jt$dd#d$jjdd%d&dS)'Nr"lve_extension_packages_amountrr!link_traversal_protection_enabledcdSrrb kernel_infosrdrqz;CloudlinuxSummary._fill_system_statistics..7 s Arcinstalled_kmod_lve_versionTskip_jwt_checkcldiag_cron_check_enabled cpu_amounttesting_repository_enabled base_distrozCan't detect platform for CLOSsecureboot_statusz+Can't detect whether secure boot is enabledcdSrrbrsrdrqz;CloudlinuxSummary._fill_system_statistics..U s KNrcrcdS)Nrrbvendor_integration_infosrdrqz;CloudlinuxSummary._fill_system_statistics..Y s+,FGrcrcdS)Nrrbrsrdrqz;CloudlinuxSummary._fill_system_statistics.._ s+,KLrcrrcdSrrb memory_usagesrdrqz;CloudlinuxSummary._fill_system_statistics..g LOrcrmemory_total_mbcdSrrbrsrdrqz;CloudlinuxSummary._fill_system_statistics..j r rcmemory_used_mb domains_totalcTpSra)rrrsrdrqz;CloudlinuxSummary._fill_system_statistics..r s$BBDDmHkHkHmHmrckernel_datacycle_usage_enabledz,Can't get kernel datacycle enabled parameter virt_typez!Can't get the virtualization typehostnamezCan't get the hostnamecloudlinux_installation_sourcezCan't get installation source)rrrrrrrrrr0rr*rrrrrr%r r )rrrrs`@@@rd_fill_system_statisticsz)CloudlinuxSummary._fill_system_statistics& s++-- %gk 2 2  O & &8/ '    O & &:3 '    O & &&&&&, '   "666  O & &-+ '    ""9e\t"TTT "" #  ( #    ""4#5umMmnnn ""  #U,?An    "" " " " "E+; #   #'"<"<">"> "" G G G G  & #   "" L L L L  + #   ,,..  "" # # # #W.?T #    "" # # # #W.>D #    ""  *E?PT #    &gk 2 2  O & &nnnn0>     "" 5+/R    ""7E:?WXXX ""  ,  , +      rccjfddddjtdddjtddd dS) Nc jptSrarrrsrdrqzKCloudlinuxSummary._fill_dict_with_rpm_packages_statistics.. DN4nrcrrCan't get system ID os_versionzCan't get version of OS rpm_stat_listr~z*Can't get info about client's rpm packages)rrr#rQrs`rdrz9CloudlinuxSummary._fill_dict_with_rpm_packages_statistics s "" 4 4 4 4   !    "">5,Habbb "" !?J@l     rcparamcZtj|j|S)z Retrieve data from proc/mounts for param :return: param_value - Optional[int], if there is no value - None )r. str_to_intrr)rr2s rd_get_proc_paramz!CloudlinuxSummary._get_proc_param s# ()?)?@@@rcc Hdg}ttjr|gd|D]I}|jt |j|d|ddd|J|jtdddd S) z Filling stats about mounting - mount params from parameters list - separate hidepid getting, since it is more complicated than other mounting params zkernel.memcg_oom_disable) zfs.enforce_symlinksifownerzfs.symlinkown_gidzfs.protected_symlinks_allow_gidz fs.protected_hardlinks_allow_gidzfs.global_root_enablezfs.proc_can_see_other_uidzfs.proc_super_gidzfs.xfs.cap_res_quota_disablezubc.ubc_oom_disablezfs.process_symlinks_by_taskr"r+rz Can't get hidepidzCan't get hidepid valueN) rrrrmrrrr5r0rr parametersps rd_fill_proc_params_statisticsz.CloudlinuxSummary._fill_proc_params_statistics s '  &gk 2 2            A O & &,a00 #s## Q       "" *   %      rcc d}|D]9}|jt|j|dd|d|d:dS)zJ Fill dict with statistics about kmodlve parameters usage )lve_setuid_enterr"kmodlve_z Can't get "z" kmodlve parameter valueN)rrr_get_kmodlve_param_valuer8s rd_fill_kmodlve_params_statisticsz1CloudlinuxSummary._fill_kmodlve_params_statistics sk+   A O & &5q991;q;;;       rcctd|jfdddd|jfdddd |jfd dd d |jfd ddd|jfdddd|jttddddS)zv Fill statistics fields from jwt token. - jwt token metrics (cl_plus existence and client_id) Frc8dnddS)Ncl_plusrrCsrdrqz=CloudlinuxSummary._fill_cln_jwt_information.. sDLDDdhhy$.G.Grcr"rCzCan't get cl_plus informationc8dnddS)NrrDrEsrdrqz=CloudlinuxSummary._fill_cln_jwt_information.. sDLDDdhh{D.I.IrcrzCan't get client_id valuec8dnddS)Nis_awp_premium_allowedrDrEsrdrqz=CloudlinuxSummary._fill_cln_jwt_information.. sDLDDdhh7OQU.V.Vrcjwt_is_awp_premium_allowedz&Can't get is_awp_premium_allowed valuec8dnddS)Nis_awp_cdn_allowedrDrEsrdrqz=CloudlinuxSummary._fill_cln_jwt_information.. sDLDDdhh7KT.R.Rrcjwt_is_awp_cdn_allowedz"Can't get is_awp_cdn_allowed valuec8dnddS)Nis_trialrDrEsrdrqz=CloudlinuxSummary._fill_cln_jwt_information.. sDLDDdhhz4.H.Hrcjwt_is_trial_licensez$Can't get jwt_is_trial_license valuelicense_activezCan't get license status valueN)r@rrrrC)rrCs @rd_fill_cln_jwt_informationz+CloudlinuxSummary._fill_cln_jwt_information sD .uEEE "" G G G G   +    "" I I I I   '    "" V V V V  ( 4    "" R R R R  $ 0    "" H H H H  " 2     "" 0$ 7 7@PRr     rccjfddddjtddddS) za Filling stats centralized management - centralized management existence cLtjjSra)rrrCL_PLUS_CM_DISABLED_PATHrsrdrqzKCloudlinuxSummary._fill_centralized_management_statistics.. sBGNN4#@AArcr"centralized_management_disabledzCan't check CM disabling statusrcl_plus_sender_service_statusz)Can't check cl plus sender service statusN)rrr?rs`rd'_fill_centralized_management_statisticsz9CloudlinuxSummary._fill_centralized_management_statistics sf "" A A A A  - -     "" %  + 7      rcc2i} t}|D]H}|D]1\}}|d|g|2In9#tt f$r%}t d|Yd}~nd}~wwxYw|S)a Prepare list of dicts with CPU metrics Method get_cpu_metrics returns data in following format: [ { "id": 0, "model": "QEMU Virtual CPU version 2.5+" }, { "id": 0, "model": "QEMU Virtual CPU version 2.5+" } ] This helper produces a dict, where each key - metric_name, value - list of values for all CPUs "cpu_model": [ "QEMU Virtual CPU version 2.5+", "QEMU Virtual CPU version 2.5+" ], "cpu_id": [ 0, 0 ] cpu_zCPU metrics getting error: %sN)rOr setdefaultrrrNrr)r cpu_corescpu_coremetricvalueexs rdmake_flat_cpu_metricsz'CloudlinuxSummary.make_flat_cpu_metrics s: B'))I% I I%-^^%5%5IIMFE%%oVoor::AA%HHHHI I& B B B   )>&#'V%)(,'1 $$ -00@,A,A)),-()*&,-)+-CE^^ ^! ! ! ! == !sC C C"!C"c Dt}|dvrPtjtjdz }|d}d|d}nd}t j|ddd t jt j d }|j |j fS) z Scan /var/log/messages for all needed "Act like CageFS is disabled ..." messages for yesterday :return: Tuple (ret code, std_out string) )cl6cl6hrR)daysz%Y-%m-%dz/usr/share/cloudlinux/logs-at z< /var/log/messages | /bin/grep 'Act like CageFS is disabled'za/usr/bin/journalctl --since yesterday --until today | /usr/bin/grep 'Act like CageFS is disabled'TrLF)rrMrNrstderrrO) r#datetimedatetoday timedeltastrftimerYrZPIPEDEVNULLrzr)os_typeyesterday_date date_to_scans_cmdr:s rdryz$CloudlinuxSummary._get_data_from_log s !"" o % %&]0022X5GQ5O5O5OON)22:>>LNNNN ExE N "?%   |QX%%rccttjr"jjdddt jd<jttj dddd jj dd d jj dd d jj dddjfddddjfddddt!ttdtjd<n djd<dS)Nr"old_way_of_integration_used*Can't detect old LVE integration mechanismlve_utils_versionF) verify_expr cl_editionzCan't get CloudLinux editionis_solo_meta_file_presentz$Can't detect solo meta file presenceis_admin_meta_file_presentz%Can't detect admin meta file presenceis_container_meta_file_presentz)Can't detect container meta file presencecjSrarrsrdrqzACloudlinuxSummary._prepare_cl_normal_statistics.. D'rcr$Can't get or generate security tokenc jptSrar-rsrdrqzACloudlinuxSummary._prepare_cl_normal_statistics.. r.rcrr/r-lvemanager_version)rrrrrrLVE_UTILS_PKG_VERSIONrrget_cl_edition_is_solo_marker_exists_is_admin_marker_exists_is_container_marker_existsLVEMANAGER_PKG_VERSIONLVEMANAGER_PKG_RELEASE_fill_dict_with_statisticsrs`rdrz/CloudlinuxSummary._prepare_cl_normal_statistics s %gk 2 2  O & &0-<     0E+, "" J-% @ @ @%Wu    ""  '0KMs    ""  (%1MOv    ""  ,  , 7    "" ' ' ' '   2     "" 4 4 4 4   !    " -2H2T7M4h4hPf4h4hDO0 1 148DO0 1 '')))))rcc d dd d d d}tj sdSGdd t fd } d d d i}d tj D}||D]/} |||#$rYt $r |D]}d ||<Y,wxYw| |j <| |j <| |j <tjdr d|j|<dStjdr d|j|<dSd|j|<dS)z Filling stats lvemanager - number of visits on X-Ray tab - number of X-Ray installation - number of LVEManager opens z/var/log/cloudlinux/iQlve_number_of_opensxray_number_of_installationxray_number_of_visitsxray_advanced_metrics_statusNceZdZdS)ECloudlinuxSummary._fill_lvemanager_statistics..BreakOuterLoopN)r __module__ __qualname__rbrcrdBreakOuterLoopr s Drcrctj} |z}t|dd5}d}|D]} d|ddd}tj|d}| z |cxkr|krnnd|ddd} | dkr| xxd z cc<n0| d kr|xxd z cc<n| d kr|xxd z cc<nd }#ttf$rYwxYw|r  ddddS#1swxYwYdS) NrrrFrr(z%Y-%m-%d %H:%M:%S,%fzlvemanager-openedrRzxray-install-startedzxray-tab-clickedT) rnowr;rrrstrptimerrAttributeError)statsfilecurrent_date_timestamp file_pathrbreak_outer_looplinelog_timelog_date_timestamprrCOLLECTING_PERIOD LOG_FOLDERLVE_NUMBER_OF_OPENSXRAY_NUMBER_OF_INSTALLSXRAY_NUMBER_OF_VISITSs rdfill_statisticszFCloudlinuxSummary._fill_lvemanager_statistics..fill_statistics s#%-%6%:%:%<%<%F%F%H%H ""T)Iiw777 )1#( !!D!#&88DJJsOOBQB,?#@#@-5->-G-GRh-i-i-s-s-u-u*14EEHZssss]ssssss&)hhtzz||/A/A#/F/Fqrr/J&K&KG&*=== %&9 : : :a ? : : : :!(,B!B!B %&= > > >! C > > > >!(,>!>!> %&; < < < A < < EE<E'#E<&E''E<<FFrc<g|]}tjd||S)z^lvemanager\.log(\.\d{1,2})?$)rematch)rrs rdrzACloudlinuxSummary._fill_lvemanager_statistics.. s+qqqdIiko@p@pqTqqqrcrz./opt/alt/php-xray/php/advanced_metrics.enabledrjz//opt/alt/php-xray/php/advanced_metrics.disabledrknone) rrisdirrlistdirsortrrr) rXRAY_ADVANCED_METRICS_STATUSrr log_fileslog_filerrrrrrrs @@@@@@rd_fill_lvemanager_statisticsz-CloudlinuxSummary._fill_lvemanager_statistics s, %3"? 7'E$w}}Z((  F     Y    ) ) ) ) ) ) ) ) ) )0*1.CQH_abc rqbj&<&<qqq ! * *H * H5555!    * * *&**D')Jt$$** *2<U3V/0/9:M/N+, 7>>J K K C?R0S,---rcc~|jdddd|jdddddS) z: Fill dict with feature flags information c2dtDS)Ncg|] }|j Srbrrrs rdrzVCloudlinuxSummary._fill_feature_flags_statistics....K s777QV777rcr^rbrcrdrqzBCloudlinuxSummary._fill_feature_flags_statistics..K s77_%6%6777rcrserver_flags_availablez3Can't get information about available feature flagsc2dtDS)Nc*g|]}|j |jSrb)rjrrs rdrzVCloudlinuxSummary._fill_feature_flags_statistics....Q s!DDD!)DQVDDDrcr^rbrcrdrqzBCloudlinuxSummary._fill_feature_flags_statistics..Q sDD_%6%6DDDrcserver_flags_enabledz1Can't get information about enabled feature flagsN)rrrs rd_fill_feature_flags_statisticsz0CloudlinuxSummary._fill_feature_flags_statisticsF sb "" 7 7  $ A    "" D D  " ?      rccd}d}d}d}d}d}d}d}tj|r|}tj|r|}tj|r|}||j|<dS) z8 Fill out AccelerateWP promotion status accelerate_wp_promotion_statusenabled_for_current_serverenabled_for_all_serversskippedz,/var/lve/clflags/enable_awp_all_servers.flagz,/var/lve/clflags/enable_awp_this_server.flagz$/var/lve/clflags/skip_awp_setup.flagN)rrrr) rFIELDENABLED_FOR_CURRENT_SERVERENABLED_FOR_ALL_SERVERSSKIPPEDenable_awp_all_servers_flagenable_awp_this_server_flagskip_awp_setupr>s rd(_fill_accelerate_wp_promotion_statisticsz:CloudlinuxSummary._fill_accelerate_wp_promotion_statisticsW s 1&B"";'U#&T#? 7>>5 6 6 -,F 7>>5 6 6 0/F 7>>. ) ) F!'rccvjfddddjfddddtjd<t!ttd tjd <n djd <jjd d d dS)NcjSrarrsrdrqz7CloudlinuxSummary._prepare_statistics..v rrcrrrc jptSrar-rsrdrqz7CloudlinuxSummary._prepare_statistics..| r.rcrr/rr-rr"rr)rrrrrrrrs`rd_prepare_statisticsz%CloudlinuxSummary._prepare_statisticss s "" ' ' ' '   2     "" 4 4 4 4   !    0E+, ! -2H2T7M4h4hPf4h4hDO0 1 148DO0 1 ""  ,  ) 8    '')))))rccRttjr|ttjr(||ttjr|ttj r(| | ttj r| ttjs2ttjsttjr|t%ds|ttjr|ttjr|||||||||| |!|"|#|$|%|&|'dS)NTr)(rrGOVERNORrCAGEFSr0rrRESELLER_LIMITSrZrrr@ PHP_SELECTORr RUBY_SELECTORPYTHON_SELECTORNODEJS_SELECTORrrrWLSAPIrWIZARDr _fill_wpos_activation_statistics_fill_wpos_statisticsrQrr*r;rkrrdrrrrrr_fill_apache2nginx_statisticsrs rdrz,CloudlinuxSummary._fill_dict_with_statistics s %g&6 7 7 3  0 0 2 2 2 %gn 5 5 8  ( ( * * *  5 5 7 7 7 %g&= > > .  + + - - - %gk 2 2 3  ( ( * * *  0 0 2 2 2 %g&: ; ; 1  . . 0 0 0 &w'< = = .)'*ABB .*'*ABB .  + + - - -!666 ;  8 8 : : : %gm 4 4 *  ' ' ) ) ) %gn 5 5 +  ( ( * * * --/// ""$$$ &&((( ++--- $$&&& ))+++ &&((( **,,, !!### ((***   """ ))+++ ##%%% ++--- 55777 **,,,,,rccJ|j|jddddS)Nr apache2nginxz Can't parse Apache2Nginx metrics)rrget_apache2nginx_statsrs rdrz/CloudlinuxSummary._fill_apache2nginx_statistics s5 ""  '   .      rcc|jdddd|jtd\}|jfddd|rdnddS) NcJtjtSra)rrrr rbrcrdrqzDCloudlinuxSummary._fill_wpos_activation_statistics.. sBGNN#BCCrcr".cmt_is_accelerate_wp_free_activation_completedz2Can't get statistic of AccelerateWP CMT activationz,Can't get AccelerateWP activation statisticsc.dS)Naccelerate_wp_free_activaterD)client_activationsrdrqzDCloudlinuxSummary._fill_wpos_activation_statistics.. s%))*GHHrc&cmt_accelerate_wp_free_activated_in_uiz;Can't get statistic of AccelerateWP CMT activation selected)rrrr)rr9rs @rdrz2CloudlinuxSummary._fill_wpos_activation_statistics s "" C C  < @    &*_%B%B " :& & "" "" H H H H  4MT ^ I IZ^      rccD  |j|jd\} |sdSt trW ddkr? d |j fdddd d  |j fd dd d|j fd d dd|j fdd dd dr |j fdd dd dD]- dkr |j fdd d zd. dgD]& |j fdd d zd' dD]- dkr |j fdd d zd. dgD]& |j fdd d zd' d!gD] |j fd"d d# zd d$} d%} |xr#|jfd&d d#|zd |x r#|j fd'd d#|zd dgD]- dkr |j fd(d d) zd. d*iD]\ }||jd+ z<|j fd,d d-d|j fd.d d/d|j fd0d d1d2|j fd3d d4d5|j fd6d7d8d9|j fd:d7d;d<|j fd=d7d>d?|j fd@d7dAdB dCx}r+|D]\}}||jdD|<dSdSdSdS)ENz!Can't get AccelerateWP statisticsrr9features_visible_by_defaultcdS)Nr rb wpos_statssrdrqz9CloudlinuxSummary._fill_wpos_statistics.. J'DErcr wpos_features_visible_by_defaultz*Can't get statistic of using AccelerateWP.features_allowed_by_defaultcdS)Nrrbr srdrqz9CloudlinuxSummary._fill_wpos_statistics.. rrc wpos_features_allowed_by_defaultc ddS)N enabled_sitesrrbr srdrqz9CloudlinuxSummary._fill_wpos_statistics..  ?3G<rcr"sites_count_with_enabled_wposc ddS)N allowed_usersrrbr srdrqz9CloudlinuxSummary._fill_wpos_statistics.. rrcusers_count_with_allowed_wpos visible_usersc ddS)Nrrrbr srdrqz9CloudlinuxSummary._fill_wpos_statistics.. sJ7@rcusers_count_with_visible_wposrrc dS)Nrrbrpr srdrqz9CloudlinuxSummary._fill_wpos_statistics.. J7?rcsites_count_with_enabled_ enabled_usersc dS)Nr!rbrsrdrqz9CloudlinuxSummary._fill_wpos_statistics.. rrcusers_count_with_enabled_rc dS)Nrrbrsrdrqz9CloudlinuxSummary._fill_wpos_statistics.. rrcusers_count_with_allowed_allowed_suitesc dS)Nr&rbsuiter srdrqz9CloudlinuxSummary._fill_wpos_statistics..! J'78?rcusers_count_with_allowed_suite_enabled_suitesc dS)Nr,rbr(srdrqz9CloudlinuxSummary._fill_wpos_statistics..( r*rcusers_count_with_enabled_suite_ _billable _non_billablecSrarb)enabled_billablesrdrqz9CloudlinuxSummary._fill_wpos_statistics..3 s 0rccSrarb)enabled_non_billablesrdrqz9CloudlinuxSummary._fill_wpos_statistics..; s 4rcc dS)Nrrbrsrdrqz9CloudlinuxSummary._fill_wpos_statistics..E rrcusers_count_with_visible_ upgrade_urls upgrade_url_cdS)N4accelerate_wp_suite_enabled_premium_suite_disallowedrbr srdrqz9CloudlinuxSummary._fill_wpos_statistics..P s #YZrcr:cdS)N1accelerate_wp_suite_enabled_premium_suite_visiblerbr srdrqz9CloudlinuxSummary._fill_wpos_statistics..V s #VWrcr<c.dS)Nis_accelerate_wp_flag_enabledrDr srdrqz9CloudlinuxSummary._fill_wpos_statistics..]  'FGGrcr>z1Can't get statistic of AccelerateWP feature flag.c.dS)Nis_accelerate_wp_icon_enabledrDr srdrqz9CloudlinuxSummary._fill_wpos_statistics..c r?rcrAz0Can't get statistic of AccelerateWP icon status.c.dS)N%is_smart_advice_notifications_enabledrDr srdrqz9CloudlinuxSummary._fill_wpos_statistics..j s 'NOOrcrrCzJCan't get statistic of AccelerateWP is_smart_advice_notifications_enabled.c.dS)N!is_smart_advice_reminders_enabledrDr srdrqz9CloudlinuxSummary._fill_wpos_statistics..p s 'JKKrcrEzFCan't get statistic of AccelerateWP is_smart_advice_reminders_enabled.c.dS)N+is_smart_advice_plugin_installation_enabledrDr srdrqz9CloudlinuxSummary._fill_wpos_statistics..v s 'TUUrcrGzPCan't get statistic of AccelerateWP is_smart_advice_plugin_installation_enabled.c.dS)Nis_object_cache_banners_enabledrDr srdrqz9CloudlinuxSummary._fill_wpos_statistics..| s 'HIIrcrIzDCan't get statistic of AccelerateWP is_object_cache_banners_enabled.r  awp_whmcs_) rrget_wpos_statsrrrr format_metricr) rr9billable_suite_metricnon_billable_suite_metric upgrade_url whmcs_statskeyr^r2r4rpr)r s @@@@@rdrz'CloudlinuxSummary._fill_wpos_statistics s"o;;   /    F j$ ' 'a @JNN8,D,D ,Q,Q~~;<<H**EEEE6@  ~~;<<H**EEEE6@  O & &<<<</<     O & &<<<</<     ~~o.. **@@@@3@ %_5  W$$**?????/&8@  %.."==  **?????/&8@  %_5  W$$**?????/&8@  $(8"==  **?????5=@  $(8"==  **?????5=@ ,1(;(;(;%/4,C,C,C)'1~~6K'L'LL#O1100009>:S+T+TT'O1144449>))s$AB (BB c6|dS)z a wrapper method for the get_users_and_resellers_with_faults method. return the number of users with faults in the past 24 hours. rrVrs rdrz(CloudlinuxSummary._get_users_with_faults  7799!<> $## 3   rcc|dSd|zdzS)z/Convert memory limit from mempages to megabytesNrirb)r^s rdrwz!CloudlinuxSummary._mempages_to_mb s =45yD  rcch|dStj||pd}|dSt|dz dS)z,Convert cpu and ncpu to percents of one coreNr)lncpugY@rR)riconvert_to_kernel_formatround)rurar]s rdrtz(CloudlinuxSummary._cpu_limit_to_percents sE ;423diaHHH =4UU]A&&&rc.c|jtt|j}d|D}t d|D}t d|Dd|_d|jD}|r%t dd |D|jS) zC Return list of tuples [users_in_package, package] Nc^g|]*}|j t|jjt(|+Srapackagerrrrrs rdrz?CloudlinuxSummary.get_users_amount_per_plan.. s><+ 4<;Lc0R0R++++rcc3$K|] }|jV dSra)rnros rdrz>CloudlinuxSummary.get_users_amount_per_plan.. s$$J$JdT\$J$J$J$J$J$Jrcc$g|] }|dddS)Nrrb)ritems rdrz?CloudlinuxSummary.get_users_amount_per_plan.. s"*Y*Y*Y$4":*Y*Y*YrcT)reversec^g|]*}|jt|jjt(|+Srarmros rdrz?CloudlinuxSummary.get_users_amount_per_plan.. s><'z$,:KS/Q/Q''''rcz0Found invalid package names in original data: %sc*g|]}|j|jfSrb)idrnros rdrz?CloudlinuxSummary.get_users_amount_per_plan.. s!GGGdgt|,GGGrc) rrrSrrursortedrrr)rr[users_package_copy valid_userspackage_counts invalid_userss rdget_users_amount_per_planz+CloudlinuxSummary.get_users_amount_per_plan s   '!)$/?/E/L/L/N/N*O*O!P!P !3K %$J$Jk$J$J$JJJN#)*Y*Y.BVBVBXBX*Y*Y*Ycg#h#h#hD !1!7!>!>!@!@M   FGGGGG##rc number_of_topcb |||dz S#t$rYdSwxYwr)r| IndexError)rr}r[s rdrz5CloudlinuxSummary._get_top_package_by_number_of_users sI 112BCCMTUDUV V   44 s  ..crt|\}}|s"|t||S)z% Parse CLI arguments )rSrr2)rrr>rCs rdrzCloudlinuxSummary._parse_args s>5T::  7  !5!5 6 6 6 rcr9rrrC exit_coderIc|tj|d}|||d<t|dtj|dS)z? Print data in default format for web and exit )rr;rCNstatistic_enabledT)r2r1rQrR)rrCrrIrs rdrSz(CloudlinuxSummary._print_result_and_exit sP$$)++tLL  ++?G' ($''' rcrRrrEc|dtjit|dtj|dS)z Print error and exit :param dict message: Dictionary with keys "result" as string and optional "context" as dict r;TN)rr2r1rQrR)rrEs rdrz!CloudlinuxSummary._error_and_exit sG  TY[[1222$''' rcctjdrHtjddgdtjtjd}t j|jSdS)zD Return mod_lsapi info from switch_mod_lsapi script rz--statTFrrrrON) rrrrYrZrrrrr:s rdrz$CloudlinuxSummary.get_raw_lsapi_info' sg 7>>5 6 6 (,h7!! A:ah'' ' ( (rccdd}tr|dz }tj|r{t j|dgdtjtjd}tj|j  d}d| D}|Sd S) zd Return wmt-api config if is_solo_edition True, run wpt-api-solo is command z-/usr/share/web-monitoring-tool/wmtbin/wmt-apiz-soloz --config-getTFrrEc4i|]\}}|t|Srb)r)rkrss rdrtz9CloudlinuxSummary._get_wmt_api_config..G s$%[%[%[DAqaQ%[%[%[rcN) rrrrrYrZrrrrrr)rr:wmt_api_config_summarys rdrz%CloudlinuxSummary._get_wmt_api_config6 s B     w G 7>>' " " *.)Z_U_UdlqA&*Z%9%9%=%=h%G%G "%[%[>>rcc@tjdS)Nz/etc/cloudlinux-containerrrbrcrdrz-CloudlinuxSummary._is_container_marker_existsS sw~~9:::rcctjdr3tjddgddd}t j|jSdS)zL Return statistics from cloudlinux-ssa-manager get-stat API z /usr/sbin/cloudlinux-ssa-managerget-statTFrrrONrrrrYrZrrrrs rdrczCloudlinuxSummary.get_ssa_statsW s_ 7>>< = = (3Z@t\`hmA:ah'' '  ( (rcc4d}d}d}d}tj|rtj|rlt}|dkrXtj|}tj|}d}t ||z |krd}d}t jtj krmtj|rMd} d } tt| |d d } tt| |d d } | r| sd }nKd}nHtj|r)d} tt| |d d }|rd }nd}|d krd}||d}|S)z; Return statistics from Leapp upgrade logs rz /var/log/leapp/leapp-upgrade.logz/var/log/elevate-cpanel.logz/var/log/cldeploy.logcl8i'rRzHAn upgrade inhibitor detected\|Workflow interrupted due to the FailPhasez'Starting stage After of phase FirstBootT)ruNr(z Great SUCCESS)rr) rrrr#getmtimeabsrrrrnextr&)r leapp_logfileelevate_cpanel_logfilecldeploy_logfilecurrent_os_version leapp_mtimecldeploy_mtimemonth_in_secondsupgrade_status fail_grep_strfirst_boot_grep_str fail_grep_resfirst_boot_grep_ressuccess_grep_strgrep_res stat_results rdrz!CloudlinuxSummary.get_leapp_statsb s : !>2 7>>- ( ( *RW^^>$   4j1TY^___A:ah''++F33 3 4 4rcc"ddd}tdsy|j|jd\}}|T |d|ddS#t$r5}t dt|||cYd}~Sd}~wwxYw|S) z= Construct dict with Smart Advice statistics N)smart_advice_totalsmart_advice_appliedT)skip_marker_checkz!Can't get Smart Advice statisticsrappliedzAUnexpected json response from server, field %s is missing in "%s")rrrrrrrr)rrr9sa_statsrs rdrz.CloudlinuxSummary._get_smart_advice_statistics s)-dKK $d;;; " $ = =+3!! GX#"2:72C]efo]pqqq"""(([]`ab]c]cem"MMMMMM "  sA B *BB B ci}tjdrtddd5}t j|}t ||d<t|}d|D}t ||d<t d|D|d <g|d <g|d <|D]}|d d kr9| d}|r!|d  |dG|d dkr8| d}|r!|d  |dtt|d |d <tt|d |d <t d|D|d<t d|D|d<t d|D|d<t d|D|d<t d|D|d<dddn #1swxYwYtjdrStddd5}| |d<dddn #1swxYwY|j|jd\} } | s|S| D] \} } | || < |S)zP Return statistics by parsing /var/lib/apache2nginx/server.json z!/var/lib/apache2nginx/server.jsonrrrtotal_websitesc<g|]}|d|S) proxy_reasonrDrs rdrz. s)HHH!%%2G2GH1HHHrctotal_proxy_passc*g|]}|ddk|S)r directiverbrs rdrz. s)8p8p8pqqQ_O`doOoOoOoOoOorcproxy_pass_due_directivefailing_directivesfailing_handlersrr proxy_detailsr9c*g|]}|ddk|S)rtestrbrs rdrz. (3f3f3f!!NJ[_eJeJeAJeJeJercproxy_pass_due_testc*g|]}|ddk|S)rforcedrbrs rdrz. s(5j5j5jAAnL]aiLiLiaLiLiLircproxy_pass_due_forcedc*g|]}|ddk|S)rr9rbrs rdrz.s(6l6l6lQQ~M^bkMkMkqMkMkMkrcproxy_pass_due_handlerc*g|]}|ddk|S)rincludesrbrs rdrz.s)7n7n7naaP^N_cmNmNmNmNmNmrcproxy_pass_due_includesc*g|]}|ddk|S)rhttprbrs rdrz.rrcproxy_pass_due_httpNz/var/lib/apache2nginx/staterz"Can't get Max Webserver statistics)rrrrrloadrrSrurrr;rrrrget_max_webserver_statsr) rrrrCwebsitesproxiedrfailing_directivefailing_handlerr9max_webserver_stat metric_name metric_values rdrz(CloudlinuxSummary.get_apache2nginx_stats s 7>>= > >' h93QQQ& hUVy||+.d))&' ..IHhHHH,/LL()588p8pG8p8p8p4q4q01.0*+,.() QQA(K77,-EE/,B,B),S!"67>>q?QRRR>*i77*+%%*@*@*Q!"45<>7 8 8 23S7KKK 2q!"!1!1g 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2'+o&C&C  ( 0' ' ## L);)A)A)C)C . . %K!-E+   s$G0H11H58H5-*J##J'*J'cd}tj|siStj|gddd}t j|jS)zE Return statistics from cmax-webserver-stats utility z,/usr/share/max_webserver/max-webserver-statsTFr)rrrrYrZrrrrs rdrz)CloudlinuxSummary.get_max_webserver_statss\ >w~~d## I N F     z!(###rccd}tj|r3tj|dgddd}t j|jSdS)rz/usr/bin/clwpos-adminrTFrNrrs rdrKz CloudlinuxSummary.get_wpos_stats(sd ' 7>>$   (z"# A :ah'' ' ( (rcra)rmN)r9NrN)rR)rrrrrT itertoolscompressrrrrrrrrrrVrr staticmethodrpropertyrrrrrrrrrrrrrrrrr rr$r r5r\rsrvrr r~rZrr"r rrUrrrrrTrrrrrrr)r0rrArDrGrZr4r{rrrrrrrrrrrr rr;rrrr&rr/rdrrrrSrrrrrrrrrr{rrrrrrrrrrrrrr r*rr5r;r@rQrWr`rkrrrqryrrrrrrrrrrrSrVrrP classmethodrvrwrttupler|rrobjecttypingNoReturnrSrrrrrrrcrr?rrrrrKrbrcrdrxrxs!<7" "$$$ ,E ,W-D E E ,E ,W-B C C ,E ,W-D E E IBKMFKL $ $ $@@\@X3X 88\8@@\@\ -$----^ $ $X $         \  ;;\;@S@S@@@\@:   555*###:$$\$ B B B B\LLL`\6   \  tCH~$\:+#+#+#Z444@ : :V : : : :\ : VS[8I PV ei nr    :  \ D---^  !!!!\!EEEE81 1 1 1 f\<\*(??\?"    B P# P P P P'x}''''hsm\;<;<;<; @Q> VZ> > > > @ >O TX    >X>OXTXXXXXv====K@K@K@K@Z   4 4 4 l   *<<<+c+T+++\+Pd4j$t*d3PS8n.T(UPPPPB:s3xS7I1J:::::=="%=<@cN= c5s## $====~$!#$!#$!$!$!$!LYtGG\G,<:<:<:<:|KCKCKCKCZ 7 7QT 7YabeYf 7 7 7\ 7 5s 5S 5U]^aUb 5 5 5\ 5\\#\\\\\ "t " " " "\ " "T "c " " "\ "  D  W    \   "d "s " " " " t    \  T c   \ &&RV&&&&ltlClTXY\T]lll\lst\ttttl!D!!!\!&2\   ##\# / /\ /77\7 $   \  "D " " "\ "s\3\ \] ] ] ~    AVA AAAA+ + + Z   ( ( ( T   *$4$$$\$L   @lll 0!E#sC-!$/4>\>??\?;;\;(8D>(((\(<T<<<\<|oSoSooo\o&4HTN444\4d4=====~ $Xd^ $ $ $\ $ (HTN ( ( (\ ( ( (rcrxcTt}|j|Sra)r8r< link_xml_node)rs rdrr8s$ XXF O!!### Mrc)rr)rrrrrrrrrrYrQr2rcopyr collectionsrr functoolsrrmultiprocessingrpathlibr socketr r r r rrrrr cldetectlibrrirrcl_proc_hidepidrclcommonrclcommon.clwpos_librrrclcommon.constrclcommon.cpapirr clcommon.librclcommon.lib.cleditionrrrclcommon.lib.cmt_utilsrclcommon.lib.constsr clcommon.sysctlr!clcommon.utilsr"r#r$r%r&r'r(r)r*r+r,clconfigr-r.r/ cldiaglibr0 cli_utilsr1r2cllimitslib_v2r3r4 clveconfigr5clwizard.modulesr6 lve_utilsr7rlveapir8vendors_api.configr9r:&cl_website_collector.website_collectorr;$cl_website_collector.feature_managerr<clsummary.utilsr=r>r?r@rArBrCrDrErFrGrHrIrJrKrLrMclsummary.hardware_statisticsrNrOrP!clsummary.rpm_packages_statisticsrQ arg_parserSstoragerTclselect.clselectctlrUclselect.clselectstatisticsrVrWrXrYrZr[clselector.selectorlibr\ lvemanagerr]rr ImportErrorclflagsr_rrrrr|rr&rrrrrrrvrxrrbrcrdrs    ,,,,,,,,((((((((%%%%%%LLLLLLLLLLLLLLLLLLLL :::::: #"""""IIIIIIII&&&&&& :99999??????&&&&&&                          ONNNNNNNNN3333336666666666666666######((((((::::::========CCCCCC??????( DCCCCC444444######"888888=<<<<<@@@@@@@@@@@@@ " " "221-110 !! "''''''' - W 3 4 4    #   UUUUUUQ6(Q6(Q6(Q6(Q6(Q6(Q6(Q6(hls$8(F!!F=<F=GGG