JFIF$        dd7 

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

�

O�?��Y(��2�ddlmZddlmZddlmZddlZddlZddlZddlZddlZddl	m
Z
mZmZm
Z
mZmZmZmZmZmZmZddlmZddlmZddlmZdd	lmZdd
lmZddlm Z ddl!m"Z"d
Z#dZ$dZ%ej&e'��Z(e(�)ej*��ej+d��Z,ej+d��Z-ej.��Z/e/�0e,��e(�1e/��e(�2d��Gd�de
��Z3dS)�)�print_function)�division)�absolute_importN)�CloudlinuxCliBase�LVEMANAGER_PLUGIN_NAMES�DEFAULT_PLUGIN_NAME�PASSENGER_DEPEND_PLUGINS�AllLimitStrategy�NoLimitStrategy�LimitStrategyHeavy�LimitStrategyBase�ConfigLimitValue�BypassStrategy�	EnterTool)�is_clpassenger_active)�ClPwd)�is_litespeed_running)�is_cl_solo_edition)�get_param_from_file)�Feature)�is_panel_feature_supportedz/etc/sysconfig/cloudlinuxz&/opt/alt/php-xray/cl-smart-advice-userzE/opt/cloudlinux/flags/enabled-flags.d/percentage-user-stats-mode.flagz3[%(asctime)s] %(funcName)s:%(lineno)s - %(message)sz<{cagefs} [%(asctime)s] %(funcName)s:%(lineno)s - %(message)sz	cli startc���eZdZUeed<�fd�Zd�Zdefd�Zd�Z�fd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Z�xZS)�CloudlinuxCliUser�limit_strategyc�R��tj|_ttddtjj��}t|��|_t
t|�����|j	�
|j|j|j
|jd���dS)N�web_resource_limit_mode�=)zspa-get-domainszspa-get-homedir�cloudlinux-snapshots�spa-get-user-info)r�HEAVYrr�CONFIG�value�superr�__init__�command_methods�update�spa_user_domains�spa_user_homedir�cl_snapshots�spa_get_user_info)�self�
limit_mode�	__class__s  ��y/builddir/build/BUILDROOT/lvemanager-7.11.29-1.el9.cloudlinux.x86_64/usr/share/l.v.e-manager/utils/cloudlinux_cli_user.pyr$zCloudlinuxCliUser.__init__Es����'7�'=��$�(��-�s�4D�4J�4P�
�
�
�(8�
�'C�'C��$�
���&�&�/�/�1�1�1���#�#�#'�#8�#'�#8�(,�(9�%)�%;�	
�
�	
�	
�	
�	
�	
�c��|jr*tjd�t��ttj��st��|_	n`	tjttj
ttjt i�|jt����|_	ttj��st(j|j	_|���rt(j|j	_t�d|j	j�d|j����dS)z?
        Set default strategy from the `CONFIG` values
        rzLimits strategy inited as z-
	Because of:
	self.web_resource_limit_mode: N)�skip_cagefs_check�logger�handlers�setFormatter�cagefs_formatterrr�LVErrr�ALLr
r r�	UNLIMITEDr�getr�CAGEFSr�
LVE_SUWRAPPER�
enter_tool�2_CloudlinuxCliUser__is_cagefs_incompatible_command�debugr-�r+s r.�__init_limit_strategyz'CloudlinuxCliUser.__init_limit_strategyUs0���!�	>��O�A��+�+�,<�=�=�=�*�'�+�6�6�	F�"0�"2�"2�D���#D� �$�&6� �&�(:� �*�O�#��c�$�.�0B�C�C�	#F�#F�D��*�'�.�9�9�	E�-6�-D�D��*��0�0�2�2�	E�-6�-D�D��*����
P��)<�)F�
P�
P�15�1M�
P�
P�	
�	
�	
�	
�	
r/�strategyc�X�t�d|j����||_dS)Nz$Limit strategy is explicitly set to )r2r>r-r)r+rAs  r.�set_limit_strategyz$CloudlinuxCliUser.set_limit_strategyus.�����P�H�<N�P�P�Q�Q�Q�&����r/c���|j}|�di���d��dkrdS|�d��dvrt�d��dSdS)	zG
        Returns True if command is not compatible with CageFS
        �params�interpreter�phpT�command>�cloudlinux-top�cloudlinux-quota�cloudlinux-charts�cloudlinux-statistics�cloudlinux-statsnotifierrz.Executable command found in the exclusive listF)�request_datar9r2r>)r+�datas  r.� __is_cagefs_incompatible_commandz2CloudlinuxCliUser.__is_cagefs_incompatible_commandysw��� ���8�8�H�b�!�!�%�%�m�4�4��=�=��4��8�8�I���	#
�	
�	
�
�L�L�I�J�J�J��4��ur/c���t�dtj�d|j����|���|j}|ddkr|�d��tt|���	��|�
��}t�d|����|�d��r�|jrt�d��n�|j
�|jd	|d||j��}|�2t�d|����tj|��n't�d|j
j����|�d��d
kr|���t�d��d
S)zW
        Drop permission to users, if owner of script is user
        :return:
        z!drop permissions start
	argv is: z
	request data is: �owner�userzUser not allowedzprepared args is: rHz-cagefs skipped: --skip-cagefs-check arg foundzlve-idNz/command executed inside of the cagefs with rc: zcagefs skipped: strategy is rzdrop permissons end)r2r>�sys�argvrN�'_CloudlinuxCliUser__init_limit_strategy�exit_with_errorr#r�drop_permission�prepair_params_for_commandr9r1r�execute�	user_info�exitr-�check_plugin_availability)r+rO�args�rcr-s    �r.rXz!CloudlinuxCliUser.drop_permission�s����
	���
8��H�
8�
8�$(�$5�
8�
8�	
�	
�	
�
	
�"�"�$�$�$�� ����=�F�"�"�� � �!3�4�4�4�
���&�&�6�6�8�8�8��.�.�0�0�����0�$�0�0�1�1�1��8�8�I���	��%�
����L�M�M�M�M��(�0�0��N�8�,�d�9�o�t�T�EV�����>��L�L�!W�SU�!W�!W�X�X�X��H�R�L�L�L�L��L�L�V�t�7J�7T�V�V����
�8�8�I���"5�5�5��*�*�,�,�,����*�+�+�+�+�+r/c��ttjd|���d�����t	jd��dS)N�success)�result�listr)�print�json�dumps�get_user_domainsrTr\r?s r.r'z"CloudlinuxCliUser.spa_user_domains�s?��
�d�j�I�t�7L�7L�7N�7N�O�O�P�P�Q�Q�Q��������r/c��ttjd|���d�����t	jd��dS)Nra)rb�homedirr)rdrerf�get_user_homedirrTr\r?s r.r(z"CloudlinuxCliUser.spa_user_homedir�s?��
�d�j�I�$�:O�:O�:Q�:Q�R�R�S�S�T�T�T��������r/c��	ttjd|���|���t��t
d���tj�	t��ttj
��|���|���d�	����n#|�d��YnxYwt#jd��dS)NraT)�skip_jwt_check)	rb�domainsrirr�smart_advice�is_lve_supported�user_stats_mode�	server_ip�Module unavailabler)rdrerfrgrjrr�os�path�isfile�SMART_ADVICE_USER_CLIrrr6�get_stats_mode�
get_server_iprWrTr\r?s r.r*z#CloudlinuxCliUser.spa_get_user_info�s���	7���
�"+�#'�#8�#8�#:�#:�#'�#8�#8�#:�#:�0D�0F�0F�.@�PT�.U�.U�.U�(*����7L�(M�(M�,F�w�{�,S�,S�+/�+>�+>�+@�+@�%)�%7�%7�%9�%9�
�
���
�
�
�
��	7�� � �!5�6�6�6�6�6�����������s�CC	�	C"c��	ddlm}n#|�d��YnxYwd�||jd��D��S)Nr)�userdomainsrrc��g|]
}|d��S)r�)�.0�xs  r.�
<listcomp>z6CloudlinuxCliUser.get_user_domains.<locals>.<listcomp>�s��F�F�F���!��F�F�Fr/�username)�clcommon.cpapirzrWr[)r+rzs  r.rgz"CloudlinuxCliUser.get_user_domains�se��	7�2�2�2�2�2�2�2��	7�� � �!5�6�6�6�6�6����F�F�k�k�$�.��*D�E�E�F�F�F�Fs�	�"c�R�tj�t��rdSdS)N�percent�default)rsrtru�PERCENTS_STATS_MODE_FLAGr?s r.rwz CloudlinuxCliUser.get_stats_mode�s#��
�7�>�>�2�3�3�	��9��yr/c��	t���|jd��}|dzS#t$r|�d��YdSwxYw)Nr��/zNo such user)r�get_homedirr[�KeyErrorrW)r+�pwdirs  r.rjz"CloudlinuxCliUser.get_user_homedir�sg��	1��G�G�'�'���z�(B�C�C�E��3�;����	1�	1�	1�� � ��0�0�0�0�0�0�	1���s�03�A�Ac�\�|���}	|jdg|�R�}n##tj$r}|j}Yd}~nd}~wwxYw	tj|��}n#|�|��YdSxYw|�d|di��tj
d��dS)Nz/usr/sbin/lve-read-snapshotrOr)rY�run_util�
subprocess�CalledProcessError�outputre�loadsrW�exit_with_successrTr\)r+�list_to_requestr��processErrorrbs     r.r)zCloudlinuxCliUser.cl_snapshots�s����9�9�;�;��	)�"�T�]�#@�S�?�S�S�S�F�F���,�	)�	)�	)�!�(�F�F�F�F�F�F�����	)����	��Z��'�'�F�F��	�� � ��(�(�(��F�F���������v��7�8�8�8��������s �%�A�A�A�	A�A8c	��ddd�}d}d}	|jdkrddlm}|��}|jdkrdd	lm}|��}|r|j}n	#d
}YnxYw|s4|�ddd
|�|jd��id���|j|j	|j
|jd��|j��}|r|��}nd}t��sF|jtvr8|�ddd
tj|jt��id���|s:|�ddd
tj|jt��id���dSdS)NzNode.js SelectorzPython Selector)�nodejs_selector�python_selectorTr�r��NodeManagerr���
PythonManagerFi�zERROR.not_available_plugin�
pluginName�Plugin�disabled)�code�error_id�context�icon)r�r��php_selector�resource_usagezERROR.not_available_passenger)�current_plugin_name�$clselect.clselectnodejs.node_managerr��&clselect.clselectpython.python_managerr��selector_enabledrWr9�_plugin_available_nodejs�_plugin_available_python�_plugin_available_php� _plugin_available_resource_usagerr	rr)r+�plugin_namesr��managerr�r��plugin_available_checker�plugin_availables        r.r]z+CloudlinuxCliUser.check_plugin_availability�s��1�0�
�
�� ����	%��'�+<�<�<�L�L�L�L�L�L�%�+�-�-���'�+<�<�<�P�P�P�P�P�P�'�-�/�/���
<�#*�#;� ���	%�$��������	�� � ��5� �,�"2�"2�4�3K�X�"V�"V�� �

!�
�
�
� $�<�#�<� �6�"�C�	$
�$
�
�#�d�&�
'�
'�	!�$�	$�7�7�9�9���#��&�'�'�
	��(�,D�D�D�� � ��8� �"9�"=��0�2E�#�#��
 �
!�	
�	
�	
� �
	�� � ��5� �"9�"=��0�2E�#�#��
 �
!�	
�	
�	
�	
�	
�
	�
	s�?A�Ac�h�	ddlm}|��}|jrt��sdSn#YdSxYwdS)Nrr�FT)r�r�r�r)r+r�r�s   r.r�z*CloudlinuxCliUser._plugin_available_nodejs:s\��	�H�H�H�H�H�H�!�k�m�m�G��+�
�3H�3J�3J�
��u�
��	��5�5�����t��%*�/c�h�	ddlm}|��}|jrt��sdSn#YdSxYwdS)Nrr�FT)r�r�r�r)r+r�r�s   r.r�z*CloudlinuxCliUser._plugin_available_pythonEs\��	�L�L�L�L�L�L�#�m�o�o�G��+�
�3H�3J�3J�
��u�
��	��5�5�����tr�c�L�	ddlm}|��}|jsdSn#YdSxYwdS)Nr)�
PhpManagerFT)� clselect.clselectphp.php_managerr�r�)r+r�r�s   r.r�z'CloudlinuxCliUser._plugin_available_phpPsN��	�C�C�C�C�C�C� �j�l�l�G��+�
��u�
��	��5�5�����ts��!c��dS)NTr|r?s r.r�z2CloudlinuxCliUser._plugin_available_resource_usage[s���tr/)�__name__�
__module__�__qualname__r
�__annotations__r$rVrCr=rXr'r(r*rgrwrjr)r]r�r�r�r��
__classcell__)r-s@r.rrBsV��������%�%�%�%�
�
�
�
�
� 
�
�
�@'�+<�'�'�'�'����0',�',�',�',�',�R���������*G�G�G����
1�1�1����@�@�@�D	�	�	�	�	�	�	�	�	�������r/r)4�
__future__rrrre�loggingr�rsrT�
libcloudlinuxrrrr	r
rrr
rrr� clselector.clpassenger_detectlibr�clcommonr�clcommon.utilsr�clcommon.lib.cleditionr�cldetectlibr�clcommon.constrr�rr!rvr��	getLoggerr�r2�setLevel�NOTSET�	Formatter�init_formatterr5�
StreamHandler�hr4�
addHandlerr>rr|r/r.�<module>r�si��&�%�%�%�%�%�������&�&�&�&�&�&�������������	�	�	�	�
�
�
�
���������������������������C�B�B�B�B�B�������/�/�/�/�/�/�5�5�5�5�5�5�+�+�+�+�+�+�"�"�"�"�"�"�5�5�5�5�5�5�
%��@��K��
��	�8�	$�	$����������"��"�9����%�7�$�B�����G��������~�������!�������[����Z�Z�Z�Z�Z�)�Z�Z�Z�Z�Zr/
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