JFIF$        dd7 

Viewing File: /usr/share/l.v.e-manager/utils/__pycache__/libcloudlinux.cpython-311.pyc

�

C�d%����ddlmZddlmZddlmZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
mZddlmZddlmZmZmZddlmZmZdd	lmZdd
lmZmZmZddlmZddl m!Z!dd
l"m#Z#m$Z$ddl%m&Z&m'Z'dddddd�Z(ddgZ)dZ*dZ+e
j,�-e+��sdZ+dZ.d�Z/Gd�de��Z0Gd�de��Z1eGd �d!����Z2Gd"�d#e3��Z4Gd$�d%e��Z5Gd&�d'e��Z6eGd(�d)����Z7Gd*�d+��Z8Gd,�d-e8��Z9Gd.�d/e8��Z:Gd0�d1e8��Z;Gd2�d3e8��Z<dS)4�)�print_function)�division)�absolute_importN)�Enum)�	dataclass)�Callable�List�Optional)�
basestring�unicode)�	iteritems)�!silence_stdout_until_process_exit�get_cl_version�	is_ubuntu)�CloudlinuxLicenseLib)�get_cpanel_api_class)�is_cl_solo_edition�is_container)�is_hitting_max_accounts_limit�get_main_username_by_uid�Python Selector�Node.js SelectorzPHP SelectorzResource Usage�AccelerateWP)�python_selector�nodejs_selector�php_selector�resource_usage�wposrr�CloudLinux Managerz/usr/bin/cagefs_enter.proxiedz/bin/cagefs_enter.proxiedz/usr/bin/lve_suwrapperc�`�	tj|��dS#t$r}Yd}~dSd}~wwxYw)NTF)�json�loads�
ValueError)�data�errors  �s/builddir/build/BUILDROOT/lvemanager-7.11.29-1.el9.cloudlinux.x86_64/usr/share/l.v.e-manager/utils/libcloudlinux.py�is_jsonr'1sH����
�4�����t�������u�u�u�u�u��������s��
-�-c��eZdZdZdZdZdZdS)�
EnterFlagTypez'Enum for different types of enter flags�io_and_memory_limit�	cpu_limit�	max_enterN)�__name__�
__module__�__qualname__�__doc__�IO_AND_MEMORY_LIMIT�	CPU_LIMIT�	MAX_ENTER��r&r)r)9s$������1�1�/���I��I�I�Ir5r)c��eZdZdZdZdZdS)�	EnterToolzEnum for different enter toolszcagefs_enter.proxied�
lve_suwrapperN)r-r.r/r0�CAGEFS_ENTER_PROXIED�
LVE_SUWRAPPERr4r5r&r7r7As������(�(�1��#�M�M�Mr5r7c��eZdZUdZdZeed<dZeed<dZeed<de	e
fd�Zde	e
fd�Ze
dd	���Ze
dd
���ZdS)
�
EnterFlagszOAbstraction layer for enter flags that can be converted between different toolsF�no_io_and_memory_limit�no_cpu_limit�no_max_enter�returnc��g}|jr|�d��|jr|�d��|jr|�d��|S)z&Convert to cagefs_enter.proxied formatz--no-io-and-memory-limitz--no-cpu-limitz--no-max-enter�r=�appendr>r?��self�argss  r&�to_cagefs_argszEnterFlags.to_cagefs_argsPsf�����&�	4��K�K�2�3�3�3���	*��K�K�(�)�)�)���	*��K�K�(�)�)�)��r5c��g}|jr|�d��|jr|�d��|jr|�d��|S)zConvert to lve_suwrapper formatz-mz-cz-erBrDs  r&�to_lve_suwrapper_argsz EnterFlags.to_lve_suwrapper_args[sc�����&�	��K�K�������	��K�K�������	��K�K������r5c��|ddd���S)zCreate flags for no limitsT�r=r>r?r4��clss r&�	no_limitszEnterFlags.no_limitsfs���s�$�T�PT�U�U�U�Ur5c��|ddd���S)zCreate flags for all limitsFrKr4rLs r&�
all_limitszEnterFlags.all_limitsks���s�%�e�RW�X�X�X�Xr5N)r@r<)r-r.r/r0r=�bool�__annotations__r>r?r	�strrGrI�classmethodrNrPr4r5r&r<r<Hs��������Y�Y�#(��D�(�(�(��L�$�����L�$����	��S�	�	�	�	�	�	�t�C�y�	�	�	�	��V�V�V��[�V��Y�Y�Y��[�Y�Y�Yr5r<c�<�eZdZiZdZgd�Zgd�ZdZdZe	��Z
d�Zd�Zd�Z
d	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d-d�Zd�Zd�Zd.d�Z						d/d�Z d0d�Z!d�Z"d�Z#d �Z$d!�Z%d"�Z&d#�Z'd$�Z(d%�Z)d&�Z*d'�Z+d(�Z,d)�Z-d*�Z.d+�Z/d,�Z0dS)1�CloudlinuxCliBaseN)	�owner�command�method�params�	user_info�mockJson�attachments�plugin_name�lang)zconfig-files�contentzpassenger-log-filezignore-listzwp-path�upgrade-urlF�c
�:�d|_i|_|���|���|���|j|j|j|j|j	|j
|j|j|j
|j|j|jd�|_dS)NF)zspa-ping�cloudlinux-top�cloudlinux-selector�cloudlinux-statistics�cloudlinux-chartszcloudlinux-quotaz
cpanel-api�cloudlinux-xray-user-managerzcloudlinux-statsnotifierzcloudlinux-awp-userzcl-smart-advice-userzcl-install-plugin)�skip_cagefs_checkr[�parsing_request_data�	check_xss�drop_permission�spa_ping�cl_top�cl_selector�
cl_statistics�cl_chart�cl_quota�
cpanel_api�cl_xray_user_manager�cl_statsnotifier�cloudlinux_awp_user�cl_smart_advice_user�cl_install_plugin�command_methods�rEs r&�__init__zCloudlinuxCliBase.__init__�s���!&�������!�!�#�#�#��������������
�"�k�#'�#3�%)�%7�!%�� $�
��/�,0�,E�(,�(=�#'�#;�$(�$=�!%�!7�
 
�
 
����r5c�"�|j���D]#}||jvr|�d|z���$t	|j��D�]�\}}t|t���r�t	|��D�]w\}}|�|��|jddkr0|dkr*|dkr$|�|��|j||<�\|jddkr�n|jddkr
|dkr|dkr��|jdd	kr
|dkr|d
kr��|jddkr
|dkr|dkr��|jddkr
|dkr|d
kr��|jddkr|dkr|d
kr��|jddkr|dkr|dkr��$|jddkr|dkr|dkr��C|jddkr|dkr|dkr��b|�	|����y���|�	|�����dS)NzBAD REQUEST 1:rXzcloudlinux-packagesrZ�packagezcloudlinux-supportre�options�lvectl�stdinzenv-varszcloudlinux-xray-manager�urlrhzwmt-apiz
config-change�emailzcloudlinux-awp-adminra)
�request_data�keys�available_request_params�exit_with_errorr
�
isinstance�dict�check_param_key�escape_param_value�check_param_value)rE�key�name�val�inner_values     r&rkzCloudlinuxCliBase.check_xss�s����$�)�)�+�+�	=�	=�C��$�7�7�7��$�$�%5��%;�<�<�<��"�4�#4�5�5�A	,�A	,�I�D�#��#�t�$�$�@
,�(1�#���=<�=<�$�C���(�(��-�-�-��)�)�4�8M�M�M� �H�,�,��9�,�,�7;�7N�7N�'�8�8��)�$�/��4�4��*�9�5�9M�M�M���)�)�4�8M�M�M� �H�,�,��9�,�,���)�)�4��@�@� �H�,�,��7�N�N���)�)�4�8M�M�M� �H�,�,��:�-�-���)�)�4�8Q�Q�Q� �H�,�,��5�L�L���)�)�4�8V�V�V� �H�,�,��5�L�L���)�)�4�	�A�A� �H�,�,��?�2�2���)�)�4�8Q�Q�Q� �H�,�,��7�N�N���)�)�4�8N�N�N� �H�,�,��=�0�0���.�.�{�;�;�;�;�{=<�~�&�&�s�+�+�+�+�CA	,�A	,r5c���tj���}|j�d��r6|j�d��}tjd|��sd}||d<|S)z-
        Get env for subprocess call
        r_z
^[a-z]{2}$�en�LC_ALL)�os�environ�copyr��get�re�match)rE�env_copyr_s   r&�get_envzCloudlinuxCliBase.get_env�sl���:�?�?�$�$���� � ��(�(�	&��$�(�(��0�0�D��8�M�4�0�0�
���!%�H�X���r5c���	tjtjtj��}|�d��|���dS#t
$r}Yd}~dSd}~wwxYw)z.
        Get the server's IP address.
        )z8.8.8.8�PrN)�socket�AF_INET�
SOCK_DGRAM�connect�getsockname�	Exception)rE�s�es   r&�
get_server_ipzCloudlinuxCliBase.get_server_ip�sn��	��
�f�n�f�.?�@�@�A�
�I�I�o�&�&�&��=�=�?�?�1�%�%���	�	�	��4�4�4�4�4�����	���s�AA�
A/�*A/c�^�tjd|��s|�d��dSdS)Nz	^[\w\-]+$�
BAD REQUEST 2)r��searchr�)rEr�s  r&r�z!CloudlinuxCliBase.check_param_key�s:���y��c�*�*�	2�� � ��1�1�1�1�1�	2�	2r5c��t|t��r7tjd|tj��r|�d��dSdSdS)Nz
[`\|\$;&
]�
BAD REQUEST 3)r�rr�r��Mr�)rEr�s  r&r�z#CloudlinuxCliBase.check_param_valuesZ���c�:�&�&�	6��y���R�T�2�2�
6��$�$�_�5�5�5�5�5�	6�	6�
6�
6r5c�F�d}|D]}|�|d|z��}�|S)Nz\"'�\)�replace)rEr��chars�cs    r&r�z$CloudlinuxCliBase.escape_param_values4�����	+�	+�A��+�+�a����*�*�C�C��
r5c�j�|jd}|j�|��}gd�}|rT|js||vr|���d|jvr |�|jd��|��dS|r|�d|z��dS|�d��dS)NrX)zcloudlinux-licensez
external-info�spa-get-user-infor\zNo such module zCommand not defined)r�ryr��license_is_checked�
check_license�spa_mockr�)rErX�endpoint�allowed_methodss    r&�mainzCloudlinuxCliBase.mains����#�I�.���'�+�+�G�4�4��
�
�
��
�
	<��*�
%�w�o�/M�/M��"�"�$�$�$��T�.�.�.��
�
�d�/�
�;�<�<�<��H�J�J�J�J�J��
<��$�$�%6��%@�A�A�A�A�A��$�$�%:�;�;�;�;�;r5c�t�tj��}|�d��|�ddd���	|���}n#|�d��YnxYw|jr�|j}t
j|���d��}	tj
|��|_|j|_n%#t$r|�d��YnwxYw|���|_|���d
S|�d	��d
S)zZ
        parsing entry data, encode it from base64 to dictionary
        :return:
        z--data�--skip-cagefs-check�
store_trueF)�action�defaultzUnknown param in requestzutf-8zNeed json-arrayzNo --data param in requestN)�argparse�ArgumentParser�add_argument�
parse_argsr�r$�base64�	b64decode�decoder!r"r�rir#�
get_user_infor[�define_current_plugin)rE�parser�	arguments�data_in_base64�data_in_jsons     r&rjz&CloudlinuxCliBase.parsing_request_data"sO��
�(�*�*�����H�%�%�%����1�,�PU��V�V�V�	=��)�)�+�+�I�I��	=�� � �!;�<�<�<�<�<�����>�	?�&�^�N�!�+�N�;�;�B�B�7�K�K�L�
8�$(�J�|�$<�$<��!�)2�)D��&�&���
8�
8�
8��$�$�%6�7�7�7�7�7�
8����!�/�/�1�1�D�N��&�&�(�(�(�(�(�� � �!=�>�>�>�>�>s�A�A0�)%C�C1�0C1c��|j�d��pi}|jddkrRtd�|���D����r't	j��}t
|��}||d�}|S)Nr[rW�userc3�K�|]}|duV��	dS�Nr4)�.0�values  r&�	<genexpr>z2CloudlinuxCliBase.get_user_info.<locals>.<genexpr>>s7����8
�8
�#�E�T�M�8
�8
�8
�8
�8
�8
r5)�username�lve-id)r�r��any�valuesr��geteuidr)rEr[�euidr�s    r&r�zCloudlinuxCliBase.get_user_info<s����%�)�)�+�6�6�<�"�	���W�%��/�/�C�8
�8
�'0�'7�'7�'9�'9�8
�8
�8
�5
�5
�/��:�<�<�D�/��5�5�H�%-��>�>�I��r5c���ddlm}ddlmcm}|���}d}	||�����j|�\}}nM#|j$r@}|�	��|�
t|����Yd}~nd}~wwxYw|j�
d��dkr�i}	tj|��}n#|�
|��YnxYw|�
d��dkr>|�
|�
d��|�
d��d	�
��t!|��t#��t%j|��dS)Nr)�
CloudLinuxToprbrWr��result�success�contextT)�
ignore_errors)� lvestats.lib.info.cloudlinux_topr��lvestats.lib.config�lib�config�prepair_params_for_command�read_configr��ConfigError�log_and_exitr�rSr�r�r!r"�printr�sys�exit)rEr�r��list_to_requestr��exitcode�ce�json_results        r&rnzCloudlinuxCliBase.cl_topFs���B�B�B�B�B�B�,�,�,�,�,�,�,�,�,��9�9�;�;����	*�G�}�}�V�-?�-?�-A�-A�B�B�G� � ��F�H�H���!�	*�	*�	*��O�O����� � ��R���)�)�)�)�)�)�)�)�����	*������ � ��)�)�V�3�3��K�
-�"�j��0�0����
-��$�$�V�,�,�,�,�,�������x�(�(�I�5�5��$�$��O�O�H�-�-��O�O�I�.�.�"&�%����
	�f�
�
�
�)�+�+�+��������s#�(A�
B�6B�B�>C�C,c�n�|���}|jdg|�Rddi�}t|��dS)Nz/usr/bin/cl-quotar�T�r��run_utilr��rEr�r�s   r&rrzCloudlinuxCliBase.cl_quotafsT���9�9�;�;������
�"1�
�
�
�AE�
�
��	�f�
�
�
�
�
r5c��|���}|�d��|jdg|�Rddi�}t|��dS)N�--jsonz./opt/alt/php-xray/cloudlinux-xray-user-managerr�F)r��remover�r�r�s   r&rtz&CloudlinuxCliBase.cl_xray_user_managermsj���9�9�;�;�����x�(�(�(����<�
�
�
�
�
� �
�
��
	�f�
�
�
�
�
r5c��d}|�d���}d|vrNtj|g|�tjtjtjd���|���|j|g|�Rddi�}t
|��dS)Nz&/opt/alt/php-xray/cl-smart-advice-userF��	with_jsonz--asyncT)r��stdout�stderr�textr�)r��
subprocess�Popen�PIPE�exit_with_successr�r��rE�cli_commandr�r�s    r&rwz&CloudlinuxCliBase.cl_smart_advice_userws���>���9�9�E�9�J�J����'�'����/��/� �o�!��!���
�
�
�
�
�"�"�$�$�$����{�R�_�R�R�R�E�R�R��
�f�
�
�
�
�
r5c��|j�d��}|j�d��}|�dd���}t	|��}|�d|�||��i��dS)NrWrYF)r��add_dashr$)r�r��popr�rr��run)rErWrYr�rss     r&rszCloudlinuxCliBase.cpanel_api�s����!�%�%�g�.�.���"�&�&�x�0�0���9�9��e�:�
�
��*�%�0�0�
�����
���v��(O�(O�P�Q�Q�Q�Q�Qr5c��|���}	|�d��n#t$rYnwxYw|D],}|�d��r|�d���-|�dd��t
j|dd���}ttj
d	|d
�����t��tj
d��dS)Nr�z--outputr�rz/usr/sbin/lvechartFT)�shellr�r�)r��chart)r�r�r#�
startswithr��insertr��check_outputr�r!�dumpsrr�r�)rEr��param�responses    r&rqzCloudlinuxCliBase.cl_chart�s����9�9�;�;��	��"�"�8�,�,�,�,���	�	�	��D�	����$�	6�	6�E����
�+�+�
6��$�$�_�5�5�5�����q�"6�7�7�7��*�?�%�d�S�S�S��
�d�j�I��A�A�B�B�C�C�C�)�+�+�+��������s�,�
9�9c�~�|j}|ddvr)d|jvs	d|jvr|�d��dSdSdS)zW
        Drop permission to users, if owner of script is user
        :return:
        rW��resellerr�r�r�zUser id does not specifiedN)r�r[r�)rEr$s  r&rlz!CloudlinuxCliBase.drop_permission�s^��
� ����=�0�0�0��D�N�*�*�j���.N�.N�� � �!=�>�>�>�>�>�1�0�.N�.Nr5Tc	�$�|rdnd}tj|j��}g}d|vr3|d�d��D]}|�|���d|vri|d<d|dvr
|rd|dd<t|d��D]�\}}	|dkr�|	rS|d	urO|�|�||	�d
����������`|	s	||j	vr.|dur*|�|�||	������|�d�|������|jd
dkr3|�d�|j
d����d|dvrr|dddkr`|�d��|dd���D]*}|�d�|�����+|S)a�
        Method that converts given dict of parameters
        into list of strings that should be passed
        as arguments command-line application
        :param with_json: add --json argument
        :param escaped_strings: ONLY FOR BACKWARDS COMPATIBILITY!
                                SHOULD BE False FOR ALL NEW METHODS!
        :param add_dash: if we need to add dashes to params
        :return:
        z	--{0}={1}z{0}={1}rY� rZr!rbzadditional-paramsTzunicode-escapeFz--{0}rWrz--for-reseller={0}r�z--z{0})r��deepcopyr��splitrCr
�format�encoder��NOT_FLAGGED_PARAMSr[)
rEr��escaped_stringsr�value_templater$r�rYrr�s
          r&r�z,CloudlinuxCliBase.prepair_params_for_command�si��)1�?���i���}�T�.�/�/�����t����x�.�.�.�s�3�3�
/�
/���&�&�v�.�.�.�.��4����D��N���h��'�'�I�'�%'�D��N�6�"�%�d�8�n�5�5�	B�	B�L�E�5��+�+�+��B�_��4�4�#�*�*�&�-�-�!�5�<�<�0@�#A�#A�#H�#H�#J�#J��������B�"�d�&=�=�=�%��.�.�#�*�*�>�+@�+@���+N�+N�O�O�O�O�#�*�*�7�>�>�%�+@�+@�A�A�A����W�%��3�3��"�"�$�+�+�D�N�:�,F�G�G�
�
�
�

 �4��>�1�1��X��2�3�r�9�9��"�"�4�(�(�(��h��(;�<�B�B�D�D�
<�
<���&�&�u�|�|�E�':�':�;�;�;�;��r5c�@�tj�d��S)Nz/usr/sbin/clncheck)r��path�isfilerzs r&�is_edition_migration_availablez0CloudlinuxCliBase.is_edition_migration_available�s���w�~�~�2�3�3�3r5c�R�ttjd��5}ddg}|���r|�d��tj|||d���tjddg||d���ddd��n#1swxYwY|�d��dS)	N�wz/usr/sbin/clnreg_ksz--forcez--migrate-silentlyF)r�r�rz/usr/bin/cldetectz--update-license)�openr��devnullrrCr��callr�)rEr �
clnreg_cmds   r&�update_licensez CloudlinuxCliBase.update_license�s���
�"�*�c�
"�
"�
	�g�/��;�J��2�2�4�4�
8��!�!�"6�7�7�7��O�J�w�w�e�T�T�T�T��O�$�&8�9����	
�
�
�
�
	�
	�
	�
	�
	�
	�
	�
	�
	�
	�
	����
	�
	�
	�
	�	
���5�!�!�!�!�!s�A B�B�Bc	�*�|���sr|jddvr?|�dddt�|jt��id���n$|jddvr|�d	��t��ru|jdd
kr|�d��|jddkr>|�dddt�|jt��id���|j�	��s�|jdd
vr�d}|j�d��r3|jd�d��r|jdd}dddd��|d��d
�}|�dddt�|jt��id���dS|r|�
��dS|�d��dSd|_dS)NrW)r�zERROR.not_available_plugin�
pluginName�disabled)�code�error_idr��icon)�adminzKernel is not supportedr+z ERROR.hitting_max_accounts_limitr�r�nodejsrZ�interpreterrrr)�pythonr,zLicense is not validT)�kernel_is_supportedr�r��LVEMANAGER_PLUGIN_NAMESr��current_plugin_name�DEFAULT_PLUGIN_NAMEr�licence�get_license_statusr#r�)rE�
with_recoveryr-�pluginNamess    r&r�zCloudlinuxCliBase.check_license�s����'�'�)�)�
	@�� ��)�\�9�9��$�$��9�$�&=�&A�&A� �4�6I�'�'��
$�%�	�	�	�	��"�7�+�y�8�8��$�$�%>�?�?�?�(�*�*�
	�� ��)�W�4�4��$�$�%G�H�H�H�� ��)�V�3�3��$�$��9�$�&=�&A�&A� �4�6I�'�'��
$�%�	�	�	��|�.�.�0�0�	+�� ��)�-A�A�A�&���$�(�(��2�2�M�t�7H��7R�7V�7V�!�8�8�M�#'�"3�H�"=�m�"L�K� 4�"3�"4����c�+�'9�:�:�����$�$��9�$�&=�&A�&A� �4�6I�'�'��
$�%�	�	�	�	�	�!�A��'�'�)�)�)�)�)��(�(�)?�@�@�@�@�@�&*�D�#�#�#r5c��d|i}|r||d<|r||d<|r||d<|r||d<|r||d<ttj|����tjd��dS)Nr�r�r(r)r*�ignore�)r�r!r
r�r�)rE�error_stringr�r(r)r*r�r�s        r&r�z!CloudlinuxCliBase.exit_with_error9s����L�)���	(� '�F�9���	"�!�F�6�N��	*�!)�F�:���	"�!�F�6�N��	-�,�F�8��
�d�j�� � �!�!�!��������r5c��|rtj|��ni}d|d<ttj|����tjd��dS)Nr�r�r)r�rr�r!r
r�r�)rErr$s   r&r�z#CloudlinuxCliBase.exit_with_successPsM��*2�:�t�}�X�&�&�&���"��X��
�d�j��������������r5c��ddlm}ddlmcm}ddlm}|���}	|���}||��}||||�	dd�����t��tjd��dS#|j
$r4}|���|�|��Yd}~dSd}~wwxYw)Nr�r�)�make_db_engine�	server_id�	localhost)�argv_r?)�"lvestats.lib.cloudlinux_statisticsr�r�r�r��lvestats.lib.dbenginer>r�r�r�rr�r�r�r�r�)rEr�r�r>r��cnf�dbenginer�s        r&rpzCloudlinuxCliBase.cl_statisticsVs��;�;�;�;�;�;�,�,�,�,�,�,�,�,�,�8�8�8�8�8�8��9�9�;�;��	%��$�$�&�&�C�%�~�c�*�*�H��D��%��'�'�+�{�;�;�
�
�
�
�

.�/�/�/��H�Q�K�K�K�K�K���!�	%�	%�	%��O�O����� � ��$�$�$�$�$�$�$�$�$�����	%���s�A#B�
C�)C	�	Cc�:�d|z}tj�|��|kr|�d��t	|d��5}t|�����ddd��n#1swxYwYtjd��dS)Nz./usr/share/l.v.e-manager/spa/src/jsons/%s.jsonr��rr)	r�r�realpathr�rr��readr�r�)rE�file�	file_path�fs    r&r�zCloudlinuxCliBase.spa_mockks���D��M�	�
�7���I�&�&�)�3�3�� � ��1�1�1�
�)�S�
!�
!�	�Q��!�&�&�(�(�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��������s�"A<�<B�Bc��	tjdddd������}t|dd���S#YdSxYw)Nz)cat /proc/lve/list | grep -Po '^\d{1,2}:'T�	/bin/bash�r�
executabler����r)r�r	�strip�int)rE�vers  r&�get_lve_versionz!CloudlinuxCliBase.get_lve_versionts^��		��)�;��&��	���
�e�g�g�
��s�3�B�3�x�=�=� ��	��1�1���s�AA�Ac�V�tjdddd������S)Nzuname -r | grep -Po 'el\d\w?'TrNrO)r�r	rRrzs r&�get_cloudlinux_versionz(CloudlinuxCliBase.get_cloudlinux_version�s3���&�+��"��	
�
�
�
�%�'�'�	r5c�.�|���dSr��r�rzs r&rmzCloudlinuxCliBase.spa_ping�s����� � � � � r5c�\�	ddlm}n#|�d��YnxYw|j�d��r:d|jdvr+|jdddkr|���|���}|��}|�|��dS)Nr)�CloudlinuxSelectorzModule unavailabler�r-rZ�php)	�clselector.cl_selectorr[r�r[r�r��%check_php_selector_user_availablilityr�r)rEr[r��clls    r&rozCloudlinuxCliBase.cl_selector�s���	7�A�A�A�A�A�A�A��	7�� � �!5�6�6�6�6�6�����N���z�*�*�	9���!2�8�!<�<�<��!�(�+�M�:�e�C�C��6�6�8�8�8��9�9�;�;�� � �"�"������ � � � � s�	�"c��	d}tj�|��ddl}|jr |�|jd��std���n.#ttf$r|�	dd���YnwxYwdd	l
m}	dd
lm
}|���dS#|$r|�	dd���YdSwxYw)zI
        Additional check only for php selector
        :return:
        z/usr/share/cagefsrNr�zCagefs is disabled or missingr%zERROR.cagefsDisabled)r(r))�BaseClSelectException)�ClSelectzERROR.systemVersionAltPHP)r�rrC�	cagefsctl�cagefs_is_enabled�is_user_enabledr[�RuntimeError�ImportErrorr��clselect.clselectexceptra�clselectrb�%check_multiphp_system_default_version)rE�LIBDIRrcrarbs     r&r^z7CloudlinuxCliBase.check_php_selector_user_availablility�sQ��
	�(�F��H�O�O�F�#�#�#������.�
D�i�6O�6O���z�*�7�7�
D�#�#B�C�C�C�
D��
�\�*�	�	�	�� � ��/�
!�
�
�
�
�
�	����
	B�A�A�A�A�A�	�)�)�)�)�)�)��:�:�<�<�<�<�<��$�	�	�	�� � ��4�
!�
�
�
�
�
�
�	���s$�AA�(B	�B	�B/�/C�Cc�D�|j�d��|_dS)Nr^)r�r�r1rzs r&r�z'CloudlinuxCliBase.define_current_plugin�s!��#'�#4�#8�#8��#G�#G�� � � r5c�f�|�d��dko|�d��dkS)Nr�r�r9)r�)rEr�s  r&�is_error_response_defaultz+CloudlinuxCliBase.is_error_response_default�s2���O�O�H�%�%��2�V�{���y�7Q�7Q�UV�7V�	
r5c	�4�|gt|��z}|�d|j��}	tj|tjtjtjd|������}|�|�dd����\}}|j	dkpt|��}	|	stj|��}
||
��}	|	r�||z}t|��rUtj|��}
|
�d��r,|
�d��|
d<tj
|
��}|�dd	��rRt|��r.tj|��}d|d
<tj
|��}n|�|��}t|��t!d��|S#t"$r8}|�dd
d�|��id���Yd}~dSd}~wwxYw)N�
error_checkerT)r�r�r�r��envr�r�messager�r�Fr8r9zCan't run %(command)srXr)r�r�)�listr�rnr�r�r�r��communicater�
returncoder'r!r"r
�ignored_error_messager�r�r�r��join)rEr�rF�kwargsrXrp�pr��err�is_errorr�r�s            r&r�zCloudlinuxCliBase.run_util�s$���&�4��:�:�%���
�
�?�D�4R�S�S�
�&	�� �� �o�!��!����L�L�N�N�
���A��M�M�&�*�*�W�d�*C�*C�D�D�M�V�S��|�q�(�?�����,?�H��
6�"�j��0�0��(�=��5�5���
��#����6�?�?�9�"&�*�V�"4�"4�K�"���y�1�1�9�0;���	�0J�0J��H�-�!%��K�!8�!8���:�:�o�u�5�5�D��v���D�!%��F�!3�!3��+/��x�(�!%��F�!3�!3���!%�!;�!;�F�!C�!C���f�
�
�
��Q�����M���	�	�	�� � �'�"�C�H�H�W�$5�$5�6�"�
!�
�
�
�
�
�
�
�
�
�����	���s�F$G�
H�-H�Hc�0�tj|dd���S)NT)r�r8)r!r
)rErrs  r&rvz'CloudlinuxCliBase.ignored_error_message�s���z�W��=�=�>�>�>r5c�l�	t��rdStd���r<t��st��dvrdSt	jdddd���}d|vSt
dd	��}|���}|���t|��S#t$rYd
SwxYw)NT)�skip_jwt_check)�cl9�cl10zuname -rrNrO�lvez/proc/lve/listrGF)rrrrr�r	r�readline�closerQ�IOError)rE�unamerL�lines    r&r/z%CloudlinuxCliBase.kernel_is_supported�s���	��~�~�
��t�!��6�6�6�

"��;�;� �.�"2�"2�o�"E�"E��4�"�/��d�{��������~�%��)�3�/�/���z�z�|�|�����	�	�	��D�z�z�!���	�	�	��5�5�	���s#�B%�.B%�B%�AB%�%
B3�2B3c�~�ddlm}|�d���}||���}tj|��dS)Nrr=Tr�)�args_)�%lvestats.lib.cloudlinux_statsnotifierr�r�r�r�)rEr�r��	exit_codes    r&ruz"CloudlinuxCliBase.cl_statsnotifiersR��>�>�>�>�>�>��9�9�D�9�I�I���D��/�/�/�	��������r5c�v�d}|�d���}|j|g|�Rddi�}t|��dS)Nz/usr/bin/cloudlinux-awp-userFr�r�r�r�s    r&rvz%CloudlinuxCliBase.cloudlinux_awp_usersM��4���9�9�E�9�J�J�����{�R�_�R�R�R�E�R�R��
�f�
�
�
�
�
r5c�.�|���dS)zT
        This method is needed just for dev server to allow work with mocks
        NrYrzs r&rxz#CloudlinuxCliBase.cl_install_plugins��	
��� � � � � r5)TFT)T)rbNNNNFr�)1r-r.r/r�r�r�rr�r1rr3r{rkr�r�r�r�r�r�rjr�rnrrrtrwrsrqrlr�rr#r�r�r�rpr�rUrWrmror^r�rnr�rvr/rurvrxr4r5r&rVrVqs��������L�
�F�
 �
 �
 ����������"�"�$�$�G�
�
�
�*F,�F,�F,�P
�
�
�	�	�	�2�2�2�6�6�6�
���<�<�<�(?�?�?�4������@��������� R�R�R�
�
�
�	?�	?�	?�?C�;�;�;�;�z4�4�4�"�"�"� <+�<+�<+�<+�@��
��
������.����%�%�%�*���
�
�
����!�!�!�!�!�!� ���@H�H�H�
�
�
�
)�)�)�V?�?�?����*������!�!�!�!�!r5rVc��eZdZdZdZdS)�CommandType�heavy�simpleN)r-r.r/�HEAVY�SIMPLEr4r5r&r�r�s�������E�
�F�F�Fr5r�c�0�eZdZdZdZdZed���ZdS)�ConfigLimitValue�allr��	unlimitedc��|jSr�)�ALL)rMr�s  r&�	_missing_zConfigLimitValue._missing_)s	���w�r5N)r-r.r/r�r��	UNLIMITEDrTr�r4r5r&r�r�$s<������
�C��E��I�����[���r5r�c�$�eZdZUeed<eed<dS)�Rule�callabler�N)r-r.r/rrRr�r4r5r&r�r�.s*����������������r5r�c��eZdZUdZeed<ejZeed<de	de
dee
dede
e	f
d	�Zde	de
dee
dedee
f
d
�ZdS)�LimitStrategyBasez�
    Base limits strategy to decide - run incoming request with or without cagefs limits
    Strategy execution means that used script (cloudlinux_cli_user.py) will be re-executed with (or not)
        additional enter flags for the selected utility
    �enter_flags�
enter_tool�uidrXrFr�r@c��|�||||��}tj|��}|���|jSr�)�get_full_commandr�r�rtru)rEr�rXrFr��full_commandrys       r&�executezLimitStrategyBase.execute@sB���,�,�S�'�4��N�N����\�*�*��	�
�
�����|�r5c��gtj�d�}|jtjkr3t
dg|j����t|���|�Stg|j�
���|�S)Nr�z-n)r��argvr�r7r:�LVE_SUWRAPPER_BINr�rIrS�CAGEFS_ENTER_PROXIED_BINrG)rEr�rXrFr��cmds      r&r�z"LimitStrategyBase.get_full_commandHs���2���1�0�1���?�i�5�5�5�!����!�7�7�9�9���C���	�
��
�-�W�t�/?�/N�/N�/P�/P�W�SV�W�Wr5N)r-r.r/r0r<rRr7r9r�rSrSr	r�r
r�r�r4r5r&r�r�4s���������������&��	�������!$��,0��I��EI��	�#������X��X�!$�X�,0��I�X�EI�X�	
�c��X�X�X�X�X�Xr5r�c�F�eZdZdZdededeededeef
d�Z	dS)	�BypassStrategyzX
    Strategy which bypasses both lve and
    cagefs and executes commands direcly.
    r�rXrFr�r@c��dSr�r4)rEr�rXrFr�s     r&r�zBypassStrategy.execute_s	��	�r5N)
r-r.r/r0rSrSr	r�r
r�r4r5r&r�r�Ysb��������
���!$��,0��I��EI��	�#�������r5r�c�:�eZdZdZe���ZdS)�AllLimitStrategyz(
    Strategy to limit all commands
    N)r-r.r/r0r<rPr�r4r5r&r�r�es+���������'�'�)�)�K�K�Kr5r�c�:�eZdZdZe���ZdS)�NoLimitStrategyz.
    Strategy to don't limit all commands
    N)r-r.r/r0r<rNr�r4r5r&r�r�ms+���������&�&�(�(�K�K�Kr5r�c����eZdZdZe���Zed�ej	���Z
ed�ej���ed�ej���ed�ej���ed�ej���ged�ej���ged	�ej���ged
�ej���ged�ej���gd�Zd
e
dee
defd�Zded
e
dee
dedee
f
�fd�Z�xZS)�LimitStrategyHeavyz�
    Strategy to don't limit whitelisted commands
    By default - all commands are HEAVY and will be limited
    Add `rules` to mark any command as SIMPLE and run without limits
    c��dS�NTr4�rFs r&�<lambda>zLimitStrategyHeavy.<lambda>~s��d�r5)r�r�c�
�d|vS)Nr�r4r�s r&r�zLimitStrategyHeavy.<lambda>�s
��u��}�r5c�
�d|vS)N�startr4r�s r&r�zLimitStrategyHeavy.<lambda>�s
��w�$��r5c�
�d|vS)N�restartr4r�s r&r�zLimitStrategyHeavy.<lambda>�s��y�D�'8�r5c�
�d|vS)N�stopr4r�s r&r�zLimitStrategyHeavy.<lambda>�s
��v��~�r5c��dSr�r4r�s r&r�zLimitStrategyHeavy.<lambda>����t�r5c��dSr�r4r�s r&r�zLimitStrategyHeavy.<lambda>�r�r5c��dSr�r4r�s r&r�zLimitStrategyHeavy.<lambda>�r�r5c��dSr�r4r�s r&r�zLimitStrategyHeavy.<lambda>�r�r5)rerdrfrgr�rXrFr@c�.�d}|j�|g��|jgzD] }|�|��r	|j}n�!|t
jkrt���|_	nt�
��|_	|Sr�)�rulesr��default_ruler�r�r�r�r<rNr�rP)rErXrF�command_type�rules     r&�_check_ruleszLimitStrategyHeavy._check_rules�s������J�N�N�7�B�/�/�4�3D�2E�E�	�	�D��}�}�T�"�"�
�#�{����
��;�-�-�-�)�3�3�5�5�D���)�4�4�6�6�D���r5r�r�c�x��|�||��t���||||��Sr�)r��superr�)rEr�rXrFr��	__class__s     �r&r�z#LimitStrategyHeavy.get_full_command�s9���	
���'�4�(�(�(��w�w�'�'��W�d�L�I�I�Ir5)r-r.r/r0r<rPr�r�r�r�r�r�r�rSr	r�rSr�r��
__classcell__)r�s@r&r�r�us�����������'�'�)�)�K��4�!2�!2�;�;L�M�M�M�L�
�D�4�4�[�=O�P�P�P��D�6�6�{�?Q�R�R�R��D�8�8��AS�T�T�T��D�5�5�k�>P�Q�Q�Q�	 
�
�D�+�+�K�4F�G�G�G�
�
�D�+�+�K�4F�G�G�G�"
�
�D�+�+�K�4F�G�G�G�
�
�D�+�+�K�4F�G�G�G�
�%
�
�E�.
�C�
�t�C�y�
�[�
�
�
�
�J��J�!$�J�,0��I�J�EI�J�	
�c��J�J�J�J�J�J�J�J�J�Jr5r�)=�
__future__rrrr�r�r!r�r�r�r�r�r��enumr�dataclassesr�typingrr	r
�
past.builtinsrr�future.utilsr
�clcommon.utilsrrr�	cllicenserrsr�clcommon.lib.cleditionrr�clcommon.cpapirrr0�PASSENGER_DEPEND_PLUGINSr2r�r�existsr�r'r)r7r<�objectrVr�r�r�r�r�r�r�r�r4r5r&�<module>r�s��&�%�%�%�%�%�������&�&�&�&�&�&�����
�
�
�
���������
�
�
�
�
�
�
�
�	�	�	�	�����	�	�	�	�������!�!�!�!�!�!�+�+�+�+�+�+�+�+�+�+�-�-�-�-�-�-�-�-�"�"�"�"�"�"�W�W�W�W�W�W�W�W�W�W�*�*�*�*�*�*�+�+�+�+�+�+�C�C�C�C�C�C�C�C�R�R�R�R�R�R�R�R�)�)�"�&�����.�/@�A��*��:��	�w�~�~�.�/�/�;�:��,����������D����$�$�$�$�$��$�$�$��%Y�%Y�%Y�%Y�%Y�%Y�%Y���%Y�Ph
!�h
!�h
!�h
!�h
!��h
!�h
!�h
!�\�����$����
�����t���������������
"X�"X�"X�"X�"X�"X�"X�"X�J	�	�	�	�	�&�	�	�	�*�*�*�*�*�(�*�*�*�)�)�)�)�)�'�)�)�)�1J�1J�1J�1J�1J�*�1J�1J�1J�1J�1Jr5
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg