REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 3.63 KB
Close
//opt/cloudlinux/venv/lib/python3.11/site-packages/clconfig/db_info_lib.py
Text
Base64
# -*- 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 import os import re from clcommon.utils import ExternalProgramFailed, run_command MYSQL_BINARIES = [ "/usr/sbin/mysqld", "/usr/libexec/mysqld", # Fallback option "/usr/local/bin/mysqld", # Present on CL9+DA ] class MysqlInfo: def __init__(self): self.mysqld_v = self.retrieve_server_info() @staticmethod def get_binary(): """ Find mysql server binary :return: path to mysql binary """ try: for binary in MYSQL_BINARIES: if os.path.exists(binary): return binary return MYSQL_BINARIES[1] except OSError: return MYSQL_BINARIES[1] def retrieve_server_info(self): """ Get server information through `<mysql_server_binary> -V` command :return: full command output """ try: mysql_binary = self.get_binary() return run_command([mysql_binary, "-V"]) except ExternalProgramFailed: # may be no such file or unknown error happen return None def get(self): """ Return gathered data :return: dict( 'vendor': MySQL|MariaDB|Percona, 'version': server version in the form of {major}.{minor} or {major}.{minor}-{release} for percona, 'cll-lve': patches from CL applied or not (True|False) ) """ return {"vendor": self.get_vendor(), "version": self.get_version(), "cll-lve": self.is_patched()} def get_vendor(self): """ Extract MySQL vendor from server info :return: MySQL|MariaDB|Percona or `unknown` if failed to apply regex or None if there is no server info (this usually means that there are no MySQL installed) """ if self.mysqld_v is None: return None # regex to find vendor -- something, starting from round bracket and followed by `Server` # (see test_clconfig_db_info_lib.py for detailed examples) p = re.compile(r"(?<=\().+(?=\sServer)") try: # we need only first word of first element return p.findall(self.mysqld_v)[0].split()[0] except IndexError: return "unknown" def get_version(self): """ Retrieve MySQL server version from server info :return: X.X.X e.g. 10.2.16|5.6.39, includes release for percona (X.X.X-X.X e.g. 5.6.40-84.0) or `unknown` if failed to apply regex or None if there is no server info (this usually means that there are no MySQL installed) """ if self.mysqld_v is None: return None # regex to find version -- numbers, divided by `.` or `-` which go after `Ver` # (see test_clconfig_db_info_lib.py for detailed examples) p = re.compile(r"(?<=Ver\s)[0-9\.\-]+") try: # we need first element, also should sanitize from trailing `-` return p.findall(self.mysqld_v)[0].rstrip("-") except IndexError: return "unknown" def is_patched(self): """ Retrieve information about CL patch by `cll-lve` in server info :return: True if contains `cll-lve` seq False otherwise or None if there is no server info (this usually means that there are no MySQL installed) """ if self.mysqld_v is None: return None return "cll-lve" in self.mysqld_v
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 1 × Files: 10
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
__pycache__
DIR
-
drwxr-xr-x
2026-03-05 22:43:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
cagefs_statistics_config.py
3.26 KB
lrw-r--r--
2026-02-17 10:47:15
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
clconfig_utils.py
2.84 KB
lrw-r--r--
2026-02-17 10:47:15
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
cl_config_arg_parse.py
2.23 KB
lrw-r--r--
2026-02-17 10:47:15
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
config.py
23.64 KB
lrw-r-----
2026-02-17 10:47:15
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
db_governor_lib.py
15.19 KB
lrw-r--r--
2026-02-17 10:47:15
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
db_info_lib.py
3.63 KB
lrw-r--r--
2026-02-17 10:47:15
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
lve_stats2_lib.py
10.63 KB
lrw-r--r--
2026-02-17 10:47:15
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
lve_stats2_reseller_lib.py
11.05 KB
lrw-r--r--
2026-02-17 10:47:15
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ui_config_lib.py
4.74 KB
lrw-r--r--
2026-02-17 10:47:15
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.py
351 B
lrw-r--r--
2026-02-17 10:47:15
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).