PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/extras-3.10/rads/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/extras-3.10/rads/__init__.py |
"""Rads module .. data:: rads.IMH_ROLE: The server's imh_role in salt *(str | None)* .. data:: rads.IMH_CLASS: The server's imh_class in salt *(str | None)* .. data:: rads.HAS_CPANEL: Whether /usr/local/cpanel/cpsrvd exists as a file *(bool)* .. data:: rads.SECURE_USER: The secure user's username *(str)* .. data:: rads.SECURE_FQDN: The secure user's fqdn *(str)* .. data:: rads.STAFF_GROUPS: IMH employee group names *(list)* .. data:: rads.SYS_USERS: System usernames. This also includes ``OUR_RESELLERS`` and ``SECURE_USER`` *(list)* .. data:: rads.SYS_MYSQL_USERS: System MySQL usernames *(list)* .. data:: rads.OUR_RESELLERS: Our "main" resellers' usernames on shared, including root and tier2s *(list)* .. data:: rads.SECURE_CRT_FILE: Path to secure user's ssl cert file. This is looked up when accessed for the first time, then cached for the remainder of execution. *(str | None)* .. data:: rads.SECURE_CRT_ID: ID of the secure user's certificate ID used for cPanel API calls. This is looked up when accessed for the first time, then cached for the remainder of execution. *(str | None)* .. data:: rads.SECURE_KEY_FILE: The secure user's ssl key file. This is looked up when accessed for the first time, then cached for the remainder of execution. *(str | None)* .. data:: rads.CPANEL_EXTRA_SHARED_IPS: Any extra shared ips defined in /etc/reservedipreasons *(list)* .. data:: rads.CPANEL_INMOTION_IPS: Any shared ips defined in /var/cpanel/mainips/inmotion *(list)* """ from typing import Union from pathlib import Path import platform import re from . import _globals # pylint: disable=wrong-import-position,global-statement IMH_ROLE, IMH_CLASS = _globals.read_server_role() HAS_CPANEL = Path('/usr/local/cpanel/cpsrvd').is_file() STAFF_GROUPS, SYS_USERS, SYS_MYSQL_USERS, OUR_RESELLERS = _globals.rads_json() if IMH_ROLE == 'shared': SECURE_FQDN = re.sub('^[a-z-]+', 'secure', platform.node()) SECURE_USER = _globals.get_secure_user(SECURE_FQDN) if SECURE_USER: SYS_USERS.append(SECURE_USER) CPANEL_EXTRA_SHARED_IPS = _globals.get_cpanel_inmotion_ips() CPANEL_INMOTION_IPS = _globals.get_cpanel_extra_shared_ips() else: SECURE_FQDN, SECURE_USER = None, None CPANEL_EXTRA_SHARED_IPS, CPANEL_INMOTION_IPS = [], [] from . import color from . import vz if _globals.HAS_PARAMIKO: from . import ssh # General functions (these also need __module__ set to appear in docs) from ._email import send_email from ._input import get_keypress, prompt_y_n from ._locking import LockError, lock, wait_lock from ._logging import setup_logging, setup_verbosity from ._logging import LevelFilter, MultilineFormatter from ._sa import get_cp_usage, SaUsage from ._fsquota import QuotaCtl, QuotaError, QuotaNoUser, QuotasDisabled from ._users import CpuserError, UserData, UserDomain from ._users import get_login, get_homedir, get_primary_domain from ._users import is_cpuser, all_cpusers, main_cpusers from ._users import get_owner, is_child, get_children from ._users import cpuser_safe, cpuser_suspended, whoowns from ._users import DumbYamlLoader # Backwards compat imports # pylint: disable=wrong-import-order from cpapis import uapi, cpapi1, cpapi2, cpapi3, whmapi0, whmapi1, CpAPIError # pylint: disable=cyclic-import from . import ( common, context, cpanel_api, exceptions, ha, reseller, shared, userdata, ) # Lazy lookup private value stores _SECURE_KEY_FILE = None _SECURE_CRT_ID = None _SECURE_CRT_MODULUS = None def __getattr__(name: str): """getattr hook to provide lazy attribute loading for slow values""" global _SECURE_KEY_FILE global _SECURE_CRT_MODULUS global _SECURE_CRT_ID if name == "SECURE_KEY_FILE": if not SECURE_USER: return None if _SECURE_KEY_FILE: return _SECURE_KEY_FILE global _SECURE_CRT_MODULUS if not _SECURE_CRT_MODULUS: # lookup SECURE_CRT_ID to populate _SECURE_CRT_MODULUS __getattr__('SECURE_CRT_ID') _SECURE_KEY_FILE = _globals.get_secure_key_file( SECURE_USER, _SECURE_CRT_MODULUS ) return _SECURE_KEY_FILE if name == "SECURE_CRT_FILE": if not SECURE_USER: return None secure_crt_id = __getattr__('SECURE_CRT_ID') return f"/home/{SECURE_USER}/ssl/certs/{secure_crt_id}.crt" if name == "SECURE_CRT_ID": if not SECURE_USER or not SECURE_FQDN: return None if not _SECURE_CRT_ID: _SECURE_CRT_ID, _SECURE_CRT_MODULUS = _globals.get_secure_crt_info( SECURE_USER, SECURE_FQDN, ) return _SECURE_CRT_ID raise AttributeError(f"No such attribute: {name}") SECURE_KEY_FILE: Union[str, None] SECURE_CRT_FILE: Union[str, None] SECURE_CRT_ID: Union[str, None]