/opt/cloudlinux/venv/lib/python3.11/site-packages/clcagefslib/__pycache__
NameSizeModeActions
cli.cpython-311.opt-1.pyc52930644editdlrm
cli.cpython-311.pyc52930644editdlrm
const.cpython-311.opt-1.pyc9320644editdlrm
const.cpython-311.pyc9320644editdlrm
domain.cpython-311.opt-1.pyc357880644editdlrm
domain.cpython-311.pyc357880644editdlrm
exceptions.cpython-311.opt-1.pyc9080644editdlrm
exceptions.cpython-311.pyc9080644editdlrm
fs.cpython-311.opt-1.pyc20010644editdlrm
fs.cpython-311.pyc20010644editdlrm
io.cpython-311.opt-1.pyc80810644editdlrm
io.cpython-311.pyc80810644editdlrm
__init__.cpython-311.opt-1.pyc1810644editdlrm
__init__.cpython-311.pyc1810644editdlrm
Edit: /opt/cloudlinux/venv/lib/python3.11/site-packages/clcagefslib/__pycache__/domain.cpython-311.pyc (35788B)
§ @EŠTÞi­ãó~—ddlZddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z mZddlmZmZddlmZddlmZdd lmZdd lmZd d lmZd d lmZd dlmZm Z m!Z!m"Z"d dl#m$Z$d dl%m&Z&m'Z'd dl(m)Z)d dl*m+Z+d dl,m-Z-m.Z.d dl/m0Z0m1Z1d„Z2d„Z3de4dzfd„Z5de4de6fd„Z7d„Z8dZ9dZ:dgZ;dd d!œZd$„Z?de4fd%„Z@d&ZAejBd ¬'¦«d(„¦«ZCd)„ZDd*„ZEd+„ZFd,„ZGd-„ZHd.„ZId/„ZJd0e4fd1„ZKd0e4fd2„ZLd0e4fd3„ZMd4„ZNd5e4fd6„ZOd7„ZPdeQfd8„ZRde4fd9„ZSdeQfd:„ZTd;„ZUd<„ZVd>de4d5e4dzfd=„ZWdS)?éN)Ú defaultdict)ÚPath)ÚClPwd)Úsetup_mount_dir_cagefsÚCAGEFSCTL_TOOL)ÚcpusersÚis_panel_feature_supported)Údocroot)ÚFeature)ÚNoDomain)ÚPyLveé)Ú user_exists)ÚUserNotFoundError)Ú admin_configÚconfigÚ jail_utilsÚ litespeed)ÚDOCROOTS_ISOLATED_BASE)Úvalidate_docrootÚvalidate_docroot_no_symlinks)Úwrite_jail_mounts_config)Úreload_processes_with_docroots)Ústart_monitoring_serviceÚstop_monitoring_service)Útrigger_xray_ini_regenerationÚtrigger_ssa_ini_regenerationcóT—tj tj¦«S©N)ÚosÚpathÚisfilerÚWEBSITE_ISOLATION_MARKER©óúFopt/cloudlinux/venv/lib/python3.11/site-packages/clcagefslib/domain.pyÚ(is_website_isolation_allowed_server_wider''s€Ý Œ7�>Š>�,Ô?Ñ @Ô @Ð@r%cóT—tj tj¦«Sr)r r!r"rÚ"WEBSITE_ISOLATION_AVAILABLE_MARKERr$r%r&Ú&is_website_isolation_feature_availabler*+s€Ý Œ7�>Š>�,ÔIÑ JÔ JÐJr%Úreturncó.—tj tj¦«}tj tj¦«}|r8|r6t jd¦«tj tjd¬¦«dS|rdS|rdSdS)uReturn the current user mode for website isolation. Returns: ``"allow_all"`` – all users allowed, denied dir lists exceptions. ``"deny_all"`` – no users allowed, allowed dir lists exceptions. ``None`` – not initialised yet. zŒBoth site-isolation.users.allowed and site-isolation.users.denied directories exist. Removing allowed directory, treating as allow_all mode.T©Ú ignore_errorsÚ allow_allÚdeny_allN) r r!ÚisdirrÚISOLATION_DENIED_DIRÚISOLATION_ALLOWED_DIRÚloggingÚwarningÚshutilÚrmtree)Ú has_deniedÚ has_alloweds r&Úget_isolation_user_moder:/s—€õ”—’�|Ô@ÑAÔA€JÝ”'—-’-¥ Ô BÑCÔC€KØð�kðåŒð Yñ ô ð õ Œ •lÔ8ÈÐMÑMÔMÐM؈{Øð؈{Øð؈zØ ˆ4r%Úusercó—tj tj¦«sdSt ¦«}|dkr tjtj|¦« S|dkrtjtj|¦«SdS)uCheck whether *user* is allowed to use website isolation. Combines the global marker with the two-mode user model: * **allow_all** – allowed unless the user is in the denied directory. * **deny_all** – denied unless the user is in the allowed directory. Fr/r0) r r!r"rr#r:Ú user_in_dirr2r3)r;Úmodes r&Ú%is_website_isolation_allowed_for_userr?Hsw€õ Œ7�>Š>�,Ô?Ñ @Ô @ð؈uÝ "Ñ $Ô $€DØ ˆ{ÒÐÝÔ+­LÔ,MÈtÑTÔTÐTÐTØ ˆzÒÐÝÔ'­ Ô(JÈDÑQÔQÐQØ ˆ5r%cój—tj tj¦«s‰t t t¦«ddd¬¦«ttj¦«}|j   dd¬¦«|  ¦«tj gd¢dd¬¦«dSdS) zCSet up mount directories and the global marker if not already done.Ú*TF)ÚprefixÚremount_cagefsÚremount_in_background)ÚparentsÚexist_ok)z/usr/bin/systemctlz try-restartzclwpos_monitoring.service)Úcapture_outputÚtextN)r r!r"rr#rÚstrrrÚparentÚmkdirÚtouchÚ subprocessÚrun)Ú marker_paths r&Ú"_ensure_isolation_mount_and_markerrPYsÁ€å Œ7�>Š>�,Ô?Ñ @Ô @ð  ÝÝ Õ&Ñ 'Ô '°Ø°uð ñ ô ð õ�<Ô@ÑAÔAˆ ØÔ× Ò ¨¸Ð Ñ=Ô=Ð=Ø×ÒÑÔÐåŒØ NÐ NÐ NØØð ñ ô ð ð ð ð  ð  r%z/etc/cagefs/proxy.commandszˆ>Ø ÝŒw�~Š~˜fÑ%Ô%ð Ø Ø ð ˜7×+Ò+¨DÑ1Ô1ð Ø �t‰OˆGØ�cÐ&Ð&˜FÐ&Ð&Ð&Ñ&ˆØˆˆØ �Eˆ>Ðr%có‡—d}| ¦«D]e\Š}‰|vrŒ tj |¦«rŒ*| d¬¦«}ˆfd„|D¦«}d |¦«}d}Œf||fS)z°Remove proxy entries whose binaries no longer exist on disk. Returns the (possibly updated) content string and a bool indicating whether any entries were removed. FT)ÚkeependscóD•—g|]}| ‰›d�¦«°|‘ŒS)rU)Ú startswith)Ú.0Úlr\s €r&ú z)_remove_proxy_entries..›s0ø€ÐAÐAÐA�q¨¯ª¸°i°i°iÑ)@Ô)@ÐA�ÐAÐAÐAr%Ú)rVr r!rWÚ splitlinesÚjoin)rYrZÚremovedr]Úlinesr\s @r&Ú_remove_proxy_entriesrkŽsœø€ð €GØ—}’}‘”ðð‰ ˆˆVØ �gÐ Ð Ø Ý Œ7�>Š>˜&Ñ !Ô !ð Ø Ø×"Ò"¨DÐ"Ñ1Ô1ˆØAÐAÐAÐA˜EÐAÑAÔAˆØ—'’'˜%‘.”.ˆØˆˆØ �GÐ Ðr%có— ttdd¬¦«5}| ¦«}ddd¦«n #1swxYwYn#t$rd}YnwxYwd}d|vrEt jdt¦«|r| d ¦«s|d z }|td zz }d }t|t¦«\}}|rt jd t¦«d }t|t¦«\}}|rt jd t¦«d }|sdStj   t¦«}tj|d ¬ ¦«tj|d¬¦«\}} tj|dd¬¦«5}| |¦«ddd¦«n #1swxYwYtj|t¦«n##t($rtj|¦«‚wxYwd  t.¦«d z ¦«}t3jt6ddg|t2jt2jd¬¦«t3jt6dgt2jt2jd¬¦«dS)aÍRegister the ``cagefsctl-user`` proxyexec alias if not already present. Appends the ``CAGEFSCTL_USER`` entry to ``/etc/cagefs/proxy.commands`` and runs ``cagefsctl --update-list`` to pull the required binaries into the CageFS skeleton. This is a no-op when the entry already exists. Also registers/unregisters the LVD helper binaries (``lvd-registry-helper``, ``lvd-limits-helper``) depending on whether they are present on disk. Úrzutf-8)ÚencodingNrfFÚCAGEFSCTL_USERz Registering cagefsctl-user in %srTTzRegistering LVD helpers in %sz"Removing stale LVD helpers from %s)rFz.proxy.commands.)ÚdirrBÚwz --wait-lockz --update-list)ÚinputÚstdoutÚstderrÚcheckz--update-wrappers)rsrtru)ÚopenÚPROXY_COMMANDS_PATHÚreadÚFileNotFoundErrorr4ÚinforXÚCAGEFSCTL_USER_PROXY_ENTRYr^ÚLVD_PROXY_ENTRIESrkr r!ÚdirnameÚmakedirsÚtempfileÚmkstempÚfdopenÚwriteÚreplaceÚ BaseExceptionÚunlinkrhÚCAGEFSCTL_USER_BINARIESÚencoderMrNrÚDEVNULL) ÚfrYÚchangedr[riÚ proxy_dirÚfdÚtmp_pathÚ update_lists r&Úensure_proxyexec_commandr�¡s€ðÝ Õ% s°WÐ =Ñ =Ô =ð ÀØ—f’f‘h”hˆGð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øøå ðððØˆˆˆðøøøð€Gà˜wÐ&Ð&ÝŒ Ð7Õ9LÑMÔMÐMØ ð ˜7×+Ò+¨DÑ1Ô1ð Ø �t‰OˆGØÕ-°Ñ4Ñ4ˆØˆå'¨Õ1BÑCÔC�N€GˆUØ ðÝŒ Ð4Õ6IÑJÔJÐJ؈å,¨WÕ6GÑHÔHÑ€GˆWØðÝŒ Ð9Õ;NÑOÔOÐO؈à ð؈唗’Õ 3Ñ4Ô4€IÝ„K�  DÐ)Ñ)Ô)Ð)ÝÔ#¨ Ð:LÐMÑMÔM�L€BˆðÝ ŒY�r˜3¨Ð 1Ñ 1Ô 1ð °QØ �GŠG�GÑ Ô Ð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å Œ �8Õ0Ñ1Ô1Ð1Ð1øÝ ðððÝ Œ �(ÑÔÐØ ðøøøð—9’9Õ4Ñ5Ô5¸Ñ<×DÒDÑFÔF€KÝ„NÝ ˜¨Ð8ØÝÔ!ÝÔ!Øð ñôðõ„NÝ Ð,Ð-ÝÔ!ÝÔ!Øð ñôðððs^‚A™:® Aº>¾AÁ>ÁAÁ AÁAÅ'GÅ>F Æ GÆ F$Æ$GÆ'F$Æ(GÇ G&có€—t¦«t¦«}|dkrNd}tjtjtjd¬¦«tjtj d¬¦«nMd}tjtj tjd¬¦«tjtjd¬¦«|S)uFlip the isolation user mode without modifying any per-user state. Unlike :func:`allow_website_isolation_server_wide` and :func:`deny_website_isolation_server_wide`, this function only flips the mode indicator directories. It does **not** clean up existing user isolation or alter the per-user exception lists. * ``allow_all`` → ``deny_all`` * ``deny_all`` → ``allow_all`` * not initialised → ``allow_all`` Returns: The new mode after toggling (``"allow_all"`` or ``"deny_all"``). r/r0T©r>rFr-) rPr:r r~rr3ÚDIR_MODEr6r7r2)ÚcurrentÚnew_modes r&Útoggle_isolation_user_moder•äs¦€õ'Ñ(Ô(Ð(Ý%Ñ'Ô'€GØ�+ÒÐØˆÝ Œ •LÔ6½\Ô=RÐ]aÐbÑbÔbÐbÝŒ •lÔ7ÀtÐLÑLÔLÐLÐLðˆÝ Œ •LÔ5½LÔŠ>ÕDÑ EÔ EÐEr%có°—ttj¦«sdSt¦«sdSt ¦«sdSt jdd|gdd¬¦«dS)z;Create LVP infrastructure for user via lvectl (idempotent).Nú/usr/sbin/lvectlzallow-domain-limitsT©rurG©r r ÚLVEr�r rMrN©Úusernames r&Ú_allow_domain_limitsr¨'sr€å %¥g¤kÑ 2Ô 2ðØˆÝ #Ñ %Ô %ðØˆÝ &Ñ (Ô (ðàˆÝ„NÐ&Ð(=¸xÐHبdð4ñ4ô4ð4ð4ð4r%có�—ttj¦«sdSt¦«sdSt jdd|gdd¬¦«dS)z1Tear down LVP infrastructure for user via lvectl.Nr¢zdeny-domain-limitsTr£©r r r¥r�rMrNr¦s r&Ú_deny_domain_limitsr«4s_€å %¥g¤kÑ 2Ô 2ðØˆÝ #Ñ %Ô %ð؈݄NÐ&Ð(<¸hÐGبdð4ñ4ô4ð4ð4ð4r%có°—ttj¦«sdSt¦«sdSt ¦«sdSt jdd|gdd¬¦«dS)z0Register domain LVE under user's LVP via lvectl.Nr¢zenable-domain-limitsTr£r¤©r;Údomains r&Ú_register_domain_lver¯>sr€å %¥g¤kÑ 2Ô 2ðØˆÝ #Ñ %Ô %ðØˆÝ &Ñ (Ô (ðàˆÝ„NØ Ð3°VÐ<Ø 4ðñôðððr%có�—ttj¦«sdSt¦«sdSt jdd|gdd¬¦«dS)z!Unregister domain LVE via lvectl.Nr¢zdisable-domain-limitsTr£rªr­s r&Ú_unregister_domain_lver±Ms_€å %¥g¤kÑ 2Ô 2ðØˆÝ #Ñ %Ô %ð؈݄NØ Ð4°fÐ=Ø 4ðñôðððr%có˜—t¦«t¦«tjtjtjd¬¦«tjtj d¬¦«t¦«D]S}t|¦«sŒ t|¦«Œ##tjtf$rt!jd|¦«YŒPwxYwdS)u@Switch to *allow_all* mode – all users are allowed by default.Tr‘r-z5Failed to enable domain limits for user %s, skipping.N)rPr�r r~rr2r’r6r7r3rrr¨rMÚCalledProcessErrorr™r4Ú exceptionr¦s r&Ú#allow_website_isolation_server_widerµYsÞ€å&Ñ(Ô(Ð(ÝÑÔÐå„K• Ô1½ Ô8MÐX\Ð]Ñ]Ô]Ð]å „M•,Ô4ÀDÐIÑIÔIÐIå‘I”Ið ð ˆÝ˜8Ñ$Ô$ð Ø ð Ý  Ñ *Ô *Ð *Ð *øÝÔ-­wÐ7ð ð ð Ý Ô ØGØñ ô ð ð ð ð øøøð ð s BÂ+CÃCcó˜—t¦«t¦«D]S}t|¦«sŒ t|¦«Œ##tjt f$rtjd|¦«YŒPwxYwt¦«tj tj tjd¬¦«tjtjd¬¦«dS)uˆSwitch to *deny_all* mode – no users are allowed by default. Disables domain isolation for every user and switches the mode. z6Failed to disable domain limits for user %s, skipping.Tr‘r-N)Ú_cleanup_all_users_isolationrrr«rMr³r™r4r´rPr r~rr3r’r6r7r2r¦s r&Ú"deny_website_isolation_server_wider¸osÞ€õ !Ñ"Ô"Ð"å‘I”Ið ð ˆÝ˜8Ñ$Ô$ð Ø ð Ý  Ñ )Ô )Ð )Ð )øÝÔ-­wÐ7ð ð ð Ý Ô ØHØñ ô ð ð ð ð øøøõ 'Ñ(Ô(Ð(å„K• Ô2½Ô9NÐY]Ð^Ñ^Ô^Ð^å „M•,Ô3À4ÐHÑHÔHÐHÐHÐHs°AÁ+A.Á-A.r§có¤—t¦«t¦«t¦«}|dkr tjtj|¦«np|dkr tjtj|¦«nJtj tjtj d¬¦«tjtj|¦«t|¦«dS)u;Allow website isolation for *username* (mode-aware). * **allow_all** – removes *username* from the denied directory. * **deny_all** – adds *username* to the allowed directory. * **not initialised** – sets up infrastructure in *deny_all* mode with *username* as the first allowed user. r/r0Tr‘N) rPr�r:rÚremove_user_from_dirr2Úadd_user_to_dirr3r r~r’r¨©r§r>s r&Ú allow_website_isolation_for_userr½‰s¹€õ'Ñ(Ô(Ð(ÝÑÔÐÝ "Ñ $Ô $€DØ ˆ{ÒÐÝÔ)­,Ô*KÈXÑVÔVÐVÐVØ �Ò Ð ÝÔ$¥\Ô%GÈÑRÔRÐRÐRõ Œ •LÔ6½\Ô=RÐ]aÐbÑbÔbÐbÝÔ$¥\Ô%GÈÑRÔRÐRå˜Ñ"Ô"Ð"Ð"Ð"r%cóô—t¦«}|dkr tjtj|¦«n%|dkrtjtj|¦«t |¦«t|¦«dS)u÷Deny website isolation for *username* (mode-aware). * **allow_all** – adds *username* to the denied directory. * **deny_all** – removes *username* from the allowed directory. Also disables all domain isolation for the user. r/r0N)r:rr»r2rºr3Ú_cleanup_user_isolationr«r¼s r&Údeny_website_isolation_for_userrÀ sx€õ #Ñ $Ô $€DØ ˆ{ÒÐÝÔ$¥\Ô%FÈÑQÔQÐQÐQØ �Ò Ð ÝÔ)­,Ô*LÈhÑWÔWÐWõ˜HÑ%Ô%Ð%ݘÑ!Ô!Ð!Ð!Ð!r%có˜—t|¦«sdStj|¦«}d„|jD¦«}|jrk t j|¦«n%#t $rtjd|¦«YnwxYwt|t|  ¦«¦«¬¦«t¦«}|  ¦«D]Ÿ\}}|€Œ ttj|¦«¦«dz tj|¦«z }tj||¦«| t)|¦«¦«Œz#t*$rtjd||¦«YŒœwxYwtj|¦«D]v\}}t)|¦«|vrŒ t/j|d¬¦«| t)|¦«¦«ŒQ#t*$rtjd ||¦«YŒswxYwt3d „tj|¦«D¦«¦«s)tj|d¬ ¦«t7|d¬ ¦«dSdS) z?Remove all domain isolation state for a single user. CLOS-6888.Ncó.—i|]}|t|¦«“ŒSr$©Ú_get_docroot_or_none©rcÚds r&ú z+_cleanup_user_isolation..¸s0€ðððØ'(ˆÕ  Ñ "Ô "ðððr%z8Failed to remove LiteSpeed dedicated PHP handlers for %s©Úfilter_by_docrootsz.cagefs/websitez4Failed to remove website token for user %s domain %sFr-z,Failed to sweep website token %s for user %sc3óK—|]}dV—ŒdS)TNr$)rcÚ_s r&ú z*_cleanup_user_isolation..ýs"èè€ÐKÐK˜ˆtÐKÐKÐKÐKÐKÐKr%)r)Ú user_config)rrÚload_user_configÚenabled_websitesrÚ!remove_all_dedicated_php_handlersÚ Exceptionr4r´rÚlistÚvaluesÚsetrVrrÚget_user_var_cagefs_pathÚget_website_idÚremove_website_token_directoryÚaddrIr™Úiter_user_website_tokensr6r7ÚanyÚsave_user_configr)r§Úuser_cfgÚdomain_docroot_mapÚremoved_leavesr®ÚdrÚleafÚ_stored_docroots r&r¿r¿³sØ€å �xÑ Ô ð؈ÝÔ& xÑ0Ô0€HððØ,4Ô,EðñôÐðÔ ð  ð Ý Ô 7¸Ñ AÔ AÐ AÐ AøÝð ð ð Ý Ô ØJØñ ô ð ð ð ð øøøõ 'Ø ­Ð.@×.GÒ.GÑ.IÔ.IÑ)JÔ)Jð ñ ô ð õ‘U”U€Nð )×.Ò.Ñ0Ô0ðð‰ ˆ�Ø ˆ:Ø ð å•ZÔ8¸ÑBÔBÑCÔCØ#ñ$åÔ+¨BÑ/Ô/ñ0ð õ Ô 5°hÀÑ CÔ CÐ CØ × Ò �s 4™yœyÑ )Ô )Ð )Ð )øÝð ð ð Ý Ô ØFؘ&ñ ô ð ð ð ð øøøõ",Ô!DÀXÑ!NÔ!Nð ð шˆoÝ ˆt‰9Œ9˜Ð &Ð &Ø ð Ý ŒM˜$¨eÐ 4Ñ 4Ô 4Ð 4Ø × Ò �s 4™yœyÑ )Ô )Ð )Ð )øÝð ð ð Ý Ô Ø>Ø�hñ ô ð ð ð ð øøøõ* ÐKÐK�ZÔ@ÀÑJÔJÐKÑKÔKÑ KÔ Kð=ÝÔ °Ð6Ñ6Ô6Ð6Ý  °tÐ<Ñ<Ô<Ð<Ð<Ð<ð=ð=s6¿AÁA6Á5A6ÃA0EÅ E(Å'E(Æ8GÇ G3Ç2G3có@—tt¦«¦«}d„t¦«D¦«}t||z¦«D]7} t |¦«Œ#t $rt jd|¦«YŒ4wxYwt¦«}|st¦«dSdS)zÿRemove domain isolation state for every user that has it. CLOS-6888 Path 3: iteration widens to "users named by the registry" UNION "users with a per-site token on disk" so accounts whose registry entry is already gone still get visited. có:—h|]}tj|¦«¯|’ŒSr$)rÚhas_on_disk_website_tokens©rcÚus r&ú z/_cleanup_all_users_isolation.. s)€ÐZÐZÐZ˜qµÔ1VÐWXÑ1YÔ1YÐZ˜ÐZÐZÐZr%z:Unable to disable website isolation for user %s, skipping.N) rÔÚ#users_with_enabled_domain_isolationrÚsortedr¿rÑr4r´r)Úusers_with_registryÚusers_with_tokensr§Ú users_lefts r&r·r·sÖ€õÕAÑCÔCÑDÔDÐØZÐZ¥G¡I¤IÐZÑZÔZÐÝÐ.Ð1BÑBÑCÔCððˆð Ý # HÑ -Ô -Ð -Ð -øÝð ð ð Ý Ô ØLØñ ô ð ð ð ð øøøõ 5Ñ6Ô6€JØ ð"ÝÑ!Ô!Ð!Ð!Ð!ð"ð"sÁ AÁA;Á:A;r®có^— t|¦«dS#ttf$rYdSwxYw)Nr)Úget_domain_docrootr Ú IndexError)r®s r&rÄrÄsA€ðÝ! &Ñ)Ô)¨!Ô,Ð,øÝ •jÐ !ððð؈tˆtðøøøs ‚—,«,có®—t¦«sdS tj|¦«}n#t$rYdSwxYwtj |¦«S)NF)r'rÚget_jail_config_pathrr r!rW)r;Údomains_config_paths r&Úis_isolation_enabledróse€Ý 3Ñ 5Ô 5ð؈uðÝ(Ô=¸dÑCÔCÐÐøÝ ððð؈uˆuðøøøå Œ7�>Š>Ð-Ñ .Ô .Ð.s ’'§ 5´5cóp—d„t¦«D¦«}i}|D]}t|¦«}|r|||<Œ|S)NcóN—g|]"}t|¦«¯t|¦«¯ |‘Œ#Sr$)rrórås r&rez7users_with_enabled_domain_isolation..*s1€Ð PÐ PÐ P�1¥[°¡^¤^Ð PÕ8LÈQÑ8OÔ8OÐ PˆQÐ PÐ PÐ Pr%)rÚ#get_websites_with_enabled_isolation)ÚusersÚuser_domain_pairsr;Údomains_with_isolations r&rèrè)sV€Ø PÐ P�™ œ Ð PÑ PÔ P€EØÐØð=ð=ˆÝ!DÀTÑ!JÔ!JÐØ !ð =Ø&<Ð ˜dÑ #øØ Ðr%có€—t|¦«stjd|¦«gStj|¦«jS)Nz=User %s not found, cannot get websites with enabled isolation)rr4r5rrÎrÏ)r;s r&rörö3sG€Ý �tÑ Ô ðÝŒØ KÈTñ Sô Sð Sàˆ Ý Ô " 4Ñ (Ô (Ô 9Ð9r%có—t¦«}tt¦«}| ¦«D]S\}}|D]K} t |¦«d}n#t t f$rYŒ,wxYw|| |¦«ŒLŒT|S)zÓ Returns pairs user: set(docroots) for all users with website isolation enabled Used by monitoring service to watch docroots changes to load actual list of docroot paths instead of stale storage r)rèrrÔrVrîr rïrØ)Úusers_with_isolationÚpairsr;Údomainsr®rßs r&Ú!get_docroots_of_isolated_websitesrÿ;s®€õ ?Ñ@Ô@ÐÝ �Ñ Ô €EØ-×3Ò3Ñ5Ô5ð ð ‰ ˆˆgØð ð ˆFð Ý'¨Ñ/Ô/°Ô2��øÝ�jÐ)ð ð ð Ø�ð øøøà �$ŒK�OŠO˜BÑ Ô Ð Ð ð  ð €LsÁAÁA+Á*A+cóÒ—t|¦«stjd|¦«dStj|¦«} t t |¦«d¦«}t|t¦«  |¦«j ¦«n/#t$r"}tjd|||¦«Yd}~dSd}~wwxYw||j vr|j   |¦«tj||¦«tj||¦«tj||¦«t%jddd|gd¬¦«t)||¦« t+j||¦«n&#t.$rtjd ||¦«YnwxYwt3|t5|¦«g¬ ¦«t7¦«t9||¦«t;|¦«t=||¦«dS) Nz2User %s not found, cannot enable website isolationrz4Skipping website isolation for user %s domain %s: %sÚ cagefsctlú--rebuild-alt-php-iniú--domainT©ruz9Failed to apply LiteSpeed dedicated PHP handler for %s/%srÈ)rr4r5rrÎrrîrrÚget_pw_by_nameÚpw_dirÚ ValueErrorrÏÚappendrÚcreate_website_token_directoryÚ create_overlay_storage_directoryrÛrMrNrrÚenable_dedicated_php_handlerrÑr´rrÄrrrr¯)r;r®rÍÚ document_rootÚexcs r&Úenable_website_isolationrMs5€Ý �tÑ Ô ðÝŒØ @À$ñ Hô Hð HàˆÝÔ)¨$Ñ/Ô/€KðÝ(Õ);¸FÑ)CÔ)CÀAÔ)FÑGÔGˆ Ý$ ]µE±G´G×4JÒ4JÈ4Ñ4PÔ4PÔ4WÑXÔXÐXÐXøÝ ðððÝŒØ BØ �&˜#ñ ô ð 𠈈ˆˆˆøøøøð øøøð �[Ô1Ð1Ð1ØÔ$×+Ò+¨FÑ3Ô3Ð3õÔ-¨d°MÑBÔBÐBÝÔ/°°mÑDÔDÐDå Ô˜D +Ñ.Ô.Ð.õ„N�KÐ!8¸*ÀfÐMÐUYÐZÑZÔZÐZå˜T ;Ñ/Ô/Ð/ð WÝÔ.¨t°]ÑCÔCÐCÐCøÝ ðWðWðWÝÔØ GÈÈvñ Wô Wð Wð Wð WðWøøøõ# 4Õ=QÐRXÑ=YÔ=YÐÔ >Ð >Ø ˆHˆHˆHˆHøøøøð øøøð ×Ò˜fÑ%Ô%Ð%Ð%Ý ˆ>ÑÔ�c +Ô">Ñ?Ô?Ò?Ð?ð (6ˆ Ô$ÝÔ  kÑ2Ô2Ð2Ð2à'5ˆ Ô$ݘT ;Ñ/Ô/Ð/ð$ð Ø*ð ð ‰JˆF�Bð QÝ& t¨VÑ4Ô4Ð4Ð4øÝÔ1µ7Ð;ð Qð Qð QÝÔ!ØGÈñQôQðQðQðQð Qøøøõ ŒOðIð�fñ  ô ð ð ð€NØÔ.ððˆÝ,¨VÑ4Ô4ˆ Ø Ð Ý ŒOðKàñ ô ð ð à×Ò˜mÑ,Ô,Ð,ð å Ô 5°d¸MÑ JÔ JÐ JÝ Ô 7¸¸mÑ LÔ LÐ Lõ ŒNØÐ5°zÀ6ÐJØð ñ ô ð ð øõð ð ð Ý ŒMÐTÐV\Ð^_Ñ `Ô `Ð `Ø ˆHˆHˆHˆHøøøøð øøøðQÝÔ2°4¸ÑHÔHÐHÐHøÝ ðQðQðQÝÔØ IÈ4ñ Qô Qð Qð Qð QðQøøøð ðð ð &Õ$GÑ$IÔ$Ið &Ý #Ñ %Ô %Ð %؈å" 4¸NÐKÑKÔKÐKÐKÐKsUÂB6Â6 C8Ã.C3Ã3C8Å4FÆ+F3Æ2F3ÈAIÉ JÉ$I?É?JÊJÊKÊ?KcóZ—t|¦«stjd|¦«dStj|¦«}d}g}|€-t |j¦«}d„|jD¦«}g|_n6||jvr-|g}t|¦«g}|j |¦«tj ||¦«t||¦«|ry tj |d„|jD¦«¦«n%#t$rtjd|¦«YnwxYwt||¬¦«|D]}|€Œt!j||¦«Œ|D]D} t%||¦«Œ#t&jt*f$rtjd|¦«YŒAwxYwt-¦«}|st/¦«dSdS)Nz3User %s not found, cannot disable website isolationcó,—g|]}t|¦«‘ŒSr$rÃ)rcÚwebsites r&rez-disable_website_isolation...s.€ð ð ð Ø.5Õ  Ñ )Ô )ð ð ð r%có,—g|]}t|¦«‘ŒSr$rÃrÅs r&rez-disable_website_isolation..Bs!€ÐOÐOÐO¨QÕ% aÑ(Ô(ÐOÐOÐOr%rrÈr)rr4r5rrÎrÒrÏrÄÚremoverÛrrrrÑr´rrr×r±rMr³r™rèr)r;r®rÍÚreload_docrootsÚdomains_to_unregisterr rÆrüs r&Údisable_website_isolationr##sm€Ý �tÑ Ô ðÝŒØ AÀ4ñ Iô Ið IàˆÝÔ)¨$Ñ/Ô/€KØ€OØÐà €~Ý $ [Ô%AÑ BÔ BÐð ð Ø9DÔ9Uð ñ ô ˆð(*ˆ Ô$Ð$Ø �;Ô/Ð /Ð /Ø!' ÐÝ/°Ñ7Ô7Ð8ˆØÔ$×+Ò+¨FÑ3Ô3Ð3å Ô˜D +Ñ.Ô.Ð.ݘT ;Ñ/Ô/Ð/ØðKð  UÝ Ô 6ØØOÐO°+Ô2NÐOÑOÔOñ ô ð ð øõð Uð Uð UÝ Ô ØMÈtñ Uô Uð Uð Uð Uð Uøøøõ ' tÀÐPÑPÔPÐPØ,ð Kð KˆMØÐ$ØÝ Ô 5°d¸MÑ JÔ JÐ JÐ Jà "ðHðHˆð HÝ " 4¨Ñ +Ô +Ð +Ð +øÝÔ-­wÐ7ð Hð Hð HÝ Ô ØCÀQñ Hô Hð Hð Hð Hð Høøøõ ?Ñ@Ô@ÐØ ð"ÝÑ!Ô!Ð!Ð!Ð!ð"ð"s$à $C1Ã1DÄDÅ EÅ+FÆFr)XÚ functoolsr4r r6rMrÚ collectionsrÚpathlibrÚclcommonrÚclcommon.clcagefsrrÚclcommon.cpapirr r rîÚclcommon.constr Úclcommon.cpapi.cpapiexceptionsr Úlve_utils.pylve_wrapperr ÚfsrÚ exceptionsrÚ webisolationrrrrÚwebisolation.configrÚwebisolation.docroot_validationrrÚ webisolation.jail_config_builderrÚwebisolation.phprÚwebisolation.servicerrÚwebisolation.triggersrrr'r*rIr:Úboolr?rPrwr{r†r|r^rkr�r•rŸÚ lru_cacher�r r¨r«r¯r±rµr¸r½rÀr¿r·rÄróÚdictrèrörÿrrr#r$r%r&úr9sŠððÐÐÐØ€€€Ø € € € Ø € € € ØÐÐÐØ€€€Ø#Ð#Ð#Ð#Ð#Ð#ØÐÐÐÐÐàÐÐÐÐÐØDÐDÐDÐDÐDÐDÐDÐDØ>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ø8Ð8Ð8Ð8Ð8Ð8Ø"Ð"Ð"Ð"Ð"Ð"Ø3Ð3Ð3Ð3Ð3Ð3à)Ð)Ð)Ð)Ð)Ð)àÐÐÐÐÐØ)Ð)Ð)Ð)Ð)Ð)ØEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEØ7Ð7Ð7Ð7Ð7Ð7Ø[Ð[Ð[Ð[Ð[Ð[Ð[Ð[ØFÐFÐFÐFÐFÐFØ<Ð<Ð<Ð<Ð<Ð<ØSÐSÐSÐSÐSÐSÐSÐSØ^Ð^Ð^Ð^Ð^Ð^Ð^Ð^ðAðAðAðKðKðKð  t¡ððððð2°ð¸ððððð" ð ð ð$3ÐØ[ÐððÐð FØAððÐð ððð*ððð&@ð@ð@ðF CðððððJ/ð+ð €Ô˜QÐÑÔð "ð "ñ Ôð "ðFðFðFð 4ð 4ð 4ð4ð4ð4ð ð ð ð ð ð ðððð,IðIðIð4#¨sð#ð#ð#ð#ð."¨cð"ð"ð"ð"ð&L= cðL=ðL=ðL=ðL=ð^"ð"ð"ð, ððððð/ð/ð/ð¨Tððððð:¨cð:ð:ð:ð:ð¨4ððððð$?'ð?'ð?'ðDQLðQLðQLðh4"ð4" Cð4"°°t±ð4"ð4"ð4"ð4"ð4"ð4"r%