/
opt
/
cloudlinux
/
venv
/
lib
/
python3.11
/
site-packages
/
clwpos
/
hooks
/
lib
/
Upload Filee
HOME
#!/opt/cloudlinux/venv/bin/python3 -sbb # -*- coding: utf-8 -*- # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2021 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENSE.TXT from __future__ import absolute_import from typing import Dict from clcommon.clpwd import drop_privileges from clwpos.hooks.lib.user_disable_caching import ( create_php_info_file, check_domains_wpos_info_and_disable_module, remove_php_info_file, is_docroot_with_wpos_enabled_affected, ) from clwpos.utils import WposUser def _run_pre_hook(users_affected_map: Dict[WposUser, Dict]): """ Create file with data about domains' php versions in user's .clwpos directory. """ for user, info in users_affected_map.items(): with drop_privileges(user.name): if not is_docroot_with_wpos_enabled_affected(user, info['docroots_affected']): continue create_php_info_file(user) def _run_post_hook(users_affected_map: Dict[WposUser, Dict]): """ Check incompatibilies for users' domains and disable object caching if needed. Sequential processing of users takes quite a long time. This method requires optimization or running in background process. For now it was not possible to implement launch in background process since cPanel parent process tracks all child processes (including those called via subprocess.Popen and double os.fork) and continues to wait util all its child processes are terminated. """ for user, info in users_affected_map.items(): with drop_privileges(user.name): if not is_docroot_with_wpos_enabled_affected(user, info['docroots_affected']): continue check_domains_wpos_info_and_disable_module(info['domains_affected']) remove_php_info_file(user)