%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/cloudlinux/venv/lib/python3.11/site-packages/clwpos/hooks/lib/
Upload File :
Create Path :
Current File : //opt/cloudlinux/venv/lib/python3.11/site-packages/clwpos/hooks/lib/admin_disable_caching.py

#!/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)

Zerion Mini Shell 1.0