HEX
Server: Apache
System: Linux insrv.serversdaddy.com 5.14.0-362.24.2.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Mar 30 14:11:54 EDT 2024 x86_64
User: jsaha (1066)
PHP: 8.3.6
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/clcommon/cpapi/__pycache__/__init__.cpython-37.pyc
B

좵C��� �@s�dZddlmZddlmZddlmZddlZddlmZddlm	Z	m
Z
dd	lmZm
Z
mZdd
lmZmZmZmZmZmZmZmZmZddlmZmZddlmZmZmZe�\Z Z!d
d�Z"dgdd�Z#dhdd�Z$dd�Z%dd�Z&dd�Z'dd�Z(dd�Z)dd�Z*did d!�Z+djd$d%�Z,d&d'�Z-d(d)�Z.d*d+�Z/d,d-�Z0d.d/�Z1d0d1�Z2d2d3�Z3d4d5�Z4dkd6d7�Z5d8d9�Z6d:d;�Z7d<d=�Z8d>d?�Z9d@dA�Z:dBdC�Z;ee<dD�dEdF�Z=dGdH�Z>dIdJ�Z?dKdL�Z@eAeBdM�dNdO�ZCdPdQ�ZDdRdS�ZEdTdU�ZFdVdW�ZGe�dXdY��ZHdZd[�ZIeAd\�d]d^�ZJd_d`�ZKdadb�ZLdcdd�ZMe<d\�dedf�ZNee!�ZOeO�P�ZQe%�ZReQjSZSeQjTZTeQjUZUeQjVZVeQjWZWeQjXZXeQjYZYeQjZZZeQj[Z[eQj\Z\eQj]Z]eQj^Z^eQj_Z_dS)lz<
CloudLinux control panel API
API for Hosting control panel
�)�absolute_import)�division)�print_functionN)�	lru_cache�)�CACHE_CPNAME�UNKNOWN_CP_NAME)�Feature�get_cl_feature_status_map�get_hosting_accounts_limit)	�get_cp_plugin_module�detect_panel_fast�CPANEL_NAME�DIRECTADMIN_NAME�
PLESK_NAME�ISPMANAGER_NAME�INTERWORX_NAME�INTEGRATED_NAME�OFFICIAL_PLUGINS)�NotSupported�NoPanelUser)�is_cl_solo_edition�CLEditionDetectionError�is_containercCsttttttgkS)zH
    Is current panel has native CL support
    :return: True/False
    )�_CP_NAMErrrrr�rr��/builddir/build/BUILDROOT/alt-python27-cllib-3.4.1-1.el9.cloudlinux.x86_64/opt/alt/python37/lib/python3.7/site-packages/clcommon/cpapi/__init__.py�is_cl_supported_panel6srFcCs
t�|�S)z�
    Return list of available admin's packages
    :param raise_exc: hack for lvemanager
    :rtype: list
    :return: List of packages. For example
        ['BusinessPackage', 'Package2']
    )�_panel_class�admin_packages)�	raise_excrrrrDsrcCst��S)a
    Return dictionary, contains available resellers packages, grouped by resellers
    :rtype: dict
    :return: Dictionary.
        Example:
        {'res1': ['BusinessPackage', 'UltraPackage', 'Package'],
         'res2': ['SimplePackage', 'Package'] }
    )r�resellers_packages)r rrrr!Os	r!c	Csht��dkrt��Stttkr(t��Stdk	r4tSt}tj	�
t�rdtt��}|�
���}WdQRX|S)zC
    Return panel name
    :rtype: str
    :return: Panel name
    rN)�os�getegidr�	getCPNamerr�_CP_PLUGIN_NAMErr�path�isfiler�open�readline�strip)ZcontrolpanelnameZcache_streamrrrr$[s
r$cCst��S)z�
    Retrieve panel name and it's version
    :rtype: dict
    :return: dict: { 'name': 'panel_name', 'version': 'panel_version', 'additional_info': 'add_info'}
        or None if can't get info
    )r�get_cp_descriptionrrrrr+usr+cCs0t�rt��Stjdd�}dd�|D�}t|�S)z�
    Generates a list of cpusers registered in the control panel
    :return: list of cpusers registered in the control panel
    :rtype: tuple
    )�cplogin)�keylscSsg|]}|d�qS)rr)�.0Zuser_rrr�
<listcomp>�szcpusers.<locals>.<listcomp>)rr�cpusers�cpinfo�tuple)Z
users_infoZ_list_usersrrrr0s
r0cCst��S)z�
    Generates a list of resellers in the control panel
    :return: list of cpusers registered in the control panel
    :rtype: tuple
    )r�	resellersrrrrr3�sr3cCst��S)z�
    Generates a set of admins in the control panel
    :return: set of cpusers registered in the control panel
    :rtype: set
    :raise: NotSupported
    )r�adminsrrrrr4�sr4cCst��S)z�
    Getting root access to mysql database.
    For example {'login': 'root', 'db': 'mysql', 'host': 'localhost', 'pass': '9pJUv38sAqqW'}
    :return: root access to mysql database
    :rtype: dict
    :raises: NoDBAccessData
    )r�	db_accessrrrrr5�sr5cCst�||�S)a�
    Returs a list of pairs, the database user login - user login control panel
    For example:
        (('nata2_someuse', 'nata2'), ('testsome_dfrtbus', 'testsome'))
    :param list|tuple|None cplogin_lst: list of control panel users
    :param bool with_system_users: add system users to dbmapping
    :return: list of pairs, the database user login - user login control panel
    :rtype: tuple
    :raises: NotSupported, NoPackage
    )r�dblogin_cplogin_pairs)Zcplogin_lstZwith_system_usersrrrr6�sr6�r,�packageZmailZresellerZdnsTcCstj|||d�S)u�
    Retrieves info about panel user(s)
    :param str|unicode|list|tuple|None cpuser: user login
    :param keyls: list of data which is necessary to obtain the user,
                    the values​can be:
       cplogin - name/login user control panel
       mail - Email users
       reseller - name reseller/owner users
       locale - localization of the user account
       package - User name of the package
       dns - domain of the user
    :param bool search_sys_users: search for cpuser in sys_users or in control panel users (e.g. for Plesk)
    :return: returns a tuple of tuples of data in the same sequence as specified keys in keylst
    :rtype: tuple
    )�search_sys_users)rr1)�cpuserr-r9rrrr1�sr1cCs4t�rt��Syt��dStk
r.dSXdS)z�
    Gets admin email
    Note: be careful when modifying this method.
    It is used in SSA, ask @dkavchuk or someone else from C-Projects team
    for details
    :rtype: string
    :return: string - admin email
    r�N)rr�get_admin_emailZget_admin_emails_list�
IndexErrorrrrrr<�s	r<cCs,d}t�r(yt��Stk
r&|SX|S)NZen)rr�get_admin_localer)ZDEFAULT_LOCALErrrr>�sr>cCs
t�|�S)z�
    Return document root for domain
    :param str|unicode domain:
    :rtype tuple
    :return Tuple: (document_root, owner)
    )r�docroot)�domainrrrr?�sr?cCst�||�S)z�
    Return domain and document root pairs for control panel user
    first domain is main domain
    :param str|unicode cpuser: user login
    :rtype: list
    :return list of tuples (domain_name, documen_root)
    )r�useraliases)r:r@rrrrA�s	rAcCs
t�|�S)z�
    Return domain and document root pairs for control panel user
    first domain is main domain
    :param str|unicode cpuser: user login
    :rtype: list
    :return list of tuples (domain_name, documen_root)
    )r�userdomains)r:rrrrB�srBcCst��S)z�
    Detects and returns list of folders contained the home dirs of users of the cPanel
    :rtype: list
    :return: list of folders, which are parent of home dirs of users of the panel
    )r�homedirsrrrrrC
srCcCs t�rt�|�St|�\}}|S)z�
    Return domain's owner
    :param domain: Domain/sub-domain/add-domain name
    :rtype: str
    :return: user name or None if domain not found
    )rr�domain_ownerr?)r@�_Z
_domain_ownerrrrrDs
rDcCs
t�|�S)z�
    Return reseller users
    :param resellername: reseller name; return empty list if None
    :rtype list
    :return list[str]: user names list
    )r�reseller_users)�resellernamerrrrF srFcCs
t�|�S)z�
    Return reseller users and their main domains
    :param resellername: reseller name; autodetect name if None
    :rtype disct
    :return dict[str, str]: pairs user <==> domain
    )r�reseller_domains)rGrrrrH*srHcCs
t�|�S)zM
    Check if user is reseller;
    :type username: str
    :rtype: bool
    )r�is_reseller)�usernamerrrrI4srIcCs
t�|�S)zP
    Get login url for current panel;
    :type domain: str
    :rtype: str
    )r�get_user_login_url)r@rrrrK=srKcCs
t�|�S)z�
    Return True if username is in admin names
    :param str username: user to check
    :rtype bool
    :return: True if user is admin
    )r�is_admin)rJrrrrLFsrLcCs*t�}y
|tjStk
r$dSXdS)z{
    Return True if panel supports reseller limits (LVE10+)
    :return: bool - True - yes, False - no
    :rtype bool
    FN)r
r	ZRESELLER_LIMITS�KeyError)Zpanel_featuresrrr�is_reseller_limits_supportedPs

rNcCst��S)z�
    Get dict reseller => id
    Optional method for panels without hard
    link reseller <=> system user
    :rtype: dict[str,int] - {'res1': id1}
    )r�get_reseller_id_pairsrrrrrO`srOcCst��S)zY
    Retrive encoding name, used for package/reseller names, from panel
    :return:
    )r�get_encoding_namerrrrrPlsrP)�feature�returncCs4yt�}|dkp|�|d�Stk
r.dSXdS)z�
    Get if feature is supported by control panel.
    :param
      feature: constant from Feature class
    :return:
      boolean
    NF)�get_supported_cl_features�getr)rQZfeaturesrrr�is_panel_feature_supportedts
rUcCst��S)zL
    Retrieves Apache's connections number (from mod_status)
    For CM
    )r�get_apache_connections_numberrrrrrV�srVcCst��S)z`
    Retrieves active httpd's ports from httpd's config
    :return: list of apache's ports
    )r�get_apache_ports_listrrrrrW�srWcCst��S)z�
    Get current maximum request apache workers from httpd's config
    :return: tuple (max_req_num, message)
        max_req_num - Maximum request apache workers number or 0 if error
        message - OK/Trace
    )r�get_apache_max_request_workersrrrrrX�srX)�uidrRcCs
t�|�S)zT
    Get "main" panel username by uid.
    :param uid: uid
    :return Username
    )r�get_main_username_by_uid)rYrrrrZ�srZcCst�||�S)N)r�get_user_emails_list)rJr@rrrr[�sr[cCs
t�|�S)N)r�panel_login_link)rJrrrr\�sr\cCs
t�|�S)N)r�panel_awp_link)rJrrrr]�sr]cCst��p
iS)zK
    Returns features that are not supported on current control panel.
    )rZget_unsupported_cl_featuresrrrr�get_unsupported_features�sr^cCst�S)zd
    Left here mostly for backwards compatibility.
    See get_cl_feature_status_map docstring.
    )r
rrrrrS�srScCstdd�st�rdSdS)NT)Zskip_jwt_checkF)rrrrrr�is_throttling_supported�sr_)rRcCst��S)zY
    Get panel users count, admin accounts are not counted
    :return: Users count.
    )r�get_hosting_accounts_countrrrrr`�sr`cCst�}|sdSt��}||kS)zB
    Check if customer hitting max accounts count per edition
    F)rrr`)Zmax_accounts_limitZcurrent_accounts_countrrr�is_hitting_max_accounts_limit�s
racCst�S)N)rrrrr�get_max_accounts_limit�srbcsDy
t�}Wntk
r&td��YnXt��t�fdd�|D��S)z|
    Retrieve users count and admins count,
    substract the last value from the first one and dump the result on disk
    zcpusers() method not supportedc3s|]}|�krdVqdS)rNr)r.�user)�admins_collectionrr�	<genexpr>�sz)count_hosting_accounts.<locals>.<genexpr>)r0rr4�sum)Z
users_listr)rdr�count_hosting_accounts�s
rgcCs<d}tj�|�sdSyt�d�dkStk
r6dSXdS)z@
    They have symlink /usr/local/cpanel/server.type -> wp2
    z/usr/local/cpanel/server.typeFZwp2N)r"r&�islink�readlink�	Exception)Z
wp2_markerrrr�is_wp2_environment�srk)F)F)NF)Nr7T)N)`�__doc__Z
__future__rrrr"�	functoolsrZconstrrZclcommon.featuresr	r
rZ	pluginlibrr
rrrrrrrZcpapiexceptionsrrZclcommon.lib.cleditionrrrrr%rrr!r$r+r0r3r4r5r6r1r<r>r?rArBrCrDrFrHrIrKrLrNrOrP�boolrUrVrWrX�int�strrZr[r\r]r^rSr_r`rarbrgrkZ
_apipluginZPanelPluginrZCP_NAMEZget_domains_php_infoZget_system_php_infoZlist_allZ
list_usersZget_reseller_usersZreseller_package_by_uidZget_uids_list_by_packageZget_installed_php_versionsZget_customer_loginZget_domain_loginZ
get_server_ipZinvalidate_cpapi_cacheZsuspended_users_listrrrr�<module>
s�,