\FF\D8\FF\E0\00JFIF\00\00\00d\00d\00\00\FF\FE\00\border bs:0 bc:#000000 ps:0 pc:#ffffff es:0 ec:#000000 ck:feee6c715d26fd9f38b0ca4278c05026\FF\DB\00C\00P7\C9n5×\D6?\BDê\9Ds\EBp\9F[`8m\B7)o\B5\E8\E6I\99\FE3]]A2\BA\8Cw\D6E\93\\DEv\C8\009\F2\F1NI?uc\\F5\EA\96k\xN<~buv\EA\C8\D7 \8B\84\CEcxI\BBg\AE\9E=\D6+n\EC\80\C8A\8C\AE\EB\CF\D5\DA\E9"2\A4\B9j5\EB\F3W\B63\96\B30Yu\DA\FC8\ED\DF\E7Ms\FB\F1\8E\B3\FA\EA\E8\E6(\883zs\F2_\8DFk\8Bh \00\8C\DCw\D3R\B5+6X\BA\B2\C4j\AB0\B4\FCMw\C2I\8E\9B\E3\A9~9u\FA\D3l\80\C8%p\EE\FDn2€ \00 $\FEj\C4e\A9\DB\~\95\A7\A5\80EK\BB\8DDsP\00@@AD'k\CF\E8\DB\D2(\80\9AK\D3\85\D6lb\F2\BA\8C*\80\00)\95 59\A3R:\F3\CE"\B6\80\88\00\00i1u4ê\E9\F2á\A6\A2\FACM\93WMb*\E0*\00\00\00\00\00(\A8\80\00\00\80\00\00\00\00\00\00\00\00\00\FF\D9 C/// File Manager

File Manager

Path: /opt/cloudlinux/venv/lib/python3.11/site-packages/clwpos/hooks/lib/

Viewing File: 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

import logging
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():
        try:
            with drop_privileges(user.name):
                if not is_docroot_with_wpos_enabled_affected(user, info['docroots_affected']):
                    continue
                create_php_info_file(user)
        except Exception:
            # Isolate per-user failures so one user cannot abort the bulk hook.
            logging.exception('AccelerateWP pre-hook failed for user %s', user.name)
            continue


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():
        try:
            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)
        except Exception:
            # Isolate per-user failures so one user cannot abort the bulk hook.
            logging.exception('AccelerateWP post-hook failed for user %s', user.name)
            continue