cxddlmZmZddlZddlZddlZddlZddlmZddl m Z m Z ddl m Z ddlmZddlmZmZmZddlmZdd lmZmZmZmZmZdd lmZmZdd lm Z dd l!m"Z"Gd de e Z#dS))absolute_importprint_functionN)drop_privileges)ModifyUserHookModifyDomainHook) WposError)OBJECT_CACHE_FEATURE)get_admin_config_directory ALL_SUITESUNSUPPORTED_SUITES_FOR_RESELLER) UserConfig)WposUserupdate_redis_confupdate_wp_configuser_uidis_user_owned_by_reseller)SUITES_MARKERSDISABLE_FEATURE_IN_HOOK_FLAG) reload_redis)is_pleskcJeZdZdZdZd dedefdZdZdZd Z d d Z d Z dS)WposModifyUserHookz5 Update user's data in Redis and WP configs. cbt|}t|5tj|js ddddS t n5#t$r(}td|tj Yd}~nd}~wwxYwddddS#1swxYwYdS)z Reload Redis if the user has a Redis configuration file. We should use it because after modification of the domain the cagefsctl --force-update kill redis :param username: username of the domain owner N%Error occurred during daemon reload: file) rrospathexists redis_confr Exceptionprintsysstderr)selfusernameuseres (py/clwpos/hooks/wpos_modify_user_hook.py_post_reload_redisz%WposModifyUserHook._post_reload_redis(sC !! X & & T T7>>$/22  T T T T T T T T T T T TAaAA SSSSSSSSS T  T T T T T T T T T T T T T T T T T Ts;&B$A"!B$" B,B B$BB$$B(+B(Nr&new_namec 4trtjdg|dSt|}|j|st dtj |jdt| |}t||}t|5tj |j s ddddSt||t|}|t"D]}t%||| t'n5#t($r(} t+d| t,jYd} ~ nd} ~ wwxYwddddS#1swxYwYdS)aM Update the name of the user's home directory in: - ~/.clwpos/redis.conf, - wp-config.php for Wordpresses with enabled object caching. For Plesk also perform checks for incompatibilities after PHP version changes (they fall into the same Plesk event 'Update physical hosting') z9/usr/share/cloudlinux/wpos/plesk/admin_disable_caching.pyNz*Internal Error. Contact CloudLinux support)homedirrr)r subprocessrunrhome_direndswithrrrjoinlenrrr rr wp_paths_with_enabled_moduler rrr!r"r#r$) r%r&r+kwargsnew_userold_user_homedirold_user user_config abs_wp_pathr(s r)post_modify_userz#WposModifyUserHook.post_modify_user7s9 :: O NLM O O O   FH%% ))(33 JHII I7<<(9/CMM>/(JHUUH.>??? X & & T T7>>("566   T T T T T T T T h 1 1 1%X..K*GGH\]] B B  hAAAA T T T TAaAA SSSSSSSSS T# T T T T T T T T T T T T T T T T T TsC;&F .A F <E  F  E=E83F 8E==F  FFc t| }g}g}tjD]d}|s |tvr@tjt|r||M|s||e|rVtdd |d|tj dddd |d|d g|rYtd d |d|d tj dddd |d|d gdSdS) Nz Allowing z, z for user z/usr/bin/cloudlinux-awp-adminz set-suitez--suites,z--usersz --allowedz Disallowing z owned by resellerz --disallowed) rr keysr rrisfilerappendr"r2r.r/)r%r&ownerr5is_owned_by_adminsuites_to_allowsuites_to_disallow suite_names r)post_create_userz#WposModifyUserHook.post_create_useras 9( C CC%/++ 6 6J! 6Z7V%V%V\^\c\j\j":.]]%V &&z2222& 6"))*555  ? Ndii88NNHNN O O O N;[*HH_55%x> ? ? ?  B f+=!>!>ff(fff g g g N;[*HH%788%xA B B B B B B Bc "tt|}td|tj|r't|dt j|nt|dtjtrcdd|dg}ttd|d tj |d d }td |d |j d|j d|jdSdS)z Triggered before deleting user. NOT TRIGGERED ON PLESK since there is no pre hooks Cleans up garbage left in /var/clwpos/uids/{user_uid} Not run on Solo edition :param username: account name )r&z Checking z exists, must be cleanedz# does not exist, nothing to be donez/usr/bin/cloudlinux-awp-userz--userz disable-allz exists, calling command=z to disable features for userT)capture_outputtextzCommand=z stdout=z , stderr=z, return_code=N)r rr"rrisdirshutilrmtreerrr.r/stdoutr$ returncode)r%r&r5cfg_dircommandresults r)pre_delete_userz"WposModifyUserHook.pre_delete_user|sc-Xx-H-H-HII #'##$$$ 7== ! ! C W666 7 7 7 M' " " " " WAAA B B B 7>>6 7 7 65x=YG 1LL%,LLL M M M^GDtLLLF 5W55fm55"M55!'!255 6 6 6 6 6  6 6rGc0||dS)z(Hook to be called after domain creation.Nr*r%r&domains r)post_create_domainz%WposModifyUserHook.post_create_domain )))))rGc 0||dS)z,Hook to be called after domain modification.NrU)r%r&rW new_domaininclude_subdomainsr5s r)post_modify_domainz%WposModifyUserHook.post_modify_domainrYrGc0||dS)z(Hook to be called after domain deletion.NrUrVs r)post_delete_domainz%WposModifyUserHook.post_delete_domainrYrG)N)NN) __name__ __module__ __qualname____doc__r*strr;rFrSrXr]r_rGr)rr#s T T T(T(T(T(T(T(T(TTBBB66662************rGr)$ __future__rrrr.r#rLclcommon.clpwdrclcommon.public_hooks.librrclwpos.cl_wpos_exceptionsrclwpos.optimization_featuresr clwpos.feature_suitesr r r clwpos.user.configr clwpos.utilsrrrrrclwpos.constantsrrclwpos.object_cache.redis_utilsr cldetectlibrrrerGr)rqs76666666  ******FFFFFFFF//////======iiiiiiiiii))))))988888 |*|*|*|*|*)9|*|*|*|*|*rG