X7ROOT File Manager
Current Path:
/opt/cloudlinux/venv/lib/python3.11/site-packages
opt
/
cloudlinux
/
venv
/
lib
/
python3.11
/
site-packages
/
ðŸ“
..
ðŸ“
GitPython-3.1.32.dist-info
ðŸ“
Jinja2-3.0.3.dist-info
ðŸ“
Mako-1.2.4.dist-info
ðŸ“
MarkupSafe-2.1.3.dist-info
ðŸ“
PyJWT-2.8.0.dist-info
ðŸ“
PyMySQL-1.1.0.dist-info
ðŸ“
PyVirtualDisplay-3.0.dist-info
ðŸ“
PyYAML-6.0.1.dist-info
ðŸ“
__pycache__
📄
_cffi_backend.cpython-311-x86_64-linux-gnu.so
(267.63 KB)
ðŸ“
_distutils_hack
📄
_pyrsistent_version.py
(23 B)
ðŸ“
_pytest
ðŸ“
_yaml
ðŸ“
aiohttp
ðŸ“
aiohttp-3.9.2.dist-info
ðŸ“
aiohttp_jinja2
ðŸ“
aiohttp_jinja2-1.5.dist-info
ðŸ“
aiohttp_security
ðŸ“
aiohttp_security-0.4.0.dist-info
ðŸ“
aiohttp_session
ðŸ“
aiohttp_session-2.9.0.dist-info
ðŸ“
aiosignal
ðŸ“
aiosignal-1.3.1.dist-info
ðŸ“
alembic
ðŸ“
alembic-1.11.1.dist-info
ðŸ“
annotated_types
ðŸ“
annotated_types-0.6.0.dist-info
ðŸ“
astroid
ðŸ“
astroid-2.15.6.dist-info
ðŸ“
attr
ðŸ“
attrs
ðŸ“
attrs-23.1.0.dist-info
ðŸ“
backports
ðŸ“
certifi
ðŸ“
certifi-2023.7.22.dist-info
ðŸ“
cffi
ðŸ“
cffi-1.15.1.dist-info
ðŸ“
chardet
ðŸ“
chardet-5.2.0.dist-info
ðŸ“
charset_normalizer
ðŸ“
charset_normalizer-2.1.1.dist-info
ðŸ“
cl_dom_collector
📄
cl_proc_hidepid.py
(4.53 KB)
ðŸ“
clcagefslib
ðŸ“
clcommon
ðŸ“
clconfig
ðŸ“
clconfigure
📄
clcontrollib.py
(51.73 KB)
ðŸ“
cldashboard
📄
cldetectlib.py
(18.13 KB)
📄
cldiaglib.py
(45.84 KB)
ðŸ“
clevents
ðŸ“
clflags
📄
clhooklib.py
(1.27 KB)
📄
cli_utils.py
(1.66 KB)
ðŸ“
cllicense
📄
cllicenselib.py
(9.1 KB)
ðŸ“
cllimits
ðŸ“
cllimits_validator
ðŸ“
cllimitslib_v2
ðŸ“
cllvectl
ðŸ“
clpackages
ðŸ“
clquota
ðŸ“
clselect
ðŸ“
clselector
ðŸ“
clsentry
📄
clsetuplib.py
(4.35 KB)
📄
clsudo.py
(14.42 KB)
ðŸ“
clsummary
ðŸ“
clveconfig
ðŸ“
clwizard
ðŸ“
configparser-5.0.2.dist-info
📄
configparser.py
(1.51 KB)
ðŸ“
contextlib2
ðŸ“
contextlib2-21.6.0.dist-info
ðŸ“
coverage
ðŸ“
coverage-7.2.7.dist-info
ðŸ“
cryptography
ðŸ“
cryptography-41.0.2.dist-info
ðŸ“
ddt-1.4.4.dist-info
📄
ddt.py
(12.43 KB)
ðŸ“
dill
ðŸ“
dill-0.3.7.dist-info
ðŸ“
distlib
ðŸ“
distlib-0.3.8.dist-info
📄
distutils-precedence.pth
(151 B)
ðŸ“
docopt-0.6.2.dist-info
📄
docopt.py
(19.48 KB)
ðŸ“
dodgy
ðŸ“
dodgy-0.2.1.dist-info
ðŸ“
filelock
ðŸ“
filelock-3.13.1.dist-info
ðŸ“
flake8
ðŸ“
flake8-5.0.4.dist-info
ðŸ“
flake8_polyfill
ðŸ“
flake8_polyfill-1.0.2.dist-info
ðŸ“
frozenlist
ðŸ“
frozenlist-1.4.0.dist-info
ðŸ“
future
ðŸ“
future-0.18.3.dist-info
ðŸ“
git
ðŸ“
gitdb
ðŸ“
gitdb-4.0.10.dist-info
ðŸ“
guppy
ðŸ“
guppy3-3.1.3.dist-info
ðŸ“
idna
ðŸ“
idna-3.4.dist-info
ðŸ“
iniconfig
ðŸ“
iniconfig-2.0.0.dist-info
ðŸ“
isort
ðŸ“
isort-5.12.0.dist-info
ðŸ“
jinja2
ðŸ“
jsonschema
ðŸ“
jsonschema-3.2.0.dist-info
ðŸ“
jwt
ðŸ“
lazy_object_proxy
ðŸ“
lazy_object_proxy-1.9.0.dist-info
ðŸ“
libfuturize
ðŸ“
libpasteurize
ðŸ“
lve_stats-2.0.dist-info
ðŸ“
lve_utils
📄
lveapi.py
(19.53 KB)
📄
lvectllib.py
(102.55 KB)
ðŸ“
lvemanager
📄
lvestat.py
(6.83 KB)
ðŸ“
lvestats
ðŸ“
lxml
ðŸ“
lxml-4.9.2.dist-info
ðŸ“
mako
ðŸ“
markupsafe
ðŸ“
mccabe-0.7.0.dist-info
📄
mccabe.py
(10.4 KB)
ðŸ“
mock
ðŸ“
mock-5.1.0.dist-info
ðŸ“
multidict
ðŸ“
multidict-6.0.4.dist-info
ðŸ“
numpy
ðŸ“
numpy-1.25.1.dist-info
ðŸ“
numpy.libs
ðŸ“
packaging
ðŸ“
packaging-23.1.dist-info
📄
pam.py
(7.38 KB)
ðŸ“
past
ðŸ“
pep8_naming-0.10.0.dist-info
📄
pep8ext_naming.py
(18.61 KB)
ðŸ“
pip
ðŸ“
pip-25.0.1.dist-info
ðŸ“
pkg_resources
ðŸ“
platformdirs
ðŸ“
platformdirs-3.11.0.dist-info
ðŸ“
pluggy
ðŸ“
pluggy-1.2.0.dist-info
ðŸ“
prettytable
ðŸ“
prettytable-3.8.0.dist-info
ðŸ“
prometheus_client
ðŸ“
prometheus_client-0.8.0.dist-info
ðŸ“
prospector
ðŸ“
prospector-1.10.2.dist-info
ðŸ“
psutil
ðŸ“
psutil-5.9.5.dist-info
ðŸ“
psycopg2
ðŸ“
psycopg2_binary-2.9.6.dist-info
ðŸ“
psycopg2_binary.libs
📄
py.py
(263 B)
ðŸ“
pycodestyle-2.9.1.dist-info
📄
pycodestyle.py
(101.08 KB)
ðŸ“
pycparser
ðŸ“
pycparser-2.21.dist-info
ðŸ“
pydantic
ðŸ“
pydantic-2.4.2.dist-info
ðŸ“
pydantic_core
ðŸ“
pydantic_core-2.10.1.dist-info
ðŸ“
pydocstyle
ðŸ“
pydocstyle-6.3.0.dist-info
ðŸ“
pyfakefs
ðŸ“
pyfakefs-5.2.3.dist-info
ðŸ“
pyflakes
ðŸ“
pyflakes-2.5.0.dist-info
ðŸ“
pylint
ðŸ“
pylint-2.17.4.dist-info
ðŸ“
pylint_celery
ðŸ“
pylint_celery-0.3.dist-info
ðŸ“
pylint_django
ðŸ“
pylint_django-2.5.3.dist-info
ðŸ“
pylint_flask
ðŸ“
pylint_flask-0.6.dist-info
ðŸ“
pylint_plugin_utils
ðŸ“
pylint_plugin_utils-0.7.dist-info
ðŸ“
pylve-2.1-py3.11.egg-info
📄
pylve.cpython-311-x86_64-linux-gnu.so
(25.48 KB)
ðŸ“
pymysql
ðŸ“
pyparsing
ðŸ“
pyparsing-3.0.9.dist-info
ðŸ“
pyrsistent
ðŸ“
pyrsistent-0.19.3.dist-info
ðŸ“
pytest
ðŸ“
pytest-7.4.0.dist-info
ðŸ“
pytest_check
ðŸ“
pytest_check-2.5.3.dist-info
ðŸ“
pytest_snapshot
ðŸ“
pytest_snapshot-0.9.0.dist-info
ðŸ“
pytest_subprocess
ðŸ“
pytest_subprocess-1.5.0.dist-info
ðŸ“
pytest_tap
ðŸ“
pytest_tap-3.5.dist-info
ðŸ“
python_pam-1.8.4.dist-info
ðŸ“
pyvirtualdisplay
ðŸ“
raven
ðŸ“
raven-6.10.0.dist-info
📄
remove_ubc.py
(5.73 KB)
ðŸ“
requests
ðŸ“
requests-2.31.0.dist-info
ðŸ“
requirements_detector
ðŸ“
requirements_detector-1.2.2.dist-info
ðŸ“
schema-0.7.5.dist-info
📄
schema.py
(29.51 KB)
📄
secureio.py
(18.83 KB)
ðŸ“
semver
ðŸ“
semver-3.0.1.dist-info
ðŸ“
sentry_sdk
ðŸ“
sentry_sdk-1.29.2.dist-info
ðŸ“
setoptconf
ðŸ“
setoptconf_tmp-0.3.1.dist-info
ðŸ“
setuptools
ðŸ“
setuptools-78.1.0.dist-info
📄
simple_rpm.so
(11.29 KB)
ðŸ“
simplejson
ðŸ“
simplejson-3.19.1.dist-info
ðŸ“
six-1.16.0.dist-info
📄
six.py
(33.74 KB)
ðŸ“
smmap
ðŸ“
smmap-5.0.0.dist-info
ðŸ“
snowballstemmer
ðŸ“
snowballstemmer-2.2.0.dist-info
ðŸ“
sqlalchemy
ðŸ“
sqlalchemy-1.3.24.dist-info
ðŸ“
ssa
ðŸ“
svgwrite
ðŸ“
svgwrite-1.4.3.dist-info
ðŸ“
tap
ðŸ“
tap_py-3.2.1.dist-info
ðŸ“
testfixtures
ðŸ“
testfixtures-7.1.0.dist-info
ðŸ“
toml
ðŸ“
toml-0.10.2.dist-info
ðŸ“
tomlkit
ðŸ“
tomlkit-0.11.8.dist-info
ðŸ“
typing_extensions-4.7.1.dist-info
ðŸ“
typing_extensions-4.8.0.dist-info
📄
typing_extensions.py
(108.48 KB)
ðŸ“
unshare-0.22.dist-info
📄
unshare.cpython-311-x86_64-linux-gnu.so
(8.17 KB)
ðŸ“
urllib3
ðŸ“
urllib3-2.0.4.dist-info
ðŸ“
vendors_api
ðŸ“
virtualenv
ðŸ“
virtualenv-20.21.1.dist-info
ðŸ“
wcwidth
ðŸ“
wcwidth-0.2.6.dist-info
ðŸ“
wmt
ðŸ“
wrapt
ðŸ“
wrapt-1.15.0.dist-info
ðŸ“
yaml
ðŸ“
yarl
ðŸ“
yarl-1.9.2.dist-info
Editing: cl_proc_hidepid.py
# -*- 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 # Module contains functions for remounting /proc with hidepid=2 option # see CAG-796 for details import subprocess import re from clcommon.cpapi import Feature, is_panel_feature_supported from clcommon.sysctl import SysCtlConf, SYSCTL_CL_CONF_FILE from clcommon.utils import grep, proc_can_see_other_uid_and_hidepid_synced # on some systems hidepid value is str HidepidValuesDict = { 'noaccess': 1, 'invisible': 2, '1': 1, '2': 2, } def hidepid_found(): """ Search for line like "proc /proc proc defaults,hidepid=2,gid=clsupergid 0 0" in /etc/fstab Return True if /proc is mounted with hidepid option in /etc/fstab """ fstab = '/etc/fstab' try: with open(fstab, 'r', encoding='utf-8') as f: for line in f: line = line.strip() if line and not line.startswith('#'): splitted_line = line.split() if splitted_line and splitted_line[0] == 'proc' and 'hidepid=' in splitted_line[3]: return True except (IOError, IndexError) as e: print('Error: failed to parse', fstab, ':', str(e)) return False def execute(cmd, verbose): if verbose: print('executing', ' '.join(cmd)) return subprocess.call(cmd) def remount_proc(verbose=False): """ Remount /proc with hidepid=2 option when needed """ # In latest versions of the kernel on CL8 # no need to remount /proc with hidepid option # because it is synchronized with fs.proc_can_see_other_uid option if proc_can_see_other_uid_and_hidepid_synced(): return if not is_panel_feature_supported(Feature.LVE): if verbose: print('environment without LVE detected - remounting /proc is skipped') return sysctl = SysCtlConf(config_file=SYSCTL_CL_CONF_FILE) if verbose: print('apply sysctl settings') if hidepid_found(): # admin can override hidepid option via /etc/fstab if verbose: print('hidepid option is found in /etc/fstab - remounting /proc with options from /etc/fstab') return execute(['/bin/mount', '-o', 'remount', '/proc'], verbose) proc_can_see_other_uid = sysctl.get('fs.proc_can_see_other_uid') super_gid = sysctl.get('fs.proc_super_gid') if proc_can_see_other_uid != '0': if verbose: print('virtualized procfs feature is not enabled in sysctl conf - disable hidepid') return execute(['/bin/mount', '-o', 'remount,hidepid=0,gid=0', '/proc'], verbose) if verbose: print('enable hidepid for /proc') return execute(['/bin/mount', '-o', 'remount,hidepid=2,gid=' + super_gid, '/proc'], verbose) def get_gid_from_mounts(): """ Retrieve hidepid gid from /proc/mounts :return: gid, 0 if absent """ lines_gen = grep(',hidepid=', '/proc/mounts') gid_prefix = ',gid=' try: for line in lines_gen: line = line.strip() if gid_prefix not in line: continue # Search gid=xxxx in line pos = line.find(gid_prefix) if pos == -1: continue pos += 5 line = line[pos:] pos = line.find(',') if pos != -1: line = line[:pos] else: pos = line.find(' ') if pos != -1: line = line[:pos] else: # Invalid or unsupported proc format return -1 return int(line) except (IOError, IndexError, ValueError): pass # hidepid not found in /proc/mounts return -1 def get_hidepid_typing_from_mounts() -> int: """ Retrieve hidepid value from /proc/mounts :return: hidepid, 0 if absent """ mounts_path = '/proc/mounts' res = 0 try: # Parse mounts file output for proc lines and get the hidepid with open(mounts_path, mode='r', encoding='utf-8') as file: for line in file: m = re.search(r'hidepid=(\d|\w+)', line) if not line.strip().startswith('proc /proc'): continue if m: res = HidepidValuesDict.get(str(m.group(1)), 0) break except (OSError, IOError, IndexError, ValueError): pass # hidepid not found in /proc/mounts return res
Upload File
Create Folder