Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
ó �àfc@sþddlZddlZddlmZddlmZddlmZmZm Z de fd„ƒYZ d„Z d„Z d „Zd „Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZdS(iÿÿÿÿN(tetree(tdeepcopy(tpretty_version_keyst cpanel_whmapitdump_loaded_modulestSelectorStatExceptioncBseZdZRS(s Inner exception class (t__name__t __module__t__doc__(((s3/usr/share/lve/modlscapi/user/selector_usage_lib.pyRscCs(djtjdƒƒjƒ}|dkS(sÀ Check status of cagefs - installed & enabled If not - selector is not applied, no need to query its settings :return: True is cagefs is installed and enabled, False otherwise ts#/usr/sbin/cagefsctl --cagefs-statustEnabled(tjoint exec_commandtstrip(t cagefs_status((s3/usr/share/lve/modlscapi/user/selector_usage_lib.pytcagefs_enabledsccs�djtjdƒƒ}ytj|ƒjdƒ}Wntk rMd}nXx,|D]$}|d}|dkrU|VqUqUWdS(s` Retrieve versions from selector, EXCEPT native :return: selector versions iterator R s%/usr/bin/selectorctl --summary --jsontPHPConfigurationtversiontnativeN((R R tjsontloadstgett ValueError(t selector_datatselector_versionstitemtver((s3/usr/share/lve/modlscapi/user/selector_usage_lib.pytget_selector_versionss     csGdjtjdjdˆƒƒƒ}t‡fd†|jdƒDƒƒS(s« Retrieve selector users for given version :param version: selector version, e.g 7.2 :return: dict user: version, e.g. {user: alt-php72, user1: alt-php72} R s//usr/bin/selectorctl --list-users --version={v}tvc3s*|] }|r|tˆdƒfVqdS(salt-phpN(R(t.0tu(R(s3/usr/share/lve/modlscapi/user/selector_usage_lib.pys 2st,(R R tformattdicttsplit(Rtusers((Rs3/usr/share/lve/modlscapi/user/selector_usage_lib.pytget_selector_users+s$cCsDtƒstƒStƒ}x$tƒD]}|jt|ƒƒq#W|S(sY Retrieve versions set for users in selector :return: dict { user: version } (RR!RtupdateR$(t users_verR((s3/usr/share/lve/modlscapi/user/selector_usage_lib.pytget_selector_usage5s   c Cstdƒjdƒ}|j|ƒdkr.|Sd|kr dtƒkr t|ƒ}t|ƒ}t|ƒ}t|j|tƒƒ|ƒ\}}|||tXMLSyntaxErrort ParseErrorR(tqueryR5t xml_resulttrootRXt domain_namet user_name((s3/usr/share/lve/modlscapi/user/selector_usage_lib.pyRVís $cCsq|rm|j|tƒƒ}|j|jdtƒƒƒ|ji||6ƒy |d=Wqmtk riqmXn|S(s\ Unify `custom` domains with `real_version` domains, clear `custom` key from resulting `version`: `set of domains` mapping :param versions_mapping: final merged structure of domains :param real_version: version, to which Plesk resolves custom :return: final mapping with `custom` domains unified with `real_version` domains RN(RR.R%RJ(tversions_mappingt real_versiontreal_version_domains((s3/usr/share/lve/modlscapi/user/selector_usage_lib.pyRPÿs  cCs\|rMt|ƒ}t|ƒ}t||ƒ\}}ti||6|ƒ}|Si||6SdS(sv Check DA selector settings :param primary_ver_domains: set of domains using primary version, e.g. php1_release :param domains_per_user: user--domain correspondence :param primary_php: php version set in options.conf as php1_ver, only this version is affected by selector :return: set of domains per primary version checked against selector settings N(R,RR-R0(tprimary_ver_domainstdomains_per_usert primary_phpR6R7R8R9RM((s3/usr/share/lve/modlscapi/user/selector_usage_lib.pytda_selector_checks   (RR tlxmlRtcopyRt stat_utilsRRRt ExceptionRRRR$R'R<R+R,R-R0RSRORURTRVRPRj(((s3/usr/share/lve/modlscapi/user/selector_usage_lib.pyts*     2   !