/opt/cloudlinux/venv/lib/python3.11/site-packages/clsummary/__pycache__
NameSizeModeActions
arg_parse.cpython-311.opt-1.pyc28210644editdlrm
arg_parse.cpython-311.pyc28210644editdlrm
hardware_statistics.cpython-311.opt-1.pyc55650644editdlrm
hardware_statistics.cpython-311.pyc55650644editdlrm
net_acct.cpython-311.opt-1.pyc64360644editdlrm
net_acct.cpython-311.pyc64360644editdlrm
rpm_packages_statistics.cpython-311.opt-1.pyc45740644editdlrm
rpm_packages_statistics.cpython-311.pyc45740644editdlrm
storage.cpython-311.opt-1.pyc27530644editdlrm
storage.cpython-311.pyc27530644editdlrm
summary.cpython-311.opt-1.pyc2156330644editdlrm
summary.cpython-311.pyc2156330644editdlrm
utils.cpython-311.opt-1.pyc164580644editdlrm
utils.cpython-311.pyc164580644editdlrm
__init__.cpython-311.opt-1.pyc2160644editdlrm
__init__.cpython-311.pyc2160644editdlrm
Edit: /opt/cloudlinux/venv/lib/python3.11/site-packages/clsummary/__pycache__/summary.cpython-311.pyc (215633B)
§ ]�Nt"ã óð—ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlmZddlmZmZddlmZmZddlmZddlmZddlmZddlmZm Z m!Z!m"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 l0m1Z1m2Z2m3Z3dd l4m5Z5dd l6m7Z7m8Z8ddl9m:Z:ddl;mZ>ddl?m@Z@ddlAmBZBddlCmDZDddlEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPddlQmRZRmSZSmTZTddlUmVZVddlWmXZXmYZYddlZm[Z[m\Z\ddl]m^Z^ddl_m`Z`ddlambZcddldmeZeddlfmgZgmhZhddlimjZjddlkmlZlddlmmnZompZpdd lqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZm€Z€m�Z�m‚Z‚dd!lƒm„Z„m…Z…m†Z†dd"l‡mˆZˆd#d$l‰mŠZŠd#d%l‹mŒZŒ dd&l�mŽZŽdd'l�m�Z�m‘Z‘m’Z’m“Z“m”Z”m•Z•dd(l–m—Z—dd)l˜m™Zšddl˜mbZ›n#eœ$resZ•esZ‘esZ�esZŽesZ”esZ’esZ“dZ—dZ›dZšYnwxYw dd*l�mžZžn#eœ$rd+„ZžYnwxYw dd,lŸm Z m¡Z¡n#eœ$r d-„Z d.„Z¡YnwxYwd/Z¢ej£d0¦«Z¤d1Z¥d2Z¦d3Z§d4Z¨d5Z©d6Zªd7Z«d8Z¬d9Z­d:Z®d;Z¯dZ²d?Z³d@Z´dAZµdBZ¶e j·dCe j¸¦«Z¹e j·dDe j¸e jºz¦«Z»dEe¼dFe½e¼e¼ffdG„Z¾dHedFe$e¿fdI„ZÀdJe¿dKe¼dFe$e¿fdL„ZÁdJe¿dMe¼dNe¿dFe%e$e¼eÂffdO„ZÃdJe¿dMe¼dFeÂfdP„ZÄdQe$e¼dFeÂfdR„ZÅdSe¿dFejÆe¼fdT„ZÇdUeÈdFeÂfdV„ZÉGdW„dX¦«ZÊdY„ZËdS)ZéN)Údeepcopy)ÚCounterÚ defaultdict)Ú lru_cacheÚpartial)Ú cpu_count)ÚPath)Úgetfqdn)ÚAnyÚAnyStrÚCallableÚDictÚListÚOptionalÚTupleÚUnion)Úget_hidepid_typing_from_mounts)Úcpapi)Ú find_wp_pathsÚget_wp_cache_pluginÚ get_wp_paths_with_enabled_module)ÚFeature)Úis_panel_feature_supportedÚis_wp2_environment)Ú MySQLGovernor)Ú CLEditionsÚis_cl_shared_editionÚis_cl_solo_edition)Úclient_activation_data)ÚACCELERATE_WP_INSTALLED_FROM_CM)Ú SysCtlConf) ÚExternalProgramFailedÚget_cl_versionÚget_rhn_systemid_valueÚ get_virt_typeÚgrepÚis_litespeed_runningÚis_nginx_runningÚis_secureboot_enabledÚis_testing_enabled_repoÚ is_ubuntuÚ run_command)Úcagefs_statistics_configÚclconfig_utilsÚdb_governor_lib)Úis_email_notification_enabled)Úprint_dictionaryÚreplace_params)ÚDEFAULTSÚLimitsDataStorage)Ú EMPTY_LIMITS)Ú ALL_MODULES)Ú PKG_VERSION)ÚLvpMap)Ú CONFIG_PATHÚ_read_config_file)ÚWebsiteCollector)ÚFeatureManager)Ú METRIC_NAMESÚcollect_net_acct_metrics)Ú SummaryStatusÚdummy_none_functionÚget_cl_plus_sender_statusÚget_client_data_from_jwt_tokenÚ get_packages_with_lve_extensionsÚ$get_statistics_send_status_from_fileÚis_active_cloudlinux_licenseÚis_nodejs_selector_installedÚis_php_selector_installedÚis_python_selector_installedÚis_ruby_selector_installedÚis_sending_process_runningÚis_statistic_enabledÚis_statistic_rpm_enabledÚ set_statistic_collection_enabledÚ$set_statistic_rpm_collection_enabledÚ$write_statistics_send_status_to_file)Ú NotSupportedÚget_cpu_metricsÚget_memory_metrics)Úget_rpm_packages_infoé)Úparse_cloudlinux_summary_opts)ÚStatisticsDict)Úget_default_version)Úget_default_php_versionÚget_mode_of_php_selectorÚget_native_version_safeÚget_php_selector_usageÚget_versions_statisticsÚiter_server_applications)ÚCloudlinuxSelectorLib)Ú PKG_RELEASE©Úlist_flags_infocó—gS©N©rdóúpy/clsummary/summary.pyrara‘ó€Øˆ re)Ú(is_website_isolation_allowed_server_wideÚ#users_with_enabled_domain_isolationcó—dS©NFrdrdrerfrhrhšs€Øˆurecó—iSrcrdrdrerfriri�rgrez/var/log/cloudlinux-summary.logzcloudlinux-summaryÚunknownÚ installedÚ not_installedÚnot_initializedÚ not_selectedÚenabledÚdisabledz-42)Úmultisite_statusÚautoupdate_statusÚmaxcache_statusÚmaxcache_directive_statusÚmod_rewrite_statusÚlogged_user_cache_statusÚlogged_common_user_cache_statusÚmobile_cache_statusÚ!mobile_separete_cache_file_statusÚtablet_as_mobile_statusÚssl_separate_cache_file_statusÚhas_dynamic_cookies_statusÚhas_mandatory_cookies_statusÚwebp_enabled_statusÚ!wp_rocket_plugin_maxcache_enabledÚ"wp_rocket_plugin_maxcache_disabled)ú wp-contentÚpluginsz wp-rocket)ÚincÚAddonÚMaxCachez MaxCache.phpz wp-rocket.php)r„úwp-rocket-configéizz^\s*MaxCache\s+On\s*$Ú status_keyÚreturncó–—|dkrdS|dkrdS| d¦«}|dvr| d¦«}d|›d �d|›d �fS) a| Return (enabled_name, disabled_name) for a given AccelerateWP plugin status key. Default mapping: - awp_plugin__enabled / awp_plugin__disabled Special cases for reporting readability: - mod_rewrite_status -> awp_plugin_mod_rewrite_block_enabled/disabled - maxcache_directive_status -> awp_plugin_maxcache_directives_present/absent rx)Ú$awp_plugin_mod_rewrite_block_enabledÚ%awp_plugin_mod_rewrite_block_disabledrw)Ú&awp_plugin_maxcache_directives_presentÚ%awp_plugin_maxcache_directives_absentÚ_status)Úhas_dynamic_cookiesÚhas_mandatory_cookiesÚhas_Ú awp_plugin_Ú_enabledÚ _disabled)Ú removesuffixÚ removeprefix)r‹Úbases rfÚ!accelerate_wp_plugin_metric_namesrœàs|€ðÐ)Ò)Ð)Ø`Ð`àÐ0Ò0Ð0ØbÐbà × "Ò " 9Ñ -Ô -€DØ Ð?Ð?Ð?Ø× Ò  Ñ(Ô(ˆØ (˜$Ð (Ð (Ð (Ð*G¸Ð*GÐ*GÐ*GÐ HÐHreÚwp_rootcó˜— tj|tjtjztjz¦«S#t $rYdSwxYw)z¸ Open a WordPress root as a directory descriptor, or None. Follows a symlinked root, as find_wp_paths() hands them out that way; below it _open_subdir_nofollow() does not. N)ÚosÚopenÚO_RDONLYÚ O_DIRECTORYÚ O_NONBLOCKÚOSError)r�s rfÚ _open_wp_rootr¥÷sK€ð ÝŒw�w¥¤ ­b¬nÑ <½r¼}Ñ LÑMÔMÐMøÝ ððð؈tˆtðøøøs‚8;» A ÁA Údir_fdÚnamescó0—d}|}|D]Ž} tj|tjtjztjztjz|¬¦«}n(#t $r|�tj|¦«YdSwxYw|�tj|¦«|}|}Œ�|S)z° Descend one component at a time from an open directory, refusing any symlink. Not one open: O_NOFOLLOW covers only a path's *last* component. Caller owns the fd. N©r¦)rŸr r¡r¢Ú O_NOFOLLOWr£r¤Úclose)r¦r§ÚopenedÚcurrentÚnameÚnxts rfÚ_open_subdir_nofollowr°s¿€ð !€FØ€Gàððˆð Ý”'ØÝ” �bœnÑ,­r¬}Ñ<½r¼}ÑLØðñôˆCˆCøõ ð ð ð ØÐ!Ý”˜Ñ Ô Ð Ø�4�4�4ð øøøð Ð Ý ŒH�VÑ Ô Ð ØˆØˆˆà €MsŠAAÁ A8Á7A8r®Ú max_bytescó— tj|tjtjztjz|¬¦«}n#t $rYdSt $rYdSwxYw tjtj |¦«j ¦«s |dkrtj |¦«dSdStj |d¦«5}d}|  |dz¦«}ddd¦«n #1swxYwYn-#t $r Y|dkrtj |¦«dSdSwxYw|dkrtj |¦«n #|dkrtj |¦«wwxYwt|¦«|krdS| d d ¬ ¦«d fS) aM Read one file from an open directory as root. Returns (text, readable). O_NOFOLLOW refuses a symlink, O_NONBLOCK a FIFO, S_ISREG the rest; binary because the cap is in bytes. Absent is (None, True) and an answer, refused is (None, False) and is not - confusing them publishes "could not look" as "not serving". r©)NTrkrÚrbéÿÿÿÿrTNúutf-8Úreplace)ÚerrorsT)rŸr r¡rªr£ÚFileNotFoundErrorr¤ÚstatÚS_ISREGÚfstatÚst_moder«ÚfdopenÚreadÚlenÚdecode)r¦r®r±ÚfdÚfÚraws rfÚ_read_bounded_atrÄsã€ðÝ ŒW�T�2œ;­¬Ñ6½¼ÑFÈvÐ VÑ VÔ VˆˆøÝ ððð؈zˆzÝ ððð؈{ˆ{ðøøøð ÝŒ|�BœH R™LœLÔ0Ñ1Ô1ð Øð �Š7ˆ7Ý ŒH�R‰LŒLˆLˆLˆLð ˆ7õ ŒY�r˜4Ñ Ô ð ( A؈BØ—&’&˜ Q™Ñ'Ô'ˆCð (ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (øøõ ðððØà �Š7ˆ7Ý ŒH�R‰LŒLˆLˆLˆLð ˆ7ðøøøð �Š7ˆ7Ý ŒH�R‰LŒLˆLøøð �Š7ˆ7Ý ŒH�R‰LŒLˆLˆLð øøøõ ˆ3�x„x�)ÒÐØˆ{Ø �:Š:�g iˆ:Ñ 0Ô 0°$Ð 6Ð6si‚;>¾ AÁ AÁAÁ+C.Â&C.Â;C"à C.Ã"C&Ã&C.Ã)C&Ã*C.Ã-D6Ã. DÃ8D6ÄDÄD6Ä6Ecó‚— tjtj||d¬¦«j¦«S#t$rYdSwxYw)z] Whether one name in an open directory is a plain file, without following a symlink. F)r¦Úfollow_symlinks)r¹rºrŸr¼r¤)r¦r®s rfÚ_is_regular_file_atrÇ?sM€ðÝŒ|�BœG D°ÈÐOÑOÔOÔWÑXÔXÐXøÝ ððð؈uˆuðøøøs ‚-0° >½>Úhtaccesscóz—|€dSt |¦«duot |¦«duS)zP Whether a site's .htaccess hands its domains to MAx Cache (CLOS-6823). NF)ÚWP_ROCKET_MAXCACHE_BLOCK_REÚsearchÚWP_ROCKET_MAXCACHE_ON_RE)rÈs rfÚ_maxcache_is_servingrÍIsF€ðÐØˆuå#×*Ò*¨8Ñ4Ô4¸DÐ@ð BÝ $× +Ò +¨HÑ 5Ô 5¸TÐ AðreÚ config_fdc#óLK—dtjtjdtjt fd„} tj|¦«5}tjt||¦«¦«}ddd¦«n #1swxYwYn#t$rYdSwxYw|Ed{V—†dS)a^ Yield one site's per-domain config file names, in name order, bounded in count. A dot before ".php" is how the plugin names one, and requiring it keeps status.php and a host's stray index.php from becoming a domain that dedup then claims server-wide. nsmallest and not sorted(), so the owner's directory size is not our memory. ÚentriesrŒc3ó¾K—|D]W}| d¬¦«r?|j d¦«r%d|j d¦«vr |jV—ŒXdS)NF)rÆú.phpú.)Úis_filer®Úendswithr™)rÐÚentrys rfÚ candidatesz0_iter_wp_rocket_config_names..candidates^syèè€Øð !ð !ˆEà— ’ ¨e� Ñ4Ô4ð !à”J×'Ò'¨Ñ/Ô/ð !ð˜5œ:×2Ò2°6Ñ:Ô:Ð:Ð:à”jÐ Ð Ð øð  !ð !reN) ÚtypingÚIterablerŸÚDirEntryÚIteratorÚstrÚscandirÚheapqÚ nsmallestÚ#WP_ROCKET_MAX_CONFIG_FILES_PER_SITEr¤)rÎr×rÐr§s rfÚ_iter_wp_rocket_config_namesráUsèè€ð!�FœO­B¬KÔ8ð!½V¼_ÍSÔ=Qð!ð!ð!ð!ðÝ ŒZ˜ Ñ "Ô "ð ^ gÝ”OÕ$GÈÈÐT[ÑI\ÔI\Ñ]Ô]ˆEð ^ð ^ð ^ñ ^ô ^ð ^ð ^ð ^ð ^ð ^ð ^øøøð ^ð ^ð ^ð ^øøå ðððØˆˆðøøøðÐÐÐÐÐÐÐÐÐs5»B Á$A?Á3 B Á?BÂB ÂBÂB  BÂBÚ site_dictcón—ttd„|d ¦«¦«¦«S)zB Checks if wordpress site has at least one enabled module có—|dS)Nrrrd)Úmodules rfúz*site_has_enabled_modules..ts € &¨Ô"3€reÚmodules)ÚanyÚmapÚvalues)râs rfÚsite_has_enabled_modulesrëps1€õ �sÐ3Ð3°Y¸yÔ5I×5PÒ5PÑ5RÔ5RÑSÔSÑ TÔ TÐTrec ó| —eZdZdZdZejgd¢eje j ¦«eje j ¦«eje j ¦«g¦«Z dZdZdZdZd„Zed „¦«Zed „¦«Zed efd „¦«Zed „¦«Zed„¦«Zed„¦«Zd efd„Zed„¦«Zd„Zd„Z ed e!fd„¦«Z"ed„¦«Z#eded efd„¦«Z$d„Z%d„Z&d„Z'ed„¦«Z(dÁd„Z)edÂd„¦«Z*d„Z+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/„Z9d0„Z:d1„Z;ed efd2„¦«Zed5„¦«Z?ed6„¦«Z@d7„ZAed8„¦«ZBdÂd9„ZCdÂd:„ZDd eEe3fd;„ZFd eEe3fd<„ZGed eEe3fd=„¦«ZHdÂd>„ZId?eJd dfd@„ZKd?eJd dfdA„ZLd?eJd dfdB„ZMdÂdC„ZNdÂdD„ZOdE„ZPdF„ZQdGeEeReSd dfdH„ZTeUdGeReSd e.ee3ffdI„¦«ZVeUdJeSdKe.ee3fdLeWd dfdM„¦«ZXeedNe3d e!fdO„¦«¦«ZYed e3fdP„¦«ZZedGeReSd e.ee3ffdQ„¦«Z[dR„Z\dS„Z]edTedGeRfdU„¦«Z^d e_eReSeReSe.ee3fffdV„Z`d e_eWeeWeffdW„ZadXedYedZe.eefd e.eebeRefffd[„Zcd\ed efd]„Zdeeed¬^¦«d_„¦«¦«ZfdÂd`„ZgdÂda„ZhdÂdb„Zied e.ee3ffdc„¦«Zjedde3dee3d eEe3fdf„¦«Zkedde3dge3d eEe3fdh„¦«Zlediemd e3fdj„¦«Znediemd e3fdk„¦«Zoediemd e3fdl„¦«Zpediemd eqfdm„¦«Zrdiemd e3fdn„Zsediemd e3fdo„¦«Ztediemd e3fdp„¦«Zudiemd efdq„Zvedredsed emefdt„¦«Zweded emfdu„¦«ZxdÂdv„Zyed efdw„¦«ZzdÂdx„Z{edy„¦«Z|dz„Z}ed{„¦«Z~ed|„¦«Zed}„¦«Z€ed e!fd~„¦«Z�ed e!fd„¦«Z‚ed e3fd€„¦«Zƒed efd�„¦«Z„ed‚„¦«Z…dƒ„Z†d„„Z‡d…e4d eEe3fd†„Zˆd‡„Z‰dˆ„ZŠd‰„Z‹dŠ„ZŒd‹„Z�ed e.fdŒ„¦«ZŽd�„Z�dŽ„Z�d e_e3e3e3ffd�„Z‘ed e_e3effd�„¦«Z’d‘„Z“d’„Z”dÂd“„Z•dÂd”„Z–dÂd•„Z—d–„Z˜d—„Z™d˜„Zšd™„Z›dš„Zœed›„¦«Z�dœ„Zžd eEe3fd�„ZŸd eEe3fdž„Z eUdŸ„¦«Z¡ed „¦«Z¢ed¡„¦«Z£d?eJd eme¤e3efd¢ffd£„Z¥d¤e3d?eJd eEe_e3effd¥„Z¦d¦„Z§e dÃd©edªe¨dzd«e3d¬e!dzd e©jªf d­„¦«Z«edÄd¯ed°e3d eEdfd±„¦«Z¬ed eEe.fd²„¦«Z­ed³„¦«Z®ed´„¦«Z¯edµ„¦«Z°ed¶„¦«Z±ed eEe.fd·„¦«Z²ed efd¸„¦«Z³ed¹ed e3fdº„¦«Z´ed eEe.fd»„¦«Zµd e.fd¼„Z¶d eEe.fd½„Z·ed eEe.fd¾„¦«Z¸ed eEe.fd¿„¦«Z¹ed efdÀ„¦«ZºdS)ÅÚCloudlinuxSummaryz/var/lve/dashboard_certificatez/etc/cl_plus/.disabled)ÚpythonÚrubyÚnodejsz-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.jsoncóØ—i|_d|_t¦«|_d|_d|_| ¦«|_d|_t¦«|_ d|_ dSrc) Ú_optsÚ_security_tokenrVÚ statisticsÚ_lvpmapÚ _system_idÚ_is_process_not_limitedÚis_process_not_limitedÚpackages_by_lenr!ÚsysctlÚremote_settings©Úselfs rfÚ__init__zCloudlinuxSummary.__init__Šsa€ØˆŒ Ø#ˆÔÝ*8Ñ*:Ô*:ˆŒØˆŒ ؈ŒØ&*×&BÒ&BÑ&DÔ&DˆÔ#Ø#ˆÔÝ ‘l”lˆŒ Ø#ˆÔÐÐrecó¾—ttj d¦«¦«}ttj d¦«¦«}| o| S)zm Return true if process is running outside LVE or it's not running by utility `nice` ÚRUNNING_BY_NICEÚRUNNING_IN_LVE)ÚboolrŸÚenvironÚget)Úis_running_by_niceÚis_running_in_lves rfr÷z)CloudlinuxSummary._is_process_not_limited•sP€õ "¥"¤*§.¢.Ð1BÑ"CÔ"CÑDÔDÐÝ ¥¤§¢Ð0@Ñ!AÔ!AÑBÔBÐà%Ð%Ð?Ð.?Ð*?Ð?recóD—|j€t¦«|_|jS)z. Load lvpmap only when needed )rõÚ _get_lvpmaprüs rfÚlvpmapzCloudlinuxSummary.lvpmap s€ð Œ<Ð Ý&™=œ=ˆDŒLØŒ|ÐrerŒcóF—|j€td¦«|_|jS)NÚ system_id)rör$rüs rfr zCloudlinuxSummary.system_id©s#€ð Œ?Ð "Ý4°[ÑAÔAˆDŒOØŒÐrecó&—t¦«rdndS)NÚubuntuÚ rhel_like)r+rdrerfÚ _get_platformzCloudlinuxSummary._get_platform°s€å$™;œ;Ð7ˆxˆx¨KÐ7recó:—t¦«rtntSrc)r)ÚENABLEDÚDISABLEDrdrerfÚ_detect_securebootz$CloudlinuxSummary._detect_secureboot´s€å/Ñ1Ô1Ð?�wˆwµxÐ?recó–‡—tjtjzŠd ˆfd„t d¦«D¦«¦«}|S)NÚc3ó@•K—|]}tj‰¦«V—ŒdSrc)ÚsecretsÚchoice)Ú.0Ú_Úrange_for_random_choices €rfú z=CloudlinuxSummary._generate_security_token..»s.øèè€Ð \Ð \ÈQ¥¤Ð0GÑ!HÔ!HÐ \Ð \Ð \Ð \Ð \Ð \reé@)ÚstringÚ ascii_lettersÚdigitsÚjoinÚrange)Úsecurity_tokenrs @rfÚ_generate_security_tokenz*CloudlinuxSummary._generate_security_token¸sIø€å"(Ô"6½¼Ñ"FÐØŸšÐ \Ð \Ð \Ð \ÕRWÐXZÑR[ÔR[Ð \Ñ \Ô \Ñ\Ô\ˆØÐrecóô—i}|j€3d}t |¦«| d|i¦«d|j›�}t |¦«|j|jdœ}d} tj|j|d¬¦«}n\#tj $rJ}t|¦«}t |¦«| d|i¦«Yd}~nd}~wwxYw|j sCd|j ›d|j ›�}t |¦«| d|i¦«t d ¦« | ¦«d}t|dt ¦«r-|d | ¦«¦«t d ¦«nª#t&t(f$r6d }t |¦«| d|i¦«Yndt*$rX}t d t|¦«|j¦«| dd t.›d�i¦«Yd}~nd}~wwxYw|S)NzSecurity token is emptyÚresultzGetting statistics from server )r r#é<)ÚparamsÚtimeoutúServer 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_loggerÚerrorÚ_error_and_exitÚ SUMMARY_URLÚinfor ÚrequestsrÚRequestExceptionrÜÚokÚ status_codeÚreasonÚjsonÚ isinstanceÚdictÚupdateÚ_get_smart_advice_statisticsÚ TypeErrorÚ ValueErrorÚKeyErrorÚtextÚLOG_FILE)rýÚ stat_dataÚmessager(ÚresponseÚes rfÚ_get_remote_dataz"CloudlinuxSummary._get_remote_data¾s¸€àˆ à Ô Ð &Ø/ˆGÝ × Ò ˜WÑ %Ô %Ð %Ø × Ò  (¨GÐ!4Ñ 5Ô 5Ð 5àF°DÔ4DÐFÐFˆÝ�Š˜Ñ Ô Ð àœØ"Ô1ð ð ˆðˆð 6Ý”| DÔ$4¸VÈRÐPÑPÔPˆHˆHøÝÔ(ð 6ð 6ð 6ݘ!‘f”fˆGÝ × Ò ˜WÑ %Ô %Ð %Ø × Ò  (¨GÐ!4Ñ 5Ô 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5øøøøð 6øøøð Œ{ð 6Øf°XÔ5IÐfÐfÐU]ÔUdÐfÐfˆGÝ �OŠO˜GÑ $Ô $Ð $Ø × Ò  (¨GÐ!4Ñ 5Ô 5Ð 5å�ŠÐ;Ñ<Ô<Ð<ð LØ Ÿ š ™œ¨Ô1ˆIõ˜) HÔ-­tÑ4Ô4ð Pؘ(Ô#×*Ò*¨4×+LÒ+LÑ+NÔ+NÑOÔOÐOõ �OŠOÐJÑ KÔ KÐ KÐ Køõ�:Ð&ð 6ð 6ð 6Ø8ˆGÝ × Ò ˜WÑ %Ô %Ð %Ø × Ò  (¨GÐ!4Ñ 5Ô 5Ð 5Ð 5Ð 5Ýð nð nð nÝ × Ò Ð\Õ^aÐbcÑ^dÔ^dÐfnÔfsÑ tÔ tÐ tØ × Ò  (Ð,kÕT\Ð,kÐ,kÐ,kÐ!lÑ mÔ mÐ mÐ mÐ mÐ mÐ mÐ møøøøð nøøøð Ðs:Á3BÂC)ÂAC$Ã$C)ÅA"GÇAI5È I5ÈAI0É0I5có —|j�|jStj |j¦«r| ¦«|_n2| ¦«}| |¦«r|nd|_|jSrc)rórŸÚpathÚisfileÚDASHBOARD_CERTIFICATEÚ_read_token_from_filer$Ú_write_token_to_file)rýÚtokens rfr#z CloudlinuxSummary.security_tokenís�€à Ô Ð +ØÔ'Ð 'Ý Œ7�>Š>˜$Ô4Ñ 5Ô 5ð WØ#'×#=Ò#=Ñ#?Ô#?ˆDÔ Ð ð×1Ò1Ñ3Ô3ˆEØ,0×,EÒ,EÀeÑ,LÔ,LÐ#V 5 5ÐRVˆDÔ ØÔ#Ð#recóÆ— tj|jtjtjztjzd¦«}tj|d¦«tj|dd¬¦«5}| |¦«ddd¦«n #1swxYwYdS#ttf$r3}t  dt|¦«¦«Yd}~dSd}~wwxYw) z˜ Write security token to file and return success/fail status :param token: generated security token :return: T/F status i€Úwrµ©ÚencodingNTz,Error while writing secure token to file: %sF)rŸr rHÚO_WRONLYÚO_CREATÚO_TRUNCÚfchmodr½ÚwriteÚIOErrorr¤r,r-rÜ)rýrKrÁrÂrCs rfrJz&CloudlinuxSummary._write_token_to_fileùs€ð  õ ”˜Ô3Ýœ¥r¤zÑ1µB´JÑ>ÀñGôGˆBå ŒI�b˜%Ñ Ô Ð Ý”˜2˜s¨WÐ5Ñ5Ô5ð ¸Ø—’˜‘”�ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð à�4øÝ�Ð!ð ð ð Ý × Ò ÐKÍSÐQRÉVÌVÑ TÔ TÐ TØ�5�5�5�5�5øøøøð øøøs<‚A+BÁ-B BÂBÂBÂBÂBÂC Â-(CÃC cóD— t|jdd¬¦«5}| ¦« ¦«pdcddd¦«S#1swxYwYdS#tt f$r3}t  dt|¦«¦«Yd}~dSd}~wwxYw)NÚrrµrNz.Error while reading file with secure token: %s) r rHr¾ÚstriprUr¤r,r-rÜ)rýrÂrCs rfrIz'CloudlinuxSummary._read_token_from_filesé€ð Ý�dÔ0°#ÀÐHÑHÔHð 0ÈAØ—v’v‘x”x—~’~Ñ'Ô'Ð/¨4ð 0ð 0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0øå�Ð!ð ð ð Ý × Ò ÐMÍsÐSTÉvÌvÑ VÔ VÐ VØ�4�4�4�4�4øøøøð øøøs:‚A™(AÁ AÁAÁAÁAÁAÁBÁ,(BÂBcóF—tjtjddd¬¦«S)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)ÚdetectÚget_boolean_paramÚCL_CONFIG_FILErdrerfÚ_detect_old_lve_integrationz-CloudlinuxSummary._detect_old_lve_integrations-€õÔ'ÝÔ+Ø1ØØð  ñ ô ð recó@—tj d¦«S)zO Detects presence/absence of lsapi :return: True/False ú/usr/bin/switch_mod_lsapi©rŸrFÚexistsrdrerfÚ_is_lsapi_presentz#CloudlinuxSummary._is_lsapi_present&s€õ Œw�~Š~Ð9Ñ:Ô:Ð:reÚ interpretercó—|dkrt¦«stSnY|dkrt¦«rtntS|dkrt ¦«stSn|dkrt ¦«stSt |¦«}|€tS|dvr@ | ¦«drtntS#t$r tcYSwxYw|dkr"|  ¦«rtntStd|›�¦«‚) zP Get selector status for nodejs, python, ruby and php selectors rîrïrðÚphpN)rðrîÚselector_enabledzUnknown interpreter: ) rHÚ NOT_INSTALLEDrIrrFrGr^Úget_selector_statusrr=Úphp_selector_is_disabledr<)riÚlibs rfÚ_get_status_of_selectorz)CloudlinuxSummary._get_status_of_selector.s8€ð ˜(Ò "Ð "Ý/Ñ1Ô1ð %Ý$Ð$ð %à ˜FÒ "Ð "Ý8Ñ:Ô:ÐM•7�7Å Ð MØ ˜HÒ $Ð $Ý/Ñ1Ô1ð %Ý$Ð$ð %à ˜EÒ !Ð !Õ*CÑ*EÔ*EÐ !Ý Ð å# KÑ0Ô0ˆØ ˆ;Ý Ð à Ð.Ð .Ð .ð %Ø"%×"9Ò"9Ñ";Ô";аÐ>Ð>Ñ?Ô?Ð?sÂ'B;Â;CÃCcóÞ—|jr|jS tj|d¬¦« ¦«|_|jS#tj$rW}t  dt|¦«¦«| dt|¦«i¦«Yd}~dSd}~wttf$r3}t  dt|¦«¦«Yd}~dSd}~wwxYw)Né )r)z3Request exception while getting remote settings: %sr&z'Error while parsing remote settings: %s) rûr1rr6r2r,r-rÜr.r<r;)rýÚ settings_urlrCs rfÚ_get_remote_settingsz&CloudlinuxSummary._get_remote_settingsLs€Ø Ô ð (ØÔ'Ð 'ð Ý#+¤<° ÀbÐ#IÑ#IÔ#I×#NÒ#NÑ#PÔ#PˆDÔ ØÔ'Ð 'øÝÔ(ð 5ð 5ð 5Ý × Ò ÐRÕTWÐXYÑTZÔTZÑ [Ô [Ð [Ø × Ò  (­C°©F¬FÐ!3Ñ 4Ô 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4øøøøÝ�IÐ&ð ð ð Ý × Ò ÐFÍÈAÉÌÑ OÔ OÐ OØ�4�4�4�4�4øøøøð øøøs$�3AÁC,ÁA B%Â%C,Â9(C'Ã'C,có—|j d¦«rdSttj d¦«¦«}|rdS| |j¦«}|€dS |dd}|ddo| |¦«S#ttf$rW}t  d t|¦«¦«|  d t|¦«i¦«Yd}~dSd}~wwxYw) z- Return cl-statistics status ú--force-collectTÚCL_TEST_SYSTEMNFz cl-statisticsz rollout-grouprrz4Error occurred while trying to get rollout group: %sr&)ròrrrŸrruÚ SETTINGS_URLÚ _match_serverr=r;r,r-rÜr.)rýÚis_test_environmentÚsettingsÚ rollout_grouprCs rfÚ_is_statistics_enabledz(CloudlinuxSummary._is_statistics_enabledYs€ð Œ:�>Š>Ð+Ñ ,Ô ,ð Ø�4å"¥2¤:§>¢>Ð2BÑ#CÔ#CÑDÔDÐØ ð Ø�4Ø×,Ò,¨TÔ->Ñ?Ô?ˆØ Ð Ø�5ð 5Ø$ _Ô5°oÔFˆMؘOÔ,¨YÔ7Ð]¸D×._prepare_metadatarsrø€å  §¢°¸bÑ!AÔ!AÑBÔBÝ  §¢°¸bÑ!AÔ!AÑBÔBÝ*<Ñ*>Ô*>Ð!V  ÅFÔDTÑDVÔDVØ"&×"@Ò"@Ñ"BÔ"Bð ðˆHð ˆOrerxT)r,rÈ)Úserver_metadatar5zFError occurred while trying to get decision for htaccess collection=%sN) rrŸrrr<r,Ú get_decisionÚ Exceptionr-rÜ)rýr‡r‰r{rˆÚhtaccess_collectionrCs` rfÚ_website_collector_statusz+CloudlinuxSummary._website_collector_statusnséø€ð ð ð ð ð õ#¥2¤:§>¢>Ð2BÑ#CÔ#CÑDÔDÐØ ð Ø�4à$Ð$ [Ñ1Ô1ˆð Ý"0½JÐ"GÑ"GÔ"G×"TÒ"TÐemØGQð#Uñ#Sô#SÐ Ð øåð ð ð Ý × Ò ÐeÝ  ™VœVñ %ô %ð %àˆIˆIˆIˆIˆIˆIøøøøð øøøð#Ð"sÁ*A.Á. B,Á8)B'Â!B,Â'B,có"—t|d¦«S)Né©Úint)Ú hash_servers rfÚ _to_numberzCloudlinuxSummary._to_number‹s€å�; Ñ#Ô#Ð#reNcóü—|j€dS|j}|r |j›d|›�}tj| ¦«¦« ¦«dd…}| |¦«d|zzdkS)NTú:éér)r ÚhashlibÚsha256ÚencodeÚ hexdigestr”)rýÚurl_numÚsaltÚ hash_inputr“s rfrzzCloudlinuxSummary._match_server�s…€Ø Œ>Ð !à�4ð”^ˆ Ø ð 4Ø œNÐ3Ð3¨TÐ3Ð3ˆJå”n Z×%6Ò%6Ñ%8Ô%8Ñ9Ô9×CÒCÑEÔEÀcÀrÀcÔJˆ Ø—’  Ñ,Ô,¨q°G©|Ñ;ÀÒAÐArecóˆ—d}|r9t¦«s/|dz}tjd¦«|rt¦«¯)dSdSdSdS)zC Wait for running background process of cl-summary é2rTgš™™™™™¹?N)rJÚtimeÚsleep)Úretriess rfÚ_wait_for_background_processz.CloudlinuxSummary._wait_for_background_processœsu€ð ˆØð Õ8Ñ:Ô:ð Ø �q‰LˆGÝ ŒJ�s‰OŒOˆOðð Õ8Ñ:Ô:ð ð ð ð ð ð ð ð ð recóL —|jds |jdrBt|jd¦«tj¦«ddœ}t|d¦«dS|jds |jdrBt |jd¦«tj¦«ddœ}t|d¦«dS|jdrpt ¦«rd nd }tj¦«|dd œ}| d t¦«i¦«t|d¦«tj d ¦«|j  d¦«r7|  ¦«}|  |t¦«¬¦«|j  d¦«rÃt¦«s3|j  d¦«s| ddid ¬¦«| ¦«|j  d¦«r=| |j|jd¬¦«t( d¦«nt|jd¦«dS| ¦«sIt.jdtj¦«dœ}t3|¦«| ddid ¬¦«|j  d¦«rä|j  d¦«sWt¦«sIt.jdtj¦«dœ}t3|¦«| ddid ¬¦«|j€ld}t( |¦«t.jdt8›d �tj¦«dœ}t3|¦«| d|i¦«|j  d!¦«rºt ¦«rtj¦«d dd œ}npt3t.jtj¦«dd"œ¦«t=jd#dd$d¬%¦«|  ¦«tj¦«ddœ}t|d¦«tj d ¦«|jdr„|j!rMt d¬&¦«r=tj¦«d dd œ}t|d¦«tj d ¦«dSt3t.jtj¦«dd"œ¦«dSdS)'NÚenableÚdisableÚsuccess©Ú timestampr&Tú enable-rpmú disable-rpmÚstatusÚ collectingÚready)r«r®r&Úsending_statusrú get-remote)ÚdatarKú rpm-packagesrwr&z\Sending RPM statistics is disabled by admin. Use --force-collect to ignore admin`s settings.)Ú error_codeú--sendF©ÚsummaryÚurlÚ save_statuszRPM statistics sentzkStatistics collection is disabled globally. Please, try again later or contact support if it happens again.)r&r5r«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)r&r«r5z9/usr/sbin/cloudlinux-summary --send --json &> /dev/null &ú /bin/bash)ÚshellÚ executableÚcheck)Ú acquire_lock)"ròrMr¢r1rNrJr9rDÚsysÚexitrrDÚ_print_result_and_exitrKrLr.Ú_get_rpm_packages_summaryÚ _send_statistics_and_save_statusrôÚRPM_PACKAGES_URLr,r0r~r?ÚFAILEDrOr#r-r?Ú IN_PROGRESSÚ subprocessÚrunr¥rø)rýr³r®r&Ú status_dictrAs rfÚ&_actions_before_run_process_as_limitedz8CloudlinuxSummary._actions_before_run_process_as_limited¦sq€Ø Œ:�hÔ ð  4¤:¨iÔ#8ð å ,¨T¬Z¸Ô-AÑ BÔ BÐ Bå!%¤¡¤¸ ÐBÐBˆDÝ ˜T 4Ñ (Ô (Ð (Ø ˆFØ Œ:�lÔ #ð  t¤z°-Ô'@ð å 0°´¸LÔ1IÑ JÔ JÐ Jå!%¤¡¤¸ ÐBÐBˆDÝ ˜T 4Ñ (Ô (Ð (Ø ˆFØ Œ:�hÔ ð å%?Ñ%AÔ%AÐN�\�\ÀwˆFÝ!%¤¡¤¸È)ÐTÐTˆDà �KŠKÐ)Õ+OÑ+QÔ+QÐRÑ SÔ SÐ SÝ ˜T 4Ñ (Ô (Ð (Ý ŒH�Q‰KŒKˆKØ Œ:�>Š>˜,Ñ 'Ô 'ð bØ×*Ò*Ñ,Ô,ˆFà × 'Ò '¨VÕJ^ÑJ`ÔJ`Ð 'Ñ aÔ aÐ aØ Œ:�>Š>˜.Ñ )Ô )ð Ý+Ñ-Ô-ð °d´j·n²nÐEVÑ6WÔ6Wð Ø×$Ò$à ð#Jðð !ð %ñôðð × *Ò *Ñ ,Ô ,Ð ,ØŒz�~Š~˜hÑ'Ô'ð 8Ø×5Ò5Ø œOØÔ-Ø %ð6ñôðõ —’Ð 5Ñ6Ô6Ð6Ð6å  ¤°$Ñ7Ô7Ð7Ø ˆFØ×*Ò*Ñ,Ô,ð å'Ô.ðRå!œY™[œ[ð ðˆKõ 1°Ñ =Ô =Ð =Ø × Ò àðDððð !ñ ô ð ð Œ:�>Š>˜(Ñ #Ô #ð :Ø”:—>’>Ð"3Ñ4Ô4ð Õ=QÑ=SÔ=Sð å+Ô2ðJå!%¤¡¤ð ð� õ 5°[ÑAÔAÐAØ×$Ò$à ð#Jðð !ð %ñôððÔ"Ð*ØT�Ý× Ò  Ñ)Ô)Ð)å+Ô2ð6ÝGOð6ð6ð6õ"&¤¡¤ð ð� õ5°[ÑAÔAÐAØ×$Ò$ h°Ð%8Ñ9Ô9Ð9Ø Œ:�>Š>˜)Ñ $Ô $ð å)Ñ+Ô+ð Gõ&*¤Y¡[¤[¸LÐT]Ð^Ð^��õ 5Ý,Ô8ÅtÄyÁ{Ä{Ð^bÐcÐcñôðõ”ØOØØ*Øð ñôðð ×1Ò1Ñ3Ô3Ð3Ý%)¤Y¡[¤[¸IÐFÐF�Ý ˜T 4Ñ (Ô (Ð (Ý ŒH�Q‰KŒKˆKð Œ:�hÔ ð ØÔ*ð Õ/IÐW[Ð/\Ñ/\Ô/\ð õ &*¤Y¡[¤[¸LÐT]Ð^Ð^�Ý   tÑ,Ô,Ð,Ý”˜‘ ” � � � õ5Ý,Ô8ÅtÄyÁ{Ä{Ð^bÐcÐcñôðððð ð rec ó¸—tjtjddd¬¦«¦«}tj|¦«5}| dt |¦«g¦«t 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_cpuÚls_cpusÚ ls_memory_phyú--lve-idz/bin/lve_suwrapperú-nú/usr/sbin/cloudlinux-summaryÚ1)rÚCPU_DATA©ÚenvN)Ú lvectllibÚmake_liblve_settingsÚcreate_liblve_settingsÚ temporary_lveÚextendrÜrÉÚcallr8rŸrr6ÚdumpsÚ CPUINFO_DATA)Úargsr|Úlve_ids rfÚ_run_self_in_lvez"CloudlinuxSummary._run_self_in_lve6s€õÔ1Ý Ô ,ØØØ,ð ñ ô ñ ô ˆõÔ $ XÑ .Ô .ð °&Ø �KŠK˜¥S¨¡[¤[Ð1Ñ 2Ô 2Ð 2Ý”?Ø% t­S°©[¬[Ð:XÐYÐ\`Ñ`ÝÝ”JØ#&õ"œZ­ Ô(>Ñ?Ô?ð ñôð ñ ô ð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s¾BCÃCÃCcój—tjgd¢|zttjd¬¦«¬¦«S)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/nicerÓÚ19rÔrÕ)rr×)rÉrÞr8rŸr)rás rfÚ_run_self_by_nicez#CloudlinuxSummary._run_self_by_niceRsE€õŒØ IÐ IÐ IÈDÑ PÝÝ” Ø #ðñôð ñ ô ð reÚoptscó|‡—tˆfd„dD¦«¦«rdStˆfd„dD¦«¦«rdSdS)zK Check that passed command should run as unlimited process c3ó(•K—|] }‰|V—Œ dSrcrd©rÚoptionrçs €rfrzECloudlinuxSummary._should_run_as_unlimited_process..fs;øèè€ð  ð  àð �ŒLð  ð  ð  ð  ð  ð  re)r´r®r²r§r¨r¬r­Tc3ó(•K—|] }‰|V—Œ dSrcrdrês €rfrzECloudlinuxSummary._should_run_as_unlimited_process..ss;øèè€ð ð àð �ŒLð ð ð ð ð ð re)r¶r»ú--jsonrwF)rè)rçs`rfÚ _should_run_as_unlimited_processz2CloudlinuxSummary._should_run_as_unlimited_processasŒø€õ ð  ð  ð  ð  ðð  ñ  ô  ñ ô ð ð�4Ý ð ð ð ð ðð ñ ô ñ ô ð ð�5؈urecó²—| |¦«|_|j�r)| ¦«| |j¦«rt jd¦«dSttj ¦«s+|  |¦«}t j|¦«dS |  |¦«}t j|¦«dS#tj $rc}d|›�}t|¦«tjt"¦«}| |d¬¦«t jd¦«Yd}~dSd}~wwxYw| |j¦«r]d}t'j¦«|dœ}t( ||j¬¦«t-|d¦«t jd ¦«| ¦«dS) Nrz"failed to run task in lve, error: T)Úexc_infor´z|You shouldn't use env var "RUNNING_IN_LVE" or "RUNNING_BY_NICE" for run of any command except collection of main statistics.rª)ÚextrarT)Ú _parse_argsròrørÌrîrÁrÂrrÚLVErærãrÙÚ PyLveErrorÚprintÚloggingÚ getLoggerÚ__name__Ú exceptionr¢r,r-r1Úrun_get_summary)rýÚargvÚrcrCÚ error_msgÚlogÚerr_msgr³s rfrÊzCloudlinuxSummary.runsÌ€à×%Ò% dÑ+Ô+ˆŒ Ø Ô &ñ( #ð × 7Ò 7Ñ 9Ô 9Ð 9ð×4Ò4°T´ZÑ@Ô@ð !Ý”˜‘ ” � � � Ý/µ´ Ñ<Ô<ð !Ø×+Ò+¨DÑ1Ô1�Ý”˜‘ ” � � � ð!Ø×.Ò.¨tÑ4Ô4�BÝ”H˜R‘L”L�L�L�LøÝ Ô+ð!ð!ð!Ø HÀQÐ HÐ H�Iݘ)Ñ$Ô$Ð$Ý!Ô+­HÑ5Ô5�CØ—M’M )°d�MÑ;Ô;Ð;Ý”H˜R‘L”L�L�L�L�L�L�L�Løøøøð !øøøð×4Ò4°T´ZÑ@Ô@ð ð*ðõ"&¤¡¤Ø%ðð�õ× Ò  °´ Ð Ñ;Ô;Ð;Ý   tÑ,Ô,Ð,Ý”˜‘ ” � Ø × Ò Ñ "Ô "Ð "Ð "Ð "sÂ,)CÃE Ã&AEÅE có—tj¦«}| ¦«tj¦«|z }||jd<|jdr0|j t |j|¦«ddd¦«|j d¦«r†| |j|j d¬¦«t  d ¦« |  ¦«dS#t$r&}t d |¦«Yd}~dSd}~wwxYwt|j¦«}| d d¦«t#|d¦«dS) NÚcl_summary_execution_timerÒrÜÚcl_summary_max_mem_usedz,Can't get memory usage by cloudlinux-summaryr¶Tr·zMain statistics sentúWebsite collector failed: %sr#)r¢Ú _get_summaryrôròÚ add_metricrÚ_get_max_memoryrrÅr/r,r0Úwebsite_collectorrŒr-r8Úpopr1)rýÚ start_timeÚ running_timerCÚprintable_statisticss rfrúz!CloudlinuxSummary.run_get_summary¬s€€Ý”Y‘[”[ˆ Ø ×ÒÑÔÐÝ”y‘{”{ ZÑ/ˆ Ø7CˆŒÐ3Ñ4à Œ:�jÔ !ð Ø ŒO× &Ò &ݘÔ,¨lÑ;Ô;ØØ)Ø>ñ  ô ð ð Œ:�>Š>˜(Ñ #Ô #ð 9à × 1Ò 1ØœØÔ$Ø ð 2ñ ô ð õ �OŠOÐ2Ñ 3Ô 3Ð 3ð Dà×&Ò&Ñ(Ô(Ð(Ð(Ð(øÝð Dð Dð DÝ× Ò Ð!?ÀÑCÔCÐCÐCÐCÐCÐCÐCÐCøøøøð Døøøõ $(¨¬Ñ#8Ô#8Ð Ø × $Ò $Ð%5°tÑ <Ô <Ð <Ý Ð1°4Ñ 8Ô 8Ð 8Ð 8Ð 8sÃC2Ã2 D"Ã<DÄD"r«Úsummary_resultcóv—tj|dœ}|dkr||d<tj|d<t|¦«dS)z@ Save status of sending statistics to json file ©r&r«r©r5r&N)r?ÚSUCCESSrÇrO)r«r rËs rfÚ _save_statuszCloudlinuxSummary._save_statusÐsJ€õ "/Ô!6ÀYÐOÐOˆ Ø ˜YÒ &Ð &à$2ˆK˜Ñ !Ý$1Ô$8ˆK˜Ñ !Ý,¨[Ñ9Ô9Ð9Ð9Ð9rer¸r¹rºcóÜ—ttj¦«¦«}||d<| ||¬¦«}||dœ}t|d¦«|r| ||¦«dSdS)zH Send statistics data to server and save status to file r«)r¹rTN)r’r¢Ú_send_statisticsr1r)rýr¸r¹rºr«Ús_resultr&s rfrÅz2CloudlinuxSummary._send_statistics_and_save_statusÝs�€õ�œ ™ œ Ñ$Ô$ˆ Ø(ˆ� ÑØ×(Ò(¨°cÐ(Ñ:Ô:ˆØ$°9Ð=Ð=ˆÝ˜ Ñ&Ô&Ð&Ø ð Ø × Ò ØØñ ô ð ð ð ð ð rec ó—|dz }|dkrdSdddt|jd¦«ddd ttj|¦«¦«›d �g} t |d ¬ ¦«\}}}n3#t $r&}t d |¦«Yd}~dSd}~wwxYw|dkrLtj |¦«} td„|dD¦«¦«S#ttf$rYdSwxYwt d||¦«dS)Nr'rTz/usr/sbin/lveinforíz--idrÒz--show-columnsÚmPMemz--periodÚmT©Úreturn_full_outputz Unable to run lveinfo, error: %src3ó&K—|] }|dV—Œ dS)rNrd©rÚxs rfrz4CloudlinuxSummary._get_max_memory..s&èè€ÐCÐC¨!˜1˜Wœ:ÐCÐCÐCÐCÐCÐCrer³z-lveinfo failed with exit code: %i, output: %s)rÜròr’ÚmathÚceilr,r"r,Úwarningr6ÚloadsÚmaxr<r=r-) rýr Ú time_minutesÚcmdrüÚjson_strrrCÚ parsed_datas rfrz!CloudlinuxSummary._get_max_memoryìsM€Ø# bÑ(ˆ Ø ˜!Ò Ð Ø�4à Ø Ø Ý �” ˜:Ô&Ñ 'Ô 'Ø Ø Ø Ý•4”9˜\Ñ*Ô*Ñ+Ô+Ð .Ð .Ð .ð  ˆð Ý)¨#À$ÐGÑGÔG‰OˆB�˜!˜!øÝ$ð ð ð Ý × Ò ÐAÀ1Ñ EÔ EÐ EØ�4�4�4�4�4øøøøð øøøð �Š7ˆ7Ýœ* XÑ.Ô.ˆKð ÝÐCÐC¨{¸6Ô/BÐCÑCÔCÑCÔCÐCøÝ¥Ð)ð ð ð Ø�t�tð øøøå×ÒÐHÈ"ÈhÑWÔWÐW؈ts*ÁA)Á) BÁ3BÂBÂ7CÃC+Ã*C+cóf—d} d|›�}t |¦«tjd¦«}t d¦«D]P} tj||d¬¦«}n7#tj$r#}|}tjd|z¦«Yd}~ŒId}~wwxYw|‚|j d krt d ¦«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 r©zSending statictics to server z*Unknown exception while sending statisticsér')r6r)éNéÈzSending statictics OKr*r+) r,r0r1r2r"ÚpostÚConnectionErrorr¢r£r4r5rÜr-)r³r¹Ú out_messagerAÚ expected_errÚirBÚerrs rfrz"CloudlinuxSummary._send_statistics st€ð ˆ ð *Ø;°cÐ;Ð;ˆGÝ �OŠO˜GÑ $Ô $Ð $å#Ô4Ð5aÑbÔbˆLݘ1‘X”Xð #ð #�ðÝ'œ}¨S°tÀRÐHÑHÔH�Hð �Eøõ  Ô/ð%ð%ð%Ø#&�LÝ”J˜q !™tÑ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$øøøøð%øøøð #Ð"àÔ# sÒ*Ð*Ý—’Ð 7Ñ8Ô8Ð8Ð8àn¸XÔ=QÐnÐnÐ]eÔ]lÐnÐn� Ý—’  Ñ,Ô,Ð,øøåÔ(ð *ð *ð *ݘc™(œ(ˆKÝ × Ò ˜[Ñ )Ô )Ð )Ð )Ð )Ð )Ð )Ð )øøøøð *øøøðÐsC„AC,Á A"Á C,Á"BÁ1B C,ÂBÂAC,Ã,D.Ã;)D)Ä)D.c ó"—|jst d¦«dStj¦«t jkrt d¦«dStd¬¦«}| |¦«}t  dt|¦«¦«|  d¦«dkst d ¦«dStj ¦«rt d ¦«dS |  d ¦«}tt|¬ ¦«}| |jpt|€dn|  d d¦«| ¦«t#¦«rdntj¦«| ¦«|j|  dd¦«¬¦«dS#t($r&}t d|¦«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-cPanelF©Úcheck_expirationzWebsite collector status: %sÚdecisionÚonz0Website collector is disabled by remote settingsz.Website collector is disabled via opt-out fileÚ domains_limit)ÚloggerÚ max_sitesr�r‚Úconfig_versionrm)r r�ÚplatformÚpanelÚserverÚapi_urlÚremote_config_versionr)r r,Údebugr`r…rÚ CPANEL_NAMErBrŽr0rÜrr;Úis_collection_disabledÚ send_dataÚUNKNOWN_RHN_IDrrÚ_get_control_panel_apacheÚWEBSITE_COLLECTOR_URLrŒr-)rýr‡Úwebsite_collector_statusr6Ú collectorrCs rfrz#CloudlinuxSummary.website_collector,s€ð Œ~ð Ý × Ò ÐYÑ ZÔ ZÐ ZØ�4õ Ô Ñ Ô ¥Ô!2Ò 2Ð 2Ý × Ò ÐKÑ LÔ LÐ LØ�4å4ÀeÐLÑLÔLˆ ð$(×#AÒ#AÀ+Ñ#NÔ#NÐ Ý�ŠÐ6½Ð×&BÒ&BÐCSÐU^Ñ&_Ô&_ð ñ ô ð ð ð øõð ð ð Ý × Ò Ð;¸QÑ ?Ô ?Ð ?Ø�4�4�4�4�4øøøøð øøøsÄC GÇ HÇ(H È HcóŽ—dtj¦«dœ}| ¦«|j |¦«|S©NrT)Úversionr«)r¢Ú_prepare_cl_normal_statisticsrôr9©rýr&s rfrzCloudlinuxSummary._get_summary[sB€Ø­T¬Y©[¬[Ð9Ð9ˆØ ×*Ò*Ñ,Ô,Ð,Ø Œ×Ò˜vÑ&Ô&Ð&؈ recóŽ—dtj¦«dœ}| ¦«|j |¦«|SrG)r¢Ú'_fill_dict_with_rpm_packages_statisticsrôr9rJs rfrÄz+CloudlinuxSummary._get_rpm_packages_summaryasB€Ø­T¬Y©[¬[Ð9Ð9ˆØ ×4Ò4Ñ6Ô6Ð6Ø Œ×Ò˜vÑ&Ô&Ð&؈ recó@—tj¦«tjS)z. Get version of control panel )r`ÚgetCPÚ CP_VERSIONrdrerfÚ_get_panel_versionz$CloudlinuxSummary._get_panel_versiongs€õ Œ ‰ŒˆÝÔ Ð recó.—|j tjd¦«\}}|st|jd<dS|�H||jd<|j d„ddd¦«|j d „ddd ¦«dSt |jd<dS) zN Fill dict with statistics by statistics about MySQL governor zCan't get MySQL governor modeÚmysql_governor_statusNÚmysql_governor_modecóB—t¦« ¦«Src)rÚget_governor_versionrdrerfræzCCloudlinuxSummary._fill_mysql_governor_statistics..~s€� ™œ×<Ò<Ñ>Ô>€rerÜÚmysql_governor_versionz Can't get MySQL governor versioncóN—t¦« ¦«dS©Nr)rÚget_governor_statusrdrerfræzCCloudlinuxSummary._fill_mysql_governor_statistics..„s€� ™œ×;Ò;Ñ=Ô=¸aÔ@€rezCan't get MySQL governor status)rôÚ evaluate_safer/Úget_gov_mode_operationÚERRORrrm)rýr©Úmysql_gov_modes rfÚ_fill_mysql_governor_statisticsz1CloudlinuxSummary._fill_mysql_governor_statisticsps΀ð #'¤/×"?Ò"?Ý Ô 2Ø +ñ# ô# ш�ðð EÝ7<ˆDŒOÐ3Ñ 4Ð 4Ð 4Ø Ð 'Ø5CˆDŒOÐ1Ñ 2Ø ŒO× &Ò &Ø>Ð>ØØ(Ø2ñ  ô ð ð ŒO× &Ò &Ø@Ð@ØØ'Ø1ñ  ô ð ð ð õ8EˆDŒOÐ3Ñ 4Ð 4Ð 4recó¦—|j tjddd¦«|j d„ddd¦«|j |jddd ¦«|j |jdd d ¦«|j t d d d¦«|j d„d dd¦«tj¦«tjkr"|j |j d dd¦«|j |j d dd¦«|j td dd¦«dS)zM Fill dict with statistics by statistics about control panel rÜÚcontrol_panel_namezCan't get control panel namecó`—d„tj¦« ¦«D¦«S)Ncó—g|] \}}|¯|‘Œ Srdrd)rr®Ú is_supporteds rfú zVCloudlinuxSummary._fill_control_panel_statistics....˜s#€ÐnÐnÐnÑ0˜d LÐamÐn�TÐnÐnÐnre)rÚget_supported_cl_featuresÚitemsrdrerfræzBCloudlinuxSummary._fill_control_panel_statistics..˜s*€ÐnÐnµEÔ4SÑ4UÔ4U×4[Ò4[Ñ4]Ô4]ÐnÑnÔn€reÚstr_listÚsupported_cl_featuresz8Can't get list of supported cl features by control panelÚcontrol_panel_versionzCan't get control panel versionÚcontrol_panel_apachezCan't get control panel apacher’Ú nginx_runningzCan't get control panel nginxcóB—ttj¦«¦«Src)r¿rÚcpusersrdrerfræzBCloudlinuxSummary._fill_control_panel_statistics..«s€­3­u¬}©¬Ñ+?Ô+?€reÚ users_totalzCan't get amount of usersÚinstalled_via_plesk_extz8Can't determine if CL was installed from Plesk ExtensionÚlogin_via_whmcs_in_usez)Can't determine if Login via WHMCS in userz Can't if that is WP2 environmentN) rôrr`r…rPrBr(rÚ PLESK_NAMEÚ_is_installed_via_plesk_extÚ_is_login_via_whmcs_in_userrüs rfÚ_fill_control_panel_statisticsz0CloudlinuxSummary._fill_control_panel_statisticsŒs‹€ð Œ×"Ò"Ý Ô Ø Ø Ø *ñ  ô ð ð Œ×"Ò"Ø nÐ nØ Ø #Ø Fñ  ô ð ð Œ×"Ò"Ø Ô #Ø Ø #Ø -ñ  ô ð ð Œ×"Ò"Ø Ô *Ø Ø "Ø ,ñ  ô ð ð Œ×"Ò"Õ#3°U¸OÐMlÑmÔmÐmØ Œ×"Ò"Ð#?Ð#?ÀÈ ÐWrÑsÔsÐsÝ Ô Ñ Ô ¥Ô!1Ò 1Ð 1Ø ŒO× &Ò &ØÔ0ØØ)ØJñ  ô ð ð Œ×"Ò"Ø Ô +Ø Ø $Ø 7ñ  ô ð ð Œ×"Ò"Ý  Ð';Ð=_ñ ô ð ð ð rec ó¸—d}tj¦«tjkr|Sgd¢}t j|ddd¬¦«}t j|j¦«}d|vr{d|dvrq|ddD]b}|ddkrTd }t|  d d ¦«|  d d ¦«|  d d ¦«g¦«rd}nŒc|S)zA Determine whether the login method is via WHMCS r´)z/usr/local/cpanel/bin/whmapi1Ú&get_available_authentication_providersz--output=jsonprettyT)Úcapture_outputr>r¿r³Ú providersÚ provider_nameÚwhmcsrÚwhostmgrd_enabledFÚcpaneld_enabledÚwebmaild_enabledrT) r`r…rr>rÉrÊr6rÚstdoutrèr)r®Úcommandr&r³Úproviders rfrsz,CloudlinuxSummary._is_login_via_whmcs_in_use¿s€ð ˆå Ô Ñ Ô ¥Ô!2Ò 2Ð 2؈MàtÐtÐtˆÝ” ¸À4ÈtÐTÑTÔTˆÝŒz˜&œ-Ñ(Ô(ˆØ �Tˆ>ˆ>˜k¨T°&¬\Ð9Ð9Ø  œL¨Ô5ð ð �ؘOÔ,°Ò7Ð7Ø�Fõà$ŸLšLÐ)<¸eÑDÔDØ$ŸLšLÐ):¸EÑBÔBØ$ŸLšLÐ);¸UÑCÔCðñôð#ð"#˜Ø�Eð8ðˆ recóP—d}d}tj |¦«rd}|S)a cldeploy-plesk-ext.log is always created by cldeploy-precheck when it downloads the cldeploy script, if it exists it means there was an attempt to launch cldeploy from the Plesk Extension. Since this function is in package lve-utils, which depends on lve, it means that the current OS is CloudLinux, therefore the conversion was successful. Possible false positives: - if there was failed attempt to convert os from Plesk Ext, and then it was successfully converted after manual run of cldeploy, it will be considered as CLOS installed via Plesk extension - if user has CL already installed and goes to CLOS Plesk Ext and tries to run conversion from there Possible false negatives: - if /var/log/cldeploy-plesk-ext.log was deleted or renamed/archived (e.g. via logrotate) Fz/var/log/cldeploy-plesk-ext.logTrf)r&Úext_logs rfrrz-CloudlinuxSummary._is_installed_via_plesk_extÞs.€ð ˆØ3ˆÝ Œ7�>Š>˜'Ñ "Ô "ð ØˆF؈ recóÖ—t¦«r/tj¦«rd}nDtj¦«rd}n.d}n+|jddkrtj¦«rdnd}nd}|S) z“ Wrapper to retrieve control panel Apache version: EA3 or EA4 for cPanel, native otherwise :return: EA3|EA4|native Ú litespeedÚ openlitespeedÚunknown_litespeedr`ÚcPanelÚEA4ÚEA3Únative)r'r`Údetect_enterprise_litespeedÚdetect_open_litespeedrôÚis_ea4rJs rfrBz+CloudlinuxSummary._get_control_panel_apacheôs~€õ Ñ !Ô !ð ÝÔ1Ñ3Ô3ð -Ø$��ÝÔ-Ñ/Ô/ð -Ø(��ð-��Ø Œ_Ð1Ô 2°hÒ >Ð >Ý$œm™oœoÐ8�U�U°5ˆFˆFàˆF؈ recóÀ—tj¦«}|€|Stjttjt dt dti}| |d¦«S)z  Wrapper to convert internal values from cagefs_statistics_config.get_cagefs_status function to values for statistics :return: NÚEnabledÚDisabledÚUnknown) r-Úget_cagefs_statusÚCAGEFS_STATUS_NOT_INSTALLEDrmÚCAGEFS_STATUS_NOT_INITIALIZEDÚNOT_INITIALIZEDrrr)Ú cagefs_statusÚcagefs_status_maps rfÚ_cagefs_status_wrapperz(CloudlinuxSummary._cagefs_status_wrappersX€õ1ÔBÑDÔDˆ Ø Ð Ø Ð å $Ô @Å-Ý $Ô BÅOØ •wØ �ð  Ðð !×$Ò$ ]°IÑ>Ô>Ð>recó臗|j tddd¦«t¦«Š|j ˆfd„ddd¦«|j ˆfd„ddd ¦«d S) z= Fill dict with website isolation statistics r’Ú%website_isolation_allowed_server_widez0Can't detect status of support website isolationcó"•—t‰¦«Src©r¿©Ú per_user_stats€rfræzFCloudlinuxSummary._fill_website_isolation_statistics..)󸀕C˜ Ñ&Ô&€reÚ%website_isolation_enabled_users_totalzACan't detect total amount of users with enabled website isolationcóZ•—td„‰ ¦«D¦«¦«S)Nc3ó4K—|]}t|¦«V—ŒdSrcrœ)rÚdomainss rfrzYCloudlinuxSummary._fill_website_isolation_statistics..../s(èè€ÐKÐK¨�˜G™ œ ÐKÐKÐKÐKÐKÐKre©Úsumrêr�s€rfræzFCloudlinuxSummary._fill_website_isolation_statistics../s*ø€•CÐKÐK°M×4HÒ4HÑ4JÔ4JÐKÑKÔKÑKÔK€reÚ(website_isolation_enabled_websites_totalzDCan't detect total amount of websites with enabled website isolationN)rôrrhri)rýržs @rfÚ"_fill_website_isolation_statisticsz4CloudlinuxSummary._fill_website_isolation_statisticss¢ø€ð Œ×"Ò"Ý 4Ø Ø 3Ø >ñ  ô ð õ<Ñ=Ô=ˆ Ø Œ×"Ò"Ø &Ð &Ð &Ð &Ø Ø 3Ø Oñ  ô ð ð Œ×"Ò"Ø KÐ KÐ KÐ KØ Ø 6Ø Rñ  ô ð ð ð recó¸—|j |jddd¦«|jdttfvr d|jd<n'|j t jddd¦«|j tt jd¦«ddd ¦«|j tt jd ¦«dd d ¦«dS) zF Fill dict with statistics by statistics about CageFS rÜr–zCan't get CageFS statusNÚcagefs_user_modezCan't get CageFS user modeTÚcagefs_enabled_quantityz/Can't get quantity of users with enabled CageFSFÚcagefs_disabled_quantityz0Can't get quantity of users with disabled CageFS) rôrr˜rmr•r-Úget_cagefs_user_moderÚ get_quantityrüs rfÚ_fill_cagefs_statisticsz)CloudlinuxSummary._fill_cagefs_statistics5sõ€ð Œ×"Ò"Ø Ô 'Ø Ø Ø %ñ  ô ð ð Œ?˜?Ô +µ ½Ð/OÐ OÐ OØ26ˆDŒOÐ.Ñ /Ð /à ŒO× &Ò &Ý(Ô=ØØ"Ø,ñ  ô ð ð Œ×"Ò"Ý Õ,Ô9¸4Ñ @Ô @Ø Ø %Ø =ñ  ô ð ð Œ×"Ò"Ý Õ,Ô9¸5Ñ AÔ AØ Ø &Ø >ñ  ô ð ð ð recóD‡— td„|j ¦«D¦«¦«}n#tj$rYdSwxYwt |jj ¦«¦«Štˆfd„|  ¦«D¦«¦«S)zJ Get amount of end-users which belong to active resellers c3ó,K—|]\}}|dk¯ |V—ŒdS©rNrd©rrÚlvps rfrzLCloudlinuxSummary._get_amount_of_endusers_under_resellers..[ó2èè€ÐYÐY©¨¨3ÐQTÐWXÒQXÐQX ÐQXÐQXÐQXÐQXÐYÐYreNc3ó •K—|]}|‰vV—Œ dSrcrd)rÚlvp_idÚenabled_lvp_ids €rfrzLCloudlinuxSummary._get_amount_of_endusers_under_resellers.._s(øèè€ÐOÐO°�6˜^Ð+ÐOÐOÐOÐOÐOÐOre) rr Ú lve_lvp_pairsrrPÚsetÚname_mapÚid_listr¥Úelements)rýÚ lvp_countr·s @rfÚ'_get_amount_of_endusers_under_resellersz9CloudlinuxSummary._get_amount_of_endusers_under_resellersVs¦ø€ð ÝÐYÐY°$´+×2KÒ2KÑ2MÔ2MÐYÑYÔYÑYÔYˆIˆIøÝÔ!ð ð ð Ø�4�4ð øøøå˜Tœ[Ô1×9Ò9Ñ;Ô;Ñ<Ô<ˆÝÐOÐOÐOÐO¸)×:LÒ:LÑ:NÔ:NÐOÑOÔOÑOÔOÐOsƒ04´AÁAcóÔ— td„|j ¦«D¦«¦«}n#tj$rYdSwxYwt | ¦«¦«S)z/ Get total amount of end-users c3ó,K—|]\}}|dk¯ |V—ŒdSr±rdr²s rfrzBCloudlinuxSummary._get_total_amount_of_endusers..fr´reN)rr r¸rrPr¥rê)rýr½s rfÚ_get_total_amount_of_endusersz/CloudlinuxSummary._get_total_amount_of_endusersasr€ð ÝÐYÐY°$´+×2KÒ2KÑ2MÔ2MÐYÑYÔYÑYÔYˆIˆIøÝÔ!ð ð ð Ø�4�4ð øøøå�9×#Ò#Ñ%Ô%Ñ&Ô&Ð&s‚03³AÁAcóp— ttj¦«¦«S#tj$rYdSwxYw)z) Get amount of resellers N)r¿rÚ resellersrPrdrerfÚ_get_amount_of_resellersz*CloudlinuxSummary._get_amount_of_resellersksB€ð  Ý•u”Ñ(Ô(Ñ)Ô)Ð )øÝÔ!ð ð ð Ø ˆDˆDð øøøs ‚"¢5´5c󲇗‰j tjjddd¦«‰j tjjddd¦«‰j tjjddd¦«‰j ‰jddd ¦«‰j ‰jdd d ¦«‰j ‰j dd d ¦«‰j ˆfd„ddd¦«‰jdr ‰j d„ddd¦«dSd‰jd<d‰jd <d‰jd<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 panelÚreseller_limits_enabledz1Can't detect status of support of reseller limitsÚresellers_totalz#Can't get total amount of resellersÚ(resellers_endusers_under_reseller_limitsz>Can't get amount of end-users which belong to active resellersÚresellers_endusers_totalz#Can't get total amount of end-userscó,•—‰ ¦«Src)Ú_get_resellers_with_faultsrüs€rfræz>CloudlinuxSummary._fill_resellers_statistics..¡sø€�D×3Ò3Ñ5Ô5€reÚresellers_with_faultsz:Can't get amount of resellers with faults for the past 24hcó\—tttj¦«¦«¦«Src)r¿ÚlistrÙÚreseller_lvp_listrdrerfræz>CloudlinuxSummary._fill_resellers_statistics..ªs€��D¥Ô!<Ñ!>Ô!>Ñ?Ô?Ñ@Ô@€reÚresellers_activez$Can't get amount of active resellersN) rôrrÙÚlveÚis_lve10Úis_panel_supportedÚreseller_limit_supportedrÄr¾rÁrüs`rfÚ_fill_resellers_statisticsz,CloudlinuxSummary._fill_resellers_statisticsusµø€ð Œ×"Ò"Ý ŒMÔ "Ø Ø .Ø Fñ  ô ð ð Œ×"Ò"Ý ŒMÔ ,Ø Ø 5Ø Mñ  ô ð ð Œ×"Ò"Ý ŒMÔ 2Ø ð &Ø ?ñ  ô ð ð Œ×"Ò"Ø Ô )Ø Ø Ø 1ñ  ô ð ð Œ×"Ò"Ø Ô 8Ø Ø 6Ø Lñ  ô ð ð Œ×"Ò"Ø Ô .Ø Ø &Ø 1ñ  ô ð ð Œ×"Ò"Ø 5Ð 5Ð 5Ð 5Ø Ø #Ø Hñ  ô ð ð Œ?Ð4Ô 5ð <Ø ŒO× &Ò &ðAÐ@ØØ"Ø6ñ  ô ð ð ð ð37ˆDŒOÐ.Ñ /ØJNˆDŒOÐFÑ GØ7;ˆDŒOÐ3Ñ 4Ð 4Ð 4reÚxml_cfg_providerc󜇗|j t|j‰jt j‰jt j¦«ddd¦«|j t|j‰jt j¦«ddd¦«|j ˆfd„ddd ¦«|j ˆfd „dd d ¦«|j ˆfd „ddd¦«|j ˆfd„ddd¦«|j ˆfd„ddd¦«|j t|j ‰jt j ¦«ddd¦«|j t|j ‰jt j ¦«ddd¦«dS)zN Fill dict with statistics by statistics about default limits r’Údefault_limit_speedzCan't get default speed limitrÜÚdefault_limit_cpu_origin_unitsz+Can't get cpu origin units of default limitcó2•—‰jtjSrc)Údefaultsr3Úncpu©rØs€rfræzCCloudlinuxSummary._fill_default_limits_statistics..Êóø€Ð$Ô-­hÔ7Ô<€reÚdefault_limit_ncpuzCan't get default ncpu limitcó2•—‰jtjSrc)rÝr3Úiorßs€rfræzCCloudlinuxSummary._fill_default_limits_statistics..Ðóø€Ð$Ô-­hÔ7Ô:€reÚdefault_limit_iozCan't get default io limitcó2•—‰jtjSrc)rÝr3Únprocrßs€rfræzCCloudlinuxSummary._fill_default_limits_statistics..Ösø€Ð$Ô-­hÔ7Ô=€reÚdefault_limit_nproczCan't get default nproc limitcó2•—‰jtjSrc)rÝr3Úeprßs€rfræzCCloudlinuxSummary._fill_default_limits_statistics..ÜräreÚdefault_limit_epzCan't get default ep limitcó2•—‰jtjSrc)rÝr3Úiopsrßs€rfræzCCloudlinuxSummary._fill_default_limits_statistics..âràreÚdefault_limit_iopszCan't get default iops limitÚdefault_limit_vmem_mbzCan't get default vmem limitÚdefault_limit_pmem_mbzCan't get default pmem limitN) rôrrÚ_cpu_limit_to_percentsrÝr3ÚcpurÞÚ_get_cpu_limit_unitsÚ_mempages_to_mbÚvmemÚpmem©rýrØs `rfÚ_fill_default_limits_statisticsz1CloudlinuxSummary._fill_default_limits_statistics´sø€ð Œ×"Ò"Ý ØÔ+Ø Ô)­(Ô3Ô7Ø Ô)­(Ô3Ô8ñ ô ð Ø !Ø +ñ ô ð ð Œ×"Ò"Ý �DÔ-Ð/?Ô/HÍÔ/RÔ/VÑ WÔ WØ Ø ,Ø 9ñ  ô ð ð Œ×"Ò"Ø <Ð <Ð <Ð <Ø Ø Ø *ñ  ô ð ð Œ×"Ò"Ø :Ð :Ð :Ð :Ø Ø Ø (ñ  ô ð ð Œ×"Ò"Ø =Ð =Ð =Ð =Ø Ø !Ø +ñ  ô ð ð Œ×"Ò"Ø :Ð :Ð :Ð :Ø Ø Ø (ñ  ô ð ð Œ×"Ò"Ø <Ð <Ð <Ð <Ø Ø Ø *ñ  ô ð ð Œ×"Ò"Ý �DÔ(Ð*:Ô*CÅHÔ*MÔ*RÑ SÔ SØ Ø #Ø *ñ  ô ð ð Œ×"Ò"Ý �DÔ(Ð*:Ô*CÅHÔ*MÔ*RÑ SÔ SØ Ø #Ø *ñ  ô ð ð ð recó ‡—|j ˆfd„ddd¦«|j ˆfd„ddd¦«|j ˆfd„dd 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ó,•—t‰j¦«Src)r¿Úpackagesrßs€rfræzACloudlinuxSummary._fill_other_limits_statistics..ûsø€•CÐ(Ô1Ñ2Ô2€rer’Úpackages_totalz"Can't get total amount of packagescóF•—t‰ ¦«¦«Src)r¿Úget_packages_with_custom_limitsrßs€rfræzACloudlinuxSummary._fill_other_limits_statistics..sø€•CÐ(×HÒHÑJÔJÑKÔK€reÚpackages_with_custom_limitsz/Can't get amount of packages with custom limitscóF•—t‰ ¦«¦«Src)r¿Úget_users_with_custom_limitsrßs€rfræzACloudlinuxSummary._fill_other_limits_statistics..sø€•CÐ(×EÒEÑGÔGÑHÔH€reÚusers_with_custom_limitsz,Can't get amount of users with custom limitsÚusers_with_faultsz6Can't get amount of users with faults for the past 24hN)rôrÚ_get_users_with_faultsr÷s `rfÚ_fill_other_limits_statisticsz/CloudlinuxSummary._fill_other_limits_statisticsôsËø€ð Œ×"Ò"Ø 2Ð 2Ð 2Ð 2Ø Ø Ø 0ñ  ô ð ð Œ×"Ò"Ø KÐ KÐ KÐ KØ Ø )Ø =ñ  ô ð ð Œ×"Ò"Ø HÐ HÐ HÐ HØ Ø &Ø :ñ  ô ð ð Œ×"Ò"Ø Ô 'Ø Ø Ø Dñ  ô ð ð ð recó䇇—tdd¦«D�]Û}‰j t‰j||¦«d|›d�¦«\}Š|r‰€dS‰j ˆfd„dd|›d �d¬ ¦«‰j ˆfd „d d|›d �d¬ ¦«‰j ˆˆfd„d d|›d�d¬ ¦«‰j ˆˆfd„dd|›d�d¬ ¦«‰j ˆfd„d d|›d�d¬ ¦«‰j ˆfd„d d|›d�d¬ ¦«‰j ˆfd„d d|›d�d¬ ¦«‰j ˆfd„d d|›d�d¬ ¦«‰j ˆfd„d d|›d�d¬ ¦«‰j ˆˆfd„d d|›d�d¬ ¦«‰j ˆˆfd„d d|›d�d¬ ¦«�ŒÝdS) zV Fill dict with statistics by statistics about top packages on server rTr'zCan't get top z package by usersNcó•—‰djS©NrT©r®©Ú top_results€rfræzACloudlinuxSummary._fill_top_packages_statistics..&sø€˜  1œ Ô*€rerÜÚtop_Ú _package_name©Ú log_messagecó.•—t‰d¦«SrXr‘r s€rfræzACloudlinuxSummary._fill_top_packages_statistics..,sø€�˜J qœMÑ*Ô*€rer’Ú_package_users_numc󌕗‰ ‰djptj‰djptj¦«Sr)rñÚlimitsr5ròrÞ©rýr s€€rfræzACloudlinuxSummary._fill_top_packages_statistics..2s;ø€˜×3Ò3Ø ”]Ô)Ð9­\Ô>Ø ”]Ô)Ð9­\Ô?ñô€reÚ_package_limit_speedcó\•—‰ ‰djptj¦«Sr)rórr5ròrs€€rfræzACloudlinuxSummary._fill_top_packages_statistics..;s)ø€˜×1Ò1Ø ”]Ô)Ð9­\Ô>ñô€reÚ_package_limit_cpu_origin_unitscó6•—‰djptjSr)rr5rÞr s€rfræzACloudlinuxSummary._fill_top_packages_statistics..Cóø€˜ AœÔ-Ð=µÔC€reÚ_package_limit_ncpucó6•—‰djptjSr)rr5rãr s€rfræzACloudlinuxSummary._fill_top_packages_statistics..Ióø€˜ AœÔ-Ð=µÔA€reÚ_package_limit_iocó6•—‰djptjSr)rr5rçr s€rfræzACloudlinuxSummary._fill_top_packages_statistics..Osø€˜ AœÔ-Ð=µÔD€reÚ_package_limit_nproccó6•—‰djptjSr)rr5rêr s€rfræzACloudlinuxSummary._fill_top_packages_statistics..UrreÚ_package_limit_epcó6•—‰djptjSr)rr5rír s€rfræzACloudlinuxSummary._fill_top_packages_statistics..[rreÚ_package_limit_iopscó\•—‰ ‰djptj¦«Sr)rôrr5rõrs€€rfræzACloudlinuxSummary._fill_top_packages_statistics..aó$ø€˜×,Ò,¨j¸¬mÔ.BÐ.RÅlÔ-XÑYÔY€reÚ_package_limit_vmem_mbcó\•—‰ ‰djptj¦«Sr)rôrr5rörs€€rfræzACloudlinuxSummary._fill_top_packages_statistics..gr%reÚ_package_limit_pmem_mb)r"rôrZrÚ#_get_top_package_by_number_of_usersr)rýrØr-r©r s` @rfÚ_fill_top_packages_statisticsz/CloudlinuxSummary._fill_top_packages_statisticsssøø€õ �q˜!‘”ðR ñR ˆAØ"&¤/×"?Ò"?ݘÔ@À!ÐEUÑVÔVØ5 Ð5Ð5Ð5ñ#ô#Ñ ˆG�Zð ð ˜jÐ0Ø��ð ŒO× &Ò &Ø*Ð*Ð*Ð*ØØ'�qÐ'Ð'Ð'Ø ð 'ñ ô ð ð ŒO× &Ò &Ø*Ð*Ð*Ð*ØØ,�qÐ,Ð,Ð,Ø ð 'ñ ô ð ð ŒO× &Ò &ððððððØ.�qÐ.Ð.Ð.Ø ð 'ñ ô ð ð ŒO× &Ò &ððððððØ9�qÐ9Ð9Ð9Ø ð 'ñ ô ð ð ŒO× &Ò &ØCÐCÐCÐCØØ-�qÐ-Ð-Ð-Ø ð 'ñ ô ð ð ŒO× &Ò &ØAÐAÐAÐAØØ+�qÐ+Ð+Ð+Ø ð 'ñ ô ð ð ŒO× &Ò &ØDÐDÐDÐDØØ.�qÐ.Ð.Ð.Ø ð 'ñ ô ð ð ŒO× &Ò &ØAÐAÐAÐAØØ+�qÐ+Ð+Ð+Ø ð 'ñ ô ð ð ŒO× &Ò &ØCÐCÐCÐCØØ-�qÐ-Ð-Ð-Ø ð 'ñ ô ð ð ŒO× &Ò &ØYÐYÐYÐYÐYØØ0�qÐ0Ð0Ð0Ø ð 'ñ ô ð ð ŒO× &Ò &ØYÐYÐYÐYÐYØØ0�qÐ0Ð0Ð0Ø ð 'ñ ô ð ñ ð[R ðR recó —t¦«}| |¦«| |¦«| |¦«dS)zN Fill dict with statistiscs by varied statistics about limits N)r4rørr*r÷s rfÚ_fill_limits_statisticsz)CloudlinuxSummary._fill_limits_statisticsnsU€õ-Ñ.Ô.ÐØ ×,Ò,Ð-=Ñ>Ô>Ð>Ø ×*Ò*Ð+;Ñ<Ô<Ð<Ø ×*Ò*Ð+;Ñ<Ô<Ð<Ð<Ð.†sø€˜ vÔ.¨xÔ8€rerÜÚlsapi_criu_service_statusrcó •—‰ddS)Nr0rHrdr1s€rfræz:CloudlinuxSummary._fill_lsapi_statistics..Œsø€˜ vÔ.¨yÔ9€reÚlsapi_criu_service_versioncó •—‰ddS)NÚ lsapiConfÚ lsapi_criurdr1s€rfræz:CloudlinuxSummary._fill_lsapi_statistics..’sø€˜ {Ô3°LÔA€reÚlsapi_option_criucó •—‰ddS)Nr7Úlsapi_with_connection_poolrdr1s€rfræz:CloudlinuxSummary._fill_lsapi_statistics..˜sø€˜ {Ô3Ð4PÔQ€reÚlsapi_option_connection_poolcó•—‰dS)NÚ libVersionrdr1s€rfræz:CloudlinuxSummary._fill_lsapi_statistics..žó ø€˜ |Ô4€reÚlsapi_lib_versioncó•—‰dS)NÚ modStatusrdr1s€rfræz:CloudlinuxSummary._fill_lsapi_statistics..¤s ø€˜ {Ô3€recó•—‰dS)NÚ modVersionrdr1s€rfræz:CloudlinuxSummary._fill_lsapi_statistics..ªr?reÚlsapi_mod_versioncó•—‰dS)NÚ totalDomainrdr1s€rfræz:CloudlinuxSummary._fill_lsapi_statistics..°s ø€˜ }Ô5€rer’Úlsapi_total_domain_countcó•—‰dS)NÚ domainStatrdr1s€rfræz:CloudlinuxSummary._fill_lsapi_statistics..¶r?reÚint_dictÚlsapi_domain_statcó•—‰dS)NÚ controlPanelrdr1s€rfræz:CloudlinuxSummary._fill_lsapi_statistics..¼s ø€˜ ~Ô6€reÚlsapi_apache_environment)rôrZÚget_raw_lsapi_infor\rrm)rýr©r2s @rfÚ_fill_lsapi_statisticsz(CloudlinuxSummary._fill_lsapi_statisticsws‰ø€ð #'¤/×"?Ò"?Ø Ô #Ø *ñ# ô# ш�ððA @Ý27ˆDŒOÐ.Ñ /Ð /Ð /à Ñ 'Ø ŒO× &Ò &Ø8Ð8Ð8Ð8ØØ+Ø ð 'ñ ô ð ð ŒO× &Ò &Ø9Ð9Ð9Ð9ØØ,Ø ð 'ñ ô ð ð ŒO× &Ò &ØAÐAÐAÐAØØ#Ø ð 'ñ ô ð ð ŒO× &Ò &ØQÐQÐQÐQØØ.Ø ð 'ñ ô ð ð ŒO× &Ò &Ø4Ð4Ð4Ð4ØØ#Ø ð 'ñ ô ð ð ŒO× &Ò &Ø3Ð3Ð3Ð3ØØ"Ø ð 'ñ ô ð ð ŒO× &Ò &Ø4Ð4Ð4Ð4ØØ#Ø ð 'ñ ô ð ð ŒO× &Ò &Ø5Ð5Ð5Ð5ØØ*Ø ð 'ñ ô ð ð ŒO× &Ò &Ø4Ð4Ð4Ð4ØØ#Ø ð 'ñ ô ð ð ŒO× &Ò &Ø6Ð6Ð6Ð6ØØ*Ø ð 'ñ ô ð ð ð õ3@ˆDŒOÐ.Ñ /Ð /Ð /recóJ—|j |jddd¦«dS)NÚstr_dictÚ wmt_configz!Cant get status of wmt_api_config)rôrÚ_get_wmt_api_configrüs rfÚ_fill_wmt_settings_statisticsz/CloudlinuxSummary._fill_wmt_settings_statisticsÄs3€Ø Œ×"Ò"Ø Ô $ j°,Ð@cñ ô ð ð ð rec󿇇 ‡ ‡ ‡ —d} ‰ ¦«\Š }Š nH#t$r;}t dt |¦«¦«ggicŠ }Š d}Yd}~nd}~wwxYwt t ‰ ¦«t |¦«z ¦«} ‰ |¦«\Š Š nD#t$r7}t dt |¦«¦«iicŠ Š Yd}~nd}~wwxYw|r$‰  dt|¦«i¦«‰j   ˆ fd„ddd ¦«‰j   ˆ fd „d d d ¦«‰j   ˆ fd„d dd¦«‰j   ˆ fd„ddd¦«‰j   ˆ fd„ddd¦«‰j   ˆ fd„d dd¦«‰j   ‰j ddd¦«‰j   ˆ ˆfd„d¦«\}}|rt|t¦«s1t D](}t#|¦«\}} d‰j |<d‰j | <Œ)nrt D]j}t#|¦«\}} t%| |d¦«¦«‰j |<t%| | d¦«¦«‰j | <Œk‰ |r‰ nd¦«dS) NTz+Error while getting WordPress statistics %sFz3Error while getting WordPress plugins statistics %sÚcloudlinux_wpos_object_cachecó"•—t‰¦«Srcrœ)Ú all_wp_pathss€rfræz7CloudlinuxSummary._fill_wp_statistics..àsø€•C˜ Ñ%Ô%€rer’Úwordpress_installed_totalz,Can't get total count of installed wordpresscó•—‰Srcrd©Úobject_cache_pluginss€rfræz7CloudlinuxSummary._fill_wp_statistics..æsø€Ð(€rerKÚwordpress_object_cache_pluginsz&Can't get WP object cache plugins infocó•—‰Srcrd©Úadvanced_cache_pluginss€rfræz7CloudlinuxSummary._fill_wp_statistics..ìsø€Ð*€reÚ wordpress_advanced_cache_pluginsz(Can't get WP advanced cache plugins infocóF•—t‰ ¦«¦«Srcr¤r]s€rfræz7CloudlinuxSummary._fill_wp_statistics..òsø€•CÐ,×3Ò3Ñ5Ô5Ñ6Ô6€reÚ$wordpress_object_cache_plugins_totalz,Can't get WP object cache total plugins infocóF•—t‰ ¦«¦«Srcr¤ras€rfræz7CloudlinuxSummary._fill_wp_statistics..øsø€•CÐ.×5Ò5Ñ7Ô7Ñ8Ô8€reÚ&wordpress_advanced_cache_plugins_totalz.Can't get WP advanced cache total plugins infocó•—‰Srcrd)Úwp_php_versionss€rfræz7CloudlinuxSummary._fill_wp_statistics..þsø€�O€reÚwordpress_php_versionszCan't get WP php version infoÚ4awp_sites_count_with_wp_config_php_backup_in_docrootz>Can't analyze sites with wp-config.php.backup in document rootcó.•—‰ ‰¦«Src)Ú'_get_accelerate_wp_plugin_status_counts)rZrýs€€rfræz7CloudlinuxSummary._fill_wp_statistics..sø€�D×@Ò@ÀÑNÔN€rez3Can't analyze accelerate_wp_plugin status.php fileséÖÿÿÿr)Ú_prepare_wp_statisticsrŒr,r-rÜrÐr¹Ú_prepare_wp_plugins_statisticsr9r¿rôrÚ-_count_sites_with_wp_config_backup_in_docrootrZr7r8Ú ACCELERATE_WP_PLUGIN_STATUS_KEYSrœr’rÚ!_fill_wp_rocket_plugin_statistics)rýÚwp_paths_enumeratedÚpaths_with_wpos_object_cacherCÚwithout_wpos_object_cacher©Úaccelerate_wp_plugin_countsr‹Ú enabled_nameÚ disabled_namerbrZr^ris` @@@@rfÚ_fill_wp_statisticsz%CloudlinuxSummary._fill_wp_statisticsÉsëøøøøø€Ø"Ðð (ØJN×JeÒJeÑJgÔJgÑ GˆLÐ6¸¸øÝð (ð (ð (Ý × Ò ÐJÍCÐPQÉFÌFÑ SÔ SÐ SØJLÈbÐRTÐ GˆLÐ6¸Ø"'Ð Ð Ð Ð Ð Ð øøøøð (øøøõ %)­¨\Ñ):Ô):½SÐA]Ñ=^Ô=^Ñ)^Ñ$_Ô$_Ð!ð BØ;?×;^Ò;^Ø)ñ<ô<Ñ 8Ð Ð"8Ð"8øõð Bð Bð BÝ × Ò ÐRÕTWÐXYÑTZÔTZÑ [Ô [Ð [Ø;=¸rÐ 8Ð Ð"8Ð"8Ð"8Ð"8Ð"8Ð"8øøøøð Bøøøð (ð mØ × 'Ò 'Ð)GÍÐMiÑIjÔIjÐ(kÑ lÔ lÐ là Œ×"Ò"Ø %Ð %Ð %Ð %Ø Ø 'Ø :ñ  ô ð ð Œ×"Ò"Ø (Ð (Ð (Ð (Ø Ø ,Ø 4ñ  ô ð ð Œ×"Ò"Ø *Ð *Ð *Ð *Ø Ø .Ø 6ñ  ô ð ð Œ×"Ò"Ø 6Ð 6Ð 6Ð 6Ø Ø 2Ø :ñ  ô ð ð Œ×"Ò"Ø 8Ð 8Ð 8Ð 8Ø Ø 4Ø <ñ  ô ð ð Œ×"Ò"Ø #Ð #Ð #Ð # ZÐ1IÐKjñ ô ð ð Œ×"Ò"Ø Ô >Ø Ø BØ Lñ  ô ð ð04¬×/LÒ/LØ NÐ NÐ NÐ NÐ NØ Añ0 ô0 Ñ,ˆÐ,ðð h�jÐ)DÅdÑKÔKð hÝ>ð 5ð 5� Ý.OÐPZÑ.[Ô.[Ñ+� ˜mØ03�”  Ñ-Ø14�”  Ñ.Ð.ð 5õ ?ð hð h� Ý.OÐPZÑ.[Ô.[Ñ+� ˜mÝ03Ð4O×4SÒ4SÐT`ÐbcÑ4dÔ4dÑ0eÔ0e�”  Ñ-Ý14Ð5P×5TÒ5TÐUbÐdeÑ5fÔ5fÑ1gÔ1g�”  Ñ.Ð.à ×.Ò.Ð?RÐ/\¨|¨|ÐX\Ñ]Ô]Ð]Ð]Ð]s,‰"¢ A'¬1A"Á"A'ÂB0Â0 C1Â:-C,Ã,C1Úwp_pathscóD‡‡—‰€d\}}n"‰j ˆˆfd„d¦«\}}|rt|t¦«s d‰jt<d‰jt <dStt fD]-}t | |d¦«¦«‰j|<Œ.dS)z· Report whether MAx Cache serves each upstream WP Rocket domain (CLOS-6823). None means the WordPress enumeration failed; zeros would read as a clean server. N)FNcó.•—‰ ‰¦«Src)Ú_get_wp_rocket_maxcache_counts)rýr{s€€rfræzECloudlinuxSummary._fill_wp_rocket_plugin_statistics.."sø€˜×;Ò;¸HÑEÔE€rez'Can't analyze WP Rocket MAx Cache staternr)rôrZr7r8Ú!WP_ROCKET_MAXCACHE_ENABLED_METRICÚ"WP_ROCKET_MAXCACHE_DISABLED_METRICr’r)rýr{r©Úcountsr®s`` rfrsz3CloudlinuxSummary._fill_wp_rocket_plugin_statisticssÂøø€ð Ð Ø)‰OˆG�V�Và"œo×;Ò;ØEÐEÐEÐEÐEØ9ñô‰OˆG�Vð ð �j¨µÑ6Ô6ð ØADˆDŒOÕ=Ñ >ØBEˆDŒOÕ>Ñ ?Ø ˆFå6Õ8ZÐ[ð =ð =ˆDÝ$'¨¯ ª °4¸Ñ(;Ô(;Ñ$<Ô$<ˆDŒO˜DÑ !Ð !ð =ð =recóà—tdtdi}t¦«}|D]L} | |||¦«Œ#t$r%}t  d|¦«Yd}~ŒEd}~wwxYw|S)zï Count how many unique domains MAx Cache serves through upstream WP Rocket. Deduplicated by domain server-wide. An exception out of here makes both columns -42, so no single install is allowed to reach it. rz+Can't analyze WP Rocket MAx Cache state: %sN)rr€r¹Ú_count_wp_rocket_siterŒr,r-)Úclsr{r�Ú seen_domainsr�rCs rfr~z0CloudlinuxSummary._get_wp_rocket_maxcache_counts.s¢€õ4°QÕ8ZÐ\]Ð^ˆÝ™EœEˆ àð Sð SˆGð SØ×)Ò)¨'°6¸<ÑHÔHÐHÐHøÝð Sð Sð Sõ× Ò Ð!NÐPQÑRÔRÐRÐRÐRÐRÐRÐRøøøøð Søøøð ˆ s¤<¼ A+ÁA&Á&A+r�r�r…có¤—t¦«}d}t|¦«}|€dS t|gt¢RŽ}|€ t j|¦«dS | |¦«s+ t j|¦«t j|¦«dSt|dt¦«\}} | sEt  d¦« t j|¦«t j|¦«dSt|¦«}t|¦«D]0} |   d¦«} | |vr| | ¦«Œ1 t j|¦«n#t j|¦«wxYw t j|¦«n#t j|¦«wxYw|rtnt } || xxt#|¦«z cc<||z}dS)a Add one install's domains to the running counts. Merged only once the install is through, so one that raises part way contributes nothing. The config directory is probed first - one failed open rules out almost every install on a box. FNz .htaccessz9Skipping a WP Rocket install with an unreadable .htaccessrÒ)r¹r¥r°ÚWP_ROCKET_CONFIG_DIR_PATHrŸr«Ú_has_wp_rocket_maxcache_addonrÄÚWP_ROCKET_MAX_HTACCESS_BYTESr,rrÍrár™Úaddrr€r¿) r„r�r�r…Ú site_domainsÚservingÚroot_fdrÎrÈÚreadabler®ÚdomainÚmetrics rfrƒz'CloudlinuxSummary._count_wp_rocket_siteCs€õ ™EœEˆ ؈å Ñ(Ô(ˆØ ˆ?Ø ˆFð Ý-¨gÐRÕ8QÐRÐRÐRˆIØÐ Øõ4 ŒH�WÑ Ô Ð Ð Ð ð1 $Ø×8Ò8¸ÑAÔAðØõ(”˜Ñ#Ô#Ð#å ŒH�WÑ Ô Ð Ð Ð õ#&6ؘ[Õ*Fñ&ô&Ñ"�˜(ð ðõ×&Ò&Ð'bÑcÔcÐcØõ”˜Ñ#Ô#Ð#å ŒH�WÑ Ô Ð Ð Ð õ/¨xÑ8Ô8�å8¸ÑCÔCð1ð1�DØ!×.Ò.¨vÑ6Ô6�FØ \Ð1Ð1Ø$×(Ò(¨Ñ0Ô0Ð0øð1õ ”˜Ñ#Ô#Ð#Ð#ø•”˜Ñ#Ô#Ð#Ð#øøøÐ#å ŒH�WÑ Ô Ð Ð ø�BŒH�WÑ Ô Ð Ð øøøà6=ÐeÕ2Ð2ÕCeˆØˆvˆˆŒ�#˜lÑ+Ô+Ñ+ˆˆ‰Ø˜ Ñ$ˆ ˆ ˆ s<¥FÁEÁ'FÂ5EÃFÃ1AEÅFÅE,Å,FÆFr�có¾—t|gt¢RŽ}|€dS t|t¦«s t j|¦«dSt|gt ¢RŽ}|€ t j|¦«dS t|t¦«t j|¦«t j|¦«S#t j|¦«wxYw#t j|¦«wxYw)z÷ Whether this install is upstream WP Rocket in a build that carries the add-on. Main file name tells upstream from the fork's clsop.php; the add-on file tells a build that can offer MAx Cache from one that cannot. NF)r°ÚWP_ROCKET_PLUGIN_DIR_PATHrÇÚWP_ROCKET_PLUGIN_MAIN_FILErŸr«ÚWP_ROCKET_MAXCACHE_ADDON_DIRÚWP_ROCKET_MAXCACHE_ADDON_FILE)r�Ú plugin_fdÚaddon_fds rfrˆz/CloudlinuxSummary._has_wp_rocket_maxcache_addonvs÷€õ*¨'ÐNÕ4MÐNÐNÐNˆ Ø Ð Ø�5ð Ý& yÕ2LÑMÔMð Øõ ŒH�YÑ Ô Ð Ð Ð õ-¨YÐVÕ9UÐVÐVÐVˆHØÐØõ ŒH�YÑ Ô Ð Ð Ð ð  #Ý*¨8Õ5RÑSÔS唘Ñ"Ô"Ð"å ŒH�YÑ Ô Ð Ð øõ”˜Ñ"Ô"Ð"Ð"øøøøå ŒH�YÑ Ô Ð Ð øøøs)˜CÁCÁ0B-ÂCÂ-CÃCÃCcóΗd}i}d}tj¦«D]Ê} tj|¦«}n?#t$r2}t dt |¦«¦«Yd}~ŒOd}~wwxYw|D]p\}}|sŒ||vrW tj  tj  ||¦«¦«||<n#t$rd||<YnwxYw||r|dz }ŒqŒË|S)zk Count how many sites (domains) have old wp-config.php.backup file in their document root. zwp-config.php.backuprú(Can't get user's domains info, error: %sNFrT) rrmÚ userdomainsrŒr,r-rÜrŸrFrGr!r¤)Úbackup_filenameÚdocroot_has_backupÚaffected_domainsÚuserÚ domains_inforCr�Údocroots rfrqz?CloudlinuxSummary._count_sites_with_wp_config_backup_in_docroot•s<€ð 1ˆØ.0ÐØÐå”M‘O”Oð *ð *ˆDð Ý$Ô0°Ñ6Ô6� � øÝð ð ð Ý× Ò Ð!KÍSÐQRÉVÌVÑTÔTÐTØ����øøøøð øøøð$0ð *ð *‘�˜ØðØØÐ"4Ð4Ð4ð<Ý68´g·n²nÅRÄWÇ\Â\ÐRYÐ[jÑEkÔEkÑ6lÔ6lÐ*¨7Ñ3Ð3øÝ"ð<ð<ð<à6;Ð*¨7Ñ3Ð3Ð3ð<øøøð& gÔ.ð*Ø$¨Ñ)Ð$øð *ð Ðs'�2² A.¼(A)Á)A.ÂACÃCÃCcóv—d}i}tD]}t|¦«\}}d||<d||<Œt¦«}|D�]ü}|dz dz dz } tj|tjtjztjz¦«} n#t$rYŒUwxYw tj tj | ¦«j ¦«s | dkrtj | ¦«Œ¡tj| ddd¬ ¦«5} d } |  |d z¦«} d d d ¦«n #1swxYwYt!| ¦«|kr | dkrtj | ¦«�Œ|  ¦«} n+#t$rY| dkrtj | ¦«�ŒWwxYw | dkrtj | ¦«n #| dkrtj | ¦«wwxYwt!| ¦«d kr�Œ¬d | d d …¦« ¦«} | s�Œß t)j| ¦«}n#t,$rY�ŒwxYwt/|t0¦«s�Œ| ¦«D]Ê\}}||vrŒ | |¦«t/|t0¦«sŒ5tD]�}| |d¦«} t9|¦«}n#t:t<f$rd}YnwxYw|d kr#t|¦«\}}||xxd z cc<Œkt|¦«\}}||xxd z cc<ŒŽŒË�Œþ|S)z¯ Parse wp-content/wp-rocket-config/status.php files (JSON after the first line) and count how many unique domains have each *_status enabled/disabled. rŠrr„r‰z status.phprWrµr¶)rOr·r´rTNr˜ú )rrrœr¹rŸr r¡rªr£r¤r¹rºr»r¼r«r½r¾r¿Ú splitlinesr!rXr6rrŒr7r8rfrŠrr’r;r<)r{Úmax_status_bytesr�r‹rxryr…r�Ú status_pathrÁrÂrÃÚlinesÚpayloadr³r�ÚmetricsÚkeyÚvalÚ normalizedrs rfrmz9CloudlinuxSummary._get_accelerate_wp_plugin_status_counts´sù€ð'Ðà!#ˆÝ:ð &ð &ˆJÝ*KÈJÑ*WÔ*WÑ 'ˆL˜-Ø#$ˆF�<Ñ Ø$%ˆF�=Ñ !Ð !Ý™EœEˆ àð8 3ñ8 3ˆGØ! LÑ0Ð3EÑEÈ ÑTˆKð Ý”W˜[­"¬+½¼ Ñ*EÍÌ Ñ*UÑVÔV��øÝð ð ð Ø�ð øøøð !Ý”|¥B¤H¨R¡L¤LÔ$8Ñ9Ô9ðØð˜’7�7Ý”H˜R‘L”L�Løõ”Y˜r 3°ÀÐKÑKÔKð7ÈqØ�BØŸ&š&Ð!1°AÑ!5Ñ6Ô6�Cð7ð7ð7ñ7ô7ð7ð7ð7ð7ð7ð7øøøð7ð7ð7ð7õ�s‘8”8Ð.Ò.Ð.Øð ˜’7�7Ý”H˜R‘L”L�Lùð ŸšÑ(Ô(��øÝð ð ð Øà˜’7�7Ý”H˜R‘L”L�Lùð  øøøðð˜’7�7Ý”H˜R‘L”L�Løøð˜’7�7Ý”H˜R‘L”L�L�Lðøøøõ�5‰zŒz˜AŠ~ˆ~Ùà—i’i  a b b¤ Ñ*Ô*×0Ò0Ñ2Ô2ˆGØð Ùð Ý”z 'Ñ*Ô*��øÝð ð ð Ø‘ð øøøõ˜d¥DÑ)Ô)ð Ùà#'§:¢:¡<¤<ð 3ð 3‘�˜Ø˜\Ð)Ð)ØØ× Ò  Ñ(Ô(Ð(å! '­4Ñ0Ô0ðØå;ð 3ð 3�CØ!Ÿ+š+ c¨1Ñ-Ô-�Cð'Ý%(¨¡X¤X˜ ˜ øÝ%¥zÐ2ð'ð'ð'Ø%&˜ ˜ ˜ ð'øøøð" Q’�Ý*KÈCÑ*PÔ*P™˜  aؘ|Ð,Ð,Ô,°Ñ1Ð,Ð,Ñ,Ð,å+LÈSÑ+QÔ+QÑ(˜˜=ؘ}Ð-Ð-Ô-°Ñ2Ð-Ð-Ñ-Ð-ð 3ñ 3ð,ˆ s�Á 9B BÂBÂ+E+ÃE+Ã4DÄ E+ÄD ÄE+Ä"D Ä#E+ÅE+Å*F2Å+ FÅ5F2ÆFÆF2Æ2GÈH0È0 H>È=H>ËKËK' Ë&K' cóB‡‡— | ¦«\ŠŠnC#t$r6}t dt |¦«¦«gŠgŠYd}~nd}~wwxYw|j ˆfd„ddd¦«|j ˆfd„ddd¦«dS) Nz4Error while getting per-user WordPress statistics %scó"•—t‰¦«Srcrœ)Ú users_with_wps€rfræz@CloudlinuxSummary._fill_per_user_wp_statistics.. rŸrer’Ú$users_count_with_wordpress_installedz7Can't get total count of users with wordpress installedcó"•—t‰¦«Srcrœ)Úusers_with_wp_and_litespeeds€rfræz@CloudlinuxSummary._fill_per_user_wp_statistics..sø€•CÐ3Ñ4Ô4€reÚ0users_count_with_wordpress_and_lscache_installedzECan't get total count of users with wordpress and LiteSpeed installed)Ú_prepare_per_user_wp_statisticsrŒr,r-rÜrôr)rýrCr®r±s @@rfÚ_fill_per_user_wp_statisticsz.CloudlinuxSummary._fill_per_user_wp_statisticsséøø€ð -Ø9=×9]Ò9]Ñ9_Ô9_Ñ 6ˆMÐ6Ð6øÝð -ð -ð -Ý × Ò ÐSÕUXÐYZÑU[ÔU[Ñ \Ô \Ð \؈MØ*,Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'øøøøð -øøøð Œ×"Ò"Ø &Ð &Ð &Ð &Ø Ø 2Ø Eñ  ô ð ð Œ×"Ò"Ø 4Ð 4Ð 4Ð 4Ø Ø >Ø Sñ  ô ð ð ð s„œ A¦,AÁAcób—| d|¦«}| d|¦«}||fS)zq Prepares dict with plugin-counter pairs e.g: {'w3-total-cache': 4, 'redis': 1, 'ls': 2} ú object-cacheúadvanced-cache)Ú_get_plugin_info)rýr{r^rbs rfrpz0CloudlinuxSummary._prepare_wp_plugins_statisticss=€ð $×4Ò4°^ÀXÑNÔNÐØ!%×!6Ò!6Ð7GÈÑ!RÔ!RÐØ#Ð%;Ð;Ð;reÚ plugin_typec󬇗ttdˆfd„|D¦«¦«¦«}tt¦«}|D]}||xxdz cc<Œ|S)Ncó0•—g|]}t|‰¦«‘ŒSrd)r)rrFr¹s €rfrdz6CloudlinuxSummary._get_plugin_info..#s%ø€Ð1nÐ1nÐ1nÐ]aÕ2EÀdÈKÑ2XÔ2XÐ1nÐ1nÐ1nrerT)rÐÚfilterrr’)r¹r{r^Úobject_plugin_counter_pairsÚplugins` rfr¸z"CloudlinuxSummary._get_plugin_info!ssø€å#¥F¨4Ð1nÐ1nÐ1nÐ1nÐemÐ1nÑ1nÔ1nÑ$oÔ$oÑpÔpÐÝ&1µ#Ñ&6Ô&6Ð#Ø*ð 5ð 5ˆFØ '¨Ð /Ð /Ô /°1Ñ 4Ð /Ð /Ñ /Ð /Ø*Ð*recój—gg}}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’rrmršrŒrÐrŸrFrgÚappendÚ_get_docroot_wp_inforÝr¿) rýrZÚ$paths_with_enabled_wpos_object_cacheÚ php_versionsÚ panel_usersržrŸÚdocroot_domains_mapr�r Ú docroot_infoÚdocroot_wp_pathsÚdocroot_php_versions rfroz(CloudlinuxSummary._prepare_wp_statistics)s„€ð >@ÀÐ:ˆ Ý"¥3Ñ'Ô'ˆ Ý”m‘o”oˆ Øð Oñ OˆDð Ý$Ô0°Ñ6Ô6� � øÝð ð ð Ø�ð øøøõ#.­dÑ"3Ô"3Ð à#/ð @ð @‘�˜Ý”7—>’> 'Ñ*Ô*ð@Ø'¨Ô0×7Ò7¸Ñ?Ô?Ð?øà.ð Oð O�Ø#×8Ò8¸¸wÐH[Ñ\Ô\� Ø#/° Ô#;Ð Ø&2°=Ô&AÐ#à×#Ò#Ð$4Ñ5Ô5Ð5Ø4×;Ò;¸LÐIrÔ’> 'Ñ*Ô*ð@Ø'¨Ô0×7Ò7¸Ñ?Ô?Ð?øà.ð :ð :�Ø#×8Ò8¸¸wÐH[Ñ\Ô\� å�| JÔ/Ñ0Ô0°1Ò4Ð4Ø!×%Ò% dÑ+Ô+Ð+Ý�|Ð$KÔLÑMÔMÐPQÒQÐQØ/×3Ò3°DÑ9Ô9Ð9øñ  :ðÐ9Ð9Ð9s¶A Á BÁ(BÂBržr rÈc󇇗ggt¦«ddœ}ˆˆfd„t‰¦«D¦«}|s|Sˆfd„|D¦«|d< ˆfd„t||¦«D¦«|d<n*#t$rt d¦«YnwxYw|dD]À} t |d ¦«}n,#t$rt d ¦«d }YnwxYw|�d |vr|d  |¦« t |d¦«}n,#t$rt d¦«d }YnwxYw|�d |vr|d  |¦«ŒÁ‰‰D]$} | | ¦«} | dkr| |d<nŒ%|S)zM Return data about docroot's WP paths and used php versions. rÂ)r{rÁrÍrÀcó •—g|]J}tj ‰|¦«‰ks"tj ‰|¦«‰v¯H|‘ŒKSrd)rŸrFr!)rÚwp_pathr rÈs €€rfrdz:CloudlinuxSummary._get_docroot_wp_info..usZø€ð ð ð àÝ”— ’ ˜W gÑ.Ô.°'Ò9Ð9½R¼W¿\º\È'ÐSZÑ=[Ô=[ÐcvÐ=vÐ=vð à=vÐ=vÐ=vrecóT•—g|]$}t‰¦« |¦«‘Œ%Srd©r Újoinpath©rrFr s €rfrdz:CloudlinuxSummary._get_docroot_wp_info..s-ø€Ð#VÐ#VÐ#VÀT¥D¨¡M¤M×$:Ò$:¸4Ñ$@Ô$@Ð#VÐ#VÐ#Vrer{cóX•—g|]&}|®t‰¦« |¦«‘Œ'SrcrÒrÔs €rfrdz:CloudlinuxSummary._get_docroot_wp_info..‚s@ø€ðGðGðGàØÐ#õ�W‘ ” ×&Ò& tÑ,Ô,à#Ð#Ð#rerÁz:Can't get WordPress sites with enabled Object Cache moduler¶z0Can't get Object Cache plugin for Wordpress siteNr„rÍr·z2Can't get Advanced Cache plugin for Wordpress siterÀ) r¹rrrŒr,rùrrŠÚ_get_php_version_for_domain) rýržr rÈrÉr{rFÚobject_cache_pluginÚadvanced_cache_pluginr�rÀs `` rfrÄz&CloudlinuxSummary._get_docroot_wp_infogssøø€ðØ79Ý58±U´UØ&ð  ð ˆ ð ð ð ð ð å(¨Ñ1Ô1ð ñ ô ˆðð ØÐ à#VÐ#VÐ#VÐ#VÈXÐ#VÑ#VÔ#Vˆ �ZÑ ð _ðGðGðGðGå<¸TÀ8ÑLÔLðGñGôGˆLÐBÑ CÐ Cøõ ð _ð _ð _Ý × Ò Ð!]Ñ ^Ô ^Ð ^Ð ^Ð ^ð _øøøð! Ô,ð Pð PˆDð +Ý&9¸$ÀÑ&OÔ&OÐ#Ð#øÝð +ð +ð +Ý×$Ò$Ð%WÑXÔXÐXØ&*Ð#Ð#Ð#ð +øøøð#Ð.°;ÐBUÐ3UÐ3UØÐDÔE×IÒIÈ$ÑOÔOÐOð -Ý(;¸DÐBRÑ(SÔ(SÐ%Ð%øÝð -ð -ð -Ý×$Ò$Ð%YÑZÔZÐZØ(,Ð%Ð%Ð%ð -øøøð%Ð0°[ÐDYÐ5YÐ5YØÐDÔE×IÒIÈ$ÑOÔOÐOøà)¨'Ô2ð ð ˆFØ×:Ò:¸6ÑBÔBˆKؘkÒ)Ð)Ø.9� ˜]Ñ+Ø�ð*ðÐs6ÁA(Á($BÂBÂB.Â.&CÃCÃ<D Ä &D6Ä5D6r�có—tj¦«tjtjtjfvrdS| ¦«\}}}| |i¦«}| dd¦«}tj¦«tjkr||kr|S| ¦«D],\}}||vr#|dkrd|  dd¦«›�} | cSŒ-tj¦«tjkrd|  dd¦«›�} | Stj¦«tjkrE| dd¦«} |d t| ¦« …  d ¦«} | pdS|S) zŽ Return php version that is used for specified domain. Determine whether of MultiPHP Manager or PHP Selector is used. rÂÚphp_version_idrŠzalt-phprÓrzda-phpÚ handler_typeNú-) r`r…rr>ÚDIRECTADMIN_NAMErqÚ_get_system_php_inforrfr¶r¿rX) rýr�Úsystem_default_php_versionÚdomains_php_infoÚselector_php_infoÚphp_infoÚmulti_php_versionrHr£Úalt_php_versionÚda_php_versionÚhandlerrÀs rfrÖz-CloudlinuxSummary._get_php_version_for_domain¦s™€õ Ô Ñ Ô ¥eÔ&7½Ô9OÕQVÔQaÐ%bÐ bÐ bØ�;àJN×JcÒJcÑJeÔJeÑGÐ"Ð$4Ð6Gð$×'Ò'¨°Ñ3Ô3ˆØ$ŸLšLÐ)9¸;ÑGÔGÐõ Ô Ñ Ô ¥Ô!2Ò 2Ð 2Ð7QÐUfÒ7fÐ7fØ$Ð $ð!2× 7Ò 7Ñ 9Ô 9ð 'ð 'Ñ ˆG�WؘРР W°Ò%8Ð%8Ø"F¨G¯OªO¸CÀÑ,DÔ,DÐ"FÐ"F�Ø&Ð&Ð&Ð&øå Ô Ñ Ô ¥Ô!7Ò 7Ð 7ØJÐ&7×&?Ò&?ÀÀRÑ&HÔ&HÐJÐJˆNØ!Ð !å Ô Ñ Ô ¥Ô!1Ò 1Ð 1Ø—l’l >°2Ñ6Ô6ˆGØ+¨O­s°7©|¬|¨m¨OÔ<×BÒBÀ3ÑGÔGˆKØÐ- +Ð -à Ð re)Úmaxsizecó— tj¦«d}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_idNÚdomains_by_php_version)rÚget_system_php_inforŒÚget_domains_php_infor[)Úsystem_php_versionràÚphp_selector_usagerás rfrÞz&CloudlinuxSummary._get_system_php_infoÌs�€ð &Ý!&Ô!:Ñ!<Ô!<Ð=QÔ!RÐ Ð øÝð &ð &ð &Ø!%Ð Ð Ð ð &øøøõ!Ô5Ñ7Ô7Ðå3Ñ5Ô5ÐØ Ð )Ø 2Ð3KÔ LÐ Ð à "Ð à!Ð#3Ð5FÐFÐFs ‚œ +ª+có‡—|j |jd¦«\}Š|st|jd<dS‰��B|j ˆfd„ddd¦«|j ˆfd„d d d ¦«|j ˆfd „d dd ¦«|j ˆfd„d dd¦«|j ˆfd„d dd¦«|j ˆfd„ddd¦«|j ˆfd„d dd¦«|j ˆfd„ddd¦«|j ˆfd„ddd ¦«|j ˆfd!„d"d#d$¦«dSt |jd<dS)%z/ Fill dict with SSA statistics zCan't get SSA statisticsÚ ssa_statusNcó•—‰dS)NÚconfigrd©Ú ssa_statss€rfræz8CloudlinuxSummary._fill_ssa_statistics..òó ø€¨y¸Ô/B€rerSÚ ssa_configzCan't get SSA configcó•—‰dS)NrHrdrós€rfræz8CloudlinuxSummary._fill_ssa_statistics..ôs ø€˜  )Ô,€rerÜÚ ssa_versionzCan't get version of SSAcó•—‰dS)Nr®rdrós€rfræz8CloudlinuxSummary._fill_ssa_statistics..örõrezCan't get state of SSAcó•—‰dS)NÚ agent_statusrdrós€rfræz8CloudlinuxSummary._fill_ssa_statistics..øs ø€˜  .Ô1€reÚssa_agent_statuszCan't get state of SSA agentcó •—‰ddS)NÚ autotracingr®rdrós€rfræz8CloudlinuxSummary._fill_ssa_statistics..ûsø€˜  -Ô0°Ô:€reÚautotracing_statusz"Can't get state of SSA Autotracingcó •—‰ddS)NrþÚdisabled_users_quantityrdrós€rfræz8CloudlinuxSummary._fill_ssa_statistics.. sø€˜  -Ô0Ð1JÔK€rer’Ú#autotracing_disabled_users_quantityz1Can't get state of SSA Autotracing disabled userscó •—‰ddS)NrþÚ rules_versionrdrós€rfræz8CloudlinuxSummary._fill_ssa_statistics.. óø€˜  -Ô0°ÔA€reÚautotracing_rules_versionz'Can't get SSA Autotracing rules versioncó •—‰ddS)NrþÚurls_processedrdrós€rfræz8CloudlinuxSummary._fill_ssa_statistics.. sø€˜  -Ô0Ð1AÔB€reÚautotracing_urls_processedz.Can't get SSA Autotracing processed URLs countcó •—‰ddS)NrþÚ urls_selectedrdrós€rfræz8CloudlinuxSummary._fill_ssa_statistics.. rreÚautotracing_urls_selectedz-Can't get SSA Autotracing selected URLs countcó •—‰ddS)NrþÚrejectsrdrós€rfræz8CloudlinuxSummary._fill_ssa_statistics.. sø€˜  -Ô0°Ô;€rerKÚautotracing_rejectsz!Can't get SSA Autotracing rejects)rôrZÚ get_ssa_statsr\rrm)rýr©rôs @rfÚ_fill_ssa_statisticsz&CloudlinuxSummary._fill_ssa_statisticsäs;ø€ð"œ_×:Ò:Ø Ô Ø &ñ ô ш�ð ð Ý,1ˆDŒO˜LÑ )Ø ˆFà Ñ Ø ŒO× &Ò &Ð'BÐ'BÐ'BÐ'BÀJÐP\Ð^tÑ uÔ uÐ uØ ŒO× &Ò &Ø,Ð,Ð,Ð,¨e°]ÐD^ñ ô ð ð ŒO× &Ò &Ð'BÐ'BÐ'BÐ'BÀEÈ<ÐYqÑ rÔ rÐ rØ ŒO× &Ò &Ø1Ð1Ð1Ð1°5Ð:LÐNlñ ô ð ð ŒO× &Ò &Ø:Ð:Ð:Ð:ØØ$Ø4ñ  ô ð ð ŒO× &Ò &ØKÐKÐKÐKØØ5ØCñ  ô ð ð ŒO× &Ò &ØAÐAÐAÐAØØ+Ø9ñ  ô ð ð ŒO× &Ò &ØBÐBÐBÐBØØ,Ø@ñ  ô ð ð ŒO× &Ò &ØAÐAÐAÐAØØ+Ø?ñ  ô ð ð ŒO× &Ò &Ø;Ð;Ð;Ð;ØØ%Ø3ñ  ô ð ð ð õ-:ˆDŒO˜LÑ )Ð )Ð )recóø‡—|j d„d¦«\}}|st|jd<dS|��´|j t |jd¦«ddd¦«|j t |j|t¦«dd d¬ ¦«|j t |j|t¦«dd d¬ ¦«|j tdd d ¦«|j tddd¦«|j td¦«j ddd¦«|j tddd¦«|j td¦«\}Š|r‰€d|jd<d|jd<dS|j ˆfd„ddd¬ ¦«|j ˆfd„ddd¬ ¦«dSt|jd<dS)zS Fill dict with statistics by varied statistics about PHP selector có —td¦«S)Nrk)r\rdrerfræzACloudlinuxSummary._fill_php_selector_statistics..( s€Õ+¨EÑ2Ô2€rez+Can't get statistics about PHP interpretersÚselector_php_statusNrkrÜz Can't get status of PHP selectorrgÚselector_php_versions_installedrÚselector_php_versions_enabledÚselector_php_version_defaultz,Can't get default version of PHP interpreterÚselector_php_version_nativez+Can't get native version of PHP interpreterr’Úselector_php_enabled_uiz%Can't get state of UI of PHP selectorÚselector_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_interpretercóL•—d„‰d ¦«D¦«S)Ncó4—i|]\}}|t|¦«“ŒSrdrœ©rÚvr£s rfú zUCloudlinuxSummary._fill_php_selector_statistics....a s$€ÐsÐsÐs±°°G˜Q¥ G¡ ¤ ÐsÐsÐsrerê©rf©Úphp_usage_summarys€rfræzACloudlinuxSummary._fill_php_selector_statistics..a s)ø€ÐsÐsÐ?PÐQiÔ?j×?pÒ?pÑ?rÔ?rÐsÑsÔs€rerKcóL•—d„‰d ¦«D¦«S)Ncó4—i|]\}}|t|¦«“ŒSrdrœrs rfr!zUCloudlinuxSummary._fill_php_selector_statistics....g s$€ÐqÐqÐq±°°G˜Q¥ G¡ ¤ ÐqÐqÐqreÚusers_by_php_versionr"r#s€rfræzACloudlinuxSummary._fill_php_selector_statistics..g s)ø€ÐqÐqÐ?PÐQgÔ?h×?nÒ?nÑ?pÔ?pÐqÑqÔq€re)rôrZr\rrrqÚ"_get_list_versions_of_interpertersÚ INSTALLEDrrXrZr^Úphp_selector_is_enabledrYr[rm)rýr©Úphp_interpretersr$s @rfÚ_fill_php_selector_statisticsz/CloudlinuxSummary._fill_php_selector_statistics" s‰ø€ð %)¤O×$AÒ$AØ 2Ð 2Ð4añ% ô% Ñ!ˆÐ!ððB CÝ5:ˆDŒOÐ1Ñ 2Ð 2Ð 2Ø Ñ )Ø ŒO× &Ò &ݘÔ4°eÑ<Ô<ØØ%Ø2ñ  ô ð ð ŒO× &Ò &ݘÔ?ÐAQÕS\Ñ]Ô]ØØ1Ø ð 'ñ ô ð ð ŒO× &Ò &ݘÔ?ÐAQÕSZÑ[Ô[ØØ/Ø ð 'ñ ô ð ð ŒO× &Ò &Ý'ØØ.Ø>ñ  ô ð ð ŒO× &Ò &Ý'ØØ-Ø=ñ  ô ð ð ŒO× &Ò &Ý% eÑ,Ô,ÔDØØ)Ø7ñ  ô ð ð ŒO× &Ò &Ý(ØØ#Ø0ñ  ô ð ð *.¬×)FÒ)FÝ&Ø9ñ*ô*Ñ &ˆGÐ&ðð Ð/Ð7ØMQ�”Ð IÑJØKO�”Ð GÑHÐHÐHà”×*Ò*ØsÐsÐsÐsØØ=Ø $ð +ñôðð ”×*Ò*ØqÐqÐqÐqØØ;Ø $ð +ñôðððõ6CˆDŒOÐ1Ñ 2Ð 2Ð 2recóJ—|j |jddd¦«dS)zÁ Fill dict with statistics about PHP handler usage across domains. Collects the count of domains using each PHP handler type (e.g. cgi, suphp, fpm, lsapi, dso). rKÚphp_handler_domains_countz Can't get PHP handler statisticsN)rôrÚ_get_php_handler_domain_countsrüs rfÚ_fill_php_handler_statisticsz.CloudlinuxSummary._fill_php_handler_statisticso s7€ð Œ×"Ò"Ø Ô /Ø Ø 'Ø .ñ  ô ð ð ð recóÄ—tj¦«}i}| ¦«D]5}| d¦«pd}| |d¦«dz||<Œ6|S)zY Return a mapping of PHP handler type to the number of domains using it. rÛrmrrT)rrìrêr)ràÚhandler_countsÚ domain_inforæs rfr/z0CloudlinuxSummary._get_php_handler_domain_counts| ss€õ !Ô5Ñ7Ô7ÐØ)+ˆØ+×2Ò2Ñ4Ô4ð Ið IˆKØ!—o’o nÑ5Ô5ÐB¸ˆGØ&4×&8Ò&8¸À!Ñ&DÔ&DÀqÑ&HˆN˜7Ñ #Ð #ØÐreÚ total_appsÚamount_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 rTNrd)r4r5s rfÚ_get_average_apps_per_domainz.CloudlinuxSummary._get_average_apps_per_domainˆ s)€ð ˜Š>ˆ>Ð6¸Ò:Ð:Ø�4ØÐ6Ñ6Ð6reÚamount_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 rTNrd)r4r8s rfÚ_get_average_apps_per_userz,CloudlinuxSummary._get_average_apps_per_user” s)€ð ˜Š>ˆ>Ð4°qÒ8Ð8Ø�4ØÐ4Ñ4Ð4reÚappscó4—td„|D¦«¦«S)z Get amount of running applications on server :param apps: list of applications for something selector có6—g|]}|j¯ |jdk¯|‘ŒS)Ústarted)Ú app_status)rÚapps rfrdz@CloudlinuxSummary._get_amount_of_runned_apps..§ s,€ÐZÐZÐZ˜C¨3¬>ÐZ¸c¼nÐPYÒ>YÐ>Y�CÐ>YÐ>YÐ>Yrerœ)r;s rfÚ_get_amount_of_runned_appsz,CloudlinuxSummary._get_amount_of_runned_apps  s!€õÐZÐZ 4ÐZÑZÔZÑ[Ô[Ð[recóž—t¦«}|D]}||jxxdz cc<Œ| d¦«pdg}|ddS)z€ Get maximum amount of applications per domain :param apps: list of applications for something selector rT©rrr)rÚdoc_rootÚ most_common)r;Úapps_per_domainr@Ú most_commonss rfÚ_get_max_apps_per_domainz*CloudlinuxSummary._get_max_apps_per_domain© sh€õ"™)œ)ˆØð /ð /ˆCØ ˜CœLÐ )Ð )Ô )¨QÑ .Ð )Ð )Ñ )Ð )ð'×2Ò2°1Ñ5Ô5ÐA¸&¸ˆ ؘAŒ˜qÔ!Ð!recóž—t¦«}|D]}||jxxdz cc<Œ| d¦«pdg}|ddS)z~ Get maximum amount of applications per user :param apps: list of applications for something selector rTrCr)rržrE)r;Ú apps_per_userr@rGs rfÚ_get_max_apps_per_userz(CloudlinuxSummary._get_max_apps_per_user¹ sh€õ ™ œ ˆ Øð )ð )ˆCØ ˜#œ(Ð #Ð #Ô # qÑ (Ð #Ð #Ñ #Ð #ð%×0Ò0°Ñ3Ô3Ð?¸°xˆ ؘAŒ˜qÔ!Ð!recóV—t¦«}|D]}||jxxdz cc<Œ|S)z£ Get Counter object which contains amount applications per version of interpreter :param apps: list of applications for something selector rT)rrH)r;Úapps_per_versionr@s rfÚ_get_counter_apps_per_versionz/CloudlinuxSummary._get_counter_apps_per_versionÉ sD€õ#™9œ9ÐØð /ð /ˆCØ ˜Sœ[Ð )Ð )Ô )¨QÑ .Ð )Ð )Ñ )Ð )àÐrecóx—| |¦«}| d¦«pdg}|ddS)z� Get maximum amount of applications per version of interpreter :param apps: list of applications for something selector rTrCr)rNrE)rýr;rMrGs rfÚ_get_max_apps_per_versionz+CloudlinuxSummary._get_max_apps_per_versionÖ sC€ð  ×=Ò=¸dÑCÔCÐð(×3Ò3°AÑ6Ô6ÐB¸6¸(ˆ ؘAŒ˜qÔ!Ð!recóz—t¦«}|D]}| |j¦«Œt|¦«S)zz Get amount of domains with applications :param apps: list of applications for something selector )r¹rŠrDr¿)r;r£r@s rfÚ _get_amount_of_domains_with_appsz2CloudlinuxSummary._get_amount_of_domains_with_appsã s?€õ‘%”%ˆØð &ð &ˆCØ �KŠK˜œ Ñ %Ô %Ð %Ð %å�7‰|Œ|Ðrecóz—t¦«}|D]}| |j¦«Œt|¦«S)zx Get amount of users with applications :param apps: list of applications for something selector )r¹rŠržr¿)r;Úusersr@s rfÚ_get_amount_of_users_with_appsz0CloudlinuxSummary._get_amount_of_users_with_appsð s?€õ‘”ˆØð ð ˆCØ �IŠI�c”hÑ Ô Ð Ð å�5‰zŒzÐrecóJ—| |¦«}t|¦«S)z� Get amount of applications per each version of interpeters :param apps: list of applications for something selector )rNr8)rýr;rMs rfÚ4_get_amount_of_apps_per_each_version_of_interpreterszFCloudlinuxSummary._get_amount_of_apps_per_each_version_of_interpretersý s'€ð  ×=Ò=¸dÑCÔCÐåÐ$Ñ%Ô%Ð%reÚinterpreters_statsÚstatecóD‡—ˆfd„| ¦«D¦«S)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|]\}}|‰¯ |‘ŒSrdrd)rÚinterpreter_statsr¹rYs €rfrdzHCloudlinuxSummary._get_list_versions_of_interperters.. s,ø€ÐkÐkÐkÑ&=Ð&7¸Ð_cÐdiÔ_jÐkÐ!ÐkÐkÐkrer")rXrYs `rfr(z4CloudlinuxSummary._get_list_versions_of_interperters s-ø€ðlÐkÐkÐkÐAS×AYÒAYÑA[ÔA[ÐkÑkÔkÐkrecóF—t|¦«}|�t|¦«SgS)zI Get list of apllications on server for defined selector )r]rÐ)riÚ iter_appss rfÚ_get_list_of_applicationsz+CloudlinuxSummary._get_list_of_applications s(€õ -¨[Ñ9Ô9ˆ Ø Ð Ý˜ ‘?”?Ð "؈ rec óX‡—|jD�]}|j tt|¦«d|›d�¦«\}}|€t |jd|zdz<ŒP|st |jd|zdz<Œh|j t|j|¦«dd|zdz|rd|›d�nd¦«|j t|j |t¦«d d|zd zd¬ ¦«|j t|j |t¦«d d|zd zd¬ ¦«|j t|j |¦«d |›d�¦«\}Š|s�ŒY|j ˆfd„dd|zdzd¬ ¦«|jd|zdzdk|jd|zdz<|j t|j ‰¦«dd|zdzd¬ ¦«|j tt|¦«d|›d�¦«\}}|r|�||jd|zdz<|j t|j‰¦«dd|zdzd|›d�¦«|j t|j‰¦«dd|zdzd|›d�¦«|j t|j‰¦«dd|zdzd|›d�¦«|j t|j‰¦«dd|zdzd |›d�¦«|j t|j|jd|zdz|jd|zdz¦«d!|›d�¦«\}}|r|�||jd|zd"z<|j t|j|jd|zdz|jd|zdz¦«d#|›d�¦«\}}|r|�||jd|zd$z<|j t|j‰¦«d%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_r’rÜzCan't get status of z selectorrgÚ_versions_installedrÚ_versions_enabledzCan't get list of z applicationscó"•—t‰¦«Srcrœ)Úinterpreter_appss€rfræz>CloudlinuxSummary._fill_selectors_statistics..K sø€�Ð,Ñ-Ô-€rer’Ú_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_userrKÚ _num_applications_by_interpreterz5Can't get amount of applications per each version of )Ú SELECTORSrôrZrr\rmr\rrqr(r)rr_rArWrHrKrUrRr7r:rW)rýÚselectorr©rXÚdefault_version_of_selectorÚaverage_apps_per_domainÚaverage_apps_per_userres @rfÚ_fill_selectors_statisticsz,CloudlinuxSummary._fill_selectors_statistics s�ø€ð œðo ño ˆHØ*.¬/×*GÒ*GÝÕ/°Ñ:Ô:ØE¨hÐEÐEÐEñ+ô+Ñ 'ˆGÐ'ð"Ð)ÝFS�”  ¨hÑ 6¸Ñ BÑCØàð ÝFK�”  ¨hÑ 6¸Ñ BÑCØà ŒO× &Ò &ݘÔ4°hÑ?Ô?ØØ˜hÑ&¨Ñ2Ø>EÐOÐ: xÐ:Ð:Ð:Ð:È4ñ  ô ð ð ŒO× &Ò &ݘÔ?ÐASÕU^Ñ_Ô_ØØ˜hÑ&Ð)>Ñ>Ø ð 'ñ ô ð ð ŒO× &Ò &ݘÔ?ÐASÕU\Ñ]Ô]ØØ˜hÑ&Ð)<Ñ<Ø ð 'ñ ô ð ð )-¬×(EÒ(EݘÔ6¸ÑAÔAØ< XÐ<Ð<Ð<ñ)ô)Ñ %ˆGÐ%ðð Ùà ŒO× &Ò &Ø-Ð-Ð-Ð-ØØ˜hÑ&Ð)?Ñ?Ø ð 'ñ ô ð ð”  ¨hÑ 6Ð9OÑ OÔPÐSTÒTð ŒO˜K¨(Ñ2°WÑ<Ñ =ð ŒO× &Ò &ݘÔ7Ð9IÑJÔJØØ˜hÑ&Ð)@Ñ@Ø ð 'ñ ô ð ð 48´?×3PÒ3PÝÕ+¨XÑ6Ô6ØC°ÐCÐCÐCñ4ô4Ñ 0ˆGÐ0ðð kÐ6ÐBØOj�”  ¨hÑ 6Ð9KÑ KÑLØ ŒO× &Ò &ݘÔ5Ð7GÑHÔHØØ˜hÑ&Ð)GÑGØS¸XÐSÐSÐSñ  ô ð ð ŒO× &Ò &ݘÔ3Ð5EÑFÔFØØ˜hÑ&Ð)EÑEØQ¸8ÐQÐQÐQñ  ô ð ð ŒO× &Ò &ݘÔ;Ð=MÑNÔNØØ˜hÑ&Ð)?Ñ?ØXÀ8ÐXÐXÐXñ  ô ð ð ŒO× &Ò &ݘÔ=Ð?OÑPÔPØØ˜hÑ&Ð)AÑAØZÀXÐZÐZÐZñ  ô ð ð 04¬×/LÒ/LÝØÔ5Ø”O K°(Ñ$:Ð=SÑ$SÔTØ”O K°(Ñ$:Ð=UÑ$UÔVñôð bÈ8ÐaÐaÐañ 0ô0Ñ ,ˆGÐ,ðð wÐ2Ð>Ø_v�”  ¨hÑ 6Ð9[Ñ [Ñ\Ø-1¬_×-JÒ-JÝØÔ3Ø”O K°(Ñ$:Ð=SÑ$SÔTØ”O K°(Ñ$:Ð=SÑ$SÔTñôð `ÈÐ_Ð_Ð_ñ .ô.Ñ *ˆGÐ*ðð sÐ0Ð<Ø]r�”  ¨hÑ 6Ð9YÑ YÑZØ ŒO× &Ò &ݘÔQÐScÑdÔdØØ˜hÑ&Ð)KÑKØ_ÈÐ_Ð_Ð_ñ  ô ð ñ ðUo ðo recó—ddg}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|d“ŒS)r®r®rd)rrås rfr!z.  s#€Ð`Ð`Ð`¸v˜& œ.¨&°Ô*:Ð`Ð`Ð`rerçÚwizard_module_)r,r"r6rr6rÚ NOT_SELECTED)r"Úret_codeÚstd_outÚstd_errÚ parsed_jsonÚwizard_statisticsÚparsed_modulesrås rfÚ_get_wizard_statisticsz(CloudlinuxSummary._get_wizard_statistics’ s¸€ð -¨hÐ7ˆÝ%0°ÈÐ%NÑ%NÔ%NÑ"ˆ�'˜7Ø �qŠ=ˆ=Ý'¨Ñ0Ô0Ð 0Ý”j Ñ)Ô)ˆ àÐØ-8¸Ô-IИ/Ñ*Ø`Ð`ÈÐU^ÔI_Ð`Ñ`Ô`ˆÝ!ð dð dˆFØ;I×;MÒ;MÈfÕVbÑ;cÔ;cÐ Ð.°Ñ7Ñ 8Ð 8à Ð recóð‡‡—|j |jd¦«\}Š|j ˆfd„ddd¬¦«tD]'Š|j ˆˆfd„dd‰zd¬¦«Œ(dS) zX Fill dict with statistics by varied statistics about cloudlinux-wizard z,Can't get statistics about cloudlinux-wizardcó•—‰dS)Nrxrd)r€s€rfræz;CloudlinuxSummary._fill_wizard_statistics..² s ø€Ð% oÔ6€rerÜrxNrcó•—‰d‰zS)Nrzrd)rår€s€€rfræz;CloudlinuxSummary._fill_wizard_statistics..¹ sø€Ð)Ð*:¸VÑ*CÔD€rerz)rôrZr‚rr6)rýrrår€s @@rfÚ_fill_wizard_statisticsz)CloudlinuxSummary._fill_wizard_statistics¦ s¾øø€ð $œ×<Ò<Ø Ô 'Ø :ñ ô шРð Œ×"Ò"Ø 6Ð 6Ð 6Ð 6Ø Ø Øð #ñ ô ð õ "ð ð ˆFØ ŒO× &Ò &ØDÐDÐDÐDÐDØØ  6Ñ)Ø ð 'ñ ô ð ð ð ð recó„—t¦«}g}|D],}|t|| ¦«¦«z }Œ-|S)zH Returns list of implemented scripts in integration.ini )r:rÐÚkeys)ròÚscriptsÚsections rfÚ$_get_implemented_integration_scriptsz6CloudlinuxSummary._get_implemented_integration_scripts¿ sL€õ #Ñ$Ô$ˆØˆØð 4ð 4ˆGØ •t˜F 7œO×0Ò0Ñ2Ô2Ñ3Ô3Ñ 3ˆGˆG؈recó”—dgdœ}tj t¦«s|Sd|d<| ¦«|d<|S)zh Checks integration script exists and if exists get list of implemented scripts F)Úintegration_scripts_usedÚintegration_scripts_specifiedTr�rŽ)rŸrFrGr9r‹rJs rfÚ_get_integration_infoz'CloudlinuxSummary._get_integration_infoÊ sT€ð /4ÐVXÐYÐYˆÝŒw�~Š~�kÑ*Ô*ð ØˆMØ-1ˆÐ)Ñ*Ø26×2[Ò2[Ñ2]Ô2]ˆÐ.Ñ/؈ recó�—d}tj¦«}t|j¦«|z }t|j¦«|z }||fS)zG Gets memory usage: total and used memory in megabytes rŠ)ÚpsutilÚvirtual_memoryÚfloatÚtotalÚused)Ú bytes_in_mbÚmemÚ mem_totalÚmem_useds rfÚ_get_memory_usedz"CloudlinuxSummary._get_memory_usedÖ sH€ð ˆ ÝÔ#Ñ%Ô%ˆÝ˜#œ)Ñ$Ô$ {Ñ2ˆ ݘœ‘?”? [Ñ0ˆØ˜(Ð"Ð"recóH—tj¦«}d}d}ttj¦«rot j |¦«rPt|dd¬¦«5}|  ¦«  ¦«}ddd¦«n #1swxYwY||fS)za Gets kernel info release and module version (starting from 7h) :return: z/sys/module/kmodlve/versionNrWrµrN) r8ÚreleaserrrórŸrFrgr r¾rX)Úkernel_releaseÚkmodlve_version_fileÚkmodlve_versionrÂs rfÚ_get_kernel_infoz"CloudlinuxSummary._get_kernel_infoá sÏ€õ "Ô)Ñ+Ô+ˆà<ÐØˆÝ %¥g¤kÑ 2Ô 2ð 3µr´w·~²~ÐFZÑ7[Ô7[ð 3ÝÐ*¨C¸'ÐBÑBÔBð 3ÀaØ"#§&¢&¡(¤(§.¢.Ñ"2Ô"2�ð 3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3à˜Ð.Ð.sÁ"'BÂBÂBcó8—tt¦«¦«S)zp Gets info about lve extensions usage Calculates amount of packages with lve extensions )r¿rCrdrerfÚ#_get_lve_extensions_packages_amountz5CloudlinuxSummary._get_lve_extensions_packages_amountð s€õ Õ3Ñ5Ô5Ñ6Ô6Ð6recó —d}tj |¦«sdSt|dd¬¦«5}| ¦« ¦«}ddd¦«n #1swxYwYt t|¦«¦«S)zk Reads /proc/sys/fs/datacycle/enable in order to check datacycle enabled parameter z/proc/sys/fs/datacycle/enableFrWrµrNN)rŸrFrgr r¾rXrr’)Údatacycle_filerÂr³s rfÚ$_is_kernel_datacycle_enabled_in_filez6CloudlinuxSummary._is_kernel_datacycle_enabled_in_fileø s´€ð 9ˆåŒw�~Š~˜nÑ-Ô-ð Ø�5å �. #°Ð 8Ñ 8Ô 8ð $¸AØ—6’6‘8”8—>’>Ñ#Ô#ˆDð $ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $å•C˜‘I”I‰ŒÐs¶'A)Á)A-Á0A-có—d\}}tj |¦«sdSt|dd¬¦«5}| ¦« ¦« d¦«}ddd¦«n #1swxYwY||vS)zR Checks if datacycle parameter was given for current boot )z /proc/cmdlineÚ datacycleFrWrµrNú N)rŸrFrgr r¾rXÚsplit)Ú cmdline_filer]rÂr³s rfÚ_is_datacycle_param_was_passedz0CloudlinuxSummary._is_datacycle_param_was_passed sÀð $@Ñ ˆ �jõŒw�~Š~˜lÑ+Ô+ð Ø�5å �, ¨gÐ 6Ñ 6Ô 6ð /¸!Ø—6’6‘8”8—>’>Ñ#Ô#×)Ò)¨#Ñ.Ô.ˆDð /ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /à˜TÐ!Ð!s¹:A?Á?BÂBcó‚—tj¦«}d}|D]&}|ttj|¦«¦«z }Œ'|S)z= Returns general amount of domains on server r)rrmr¿rš)Ú cpusers_listÚ domains_countržs rfr†z+CloudlinuxSummary._get_total_domains_amount sH€õ ”}‘”ˆ ؈ Ø ð :ð :ˆDØ �S¥Ô!2°4Ñ!8Ô!8Ñ9Ô9Ñ 9ˆMˆMØÐrecóú—t¦«}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_createÚallÚ symlinks_onlyÚhardlinks_onlyÚno)r!rr’r)rúÚsymlink_protection_enabledÚhardlink_protection_enableds rfÚ%_is_link_traversal_protection_enabledz7CloudlinuxSummary._is_link_traversal_protection_enabled" sˆ€õ ‘”ˆÝ%)­#¨f¯jªjÐ9WÑ.XÔ.XÑ*YÔ*YÑ%ZÔ%ZÐ"Ý&*­3¨v¯zªzÐ:YÑ/ZÔ/ZÑ+[Ô+[Ñ&\Ô&\Ð#Ø %ð Ð*Eð Ø�5Ø %ð #Ø"�?Ø &ð $Ø#Ð#؈trecóÔ—d}d}d}tj d¦«stj d¦«r|Stj d¦«r|S|S)NÚisoÚcldeployÚqcow2z/etc/cl-convert-savedz/var/log/cldeployz/etc/cloudlinux-qcow2-installrf)r¸r¹rºs rfÚ_get_cl_installation_sourcez-CloudlinuxSummary._get_cl_installation_source3 sd€àˆØˆØˆÝ Œ7�>Š>Ð1Ñ 2Ô 2ð µb´g·n²nÐEXÑ6YÔ6Yð ØˆOÝ Œ7�>Š>Ð9Ñ :Ô :ð ØˆL؈ rec󇇇‡—‰ ¦«Šttj¦«rg‰j ‰jddd¬¦«‰j ‰jddd¬¦«‰j ˆfd„ddd¬¦«td¬ ¦«s#‰j tdd d¬¦«‰j tdd d¬¦«‰j tdd d¬¦«‰j ‰j dd d¦«‰j ‰j ddd¦«‰j ˆfd„ddd¬¦«‰j ‰jddd¦«‰ ¦«Š‰j ˆfd„ddd¬¦«‰j ˆfd„ddd¬¦«‰ ¦«Š‰j ˆfd„ddd¬¦«‰j ˆfd„ddd¬¦«‰j ‰jddd¬¦«ttj¦«r ‰j ˆfd „dd!d"¦«‰j t$dd#d$¦«‰j t&dd%d&¦«‰j ‰jdd'd(¦«dS))Nr’Úlve_extension_packages_amountrrÜÚ!link_traversal_protection_enabledcó•—‰dSrrd©Ú kernel_infos€rfræz;CloudlinuxSummary._fill_system_statistics..O s ø€˜  Aœ€reÚinstalled_kmod_lve_versionT©Úskip_jwt_checkÚcldiag_cron_check_enabledÚ cpu_amountÚtesting_repository_enabledÚ base_distrozCan't detect platform for CLOSÚsecureboot_statusz+Can't detect whether secure boot is enabledcó•—‰dSrXrdrÀs€rfræz;CloudlinuxSummary._fill_system_statistics..m s ø€�K ”N€rer�ÚcgroupzCan't get cgroup informationcó•—‰dS)Nr�rd©Úvendor_integration_infos€rfræz;CloudlinuxSummary._fill_system_statistics..v sø€Ð+Ð,FÔG€rer�có•—‰dS)NrŽrdrÍs€rfræz;CloudlinuxSummary._fill_system_statistics..| sø€Ð+Ð,KÔL€rergrŽcó•—‰dSrXrd©Ú memory_usages€rfræz;CloudlinuxSummary._fill_system_statistics..„ ó ø€�L ”O€rer“Úmemory_total_mbcó•—‰dSrrdrÑs€rfræz;CloudlinuxSummary._fill_system_statistics..‡ rÓreÚmemory_used_mbÚ domains_totalcóT•—‰ ¦«p‰ ¦«Src)r¥r«rüs€rfræz;CloudlinuxSummary._fill_system_statistics..� s$ø€˜×BÒBÑDÔDÐmÈ×HkÒHkÑHmÔHm€reÚkernel_datacycle_usage_enabledz,Can't get kernel datacycle enabled parameterÚ virt_typez!Can't get the virtualization typeÚhostnamezCan't get the hostnameÚcloudlinux_installation_sourcezCan't get installation source)r rrrórôrr¢r¶rr0rr*rrÚget_cgroup_versionr�ršr†r%r r»)rýrÁrÒrÎs`@@@rfÚ_fill_system_statisticsz)CloudlinuxSummary._fill_system_statistics> sÐøøøø€Ø×+Ò+Ñ-Ô-ˆ Ý %¥g¤kÑ 2Ô 2ð Ø ŒO× &Ò &ØÔ8ØØ/Ø ð 'ñ ô ð ð ŒO× &Ò &ØÔ:ØØ3Ø ð 'ñ ô ð ð ŒO× &Ò &Ø&Ð&Ð&Ð&ØØ,Ø ð 'ñ ô ð õ"°Ð6Ñ6Ô6ð Ø ŒO× &Ò &Ý-ØØ+Ø ð 'ñ ô ð ð Œ×"Ò"¥9¨e°\ÈtÐ"ÑTÔTÐTà Œ×"Ò"Ý #Ø Ø (Øð #ñ ô ð ð Œ×"Ò" 4Ô#5°u¸mÐMmÑnÔnÐnà Œ×"Ò"Ø Ô # UÐ,?ÐAnñ ô ð ð Œ×"Ò"Ø "Ð "Ð "Ð " EÐ+;Èð #ñ ô ð ð Œ×"Ò"Ø Ô # U¨HÐ6Tñ ô ð ð#'×"<Ò"<Ñ">Ô">ÐØ Œ×"Ò"Ø GÐ GÐ GÐ GØ Ø &Øð #ñ ô ð ð Œ×"Ò"Ø LÐ LÐ LÐ LØ Ø +Øð #ñ ô ð ð×,Ò,Ñ.Ô.ˆ Ø Œ×"Ò"Ø #Ð #Ð #Ð # WÐ.?ÈTð #ñ ô ð ð Œ×"Ò"Ø #Ð #Ð #Ð # WÐ.>ÈDð #ñ ô ð ð Œ×"Ò"Ø Ô *¨E°?ÐPTð #ñ ô ð õ &¥g¤kÑ 2Ô 2ð Ø ŒO× &Ò &ØnÐnÐnÐnØØ0Ø>ñ  ô ð ð Œ×"Ò"Ý ˜5 +Ð/Rñ ô ð ð Œ×"Ò"¥7¨E°:Ð?WÑXÔXÐXà Œ×"Ò"Ø Ô ,Ø Ø ,Ø +ñ  ô ð ð ð recóЇ—‰j ˆfd„ddd¦«‰j tddd¦«‰j tddd ¦«dS) Ncó •—‰jptSrc©r rArüs€rfræzKCloudlinuxSummary._fill_dict_with_rpm_packages_statistics..¤ óø€�D”NÐ4¥n€rerÜr úCan't get system IDÚ os_versionzCan't get version of OSÚ rpm_stat_listrûz*Can't get info about client's rpm packages)rôrr#rSrüs`rfrLz9CloudlinuxSummary._fill_dict_with_rpm_packages_statistics¢ sø€Ø Œ×"Ò"Ø 4Ð 4Ð 4Ð 4Ø Ø Ø !ñ  ô ð ð Œ×"Ò"¥>°5¸,ÐHaÑbÔbÐbØ Œ×"Ò"Ý ! ?°JÐ@lñ ô ð ð ð reÚparamcóZ—tj|j |¦«¦«S)zŒ Retrieve data from proc/mounts for param :return: param_value - Optional[int], if there is no value - None )r.Ú str_to_intrúr)rýræs rfÚ_get_proc_paramz!CloudlinuxSummary._get_proc_param® s#€õ Ô(¨¬¯ª¸Ñ)?Ô)?Ñ@Ô@Ð@rec óH—dg}ttj¦«r| gd¢¦«|D]I}|j t |j|¦«d| dd¦«d|›�¦«ŒJ|j tddd¦«d 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Órú Can't get ÚhidepidzCan't get hidepid valueN) rrrórÝrôrrrér¶r©rýÚ parametersÚps rfÚ_fill_proc_params_statisticsz.CloudlinuxSummary._fill_proc_params_statistics¶ sÜ€ð 'ð ˆ õ &¥g¤kÑ 2Ô 2ð ð × Ò ð ð ð ñ ô ð ðð ð ˆAØ ŒO× &Ò &ݘÔ,¨aÑ0Ô0Øà— ’ ˜#˜sÑ#Ô#Ø ˜QÐ Ð ñ  ô ð ð ð Œ×"Ò"Ý *Ø Ø Ø %ñ  ô ð ð ð rec ó‚—d}|D]9}|j t|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)rôrrÚ_get_kmodlve_param_valuerís rfÚ_fill_kmodlve_params_statisticsz1CloudlinuxSummary._fill_kmodlve_params_statisticsã sk€ð+ˆ Øð ð ˆAØ ŒO× &Ò &ݘÔ5°qÑ9Ô9ØØ˜1��Ø;˜qÐ;Ð;Ð;ñ  ô ð ð ð ð recóh—|jr|j d¦«nd}g}|�; | t|¦«¦«n#tt f$rYnwxYwt |pd¬¦«}tD]5}|j  t|j |¦«d|d|›�¦«Œ6dS)u\ Fill dict with LVE Traffic Accounting metrics from /proc/lve/list (CLOS-4341). cloudlinux-summary re-execs itself inside a transient self-LVE (see _run_self_in_lve) — that LVE shows up in /proc/lve/list while we run and would inflate counts by 1. We pass our own --lve-id so the parser skips it. rÒN)Ú skip_user_idsr’rë) ròrrÃr’r;r<r>ÚNET_ACCT_METRIC_NAMESrôrrÚ __getitem__)rýÚ own_lve_idÚskip_idsr¨r®s rfÚ_fill_net_acct_statisticsz+CloudlinuxSummary._fill_net_acct_statisticsð sá€ð48´:ÐG�T”Z—^’^ JÑ/Ô/Ð/À4ˆ ØˆØ Ð !ð Ø—’¥ J¡¤Ñ0Ô0Ð0Ð0øÝ�zÐ*ð ð ð Ø�ð øøøå*¸Ð9IÀTÐJÑJÔJˆÝ)ð ð ˆDØ ŒO× &Ò &ݘÔ+¨TÑ2Ô2ØØØ#˜TÐ#Ð#ñ  ô ð ð ð ð s©"A Á A ÁA cóȇ—td¬¦«Š|j ˆfd„ddd¦«|j ˆfd„ddd ¦«|j ˆfd „dd d ¦«|j ˆfd „ddd¦«|j ˆfd„ddd¦«|j tt‰¦«ddd¦«dS)zv Fill statistics fields from jwt token. - jwt token metrics (cl_plus existence and client_id) Fr0có8•—‰€dn‰ dd¦«S)NÚcl_plus©r©r³s€rfræz=CloudlinuxSummary._fill_cln_jwt_information.. sø€˜D˜L�D�D¨d¯hªh°yÀ$Ñ.GÔ.G€rer’rÿzCan't get cl_plus informationcó8•—‰€dn‰ dd¦«S)Nr�rrs€rfræz=CloudlinuxSummary._fill_cln_jwt_information.. sø€˜D˜L�D�D¨d¯hªh°{ÀDÑ.IÔ.I€rer�zCan't get client_id valuecó8•—‰€dn‰ dd¦«S)NÚis_awp_premium_allowedrrs€rfræz=CloudlinuxSummary._fill_cln_jwt_information.. sø€˜D˜L�D�D¨d¯hªhÐ7OÐQUÑ.VÔ.V€reÚjwt_is_awp_premium_allowedz&Can't get is_awp_premium_allowed valuecó8•—‰€dn‰ dd¦«S)NÚis_awp_cdn_allowedrrs€rfræz=CloudlinuxSummary._fill_cln_jwt_information..# sø€˜D˜L�D�D¨d¯hªhÐ7KÈTÑ.RÔ.R€reÚjwt_is_awp_cdn_allowedz"Can't get is_awp_cdn_allowed valuecó8•—‰€dn‰ dd¦«S)NÚis_trialrrs€rfræz=CloudlinuxSummary._fill_cln_jwt_information..) sø€˜D˜L�D�D¨d¯hªh°zÀ4Ñ.HÔ.H€reÚjwt_is_trial_licensez$Can't get jwt_is_trial_license valueÚlicense_activezCan't get license status valueN)rBrôrrrE)rýr³s @rfÚ_fill_cln_jwt_informationz+CloudlinuxSummary._fill_cln_jwt_information sDø€õ .¸uÐEÑEÔEˆØ Œ×"Ò"Ø 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¸Ð@PÐRrñ ô ð ð ð rec󌇗‰j ˆfd„ddd¦«‰j tddd¦«dS) za Filling stats centralized management - centralized management existence cóL•—tj ‰j¦«Src)rŸrFrGÚCL_PLUS_CM_DISABLED_PATHrüs€rfræzKCloudlinuxSummary._fill_centralized_management_statistics..; sø€•B”G—N’N 4Ô#@ÑAÔA€rer’Úcentralized_management_disabledzCan't check CM disabling statusrÜÚcl_plus_sender_service_statusz)Can't check cl plus sender service statusN)rôrrArüs`rfÚ'_fill_centralized_management_statisticsz9CloudlinuxSummary._fill_centralized_management_statistics3 sfø€ð Œ×"Ò"à AÐ AÐ AÐ AØ Ø -Ø -ñ  ô ð ð Œ×"Ò"Ý %Ø Ø +Ø 7ñ  ô ð ð ð recó2—i} t¦«}|D]H}| ¦«D]1\}}| d|›�g¦« |¦«Œ2ŒIn9#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)rQrfÚ setdefaultrÃr¤rPr,r-)r&Ú cpu_coresÚcpu_corer�ÚvalueÚexs rfÚmake_flat_cpu_metricsz'CloudlinuxSummary.make_flat_cpu_metricsH sØ€ð:ˆð BÝ'Ñ)Ô)ˆIØ%ð Ið I�Ø%-§^¢^Ñ%5Ô%5ðIðI‘M�F˜EØ×%Ò% o¨V o o°rÑ:Ô:×AÒAÀ%ÑHÔHÐHÐHðIð Iøõ�Ð&ð Bð Bð BÝ × Ò Ð<¸bÑ AÔ AÐ AÐ AÐ AÐ AÐ AÐ Aøøøøð Bøøøàˆ s„AAÁBÁ/BÂBc ó—gd¢}| ¦«}|D]A}|dkrdnd}|j t|j|d¦«||d|›d�¦«ŒB|j t dd d ¦«dS) zÕ Filling stats about hardware metrics, specifically: CPU: - cache - frequency - model - id RAM: - ram - swap )Úcpu_idÚ cpu_cache_mbÚ cpu_modelÚcpu_frequency_mhzrÚint_listrgNz Can't parse z metric for all coresrKÚmemoryzCan't parse memory metrics)rrôrrrrR)rýÚ exp_metricsÚ cpu_metricsr�Ú metric_types rfÚ_fill_hardware_statisticsz+CloudlinuxSummary._fill_hardware_statisticso s¹€ðSÐRÐRˆ Ø×0Ò0Ñ2Ô2ˆ Ø!ð ð ˆFà(.°+Ò(=Ð(=˜*˜*À:ˆKØ ŒO× &Ò &ݘ œ¨°Ñ6Ô6ØØØ<˜vÐ<Ð<Ð<ñ  ô ð ð ð Œ×"Ò"Ý Ø Ø Ø (ñ  ô ð ð ð recó´—| ¦«\|jd<|jd<|jd<tj d¦«|jd<dS)am Collect CageFS enter errors number: 1. "Act like CageFS is disabled (unable to create LVE).. %d" 2. "Act like CageFS is disabled (unable to enter into NameSpace).. %d" 3. "Act like CageFS is disabled (unable to acquire lock for user %s uid %d)" 4. File-marker /etc/cagefs/fail.on.error presense :return None Ú(act_cagefs_disabled_unable_to_create_lveÚ&act_cagefs_disabled_unable_to_enter_nsÚ)act_cagefs_disabled_unable_to_acqure_lockz/etc/cagefs/fail.on.errorÚ"act_cagefs_disabled_marker_presentN)Ú*_scan_log_for_act_cagefs_disabled_messagesrôrŸrFrgrüs rfÚ$_fill_act_cagefs_disabled_statisticsz6CloudlinuxSummary._fill_act_cagefs_disabled_statistics� s[€ð × ;Ò ;Ñ =Ô =ñ  Ø ŒOÐFÑ GØ ŒOÐDÑ EØ ŒOÐGÑ Hå@BÄÇÂÐOjÑ@kÔ@kˆŒÐ<Ñ=Ð=Ð=recóÊ— | ¦«\}}|dkr£| d¦«}ttddd|¬¦«¦«}t |¦«}ttddd|¬¦«¦«}t |¦«}ttddd|¬¦«¦«}t |¦«}nd}d}d}|||fS#t t f$rYdSwxYw) a² Scan /var/log/messages for all needed "Act like CageFS is disabled ..." messages for yesterday :return tuple of ints: Number of "Act like CageFS is disabled (unable to create LVE).. " messages, Number of "Act like CageFS is disabled (unable to enter into NameSpace).. " messages, Number of "Act like CageFS is disabled (unable to acquire lock for user %s uid %d)" messages rr¢z2Act like CageFS is disabled (unable to create LVE)T)Ú fixed_stringÚmultiple_searchÚdata_from_filezÔ)>Ð&Ý#'ÝØVØ%)Ø(,Ø'1ð ñôñ$ô$Ð õ-0Ð0@Ñ,AÔ,AÐ)Ð)ð,-Ð(Ø)*Ð&Ø,-Ð)Ø+Ð-CÐE^Ð^Ð ^øÝ�Ð!ð !ð !ð !Ø �=�=ð !øøøs‚C C à C"Ã!C"c óD—t¦«}|dvrPtj ¦«tjd¬¦«z }| 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) )Úcl6Úcl6hrT)Ú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'Tr¼F)r>r½r¾r~Ústderrr¿) r#ÚdatetimeÚdateÚtodayÚ timedeltaÚstrftimerÉrÊÚPIPEÚDEVNULLr3r~)Úos_typeÚyesterday_dateÚ date_to_scanÚs_cmdrïs rfr2z$CloudlinuxSummary._get_data_from_logÑ s¿€õ !Ñ"Ô"ˆØ �oÐ %Ð %õ&œ]×0Ò0Ñ2Ô2µXÔ5GÈQÐ5OÑ5OÔ5OÑOˆNØ)×2Ò2°:Ñ>Ô>ˆLðN°ðNðNðNð ˆEðxˆEå ŒNØ ØØØ"Ý”?ÝÔ%Øð ñ ô ˆðŒ|˜QœXÐ%Ð%recóà‡—ttj¦«r"‰j ‰jddd¦«t ‰jd<‰j ttj d¬¦«ddd ¦«‰j ‰j dd d ¦«‰j ‰j dd d ¦«‰j ‰j ddd¦«‰j ˆfd„ddd¦«‰j ˆfd„ddd¦«t�!t�t›dt›�‰jd<n d‰jd<‰ ¦«dS)Nr’Úold_way_of_integration_usedú*Can't detect old LVE integration mechanismÚlve_utils_versionF)Ú verify_exprÜÚ cl_editionzCan't get CloudLinux editionÚis_solo_meta_file_presentz$Can't detect solo meta file presenceÚis_admin_meta_file_presentz%Can't detect admin meta file presenceÚis_container_meta_file_presentz)Can't detect container meta file presencecó•—‰jSrc©r#rüs€rfræzACloudlinuxSummary._prepare_cl_normal_statistics.. ó ø€�DÔ'€rer#ú$Can't get or generate security tokencó •—‰jptSrcrárüs€rfræzACloudlinuxSummary._prepare_cl_normal_statistics.. rârer rãrÜÚlvemanager_version)rrrórôrrcÚLVE_UTILS_PKG_VERSIONrrÚget_cl_editionÚ_is_solo_marker_existsÚ_is_admin_marker_existsÚ_is_container_marker_existsÚLVEMANAGER_PKG_VERSIONÚLVEMANAGER_PKG_RELEASEÚ_fill_dict_with_statisticsrüs`rfrIz/CloudlinuxSummary._prepare_cl_normal_statisticsò sµø€Ý %¥g¤kÑ 2Ô 2ð Ø ŒO× &Ò &ØÔ0ØØ-Ø<ñ  ô ð õ 0EˆŒÐ+Ñ,Ø Œ×"Ò"Ý •JÔ-¸%Ð @Ñ @Ô @À%ÈÐWuñ ô ð ð Œ×"Ò"Ø Ô '¨Ð0KÐMsñ ô ð ð Œ×"Ò"Ø Ô (¨%Ð1MÐOvñ ô ð ð Œ×"Ò"Ø Ô ,Ø Ø ,Ø 7ñ  ô ð ð Œ×"Ò"à 'Ð 'Ð 'Ð 'Ø Ø Ø 2ñ  ô ð ð Œ×"Ò"Ø 4Ð 4Ð 4Ð 4Ø Ø Ø !ñ  ô ð õ "Ð -Õ2HÐ2TÝ7MÐ4hÐ4hÕPfÐ4hÐ4hˆDŒOÐ0Ñ 1Ð 1à48ˆDŒOÐ0Ñ 1Ø ×'Ò'Ñ)Ô)Ð)Ð)Ð)rec󞇇‡ ‡ ‡ ‡ —dŠ dŠdŠ dŠ dŠ d}tj ‰ ¦«sdSGd„d t¦«Šˆˆˆ ˆ ˆ ˆ fd „}‰ d ‰ d ‰ d i}d „tj‰ ¦«D¦«}| ¦«|D]/} |||¦«Œ#‰$rYŒt $r |D]}d ||<ŒYŒ,wxYw|‰ |j‰ <|‰ |j‰ <|‰ |j‰ <tj d¦«r d|j|<dStj d¦«r 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/i€QÚlve_number_of_opensÚxray_number_of_installationÚxray_number_of_visitsÚxray_advanced_metrics_statusNcó—eZdZdS)úECloudlinuxSummary._fill_lvemanager_statistics..BreakOuterLoopN)røÚ __module__Ú __qualname__rdrerfÚBreakOuterLooprf. s€€€€€Ø ˆDrericó•—tj ¦« ¦«}‰ |z}t|dd¬¦«5}d}|D�]} d | d¦«dd…¦«}tj |d¦« ¦«}|‰ z |cxkr|krŠnn‡d | ¦« d¦«dd…¦«} | dkr|‰ xxd z cc<n0| d kr|‰xxd z cc<n| d kr|‰xxd z cc<nd }�Œ#ttf$rY�ŒwxYw|r‰ ‚ ddd¦«dS#1swxYwYdS) NrWrµrNFr¨r˜z%Y-%m-%d %H:%M:%S,%fzlvemanager-openedrTzxray-install-startedzxray-tab-clickedT) r>Únowr«r r!r©ÚstrptimerXr<ÚAttributeError)ÚstatsÚfileÚcurrent_date_timestampÚ file_pathrÂÚbreak_outer_loopÚlineÚlog_timeÚlog_date_timestamprAriÚCOLLECTING_PERIODÚ LOG_FOLDERÚLVE_NUMBER_OF_OPENSÚXRAY_NUMBER_OF_INSTALLSÚXRAY_NUMBER_OF_VISITSs €€€€€€rfÚfill_statisticszFCloudlinuxSummary._fill_lvemanager_statistics..fill_statistics2 s#ø€Ý%-Ô%6×%:Ò%:Ñ%<Ô%<×%FÒ%FÑ%HÔ%HÐ "Ø" TÑ)ˆIÝ�i ¨wÐ7Ñ7Ô7ð )¸1Ø#(Ð Øð!ñ!�Dð!Ø#&§8¢8¨D¯JªJ°s©O¬O¸B¸Q¸BÔ,?Ñ#@Ô#@˜Ý-5Ô->×-GÒ-GÈÐRhÑ-iÔ-i×-sÒ-sÑ-uÔ-uÐ*Ø1Ð4EÑEÐHZÐsÐsÒsÐsÐ]sÒsÐsÐsÐsÐsØ&)§h¢h¨t¯zªz©|¬|×/AÒ/AÀ#Ñ/FÔ/FÀqÀrÀrÔ/JÑ&KÔ&K˜GØ&Ð*=Ò=Ð=Ø %Ð&9Ð :Ð :Ô :¸aÑ ?Ð :Ð :Ñ :Ð :Ø!(Ð,BÒ!BÐ!BØ %Ð&=Ð >Ð >Ô >À!Ñ CÐ >Ð >Ñ >Ð >Ø!(Ð,>Ò!>Ð!>Ø %Ð&;Ð <Ð <Ô <ÀÑ AÐ <Ð <Ñ <øà/3Ð,ùøÝ&­Ð7ð!ð!ð!Ø ™ð!øøøà#ð)Ø(Ð(ð)ð% )ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð )ð )s7Á E<ÁC>EÅE<ÅE'Å#E<Å&E'Å'E<Å<FÆFrcó<—g|]}tjd|¦«¯|‘ŒS)z^lvemanager\.log(\.\d{1,2})?$)ÚreÚmatch)rr®s rfrdzACloudlinuxSummary._fill_lvemanager_statistics..O s+€ÐqÐqÐq˜dÅÄÐIiÐkoÑ@pÔ@pÐq�TÐqÐqÐqrer´z./opt/alt/php-xray/php/advanced_metrics.enabledrrz//opt/alt/php-xray/php/advanced_metrics.disabledrsÚnone) rŸrFÚisdirrŒÚlistdirÚsortr¤rôrg) rýÚXRAY_ADVANCED_METRICS_STATUSr{rôÚ log_filesÚlog_fileÚstat_keyrirvrwrxryrzs @@@@@@rfÚ_fill_lvemanager_statisticsz-CloudlinuxSummary._fill_lvemanager_statistics søøøøøø€ð,ˆ Ø%ÐØ3ÐØ"?ÐØ 7ÐØ'EÐ$ÝŒw�}Š}˜ZÑ(Ô(ð Ø ˆFð ð ð ð ð �Yñ ô ð ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð0*¨1Ð.CÀQÐH_ÐabÐcˆ ð rÐq¥b¤j°Ñ&<Ô&<ÐqÑqÔqˆ Ø�ŠÑÔÐØ!ð .ð .ˆHð .Ø�  ¨HÑ5Ô5Ð5Ð5øØ!ð ð ð Ø�Ýð .ð .ð .Ø *ð.ð.�HØ+-�J˜xÑ(Ð(ð.ð.ð .øøøð2<ÐUÔ3VˆŒÐ/Ñ0Ø/9Ð:MÔ/NˆŒÐ+Ñ,å Œ7�>Š>ÐJÑ KÔ Kð CØÐ?RÔ0SˆŒÐ,Ñ-Ð-Ð-recó~—|j d„ddd¦«|j d„ddd¦«dS) z: Fill dict with feature flags information có2—d„t¦«D¦«S)Ncó—g|] }|j‘Œ Srdr ©rrÂs rfrdzVCloudlinuxSummary._fill_feature_flags_statistics....� s€Ð7Ð7Ð7 �Q”VÐ7Ð7Ð7rer`rdrerfræzBCloudlinuxSummary._fill_feature_flags_statistics..� s€Ð7Ð7¥_Ñ%6Ô%6Ð7Ñ7Ô7€rergÚserver_flags_availablez3Can't get information about available feature flagscó2—d„t¦«D¦«S)Ncó*—g|]}|j¯ |j‘ŒSrd)rrr®r•s rfrdzVCloudlinuxSummary._fill_feature_flags_statistics....‡ s!€ÐDÐDÐD ¸!¼)ÐD�Q”VÐDÐDÐDrer`rdrerfræzBCloudlinuxSummary._fill_feature_flags_statistics..‡ s€ÐDÐD¥_Ñ%6Ô%6ÐDÑDÔD€reÚserver_flags_enabledz1Can't get information about enabled feature flagsN)rôrrüs rfÚ_fill_feature_flags_statisticsz0CloudlinuxSummary._fill_feature_flags_statistics| sb€ð Œ×"Ò"Ø 7Ð 7Ø Ø $Ø Añ  ô ð ð Œ×"Ò"Ø DÐ DØ Ø "Ø ?ñ  ô ð ð ð recó—d}d}d}d}d}d}d}d}tj |¦«r|}tj |¦«r|}tj |¦«r|}||j|<dS) z8 Fill out AccelerateWP promotion status Úaccelerate_wp_promotion_statusÚenabled_for_current_serverÚenabled_for_all_serversÚskippedz,/var/lve/clflags/enable_awp_all_servers.flagz,/var/lve/clflags/enable_awp_this_server.flagz$/var/lve/clflags/skip_awp_setup.flagN)rŸrFrGrô) rýÚFIELDÚENABLED_FOR_CURRENT_SERVERÚENABLED_FOR_ALL_SERVERSÚSKIPPEDÚenable_awp_all_servers_flagÚenable_awp_this_server_flagÚskip_awp_setupr®s rfÚ(_fill_accelerate_wp_promotion_statisticsz:CloudlinuxSummary._fill_accelerate_wp_promotion_statistics� s�€ð 1ˆð&BÐ"Ø";ÐØˆð'UÐ#Ø&TÐ#Ø?ˆðˆå Œ7�>Š>Ð5Ñ 6Ô 6ð -Ø,ˆFÝ Œ7�>Š>Ð5Ñ 6Ô 6ð 0Ø/ˆFÝ Œ7�>Š>˜.Ñ )Ô )ð ØˆFØ!'ˆŒ˜ÑÐÐrecóv‡—‰j ˆfd„ddd¦«‰j ˆfd„ddd¦«t‰jd<t�!t�t›d t›�‰jd <n d‰jd <‰j ‰jd d d ¦«‰ ¦«dS)Ncó•—‰jSrcrSrüs€rfræz7CloudlinuxSummary._prepare_statistics..¬ rTrerÜr#rUcó •—‰jptSrcrárüs€rfræz7CloudlinuxSummary._prepare_statistics..² rârer rãrLrÜrWr’rJrK)rôrrXr]r^rcr_rüs`rfÚ_prepare_statisticsz%CloudlinuxSummary._prepare_statistics© sîø€Ø Œ×"Ò"à 'Ð 'Ð 'Ð 'Ø Ø Ø 2ñ  ô ð ð Œ×"Ò"Ø 4Ð 4Ð 4Ð 4Ø Ø Ø !ñ  ô ð õ 0EˆŒÐ+Ñ,Ý !Ð -Õ2HÐ2TÝ7MÐ4hÐ4hÕPfÐ4hÐ4hˆDŒOÐ0Ñ 1Ð 1à48ˆDŒOÐ0Ñ 1Ø Œ×"Ò"Ø Ô ,Ø Ø )Ø 8ñ  ô ð ð ×'Ò'Ñ)Ô)Ð)Ð)Ð)recóÊ—ttj¦«r| ¦«ttj¦«r<| ¦«| ¦«| ¦«ttj¦«r|  ¦«ttj ¦«r<|  ¦«|  ¦«|  ¦«ttj¦«r| ¦«ttj¦«s2ttj¦«sttj¦«r| ¦«t)d¬¦«s| ¦«ttj¦«r| ¦«ttj¦«r| ¦«| ¦«| ¦«| ¦«| ¦«| ¦«| ¦«|  ¦«| !¦«| "¦«| #¦«| $¦«| %¦«| &¦«| '¦«| (¦«| )¦«| *¦«dS)NTrÃ)+rrÚGOVERNORr^ÚCAGEFSr®r§r-ÚRESELLER_LIMITSr×rór,rõrüÚ PHP_SELECTORr,Ú RUBY_SELECTORÚPYTHON_SELECTORÚNODEJS_SELECTORrvrrÚLSAPIrQÚWIZARDr†Ú _fill_wpos_activation_statisticsÚ_fill_wpos_statisticsr rtr0rÞrðr&rVrr‡rzr´r‘ršr§Ú_fill_apache2nginx_statisticsrüs rfr_z,CloudlinuxSummary._fill_dict_with_statisticsÄ sõ€Ý %¥gÔ&6Ñ 7Ô 7ð 3Ø × 0Ò 0Ñ 2Ô 2Ð 2Ý %¥g¤nÑ 5Ô 5ð 8Ø × (Ò (Ñ *Ô *Ð *Ø × 3Ò 3Ñ 5Ô 5Ð 5Ø × 5Ò 5Ñ 7Ô 7Ð 7Ý %¥gÔ&=Ñ >Ô >ð .Ø × +Ò +Ñ -Ô -Ð -Ý %¥g¤kÑ 2Ô 2ð -Ø × (Ò (Ñ *Ô *Ð *Ø × 0Ò 0Ñ 2Ô 2Ð 2Ø × *Ò *Ñ ,Ô ,Ð ,Ý %¥gÔ&:Ñ ;Ô ;ð 1Ø × .Ò .Ñ 0Ô 0Ð 0å &¥wÔ'<Ñ =Ô =ð .å)­'Ô*AÑBÔBð .õ*­'Ô*AÑBÔBð .ð × +Ò +Ñ -Ô -Ð -å!°Ð6Ñ6Ô6ð ;Ø × 8Ò 8Ñ :Ô :Ð :å %¥g¤mÑ 4Ô 4ð *Ø × 'Ò 'Ñ )Ô )Ð )Ý %¥g¤nÑ 5Ô 5ð +Ø × (Ò (Ñ *Ô *Ð *à ×-Ò-Ñ/Ô/Ð/Ø ×"Ò"Ñ$Ô$Ð$Ø ×&Ò&Ñ(Ô(Ð(Ø ×+Ò+Ñ-Ô-Ð-Ø ×)Ò)Ñ+Ô+Ð+Ø ×$Ò$Ñ&Ô&Ð&Ø ×)Ò)Ñ+Ô+Ð+Ø ×&Ò&Ñ(Ô(Ð(Ø ×*Ò*Ñ,Ô,Ð,Ø ×!Ò!Ñ#Ô#Ð#Ø ×(Ò(Ñ*Ô*Ð*Ø × Ò Ñ"Ô"Ð"Ø ×)Ò)Ñ+Ô+Ð+Ø ×#Ò#Ñ%Ô%Ð%Ø ×+Ò+Ñ-Ô-Ð-Ø ×5Ò5Ñ7Ô7Ð7Ø ×*Ò*Ñ,Ô,Ð,Ð,Ð,recóJ—|j |jddd¦«dS)NrKÚ apache2nginxz Can't parse Apache2Nginx metrics)rôrÚget_apache2nginx_statsrüs rfr¸z/CloudlinuxSummary._fill_apache2nginx_statisticsô s5€Ø Œ×"Ò"Ø Ô 'Ø Ø Ø .ñ  ô ð ð ð recóÒ‡—|j d„ddd¦«|j td¦«\}Š|j ˆfd„dd|rdnd¦«dS) NcóJ—tj t¦«Src)rŸrFrgr rdrerfræzDCloudlinuxSummary._fill_wpos_activation_statistics..s€•B”G—N’NÕ#BÑCÔC€rer’Ú.cmt_is_accelerate_wp_free_activation_completedz2Can't get statistic of AccelerateWP CMT activationz,Can't get AccelerateWP activation statisticscó.•—‰ d¦«S)NÚaccelerate_wp_free_activater)Úclient_activations€rfræzDCloudlinuxSummary._fill_wpos_activation_statistics.. sø€Ð%×)Ò)Ð*GÑHÔH€reÚ&cmt_accelerate_wp_free_activated_in_uiz;Can't get statistic of AccelerateWP CMT activation selected)rôrrZr)rýr©rÁs @rfr¶z2CloudlinuxSummary._fill_wpos_activation_statisticsü sšø€ð Œ×"Ò"Ø CÐ CØ Ø <Ø @ñ  ô ð ð&*¤_×%BÒ%BÝ "Ø :ñ& ô& Ñ"ˆÐ"ð Œ×"Ò"Ø HÐ HÐ HÐ HØ Ø 4ØMTÐ ^Ð IÐ IÐZ^ñ  ô ð ð ð recóD ‡‡ ‡ ‡ ‡ —|j |jd¦«\}Š |sdSt‰ t¦«�rW‰  d¦«dk�r?‰  d¦«� |j ˆ fd„ddd¦«‰  d ¦«� |j ˆ fd „dd d¦«|j ˆ fd „d dd¦«|j ˆ fd„d dd¦«‰  d¦«r |j ˆ fd„d dd¦«‰ dD]-Š ‰ dkrŒ |j ˆ ˆ fd„d d‰ zd¦«Œ.‰  dg¦«D]&Š |j ˆ ˆ fd„d d‰ zd¦«Œ'‰ dD]-Š ‰ dkrŒ |j ˆ ˆ fd„d d‰ zd¦«Œ.‰  dg¦«D]&Š |j ˆ ˆ fd„d d ‰ zd¦«Œ'‰  d!g¦«D]¤Š |j ˆ ˆ fd"„d d#‰ zd¦«‰ ›d$�}‰ ›d%�}‰  |¦«xŠr#|j ˆfd&„d d#|zd¦«‰  |¦«xŠ r#|j ˆ fd'„d d#|zd¦«Œ¥‰  dg¦«D]-Š ‰ dkrŒ |j ˆ ˆ fd(„d d)‰ zd¦«Œ.‰  d*i¦« ¦«D]\Š }||jd+‰ z<Œ|j ˆ fd,„d d-d¦«|j ˆ fd.„d d/d¦«|j ˆ fd0„d d1d2¦«|j ˆ fd3„d d4d5¦«|j ˆ fd6„d7d8d9¦«|j ˆ fd:„d7d;d<¦«|j ˆ fd=„d7d>d?¦«|j ˆ fd@„d7dAdB¦«‰  dC¦«x}r+| ¦«D]\}}||jdD|›�<ŒdSdSdSdS)ENz!Can't get AccelerateWP statisticsr&r©Úfeatures_visible_by_defaultcó•—‰dS)NrÄrd©Ú wpos_statss€rfræz9CloudlinuxSummary._fill_wpos_statistics..ó ø€˜JÐ'DÔE€rergÚ wpos_features_visible_by_defaultz*Can't get statistic of using AccelerateWP.Úfeatures_allowed_by_defaultcó•—‰dS)NrÊrdrÆs€rfræz9CloudlinuxSummary._fill_wpos_statistics..&rÈreÚ wpos_features_allowed_by_defaultcó •—‰ddS)NÚ enabled_sitesr”rdrÆs€rfræz9CloudlinuxSummary._fill_wpos_statistics..,óø€˜  ?Ô3°GÔ<€rer’Úsites_count_with_enabled_wposcó •—‰ddS)NÚ allowed_usersr”rdrÆs€rfræz9CloudlinuxSummary._fill_wpos_statistics..2rÏreÚusers_count_with_allowed_wposÚ visible_userscó •—‰ddS)NrÔr”rdrÆs€rfræz9CloudlinuxSummary._fill_wpos_statistics..9sø€˜J Ô7¸Ô@€reÚusers_count_with_visible_wposrÎr”có •—‰d‰S)NrÎrd©rårÇs€€rfræz9CloudlinuxSummary._fill_wpos_statistics..Cóø€˜J Ô7¸Ô?€reÚsites_count_with_enabled_Ú enabled_userscó •—‰d‰S)NrÛrdrØs€€rfræz9CloudlinuxSummary._fill_wpos_statistics..JrÙreÚusers_count_with_enabled_rÒcó •—‰d‰S)NrÒrdrØs€€rfræz9CloudlinuxSummary._fill_wpos_statistics..SrÙreÚusers_count_with_allowed_Úallowed_suitescó •—‰d‰S)Nràrd©ÚsuiterÇs€€rfræz9CloudlinuxSummary._fill_wpos_statistics..Zóø€˜JÐ'7Ô8¸Ô?€reÚusers_count_with_allowed_suite_Úenabled_suitescó •—‰d‰S)Nrærdrâs€€rfræz9CloudlinuxSummary._fill_wpos_statistics..aräreÚusers_count_with_enabled_suite_Ú _billableÚ _non_billablecó•—‰Srcrd)Úenabled_billables€rfræz9CloudlinuxSummary._fill_wpos_statistics..lsø€Ð 0€recó•—‰Srcrd)Úenabled_non_billables€rfræz9CloudlinuxSummary._fill_wpos_statistics..tsø€Ð 4€recó •—‰d‰S)NrÔrdrØs€€rfræz9CloudlinuxSummary._fill_wpos_statistics..~rÙreÚusers_count_with_visible_Ú upgrade_urlsÚ upgrade_url_có•—‰dS)NÚ4accelerate_wp_suite_enabled_premium_suite_disallowedrdrÆs€rfræz9CloudlinuxSummary._fill_wpos_statistics..‰s ø€˜ Ð#YÔZ€rerôcó•—‰dS)NÚ1accelerate_wp_suite_enabled_premium_suite_visiblerdrÆs€rfræz9CloudlinuxSummary._fill_wpos_statistics..�s ø€˜ Ð#VÔW€reröcó.•—‰ d¦«S)NÚis_accelerate_wp_flag_enabledrrÆs€rfræz9CloudlinuxSummary._fill_wpos_statistics..–óø€˜ ŸšÐ'FÑGÔG€rerøz1Can't get statistic of AccelerateWP feature flag.có.•—‰ d¦«S)NÚis_accelerate_wp_icon_enabledrrÆs€rfræz9CloudlinuxSummary._fill_wpos_statistics..œrùrerûz0Can't get statistic of AccelerateWP icon status.có.•—‰ d¦«S)NÚ%is_smart_advice_notifications_enabledrrÆs€rfræz9CloudlinuxSummary._fill_wpos_statistics..£sø€˜ ŸšÐ'NÑOÔO€rerÜrýzJCan't get statistic of AccelerateWP is_smart_advice_notifications_enabled.có.•—‰ d¦«S)NÚ!is_smart_advice_reminders_enabledrrÆs€rfræz9CloudlinuxSummary._fill_wpos_statistics..©sø€˜ ŸšÐ'JÑKÔK€rerÿzFCan't get statistic of AccelerateWP is_smart_advice_reminders_enabled.có.•—‰ d¦«S)NÚ+is_smart_advice_plugin_installation_enabledrrÆs€rfræz9CloudlinuxSummary._fill_wpos_statistics..¯sø€˜ ŸšÐ'TÑUÔU€rerzPCan't get statistic of AccelerateWP is_smart_advice_plugin_installation_enabled.có.•—‰ d¦«S)NÚis_object_cache_banners_enabledrrÆs€rfræz9CloudlinuxSummary._fill_wpos_statistics..µsø€˜ ŸšÐ'HÑIÔI€rerzDCan't get statistic of AccelerateWP is_object_cache_banners_enabled.rzÚ awp_whmcs_) rôrZÚget_wpos_statsr7r8rrÚ format_metricrf) rýr©Úbillable_suite_metricÚnon_billable_suite_metricÚ upgrade_urlÚ whmcs_statsr©rrìrîrårãrÇs @@@@@rfr·z'CloudlinuxSummary._fill_wpos_statisticssÛøøøøø€Ø"œo×;Ò;Ø Ô Ø /ñ ô ш�ðð Ø ˆFå �j¥$Ñ 'Ô 'ña @¨J¯NªN¸8Ñ,DÔ,DÈ Ò,QÑ,QØ�~Š~Ð;Ñ<Ô<ÐHØ”×*Ò*ØEÐEÐEÐEØØ6Ø@ñ ôðð �~Š~Ð;Ñ<Ô<ÐHØ”×*Ò*ØEÐEÐEÐEØØ6Ø@ñ ôðð ŒO× &Ò &Ø<Ð<Ð<Ð<ØØ/Ø<ñ  ô ð ð ŒO× &Ò &Ø<Ð<Ð<Ð<ØØ/Ø<ñ  ô ð ð �~Š~˜oÑ.Ô.ð Ø”×*Ò*Ø@Ð@Ð@Ð@ØØ3Ø@ñ ôðð% _Ô5ð ð �ؘWÒ$Ð$ØØ”×*Ò*Ø?Ð?Ð?Ð?Ð?ØØ/°&Ñ8Ø@ñ ôððð %Ÿ.š.¨¸"Ñ=Ô=ð ð �Ø”×*Ò*Ø?Ð?Ð?Ð?Ð?ØØ/°&Ñ8Ø@ñ ôððð % _Ô5ð ð �ؘWÒ$Ð$ØØ”×*Ò*Ø?Ð?Ð?Ð?Ð?ØØ/°&Ñ8Ø@ñ ôððð $ŸšÐ(8¸"Ñ=Ô=ð ð �Ø”×*Ò*Ø?Ð?Ð?Ð?Ð?ØØ5¸Ñ=Ø@ñ ôððð $ŸšÐ(8¸"Ñ=Ô=ð ð �Ø”×*Ò*Ø?Ð?Ð?Ð?Ð?ØØ5¸Ñ=Ø@ñ ôðð,1Ð(;Ð(;Ð(;Ð%Ø/4Ð,CÐ,CÐ,CÐ)à'1§~¢~Ð6KÑ'LÔ'LÐLÐ#ðØ”O×1Ò1Ø0Ð0Ð0Ð0ØØ9Ъ>Ð:SÑ+TÔ+TÐTÐ'ðØ”O×1Ò1Ø4Ð4Ð4Ð4ØØ9М>Ð)Ð)s�$AÁB Á(BÂB có6—| ¦«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. r©rrüs rfrz(CloudlinuxSummary._get_users_with_faultsåó€ð ×7Ò7Ñ9Ô9¸!Ô<ÐŒ>ð $Ø#Ð#Ø ˜3Ð Ð Ð recó—|€dSd|zdzS)z/Convert memory limit from mempages to megabytesNr'ird)rs rfrôz!CloudlinuxSummary._mempages_to_mbs€ð ˆ=Ø�4Ø�5‰y˜DÑ Ð recóh—|€dStj||pd¬¦«}|€dSt|dz d¦«S)z,Convert cpu and ncpu to percents of one coreNr)ÚlncpugY@rT)rÙÚconvert_to_kernel_formatÚround)ròrÞrs rfrñz(CloudlinuxSummary._cpu_limit_to_percents sE€ð ˆ;Ø�4ÝÔ2°3¸d¸iÀaÐHÑHÔHˆØ ˆ=Ø�4Ý�U˜U‘] AÑ&Ô&Ð&re.cóÆ—|j€Ôtt|j ¦«¦«¦«}d„|D¦«}t d„|D¦«¦«}t d„| ¦«D¦«d¬¦«|_d„|j ¦«D¦«}|r%t  dd „|D¦«¦«|jS) zC Return list of tuples [users_in_package, package] Ncó^—g|]*}|j® t|jjt¦«¯(|‘Œ+Src©Úpackager7r®rÜ©rržs rfrdz?CloudlinuxSummary.get_users_amount_per_plan..s>€ðððØØ”<Ð+µ ¸4¼<Ô;LÍcÑ0RÔ0RÐ+ðØ+Ð+Ð+rec3ó$K—|] }|jV—Œ dSrc)r%r&s rfrz>CloudlinuxSummary.get_users_amount_per_plan..$s$èè€Ð$JÐ$J°d T¤\Ð$JÐ$JÐ$JÐ$JÐ$JÐ$Jrecó$—g|] }|ddd…‘ŒS)Nr´rd)rÚitems rfrdz?CloudlinuxSummary.get_users_amount_per_plan..&s"€Ð*YÐ*YÐ*Y¸$¨4°°°"°¬:Ð*YÐ*YÐ*YreT)Úreversecó^—g|]*}|j�t|jjt¦«°(|‘Œ+Srcr$r&s rfrdz?CloudlinuxSummary.get_users_amount_per_plan..)s>€ðððØØ”<Ð'­z¸$¼,Ô:KÍSÑ/QÔ/QÐ'ðØ'Ð'Ð'rez0Found invalid package names in original data: %scó*—g|]}|j|jf‘ŒSrd)Úidr%r&s rfrdz?CloudlinuxSummary.get_users_amount_per_plan..0s!€ÐGÐGÐG°�d”g˜tœ|Ð,ÐGÐGÐGre) rùrrÐrTrêrÚsortedrfr,r-)rýrØÚusers_package_copyÚ valid_usersÚpackage_countsÚ invalid_userss rfÚget_users_amount_per_planz+CloudlinuxSummary.get_users_amount_per_plans€ð Ô Ð 'å!)­$Ð/?Ô/E×/LÒ/LÑ/NÔ/NÑ*OÔ*OÑ!PÔ!PÐ ððØ!3ðñôˆKõ %Ð$JÐ$J¸kÐ$JÑ$JÔ$JÑJÔJˆNå#)Ð*YÐ*YÀ.×BVÒBVÑBXÔBXÐ*YÑ*YÔ*YÐcgÐ#hÑ#hÔ#hˆDÔ ððØ!1Ô!7×!>Ò!>Ñ!@Ô!@ðñôˆMðð Ý× Ò ØFØGÐG¸ÐGÑGÔGñôððÔ#Ð#reÚ number_of_topcób— | |¦«|dz S#t$rYdSwxYwr)r3Ú IndexError)rýr4rØs rfr)z5CloudlinuxSummary._get_top_package_by_number_of_users4sI€ð Ø×1Ò1Ð2BÑCÔCÀMÐTUÑDUÔVÐ VøÝð ð ð Ø�4�4ð øøøs ‚   .­.cór—t|¦«\}}|s"| t|¦«¦«|S)z% Parse CLI arguments )rUr.r2)rýrûr®r³s rfròzCloudlinuxSummary._parse_args=s>€õ5°TÑ:Ô:‰ ˆ�Øð 7à × Ò ¥°Ñ!5Ô!5Ñ 6Ô 6Ð 6؈ rer©rr&r³Ú exit_coderKcóŠ—|tj¦«|dœ}|�||d<t|d¦«tj|¦«dS)z? Print data in default format for web and exit )r&r«r³NÚstatistic_enabledT)r¢r1rÁrÂ)r&r³r8rKrAs rfrÃz(CloudlinuxSummary._print_result_and_exitGsP€ð$µ$´)±+´+ÀtÐLÐLˆØ Ð +Ø+?ˆGÐ'Ñ (ݘ $Ñ'Ô'Ð'Ý Œ�ÑÔÐÐÐrerTrArµcóž—| dtj¦«i¦«t|d¦«tj|¦«dS)zŠ Print error and exit :param dict message: Dictionary with keys "result" as string and optional "context" as dict r«TN)r9r¢r1rÁrÂ)rArµs rfr.z!CloudlinuxSummary._error_and_exitVsG€ð �Š˜ ¥T¤Y¡[¤[Ð1Ñ2Ô2Ð2ݘ $Ñ'Ô'Ð'Ý Œ�ÑÔÐÐÐrecóÔ—tj d¦«rHtjddgdtjtjd¬¦«}t j|j¦«SdS)zD Return mod_lsapi info from switch_mod_lsapi script rez--statTF©r>r~r=r¿N) rŸrFrGrÉrÊrCr6rr~©rïs rfrPz$CloudlinuxSummary.get_raw_lsapi_info`sg€õ Œ7�>Š>Ð5Ñ 6Ô 6ð (Ý”Ø,¨hÐ7ØÝ!”Ý!”Øð ñôˆAõ”:˜aœhÑ'Ô'Ð 'ð (ð (recód—d}t¦«r|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-getTFr=ròcó4—i|]\}}|t|¦«“ŒSrd)rÜ)rÚkr s rfr!z9CloudlinuxSummary._get_wmt_api_config..€s$€Ð%[Ð%[Ð%[±D°A°q a­¨Q©¬Ð%[Ð%[Ð%[reN) rrŸrFrGrÉrÊrCr6rr~rrf)rrïÚwmt_api_config_summarys rfrUz%CloudlinuxSummary._get_wmt_api_configos¸€ð Bˆå Ñ Ô ð Ø �wÑ ˆGå Œ7�>Š>˜'Ñ "Ô "ð *ݔؘ.Ð)°½Z¼_ÕU_ÔUdÐlqðñôˆAõ&*¤Z°´Ñ%9Ô%9×%=Ò%=¸hÑ%GÔ%GÐ "à%[Ð%[ÐÔ>Ð>recó@—tj d¦«S)Nz/etc/cloudlinux-containerrDrdrerfr\z-CloudlinuxSummary._is_container_marker_existsŒs€åŒw�~Š~Ð9Ñ:Ô:Ð:recóª—tj d¦«r3tjddgddd¬¦«}t j|j¦«SdS)zL Return statistics from cloudlinux-ssa-manager get-stat API z /usr/sbin/cloudlinux-ssa-managerúget-statTF©r>rwr¿N©rŸrFrGrÉrÊr6rr~r>s rfrzCloudlinuxSummary.get_ssa_stats�s_€õ Œ7�>Š>Ð<Ñ =Ô =ð (Ý”Ø3°ZÐ@ÀtÐ\`ÐhmðñôˆAõ”:˜aœhÑ'Ô'Ð 'ð  (ð (recó4—d}d}d}d}tj |¦«r‹tj |¦«rlt¦«}|dkrXtj |¦«}tj |¦«}d}t ||z ¦«|krd}d}t j¦«tj 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.logÚcl8i�'rTzHAn upgrade inhibitor detected\|Workflow interrupted due to the FailPhasez'Starting stage After of phase FirstBootT)r/Nr˜z Great SUCCESS)r‹rŒ) rŸrFrGr#ÚgetmtimeÚabsr`r…rr>Únextr&)rŒÚ leapp_logfileÚelevate_cpanel_logfileÚcldeploy_logfileÚcurrent_os_versionÚ leapp_mtimeÚcldeploy_mtimeÚmonth_in_secondsÚupgrade_statusÚ fail_grep_strÚfirst_boot_grep_strÚ fail_grep_resÚfirst_boot_grep_resÚsuccess_grep_strÚgrep_resÚ stat_results rfr�z!CloudlinuxSummary.get_leapp_stats›sÍ€ð Ðà:ˆ Ø!>ÐØ2Ðå Œ7�>Š>˜-Ñ (Ô (ð *­R¬W¯^ª^Њ>˜$Ñ Ô ð 4Ý”  jÐ1¸ÈTÐY^Ð_Ñ_Ô_ˆAÝ”:˜aœhÑ'Ô'×+Ò+¨FÑ3Ô3Ð 3ð 4ð 4recó"—dddœ}td¬¦«sy|j |jd¦«\}}|�T |d|ddœS#t$r5}t  dt|¦«|¦«|cYd}~Sd}~wwxYw|S) z= Construct dict with Smart Advice statistics N)Úsmart_advice_totalÚsmart_advice_appliedT)Úskip_marker_checkz!Can't get Smart Advice statisticsr”ÚappliedzAUnexpected json response from server, field %s is missing in "%s")rrôrZrmr=r,rùrÜ)rýr&r©Úsa_statsrCs rfr:z.CloudlinuxSummary._get_smart_advice_statisticsøsÓ€ð)-ÀdÐKÐKˆõ $°dÐ;Ñ;Ô;ð "Ø $¤× =Ò =ØÔ+Ø3ñ!ô!Ñ ˆG�XðÐ#ð"Ø2:¸7Ô2CÐ]eÐfoÔ]pÐqÐqÐqøÝð"ð"ð"Ý×(Ò(Ø[Õ]`ÐabÑ]cÔ]cÐemñôðð"�M�M�M�M�M�Møøøøð "øøøð ˆ s¼A Á B Á*BÂB ÂB cóì—i}tj d¦«�rtddd¬¦«5}t j|¦«}t |¦«|d<t| ¦«¦«}d„|D¦«}t |¦«|d<t d„|D¦«¦«|d <g|d <g|d <|D]‹}|d d kr9|  d¦«}|r!|d   |d¦«ŒG|d dkr8|  d¦«}|r!|d   |d¦«ŒŒtt|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<ddd¦«n #1swxYwYtj d¦«rStddd¬¦«5}|  ¦«  ¦«|d<ddd¦«n #1swxYwY|j |jd¦«\} } | s|S|  ¦«D] \} } | || <Œ |S)zP Return statistics by parsing /var/lib/apache2nginx/server.json z!/var/lib/apache2nginx/server.jsonrWrµrNÚtotal_websitescó<—g|]}| d¦«¯|‘ŒS)Ú proxy_reasonrrs rfrdz. s)€ÐHÐHÐH °!·%²%¸Ñ2GÔ2GÐH˜1ÐHÐHÐHreÚtotal_proxy_passcó*—g|]}|ddk¯|‘ŒS)rwÚ directiverdrs rfrdz.%s)€Ð8pÐ8pÐ8p¸qÈqÐQ_ÔO`ÐdoÒOoÐOo¸ÐOoÐOoÐOoreÚproxy_pass_due_directiveÚfailing_directivesÚfailing_handlersrwrzÚ proxy_detailsræcó*—g|]}|ddk¯|‘ŒS)rwÚtestrdrs rfrdz.6ó(€Ð3fÐ3fÐ3f¸!È!ÈNÔJ[Ð_eÒJeÐJe°AÐJeÐJeÐJereÚproxy_pass_due_testcó*—g|]}|ddk¯|‘ŒS)rwÚforcedrdrs rfrdz.8s(€Ð5jÐ5jÐ5j¸AÈAÈnÔL]ÐaiÒLiÐLi°aÐLiÐLiÐLireÚproxy_pass_due_forcedcó*—g|]}|ddk¯|‘ŒS)rwrærdrs rfrdz.:s(€Ð6lÐ6lÐ6l¸QÈQÈ~ÔM^ÐbkÒMkÐMk°qÐMkÐMkÐMkreÚproxy_pass_due_handlercó*—g|]}|ddk¯|‘ŒS)rwÚincludesrdrs rfrdz.<s)€Ð7nÐ7nÐ7n¸aÈaÐP^ÔN_ÐcmÒNmÐNm¸ÐNmÐNmÐNmreÚproxy_pass_due_includescó*—g|]}|ddk¯|‘ŒS)rwÚhttprdrs rfrdz.>r�reÚproxy_pass_due_httpNz/var/lib/apache2nginx/staterYz"Can't get Max Webserver statistics)rŸrFrGr r6Úloadr¿rÐrêrrÃr¹r¾rXrôrZÚget_max_webserver_statsrf) rýrnrÂr³ÚwebsitesÚproxiedrÚfailing_directiveÚfailing_handlerr©Úmax_webserver_statÚ metric_nameÚ metric_values rfr»z(CloudlinuxSummary.get_apache2nginx_statssÉ€ðˆÝ Œ7�>Š>Ð=Ñ >Ô >ñ' hÝÐ9¸3ÈÐQÑQÔQð& hÐUVÝ”y ‘|”|�õ+.¨d©)¬)�Ð&Ñ'Ý § ¢ ¡ ¤ Ñ.Ô.�ðIÐH hÐHÑHÔH�å,/°©L¬L�Ð(Ñ)õ58Ð8pÐ8pÀGÐ8pÑ8pÔ8pÑ4qÔ4q�Ð0Ñ1à.0�Ð*Ñ+Ø,.�Ð(Ñ)Ø ðQðQ�AؘÔ(¨KÒ7Ð7Ø,-¯EªE°/Ñ,BÔ,BÐ)Ø,ðSØ!Ð"6Ô7×>Ò>¸qÀÔ?QÑRÔRÐRøØ˜>Ô*¨iÒ7Ð7Ø*+¯%ª%°Ñ*@Ô*@˜Ø*ðQØ!Ð"4Ô5×<Ò<¸Q¸Ô=OÑPÔPÐPøå.2µ3°uÐ=QÔ7RÑ3SÔ3SÑ.TÔ.T�Ð*Ñ+Ý,0µ°UÐ;MÔ5NÑ1OÔ1OÑ,PÔ,P�Ð(Ñ)å/2Ð3fÐ3f¸wÐ3fÑ3fÔ3fÑ/gÔ/g�Ð+Ñ,å14Ð5jÐ5jÀÐ5jÑ5jÔ5jÑ1kÔ1k�Ð-Ñ.å25Ð6lÐ6lÀ'Ð6lÑ6lÔ6lÑ2mÔ2m�Ð.Ñ/å36Ð7nÐ7nÀ7Ð7nÑ7nÔ7nÑ3oÔ3o�Ð/Ñ0å/2Ð3fÐ3f¸wÐ3fÑ3fÔ3fÑ/gÔ/g�Ð+Ñ,ðM& hð& hð& hñ& hô& hð& hð& hð& hð& hð& hð& høøøð& hð& hð& hð& hõR Œ7�>Š>Ð7Ñ 8Ô 8ð 2ÝÐ3°SÀ7ÐKÑKÔKð 2ÈqØ!"§¢¡¤§¢Ñ!1Ô!1��g‘ð 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$µG0H1È1H5È8H5É-*J#Ê#J'Ê*J'có¬—d}tj |¦«siStj|gddd¬¦«}t j|j¦«S)zE Return statistics from cmax-webserver-stats utility z,/usr/share/max_webserver/max-webserver-statsTFrI)rŸrFrgrÉrÊr6rr~rks rfr�z)CloudlinuxSummary.get_max_webserver_statsQs\€ð >ˆÝŒw�~Š~˜dÑ#Ô#ð ØˆIÝ ŒNØ ˆFØØØð  ñ ô ˆõ Œz˜!œ(Ñ#Ô#Ð#recó®—d}tj |¦«r3tj|dgddd¬¦«}t j|j¦«SdS)riz/usr/bin/clwpos-adminrHTFrINrJrks rfrz CloudlinuxSummary.get_wpos_statsasd€ð 'ˆÝ Œ7�>Š>˜$Ñ Ô ð (Ý”Ø�zÐ"ØØ#Øð ñôˆAõ ”:˜aœhÑ'Ô'Ð 'ð (ð (recó—d}d}d}t|d¬¦«5}|D]C}| ¦«}t|¦«dkrŒ*|d}|dkrd}Œ;|d krd}ŒD d d d ¦«n #1swxYwY|r|rd S|rd S|rd SdS)z9Detect cgroup version from /proc/mounts filesystem types.z /proc/mountsFrµrNér˜Úcgroup2TrËNÚhybridÚv2Úv1Úno_mount)r r©r¿)Ú _PROC_MOUNTSÚhas_v1Úhas_v2ÚfhrsÚfieldsÚfstypes rfrÝz$CloudlinuxSummary.get_cgroup_versionps €ð&ˆ ØˆØˆÝ �,¨Ð 1Ñ 1Ô 1ð "°RØð "ð "�ØŸš™œ�Ý�v‘;”; ’?�?ØØ œ�ؘYÒ&Ð&Ø!�F�FؘxÒ'Ð'Ø!�Føð "ð "ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð ð �fð Ø�8Ø ð Ø�4Ø ð Ø�4؈zs˜AA,Á,A0Á3A0rc)rŒN)r©NrN)rT)»rørgrhrHrÚ itertoolsÚcompressrrrr²r±r³rqr/rCrÆryrþÚ staticmethodr÷Úpropertyr rÜr rrr$r8rDr#rJrIrrcrhrqrur~rŽr”rzr¥rÌrãrærr rîrÊrúr’r rrÅrrrrrÄrPr^rtrsrrrBr˜r§r®rr¾rÁrÄr×r4rørr*r,rQrVrzrr rsÚ classmethodr~r¹rƒrˆrqrmr´rpr¸rror³rrÄrÖrrÞrr,r0r/r7r:rÐrArHrKrrNrPrRrUrWr(r_rvr‚r†r‹r�ršr r¢r¥r«r†r¶r»rÞrLrérðrõrür rrr&r-r,r2rIr‡r‘ršr§r«r_r¸r¶r·r rrrÍrórôrñÚtupler3r)ròÚobjectrØÚNoReturnrÃr.rPrUrZr[r\rr�rôrmr:r»r�rrÝrdrerfríríws€€€€€Ø<ÐØ7Ðà"� Ô"Ø$Ð$Ð$à ,ˆEÔ ,¨WÔ-DÑ EÔ EØ ,ˆEÔ ,¨WÔ-BÑ CÔ CØ ,ˆEÔ ,¨WÔ-DÑ EÔ Eð ñô€IðB€KØMÐØFÐØK€Lð $ð $ð $ðð@ð@ñ„\ð@ðððñ„Xððð˜3ðððñ„Xðð ð8ð8ñ„\ð8ðð@ð@ñ„\ð@ðððñ„\ðð - $ð-ð-ð-ð-ð^ð $ð $ñ„Xð $ðððð,ðððð  ¨ð  ð  ð  ñ„\ð  ðð;ð;ñ„\ð;ðð@¨Sð@°Sð@ð@ð@ñ„\ð@ð: ð ð ð5ð5ð5ð*#ð#ð#ð:ð$ð$ñ„\ð$ð Bð Bð Bð Bððððñ„\ððLðLðLð`ððñ„\ðð6ð  ð  ñ„\ð  ðð¨t°C¸°H¬~ðÀ$ðððñ„\ðð:+#ð+#ð+#ðZ"9ð"9ð"9ðHð : ð :°Vð :Àð :ð :ð :ñ„\ð :𠸸VÀS¸[Ô8Ið ÐPVð Ðeið Ðnrð ð ð ð ðððð:ð ð ñ„\ð ðD-ð-ð-ð^ððð ððð ð! ð!ð!ð!ñ„\ð!ðEðEðEðEð81 ð1 ð1 ð1 ðfððñ„\ðð<ððñ„\ðð*ððð(ð?ð?ñ„\ð?ð" ð ð ð ð6 ð ð ð ðB P¸À#¼ð Pð Pð Pð Pð'¨x¸¬}ð'ð'ð'ð'ðð h¨s¤mðððñ„\ðð=<ð=<ð=<ð=<ð~> Ð@Qð> ÐVZð> ð> ð> ð> ð@ Ð>Oð ÐTXð ð ð ð ð>XÐ>OðXÐTXðXðXðXðXðv=ð=ð=ð=ðK@ðK@ðK@ðK@ðZ ð ð ð M^ðM^ðM^ð^=¸(À4ÈÄ:Ô:Nð=ÐSWð=ð=ð=ð=ð,ð°d¸4´jðÀTÈ#ÈsÈ(Ä^ðððñ„[ðð(ð0%¨Dð0%¸$¸sÀC¸x¼.ð0%ÐX[ð0%Ð`dð0%ð0%ð0%ñ„[ð0%ðdØð ¨sð °tð ð ð ñ„\ñ„\ð ð:ð ¸3ð ð ð ñ„\ð ð<ðL¸$¸t¼*ðLÈÈcÐSVÈhÌðLðLðLñ„\ðLð\ ð ð ð*<ð<ð<ðð+ cð+°Tð+ð+ð+ñ„\ð+ðP¨¨d°4¬j¸$¸t¼*ÀdÈ3ÐPSÈ8ÄnÐ.TÔ(UðPðPðPðPðB:°°s¸3´xÀÀSÄÐ7IÔ1Jð:ð:ð:ð:ð:=Øð=Ø"%ð=Ø<@ÀÀcÀ¼Nð=à ˆc�5˜˜s˜Ô#Ð#Ô $ð=ð=ð=ð=ð~$!°#ð$!¸#ð$!ð$!ð$!ð$!ðLØ€Y�tÐÑÔðGðGñÔñ„\ðGð,<:ð<:ð<:ð<:ð|KCðKCðKCðKCðZ  ð  ð  ð  ðð ¨D°°c°¬Nð ð ð ñ„\ð ðð 7°ð 7ÐQTð 7ÐYaÐbeÔYfð 7ð 7ð 7ñ„\ð 7ðð 5¨sð 5ÈSð 5ÐU]Ð^aÔUbð 5ð 5ð 5ñ„\ð 5ðð\¨ð\°#ð\ð\ð\ñ„\ð\ðð " tð "°ð "ð "ð "ñ„\ð "ðð " Tð "¨cð "ð "ð "ñ„\ð "ðð  ¨Dð  °Wð  ð  ð  ñ„\ð  ð "¨dð "°sð "ð "ð "ð "ðð ¨tð ¸ð ð ð ñ„\ð ðð ¨Tð °cð ð ð ñ„\ð ð&Èð&ÐRVð&ð&ð&ð&ððl¸tðlÈCðlÐTXÐY\ÔT]ðlðlðlñ„\ðlðð¨sð°tðððñ„\ððtðtðtðtðlð! Dð!ð!ð!ñ„\ð!ð&ðððð2ððñ„\ðð ð ð ðð#ð#ñ„\ð#ðð /ð /ñ„\ð /ðð7ð7ñ„\ð7ðð °$ð ð ð ñ„\ð ðð "¨Dð "ð "ð "ñ„\ð "ðð sðððñ„\ððð°3ðððñ„\ðð ððñ„\ððb ðb ðb ðH  ð  ð  ðA VðA°¸´ ðAðAðAðAð+ ð+ ð+ ðZ ð ð ðððð2( ð( ð( ðT ð ð ð*ð$ 4ð$ð$ð$ñ„\ð$ðL ð ð ð@lðlðlð 0!¸EÀ#ÀsÈCÀ-ÔØ!$ðà/ðà4<¸UÀ3ÈÀ8¼_Ô4Mððððððððà#Ø"&ØØ04ð ð Øð à˜4‘-ð ðð ð#'¨¡+ð ð:@¼ð ð ð ñ„\ð ððð ð°3ð¸xȼ~ðððñ„\ððð ( ¨¤ð (ð (ð (ñ„\ð (ðð*ð*ñ„\ð*ð(ð>ð>ñ„\ð>ðð?ð?ñ„\ð?ðð;ð;ñ„\ð;ðð(˜8 Dœ>ð(ð(ð(ñ„\ð(ðð<˜Tð<ð<ð<ñ„\ð<ð|ðo¨Sðo°Sðoðoðoñ„\ðoð&ð4 H¨T¤Nð4ð4ð4ñ„\ð4ð¨dððððð4=¨°¬ð=ð=ð=ð=ð~ð $ X¨d¤^ð $ð $ð $ñ„\ð $ðð (˜H TœNð (ð (ð (ñ„\ð (ðð ðððñ„\ðððrerícóT—t¦«}|j ¦«|Src)r8rºÚ link_xml_node)r s rfrrˆs$€Ý ‰XŒX€FØ „O×!Ò!Ñ#Ô#Ð#Ø €Mre)Ìr>r™rÞr¦r6rörrŸr8rr}r¹rrÉrÁr¢rØÚcopyrÚ collectionsrrÚ functoolsrrÚmultiprocessingrÚpathlibr Úsocketr r r r rrrrrÚ cldetectlibr`rÙr‘r1Úcl_proc_hidepidrÚclcommonrÚclcommon.clwpos_librrrÚclcommon.constrÚclcommon.cpapirrÚ clcommon.librÚclcommon.lib.cleditionrrrÚclcommon.lib.cmt_utilsrÚclcommon.lib.constsr Úclcommon.sysctlr!Úclcommon.utilsr"r#r$r%r&r'r(r)r*r+r,Úclconfigr-r.r/Ú cldiaglibr0Ú cli_utilsr1r2Úcllimitslib_v2r3r4Ú clveconfigr5Úclwizard.modulesr6Ú lve_utilsr7rXÚlveapir8Úvendors_api.configr9r:Ú&cl_website_collector.website_collectorr;Ú$cl_website_collector.feature_managerr<Úclsummary.net_acctr=rør>Úclsummary.utilsr?r@rArBrCrDrErFrGrHrIrJrKrLrMrNrOÚclsummary.hardware_statisticsrPrQrRÚ!clsummary.rpm_packages_statisticsrSÚ arg_parserUÚstoragerVÚclselect.clselectctlrWÚclselect.clselectstatisticsrXrYrZr[r\r]Úclselector.selectorlibr^Ú lvemanagerr_r^r]Ú ImportErrorÚclflagsraÚclcagefslib.domainrhrir?r÷r,rAr)rmr•r{rrr\rrrr€r’r”r•r“r‡r‰ràÚcompileÚ IGNORECASErÊÚ MULTILINErÌrÜr«rœr’r¥r°rrÄrÇrÍrÛrár8rërírrdrerfúrÝsq ðð€€€Ø€€€Ø € € € ØÐÐÐØ € € € Ø€€€Ø € € € Ø € € € Ø€€€Ø€€€Ø € € € Ø € € € Ø € € € ØÐÐÐØ € € € Ø € € € Ø € € € ØÐÐÐÐÐØ,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ø(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø%Ð%Ð%Ð%Ð%Ð%ØÐÐÐÐÐØÐÐÐÐÐØLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLàÐÐÐØÐÐÐØ € € € Ø€€€Ø:Ð:Ð:Ð:Ð:Ð:ØÐÐÐÐÐððððððððððð #Ð"Ð"Ð"Ð"Ð"ØIÐIÐIÐIÐIÐIÐIÐIØ&Ð&Ð&Ð&Ð&Ð&ððððððððððð :Ð9Ð9Ð9Ð9Ð9Ø?Ð?Ð?Ð?Ð?Ð?Ø&Ð&Ð&Ð&Ð&Ð&ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðOÐNÐNÐNÐNÐNÐNÐNÐNÐNØ3Ð3Ð3Ð3Ð3Ð3Ø6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø#Ð#Ð#Ð#Ð#Ð#Ø(Ð(Ð(Ð(Ð(Ð(Ø:Ð:Ð:Ð:Ð:Ð:ØÐÐÐÐÐØ=Ð=Ð=Ð=Ð=Ð=Ð=Ð=àCÐCÐCÐCÐCÐCØ?Ð?Ð?Ð?Ð?Ð?ððððððððððððððððððððððððððððððððððððððððððððððð(ðððððððððð DÐCÐCÐCÐCÐCà4Ð4Ð4Ð4Ð4Ð4Ø#Ð#Ð#Ð#Ð#Ð#ð"à8Ð8Ð8Ð8Ð8Ð8ððððððððððððððððð=Ð<Ð<Ð<Ð<Ð<Ø@Ð@Ð@Ð@Ð@Ð@Ø@Ð@Ð@Ð@Ð@Ð@Ð@øØð "ð "ð "Ø2ÐØ2ÐØ1ÐØ-ÐØ1ÐØ1ÐØ0ÐØ ÐØ!ÐØ!ÐÐÐð "øøøðØ'Ð'Ð'Ð'Ð'Ð'Ð'øØðððððððððøøøð ðððððððððøððððððððððððð øøøð -€à ˆWÔ Ð3Ñ 4Ô 4€ à€Ø € Ø€ Ø#€Ø€ Ø €Ø €Ø €ð$Ð ð.%HÐ!Ø%IÐ"ðCÐð <ÐØ .ÐØ,ÐØ>Ðð +ÐØ&)Ð#ð )˜bœjÐ)KÈRÌ]Ñ[Ô[ÐØ%˜2œ:Ð&>ÀÄ ÐPRÔP\Ñ@\Ñ]Ô]ÐðI°#ðI¸%ÀÀSÀ¼/ðIðIðIðIð.˜4ð H¨S¤Mððððð #ð¨sð°xÀ´}ððððð:7˜Sð7¨ð7¸ð7ÀÀhÈsÄmÐUYÐFYÔ@Zð7ð7ð7ð7ð@ ð¨3ð°4ððððð  8¨C¤=ð °Tð ð ð ð ð¨Cð°F´OÀCÔ4Hððððð6U¨ðU°ðUðUðUðUðO<ðO<ðO<ðO<ðO<ñO<ôO<ðO<ðbxððððs6Æ(F1Æ1G Ç G ÇGÇG#Ç"G#Ç'G0Ç0 G>Ç=G>