403Webshell
Server IP : 192.158.238.246  /  Your IP : 3.145.179.147
Web Server : LiteSpeed
System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64
User : jenniferflocom ( 1321)
PHP Version : 8.1.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/cloudlinux/venv/lib/python3.11/site-packages/clwpos/php/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/cloudlinux/venv/lib/python3.11/site-packages/clwpos/php/alt_php.py
from __future__ import absolute_import

import os
import re
import subprocess
from typing import List

from clcommon.utils import is_ubuntu
from clwpos.php.base import PHP

SELECTOR_UTIL = "/usr/bin/selectorctl"

def create_generic_php(alt_php_identifier: str, root_path=None, base_cls = None):
    if root_path is None:
        # create alt versions by default
        php_root_dir = f'/opt/{alt_php_identifier.replace("-", "/")}/'
    else:
        php_root_dir = root_path

    modules_base_dir = 'usr/lib64/php/modules/' if not is_ubuntu() else 'usr/lib/x86_64-linux-gnu/php/modules/'

    base_cls = base_cls if base_cls else PHP
    return base_cls(
        identifier=alt_php_identifier,
        version=f'{alt_php_identifier[-2]}.{alt_php_identifier[-1]}',
        modules_dir=os.path.join(php_root_dir, modules_base_dir),
        dir=php_root_dir,
        bin=os.path.join(php_root_dir, 'usr/bin/php'),
        ini=os.path.join(php_root_dir, 'link/conf/default.ini')
    )


def get_alt_php_versions() -> List[PHP]:
    """
    Get list of installed alt-php versions.
    """
    alt_dir = '/opt/alt'
    pattern = re.compile(r'^php\d{2}$')
    alt_php_versions = [
        create_generic_php(f'alt-{dirname}') for dirname in os.listdir(alt_dir)
        if pattern.match(dirname)
    ]
    return alt_php_versions

def disable_selector_extensions(ext_list, version, logger):
    """
    To turn off extensions in selector for avoiding them loading in separate places!!!
    """
    target_users = []
    users_with_version = subprocess.run([SELECTOR_UTIL, "--list-users", "--version", version],
                                        capture_output=True,
                                        text=True).stdout
    if users_with_version:
        target_users = [line.strip() for line in users_with_version.strip().split(",") if line]
    if not target_users:
        logger.info("No users found using selector with version %s", version)
        return

    logger.info("Turning off those extensions=%s for version %s, for users=%s",
                 str(ext_list),
                 version,
                 str(target_users))
    for user in target_users:
        disable_result = subprocess.run([SELECTOR_UTIL, "--disable-user-extensions",
                                         ",".join(ext_list),
                                         "--version", version,
                                         "--user", user],
                                            capture_output=True,
                                            text=True)
        logger.info("Disabling extension result=%s for user=%s", str(disable_result), user)

def update_selector_built_in_extensions(logger):
    """
    To make extension non-editable in CloudLinux Selector (cannot turn it off manually)
    """
    update_res = subprocess.run(["/usr/share/l.v.e-manager/utils/cache_phpdata.py"],
                   capture_output=True,
                   text=True)
    logger.info("Selector built-in extensions updated=%s", str(update_res))

Youez - 2016 - github.com/yon3zu
LinuXploit