✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ server303.web-hosting.com ​🇻​♯➤ 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP 🇾​♯➤ 2025

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 199.188.205.31 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.163
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ 𝗔𝗟𝗟 𝗪𝗢𝗥𝗞𝗜𝗡𝗚....

𝗛𝗢𝗠𝗘
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /opt/cloudlinux/venv/lib/python3.11/site-packages/clselect//clselectstatistics.py
#!/opt/cloudlinux/venv/bin/python3 -bb
# coding=utf-8
#
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2019 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT


from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
from collections import defaultdict
from future.utils import iteritems

from cldetectlib import get_suEXEC_status, get_suPHP_status
from cllimits import CageFs, CageFsException

from .cluserselect import ClUserSelect
from .clselect import ClSelect as ClSelectPhp

from .clselectctl import interpreter_versions_short_summary, server_applications_summary
from typing import Optional, Dict  # NOQA

# Domain compatibility logic lives in clselectdomains; re-exported here
# for backward compatibility — existing callers that import from
# clselectstatistics will continue to work.
from .clselectdomains import (  # noqa: F401
    _is_acceptable_php_handler_cpanel,
    _get_php_selector_domains_for_cpanel,
    _get_php_selector_domains_for_plesk,
    _get_php_selector_domains_for_da,
    _get_php_vhosts_for_current_panel,
    get_php_selector_compatible_domains,
    get_all_selector_compatible_domains_flat,
)


def _iter_versions(interpreter):
    """
    Return list of InterpreterSummary objects
    :rtype: list[clselectctl.InterpreterSummary]
    """
    return interpreter_versions_short_summary(interpreter)


def iter_server_applications(interpreter):
    """
    Return list of ApplicationSummary objects
    :rtype: list[clselectctl.ApplicationSummary]
    """
    return server_applications_summary(interpreter)


def get_versions_statistics(interpreter):
    # type: (str) -> Optional[Dict]
    interpreters_versions = _iter_versions(interpreter)
    if interpreters_versions is not None:
        return {
            it.version: {
                'full_version': it.version_full,
                'enabled': it.enabled,
                'installed': it.installed
            } for it in interpreters_versions
        }


def get_php_selector_usage():
    """Get users and domains that use php selector"""
    cagefs = CageFs()
    if not cagefs.is_cagefs_present():
        return None

    # check if cagefs is initialized
    try:
        cagefs._load_info()
    except CageFsException:
        return None

    # either suexec or suphp is required to move user into cagefs
    if not any((get_suEXEC_status(), get_suPHP_status())):
        return None

    # ignore unsupported control panels
    php_vhosts = _get_php_vhosts_for_current_panel()
    if php_vhosts is None:
        return None

    php = ClUserSelect()
    domains_by_php_version = defaultdict(set)
    users_by_php_version = defaultdict(set)
    for user, user_domains in iteritems(php_vhosts):
        if not cagefs.get_user_status(user):
            continue

        version = php.get_version(user, show_native_version=False)[0]
        domains_by_php_version[version].update(user_domains)
        users_by_php_version[version].add(user)

    return {
        'domains_by_php_version': domains_by_php_version,
        'users_by_php_version': users_by_php_version
    }


def get_native_version_safe():
    """
    Safely get native version, or None if not set
    """
    php = ClSelectPhp()
    v = php.get_native_version(verbose=False)  # tuple[version, full_version] | None
    if v is None:
        return v
    return v[0]


def get_mode_of_php_selector():
    # type: () -> str
    """
    Get state of PHP selector: without CageFS or normal
    """

    return 'without_cagefs' if ClSelectPhp().work_without_cagefs() else 'normal'


def get_default_php_version():
    # type: () -> str
    """
    Get default version of PHP selector
    """

    # yep, get_version() returns default(!) version, don't ask me 'why'
    return ClSelectPhp().get_version()[0]


Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
25 Jun 2026 8.32 AM
root / root
0755
__pycache__
--
23 Jun 2026 8.57 AM
root / root
0755
baseclselect
--
23 Jun 2026 8.31 AM
root / root
0755
clselectnodejs
--
23 Jun 2026 8.31 AM
root / root
0755
clselectnodejsuser
--
23 Jun 2026 8.31 AM
root / root
0755
clselectphp
--
23 Jun 2026 8.31 AM
root / root
0755
clselectphpuser
--
23 Jun 2026 8.31 AM
root / root
0755
clselectpython
--
23 Jun 2026 8.31 AM
root / root
0755
clselectpythonuser
--
23 Jun 2026 8.31 AM
root / root
0755
clselectruby
--
23 Jun 2026 8.31 AM
root / root
0755
__init__.py
0.523 KB
3 Jun 2026 1.51 PM
root / root
0644
clextselect.py
19.605 KB
3 Jun 2026 1.51 PM
root / root
0644
clpassenger.py
27.834 KB
3 Jun 2026 1.51 PM
root / root
0644
clselect.py
21.964 KB
3 Jun 2026 1.51 PM
root / root
0644
clselectctl.py
10.045 KB
3 Jun 2026 1.51 PM
root / root
0644
clselectctlnodejsuser.py
22.341 KB
3 Jun 2026 1.51 PM
root / root
0644
clselectctlphp.py
45.916 KB
3 Jun 2026 1.51 PM
root / root
0644
clselectctlpython.py
47.865 KB
3 Jun 2026 1.51 PM
root / root
0644
clselectctlruby.py
18.587 KB
3 Jun 2026 1.51 PM
root / root
0644
clselectdomains.py
4.596 KB
3 Jun 2026 1.51 PM
root / root
0644
clselectexcept.py
10.221 KB
3 Jun 2026 1.51 PM
root / root
0644
clselectprint.py
5.386 KB
3 Jun 2026 1.51 PM
root / root
0644
clselectstatistics.py
3.806 KB
3 Jun 2026 1.51 PM
root / root
0644
cluserextselect.py
16.539 KB
3 Jun 2026 1.51 PM
root / root
0644
cluseroptselect.py
25.784 KB
3 Jun 2026 1.51 PM
root / root
0644
cluserselect.py
30.634 KB
3 Jun 2026 1.51 PM
root / root
0644
locked_extensions.ini
1.201 KB
3 Jun 2026 1.51 PM
root / root
0644
models.py
0.796 KB
3 Jun 2026 1.51 PM
root / root
0644
utils.py
16.362 KB
3 Jun 2026 1.51 PM
root / root
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF