| Server IP : 185.143.234.238 / Your IP : 185.215.232.195 Web Server : Apache System : Linux 81-12-52-146.cprapid.com 4.18.0-553.76.1.lve.el8.x86_64 #1 SMP Wed Oct 1 16:05:07 UTC 2025 x86_64 User : noavaranesama ( 1039) PHP Version : 8.2.29 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/self/root/usr/share/cagefs-plugins/ |
Upload File : |
#!/opt/cloudlinux/venv/bin/python3 -sbb
# -*- 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 absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
import os
import subprocess
from future import standard_library
standard_library.install_aliases()
from builtins import *
# Trusted absolute locations of the mysql client, in priority order. We
# probe these explicitly instead of inheriting PATH from the parent
# process: this code runs as root from RPM scriptlets and from the root
# cron, and trusting an inherited PATH would let a writable directory
# anywhere ahead of /usr/bin shadow the real mysql with a planted
# binary. /usr/local/bin/mysql is Plesk's default for some MariaDB
# packages and is kept here so those deployments keep working.
_MYSQL_CANDIDATES = (
'/usr/bin/mysql',
'/usr/local/bin/mysql',
)
def _resolve_mysql_binary():
for path in _MYSQL_CANDIDATES:
if os.path.isfile(path) and os.access(path, os.X_OK):
return path
return None
def _execute(query):
with open('/etc/psa/.psa.shadow', 'r') as f:
password = f.readline().rstrip()
query = query.replace("\n", " ").strip()
mysql_bin = _resolve_mysql_binary()
if mysql_bin is None:
raise RuntimeError(
"mysql client not found at any of: %s" %
", ".join(_MYSQL_CANDIDATES)
)
# Custom env without PATH: Popen will execve the absolute path
# directly without a PATH search, so the child cannot be hijacked
# via the parent's PATH.
proc_env = {'MYSQL_PWD': password}
proc = subprocess.Popen(
[mysql_bin, '--no-beep', '--skip-column-names', '--user=admin',
'--execute', query + ';'],
stdout=subprocess.PIPE,
text=True,
bufsize=-1,
env=proc_env,
)
return proc.communicate()[0]
def install_cagefs_module_plesk():
result = _execute("select * from psa.Modules where name='plesk-cagefs'")
if result == "":
_execute("""
insert into psa.Modules(name, packname, display_name, description, icon)
values(
'plesk-cagefs',
'plesk-cagefs',
'CageFS',
'GageFS',
'/images/modules/plesk-cagefs/addon_CloudLinux_logo2.png'
)
""")
def delete_cagefs_module_plesk():
_execute("delete from psa.Modules where name='plesk-cagefs'")