ACIL FM
Dark
Refresh
Current DIR:
/opt/imunify360/venv/lib/python3.11/site-packages/clcommon
/
opt
imunify360
venv
lib
python3.11
site-packages
clcommon
Upload
Zip Selected
Delete Selected
Pilih semua
Nama
Ukuran
Permission
Aksi
cpapi
-
chmod
Open
Rename
Delete
lib
-
chmod
Open
Rename
Delete
public_hooks
-
chmod
Open
Rename
Delete
__pycache__
-
chmod
Open
Rename
Delete
clcagefs.py
10.01 MB
chmod
View
DL
Edit
Rename
Delete
clcaptain.py
1.96 MB
chmod
View
DL
Edit
Rename
Delete
clconfig.py
1.68 MB
chmod
View
DL
Edit
Rename
Delete
clconfpars.py
10.13 MB
chmod
View
DL
Edit
Rename
Delete
clcustomscript.py
1.16 MB
chmod
View
DL
Edit
Rename
Delete
cldebug.py
905 B
chmod
View
DL
Edit
Rename
Delete
clemail.py
1.65 MB
chmod
View
DL
Edit
Rename
Delete
clexception.py
1.14 MB
chmod
View
DL
Edit
Rename
Delete
clfunc.py
6.47 MB
chmod
View
DL
Edit
Rename
Delete
clhook.py
3.86 MB
chmod
View
DL
Edit
Rename
Delete
cllog.py
1.45 MB
chmod
View
DL
Edit
Rename
Delete
cloutput.py
471 B
chmod
View
DL
Edit
Rename
Delete
clproc.py
4.05 MB
chmod
View
DL
Edit
Rename
Delete
clpwd.py
7.74 MB
chmod
View
DL
Edit
Rename
Delete
clquota.py
1.27 MB
chmod
View
DL
Edit
Rename
Delete
clsec.py
657 B
chmod
View
DL
Edit
Rename
Delete
clwpos_lib.py
15.4 MB
chmod
View
DL
Edit
Rename
Delete
const.py
277 B
chmod
View
DL
Edit
Rename
Delete
evr_utils.py
3.58 MB
chmod
View
DL
Edit
Rename
Delete
features.py
5.04 MB
chmod
View
DL
Edit
Rename
Delete
group_info_reader.py
5.29 MB
chmod
View
DL
Edit
Rename
Delete
lock.py
1.02 MB
chmod
View
DL
Edit
Rename
Delete
mail_helper.py
4.45 MB
chmod
View
DL
Edit
Rename
Delete
mysql_lib.py
5.84 MB
chmod
View
DL
Edit
Rename
Delete
php_conf_reader.py
9.77 MB
chmod
View
DL
Edit
Rename
Delete
sysctl.py
7.61 MB
chmod
View
DL
Edit
Rename
Delete
ui_config.py
3.12 MB
chmod
View
DL
Edit
Rename
Delete
utils.py
30.28 MB
chmod
View
DL
Edit
Rename
Delete
utils_cmd.py
2.71 MB
chmod
View
DL
Edit
Rename
Delete
__init__.py
1.37 MB
chmod
View
DL
Edit
Rename
Delete
Edit file: /opt/imunify360/venv/lib/python3.11/site-packages/clcommon/group_info_reader.py
# coding=utf-8 # # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2021 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENCE.TXT # import platform from time import sleep from typing import Dict # NOQA import requests from clcommon.utils import is_testing_enabled_repo, get_cl_version, is_ubuntu, get_os_version from clcommon.clexception import FormattedException class GroupInfoReaderError(FormattedException): def __init__(self, reason, message=None, details=None): if message is None: message = ( "Encountered an error while getting the remote available groups info. " "Try again later. If the same problem occurs again - contact CloudLinux support." ) super().__init__({ "message": message, "context": {"reason": reason}, "details": details, }) class GroupInfoReader: """ The purpose of this class is to get remote yum info about available groups: 1. alt-php 2. alt-nodejs 3. alt-ruby 4. alt-python There we get special url with json which depends on machine features: cl version: 6, 7, 6 hybrid architecture: x84_64, i386 enabled testing repositories status: beta, stable """ # TODO: consider about caching during some period of time GROUP_INFO = None GROUP_URL = None CL_BASE = "https://repo.cloudlinux.com/other/" UBUNTU_BASE = "https://repo.cloudlinux.com/cloudlinux-ubuntu/" @classmethod def group_url(cls): # type: () -> str """Get url with available groups json""" if cls.GROUP_URL is None: cls.GROUP_URL = cls._get_group_url() return cls.GROUP_URL @classmethod def _get_group_url(cls): # type () -> str """ Final url example for CloudLinux: https://repo.cloudlinux.com/other/cl6/package-info.x86_64.stable.json Final url example for Ubuntu: https://repo.cloudlinux.com/cloudlinux-ubuntu/package-info.20_04.json for cl6, arch x86_64 and disabled testing: stable :return: string with the result url or None if the CL version cannot be identified """ if is_ubuntu(): _, ubuntu_version = get_os_version() # 20.04 -> 20_04 ubuntu_version = ubuntu_version.replace(".", "_") suffix = f"package-info.{ubuntu_version}.json" return cls.UBUNTU_BASE + suffix else: arch = platform.machine() arch = "i386" if arch != "x86_64" else arch repo = "beta" if is_testing_enabled_repo() else "stable" cl_version = get_cl_version() if cl_version is None: return None # replace cl7h -> cl7, due to using same repo link for 7/7h cl_version = cl_version.replace("cl7h", "cl7") suffix = ".".join(["/package-info", arch, repo, "json"]) return cls.CL_BASE + cl_version + suffix @classmethod def get_available_groups(cls): # type: () -> Dict """ Sends request to group url, gets json and converts it to dict :return: dict with groups info """ if cls.GROUP_INFO is not None: return cls.GROUP_INFO url = cls.group_url() if url is None: raise GroupInfoReaderError( "Could not identify CloudLinux version", message="Could not identify CloudLinux version (using kernel version). " "Restart your system. If the same problem occurs again" " - contact CloudLinux support.", ) # requests.get() with 3 retries # Increasing sleep time attempts = 3 for i in range(attempts): try: cls.GROUP_INFO = requests.get(url, timeout=20).json() return cls.GROUP_INFO except requests.exceptions.RequestException as ex: if i + 1 >= attempts: err_message = f"Unable to reach {url}. Check your internet connection \ or try again later. If the same problem occurs again \ - contact CloudLinux support." raise GroupInfoReaderError( f"{url} - link unavailable", message=err_message, details=str(ex), ) from ex sleep(i + 1) return {} @classmethod def get_group_info(cls, group): # type: (str) -> Dict """ Filter dict with all available groups by special group name E.g: group = python we will get dict like that: {'alt-python27': {'version': '2.7.15', 'name': 'alt-python27', 'release': '1.el6'}, 'alt-python33': {'version': '3.3.3', 'name': 'alt-python33', 'release': '1.el6'}, 'alt-python34': {'version': '3.4.4', 'name': 'alt-python34', 'release': '1.el6'}...} :param group :rtype: dict with info per group """ group_info = {} available_groups = cls.get_available_groups() for grp in available_groups.get("groups_info", {}): if group in grp: group_info.update({grp: available_groups["groups_info"][grp]}) return group_info
Simpan
Batal
Isi Zip:
Unzip
Create
Buat Folder
Buat File
Terminal / Execute
Run
Chmod Bulk
All File
All Folder
All File dan Folder
Apply