File: //opt/alt/python37/lib/python3.7/site-packages/clcommon/cpapi/__pycache__/__init__.cpython-37.pyc
B
좵C��� � @ s� d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddlm Z m
Z
dd lmZm
Z
mZ dd
lmZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZmZmZ e� \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;ee<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_containerc C s t tttttgkS )zH
Is current panel has native CL support
:return: True/False
)�_CP_NAMEr r r r r � r r ��/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_panel6 s r Fc C s
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_excr r r r D s r c C s t �� 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 r r r r! O s r! c C sh t �� dkrt�� S tt tkr(t�� S tdk r4tS t} t j �
t�rdtt��}|�
� �� } W dQ R X | S )zC
Return panel name
:rtype: str
:return: Panel name
r N)�os�getegidr � getCPNamer r �_CP_PLUGIN_NAMEr r �path�isfiler �open�readline�strip)ZcontrolpanelnameZcache_streamr r r r$ [ s
r$ c C s t �� 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_descriptionr r r r r+ u s r+ c C s0 t � rt�� S tjdd�} 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)�keylsc S s g | ]}|d �qS )r r )�.0Zuser_r r r �
<listcomp>� s zcpusers.<locals>.<listcomp>)r r �cpusers�cpinfo�tuple)Z
users_infoZ_list_usersr r r r0 s
r0 c C s t �� S )z�
Generates a list of resellers in the control panel
:return: list of cpusers registered in the control panel
:rtype: tuple
)r � resellersr r r r r3 � s r3 c C s t �� 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 �adminsr r r r r4 � s r4 c C s t �� 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_accessr r r r r5 � s r5 c C s 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_usersr r r r6 � s r6 �r, �packageZmailZresellerZdnsTc C s t j| ||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 valuescan 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)r r1 )�cpuserr- r9 r r r r1 � s r1 c C s4 t � rt�� S yt�� d S tk
r. dS X dS )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)r r �get_admin_emailZget_admin_emails_list�
IndexErrorr r r r r<