$Fi!dZddlZddlZddlZddlmZddlmZddlm Z m Z m Z m Z m Z  ddlmZmZn#e$r dZd ZYnwxYwejeZdd Zdd Zd ed dfdZd ed dfdZdS)z Website isolation support for SSA (clos_ssa.ini) files. This module provides functions to manage clos_ssa.ini files in per-website directories when CageFS website isolation is enabled. N)iglob) disable_quota) INI_FILE_NAMEINI_USER_LOCATIONS_BASE$INI_USER_LOCATIONS_WEBSITE_ISOLATIONis_excluded_pathextract_php_version)(is_website_isolation_allowed_server_wideis_isolation_enabledcdSNFrL/opt/cloudlinux/venv/lib64/python3.11/site-packages/ssa/website_isolation.pyr r "urcdSrr)users rr r %rrreturnc tsdSi}tD]6}t|dD]}t|r |d|}n"#td|YExYwt j|t}t j |s t|5}t|}|r+| |j|jf||j|f<dddn #1swxYwY#t"$rtd|YwxYw8|sdSt'}t(D]}t|dD]}t|r |d|}n"#td|YExYwt+|js]t|}|so|j|f} | |vr}|| \} } } t j|t}t j t j|s || | 5t/5t|d5}|| dddn #1swxYwYdddn #1swxYwYdddn #1swxYwY||j#t"$r4} td|t5| Yd} ~ d} ~ wwxYw|D]}t7|dS)z Copy clos_ssa.ini files from base user paths to per-website directories. :param user_context_func: Context manager function for user permissions Npathr!Cannot get pw_record for path: %szFailed to read %swFailed to create %s: %s)r rrr loggerdebugosrjoinrexistsopenr readpw_uidpw_gidpw_name Exceptionwarningsetrr dirnamerwriteaddstr"_regenerate_user_website_isolation)user_context_funcbase_ini_fileslocationdir_path pw_recordini_filefphp_ver created_inikeycontentuidgideusernames r$copy_inis_to_website_isolation_pathsr<+s 4 5 5N+hv.//  H))  ,HV,X66   @(KKKw||Hm<>(++  (^^q1(;;GFFHHi&6 8HH (97'CD    2H=== ) 0 %%K9hv.//  H))  ,HV,X66   @(KKK' (9:: )(33G $g.C.(( .s 3 GS#w||Hm<>"'//(";";<<  &&sC00))-//))h,,)((())))))))))))))))))))))))))))))))))))))))))))) 12222   8(CFFKKK 9 > 55*8444455sAA7D$=D D$D D$D D$$%E  E F))G/ L;K+ K J= 1 K =KK KK  K+K K+K K+ L+K/ /L2K/ 3L M)M  Mc tsdSt}tD]>}t|dD]}t |r |d|}n#Y*xYwt j|t}t j |r ||j |j 5t j |dddn #1swxYwY| |j#t$r4}t d|t%|Yd}~d}~wwxYw|D]}t'|@dS)z Remove clos_ssa.ini files from all per-website directories. :param user_context_func: Context manager function for user permissions NrrzFailed to remove %s: %s)r r'rrr rrrrrr"r#unlinkr*r$r%rr&r+r,)r- removed_inir/r0r1r2r:r;s r(remove_inis_from_website_isolation_pathsr@ys 4 5 5%%K899hv.//  H))  ,HV,X66  w||Hm<>(++  (^^aq1(;;Ga346688Y=MyO_2`w/aaaaaaaaaaaaaaa   4h??? ) 0  BDIII9hv.//  H))  ,HV,X66 $,,-  @(KKK)(33G n,, .w 7 GS#w||Hm<>"'//(";";<<  &&sC00))-//))h,,)((())))))))))))))))))))))))))))))))))))))))))))) L(3333   8(CFFKKK 7 > KK4d;;;;;s!A??B'E66D8, E8D< <E?D< E%E-,E-G""H L.L%K/ 6K K/ KK/ K K/ # L/K3 3L6K3 7L: L.L L. L L.. M,8)M''M,)rN)__doc__loggingrrEglobrsecureior clos_ssa_inirrrr r clcagefslib.domainr r ImportError getLogger__name__rr<r@r+r,rKrrrrUs """"""aaaaaaaaa   8 $ $K5K5K5K5\9999B S T    &O<3O