ÿØÿà JPEG ÿþ; 403WebShell
403Webshell
Server IP : 68.65.120.201  /  Your IP : 216.73.216.29
Web Server : LiteSpeed
System : Linux server179.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64
User : taxhyuvu ( 2294)
PHP Version : 8.1.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/cloudlinux/venv/lib/python3.11/site-packages/cllimits/lib/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/cloudlinux/venv/lib/python3.11/site-packages/cllimits/lib/__pycache__/limits.cpython-311.pyc
�

b�i������ddlZddlZddlmZddlmZddlmZddlm	Z	ddl
mZmZm
Z
mZmZmZmZmZmZmZddlmZddlmZmZmZdd	lmZmZdd
lmZddl m!Z!m"Z"m#Z#m$Z$ddl%m&Z&m'Z'm(Z(dd
l)m*Z*m+Z+m,Z,ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7ddl8m9Z9m:Z:m;Z;Gd�de	��Z<d�d�d�d�d�d�d�d�d�d�d�
Z=gd�Z>dd gZ?Gd!�d"��Z@Gd#�d$e@��ZAdS)%�N)�defaultdict)�ClPwd)�memory_to_page)�FormattedException)
�Feature�NotSupported�cpinfo�domain_owner�get_main_username_by_uid�	getCPName�is_admin�is_panel_feature_supported�is_reseller�reseller_users)�
EncodingError)�
MySQLGovernor�MySQLGovException�GovernorStatus)�print_dictionary�replace_params)�CloudlinuxLicenseLib)�CageFs�CageFsException�LveCtl�LvectlException)�ClQuotaException�
ClQuotaLib�QuotaDisabledException)�convert_to_kernel_format�is_active_reseller_limits�lve�)
�ADMIN_ONLY_OPTIONS�AVAILABLE_KEYS�AVAILABLE_LIMITS�AVAILABLE_LVE_KEYS�AVAILABLE_LVP_KEYS�AVAILABLE_MYSQL_KEYS�AVAILABLE_MYSQL_KEYS_ALL�AVAILABLE_QUOTA_KEYS�CloudlinuxLimitsNoLveOptsParser�CloudlinuxLimitsOptsParser)�convert_mem_value_to_bytes�write_lower_bound�LowerBoundsConfigExceptionc��eZdZdS)�DomainExceptionN)�__name__�
__module__�__qualname__���py/cllimits/lib/limits.pyr1r1&s�������Dr6r1c���|d�dttt|���r|�d�n|����dz��i��S)N�cpu�all�%�d)�update�str�intr�isdigit��limits�values  r7�<lambda>rD+sr��
�5�M���
�s�3�/�u�}�}���1;�5�����5:�<�<�=�=�@C�D�E�E����r6c�<�|d�d|i��S)N�ior:�r=rAs  r7rDrD0s���t�� 3� 3�U�E�N� C� C�r6c�<�|d�d|i��S)Nr9�mysqlrGrAs  r7rDrD1s��v�e�}�';�';�W�e�<L�'M�'M�r6c�<�|d�d|i��S)NrFrIrGrAs  r7rDrD2s��f�T�l�&9�&9�7�E�:J�&K�&K�r6c���|d�|�d��d���|�d��d���d���S)N�inodes�,rr"��soft�hard)r=�split�striprAs  r7rDrD3se��F�8�$4�$;�$;����C� � ��#�)�)�+�+����C� � ��#�)�)�+�+�=�=�%�%�r6c�0�|�d|i��S)N�eprGrAs  r7rDrD7s��6�=�=�$���+G�+G�r6c�0�|�d|i��S)N�nprocrGrAs  r7rDrD8s��6�=�=�'�5�1A�#B�#B�r6c�J�|�dt|��i��S)N�pmem�r=r-rAs  r7rDrD9�$��
�M�M�6�5�e�<�<�=�>�>�r6c�J�|�dt|��i��S)N�vmemrYrAs  r7rDrD;rZr6c�0�|�d|i��S)N�iopsrGrAs  r7rDrD=s��&�-�-����"@�"@�r6)
�speedrF�	mysql-cpu�mysql-iorL�
maxEntryProcsrVrXr\r^)�root�admin�-�abusers�singlec�&��eZdZdZdZdZdZdZdZdZ	�fd�Z
d�Zd,d�Zd�Z
d	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zdefd�Zd�Zdedededdfd�Zd�Zd�Zd�Zd�Z e!d���Z"d �Z#d!�Z$d"�Z%d#�Z&d$�Z'd%�Z(d&�Z)d'�Z*d(�Z+d)�Z,d-d+�Z-�xZ.S).�CloudlinuxLimitsz2
    Class for run cloudlinux-limits commands
    NFc����ttj��s2ttt
���t
��St���|��S�N)rr�LVE�superri�CloudlinuxLimitsNoLve�__new__)�cls�	__class__s �r7rozCloudlinuxLimits.__new__TsM���)�'�+�6�6�	a��)�+@�A�A�I�I�J_�`�`�`��w�w���s�#�#�#r6c��t��|_t��|_t	��|_t
��|_t��|_	t��|_i|_dS)z#
        Empty constructor
        N)
r�_clpwdr�_lvectlr�_cagefsr�	_cl_quotar�_mysql_governorr,�_opts_parser�_users_list��selfs r7�__init__zCloudlinuxLimits.__init__YsZ��
�g�g����x�x����x�x���#�����,�����6�8�8�������r6�successc��t|t��r)|�|tj��d���t	||jp|��dS)z�
        Output data wrapper
        :param: `dict` data - data for output to stdout
        :param: `bool` force_json - always output json format
        )�result�	timestampN)�
isinstance�dictr=�timer�_is_json)r{�data�
force_jsonrs    r7�
print_datazCloudlinuxLimits.print_datahsT���d�D�!�!�	F��K�K�6��	���D�D�E�E�E���t�}�:�
�;�;�;�;�;r6c��t��}|���sd|_|�ddi��Sd|v|_|�|��|_|j�d��s|j�d��r:tj��s'|�ddt���d�i��|j�d���*tj
��s|�dd
i��|���|���|jdr|�
��S|jdr|���S|jd
r|���S|jdr|���S|�ddi��S)z$
        Run command action
        TrzCloudlinux license isn't validz--json�--for-reseller�--reseller-namez8--for-reseller/--reseller-name options not supported on �.NzEReseller limits are not supported. Can not use --for-reseller option.�set�getzdisable-reseller-limitszenable-reseller-limitszUnknown action, exit)r�get_license_statusr��_error_and_exit�_parse_args�_optsr�r!�is_panel_supportedr�reseller_limit_supported�_verify_reseller�_check_user_owner�_set_run�_get_run�_disable_reseller_limits�_enable_reseller_limits)r{�argv�licences   r7�runzCloudlinuxLimits.runss���'�(�(���)�)�+�+�	V� �D�M��'�'��3S�(T�U�U�U� �D�(��
��%�%�d�+�+��
��:�>�>�*�+�+�	�t�z�~�~�>O�/P�/P�	��)�+�+�
��$�$��g�Yb�Yd�Yd�g�g�g�&�����:�>�>�*�+�+�7��@\�@^�@^�7�� � ��a�"�
�
�
�	
��������� � � ��:�e��	#��=�=�?�?�"��:�e��	#��=�=�?�?�"��:�/�0�	3��0�0�2�2�2��:�.�/�	2��/�/�1�1�1��#�#�X�/E�$F�G�G�Gr6c���|j�||j��\}}|s"|�t	|����t|dt��rd|d<|S)z%
        Parse CLI arguments
        �--lve-idr)rx�
parse_argsr�r�rr�r>)r{r��statusr�s    r7r�zCloudlinuxLimits._parse_args�sn���(�3�3�D�$�-�H�H�����	7�� � ���!5�!5�6�6�6��d�:�&��,�,�	!� �D����r6c�(�|j�d��}|sdS|j�d��dkrdS|���\}}|dvrdS||�|��kr|�d||d�d���dSdS)	z�
        Checks that specified reseller is an owner of specified user and
        terminate program if need
        :return:
        r�Nr�r)N�N/Az2%(username)s is not owned by reseller %(reseller)s)�username�reseller�r�context)r�r��_check_user�_get_reseller_namer�)r{�for_reseller�_r�s    r7r�z"CloudlinuxLimits._check_user_owner�s����z�~�~�&6�7�7���	��F��:�>�>�*�%�%��*�*��F��&�&�(�(���8��}�$�$�
�F��4�2�2�8�<�<�<�<�� � �N� (� ,���"�"�
�
�
�
�
�=�<r6c��|jds"|jdr|jd|jd<|���|���S)z#
        Run `get` command
        r�r�)r��_get_check_user�_get_action_listrzs r7r�zCloudlinuxLimits._get_run�s`���z�+�,�	I���<L�1M�	I�,0�J�7G�,H�D�J�(�)��������$�$�&�&�&r6c��|jdp|jd}	|j�|��|�id��dS#t$r-}|�|j|jd���Yd}~dSd}~wwxYw)z7
        Run `disable-reseller-limits` command
        r��
--reseller-idTr�N)r�rt�disable_reseller_limitsr�rr��messager��r{�res_id�es   r7r�z)CloudlinuxLimits._disable_reseller_limits�s�����-�.�M�$�*�_�2M��	N��L�0�0��8�8�8��O�O�B��%�%�%�%�%���	N�	N�	N�� � �A�I�!�)�!L�!L�M�M�M�M�M�M�M�M�M�����	N���s�0A�
B�"B�Bc�.�|jdp|jdpd}	|j�t|����|�id��dS#t
$r-}|�|j|jd���Yd}~dSd}~wwxYw)Nr�r�z--allTr�)	r�rt�#_set_container_limits_by_id_or_namer>r�rr�r�r�r�s   r7r�z(CloudlinuxLimits._enable_reseller_limits�s����J�(�)�
��z�/�*�
��	�
	N��L�<�<�S��[�[�I�I�I��O�O�B��%�%�%�%�%���	N�	N�	N�� � �A�I�!�)�!L�!L�M�M�M�M�M�M�M�M�M�����	N���s�=A�
B�'"B�Bc��|jd}|s|�ddi��t|��}|�|�d|dd�d���	td	|��r|�d
|id��dSn9#t
$r,}|�|j|jd���Yd}~nd}~wwxYw|�d
ddid���dS)z6
        Run `set --pmem-lower-bound` command
        �--pmem-lower-boundrz;PMEM lower bound value is required (use --pmem-lower-bound)Nz>Invalid memory format %(format)s. Use format like %(examples)sz512M, 1024M, 2G)�format�examplesr��PMEM�limitTrz5Failed to write PMEM lower bound config file %(file)s�filez /etc/cloudlinux/pmem_lower_bound)r�r�rr.r�r/r�r�)r{�bound_value�
pmem_pagesr�s    r7�_set_pmem_lower_boundz&CloudlinuxLimits._set_pmem_lower_bound�sG���j�!5�6���	l�� � �(�,i�!j�k�k�k�$�K�0�0�
���� � �Z�)� 1���"�"�
�
�
�	N� ���5�5�
�����+� 6��=�=�=��q�
��*�	N�	N�	N�� � �A�I�!�)�!L�!L�M�M�M�M�M�M�M�M�����	N����	
���M�� B�C�
�
�	�	�	�	�	s�(A?�?
B5�	"B0�0B5c�
�|���\}}|�|�||fS|j}|dr�	|�|d��}n9#t$r,}|�|j|jd���Yd}~nd}~wwxYw	|j�|��}n>#tj
$r,}|�|j|jd���Yd}~nd}~wwxYw|�|��s)t|��r|�dd|id���||j
|<�nX|d}|r�t|��}|D]f}	|j�|��}n>#tj
$r,}|�|j|jd���Yd}~nd}~wwxYw||j
|<�gd|j
d<n�	tj��|_n9#t$$r,}|�|j|jd���Yd}~nd}~wwxYwd	}|jD]l}	|j�|��d}n>#tj
$r,}|�|j|jd���Yd}~nd}~wwxYw||j
|<�md}||fS)
z|
        Determines users according to --lve-id/--username/--domain arguments
        Or build all panel users list
        N�--domainr�� %(username)s is not a panel userr�r�rcr�)r�r��get_user_name_by_domainr1r�r�r�rs�get_uidr�NoSuchUserException�get_package_name_by_user_id�boolryrr�get_panel_users_uid_list�_panel_uids_listr�	get_names)r{�uidr��or��
reseller_name�resellers_users�names        r7r�z CloudlinuxLimits._get_check_usersh���(�(�*�*�
��X��?�x�3���=� ��J���Z�=�,	�
R��7�7��*�
�F�F����"�
R�
R�
R��$�$��	�a�i�%P�%P�Q�Q�Q�Q�Q�Q�Q�Q�����
R����
R��k�)�)�(�3�3�����,�
R�
R�
R��$�$��	�a�i�%P�%P�Q�Q�Q�Q�Q�Q�Q�Q�����
R�����3�3�C�8�8�
J�T�#�Y�Y�
J��$�$�0R�2<�h�1G�&I�&I�J�J�J�$,�D��S�!�!��/�0�M��
1�"0��"?�"?��+�1�1�D�Z�"�k�1�1�$�7�7���� �4�Z�Z�Z��,�,��	�a�i�-X�-X�Y�Y�Y�Y�Y�Y�Y�Y�����Z����,0�D�$�S�)�)�&,�� ��#�#�V�,2�,K�,M�,M�D�)�)��$�V�V�V��(�(�A�I�!�)�)T�)T�U�U�U�U�U�U�U�U�����V�������0�1�1�C�Z�#�{�4�4�S�9�9�!�<���� �4�Z�Z�Z��,�,��	�a�i�-X�-X�Y�Y�Y�Y�Y�Y�Y�Y�����Z����,0�D�$�S�)�)��C��H�}�sw�A�
B�"A=�=B�B!�!C�0"C�C�E"�"F�1"F�F�7G�
H�"H�H� H6�6I1�"I,�,I1c�6�|j�|��Srk)rtr�)r{r�s  r7r�z,CloudlinuxLimits.get_package_name_by_user_idAs���|�7�7��<�<�<r6c��||dd�}|dkr.d|d<d|d<|j�d��}|�|nd|d<nO|�|d��}|r||d<|�|��|d<|�|��|S)	a?
        Retrives username, domain and reseller
        for supplied uid/username, for uid==0 returns '-'
        either reseller_name if has --for-reseller
        :param uid: uid
        :param username: username
        :return: dict {"id": uid, "username": username, "domain": domain, "reseller": reseller}
        re)�idr�r�r�domainr�r�Nr�)r�r��_get_user_main_domainr��_fix_single_uid_users)r{r�r��userr��user_main_domains      r7�_get_username_domain_resellerz.CloudlinuxLimits._get_username_domain_resellerDs����x�S�A�A���!�8�8� �D��N�"�D����:�>�>�*:�;�;�L�/;�/G�|�|�S�D���� $�9�9�$�z�:J�K�K���
2�!1��X��#�6�6�x�@�@�D����&�&�t�,�,�,��r6c�P�	|�|��S#t$rYdSwxYw)zP
        Retrives user's main domain
        :param username: User name
        N)�get_user_domainr1�r{r�s  r7r�z&CloudlinuxLimits._get_user_main_domain^s=��
	��'�'��1�1�1���	�	�	��4�4�	���s��
%�%r�c��|d}|j�|��}t|��dkrdS|D]J}|�|��}|�|��}|dkr|dkr||d<||d<||d<dS�KdS)	a
        Check and fix user info if some users with same uid present. See LU-1816 for details
        :param user: User info. Example:
            {'id': 10001, 'username': 'cltest2', 'reseller': 'admin', 'domain': 'cltest2.com'}
        :return: None
        r�r"Nr�rer�r�r�)rsr��lenr�r�)r{r�r��	usernamesr��main_domainr�s       r7r�z&CloudlinuxLimits._fix_single_uid_usershs����4�j���K�)�)�#�.�.�	��y�>�>�Q����F�!�	�	�H��4�4�X�>�>�K��.�.�x�8�8�H��e�#�#��C���!,��X��#+��Z� �#+��Z� �����	�	r6c�	��i}|j}|j���rd|d<nd|d<|d�$|j���rd|d<nd|d<|j���rd|d<nd|d<t|dt��r|d�	d	��nd�t�fd
�tD����}g}|d�s|d�k|d
�c	|j�
|d|d���n9#t$r,}|�|j|jd���Yd}~nd}~wwxYw	|���}nK#t&$r>}|ddkr&d|d<d|vri|d<t|��|dd<d}Yd}~nd}~wwxYw|j���D�]�\}}|�||��}	|dr�|j���rh	|j�|	d��}
|
rdnd|	d<n=#t0$r0}d|d<d|vri|d<t|��|dd<Yd}~nd}~wwxYw|�|��|	d<|d�|d�|d
�d|j_|j�||d��}|d�|dr|�|||��t;|d|d|d|dg���r|�r	|dr#|j�|	d��|	d<|dr#|j�|	d��|	d<|ds|dr]|j� |	dd���\}}
|drd |vri|d <||d d!<|drd"|vri|d"<|
|d"d!<n=#t&$r0}d|d<d|vri|d<t|��|dd<Yd}~nd}~wwxYw|�!||��||	d#<|�"|	�����tG|��|d$<||d%<|dsk|jj$�Zg}|jj$�%��D]3}|�!||d#��|�"|���4||d&<ng|d&<|�&|d��d'S)(�3
        Process output for selected users
        �enabled�cageFS�disabledr�N�quota�mySqlGov�--limitsrMc3�*�K�|]
}|�p|�vfV��dSrkr5��.0�k�lks  �r7�	<genexpr>z4CloudlinuxLimits._get_action_list.<locals>.<genexpr>��3�����E�E�q�Q�B��)�!�r�'�*�E�E�E�E�E�Er6r��
--usernamer�z--human-readable-numbersr�)r�r��error�errorsF�cagefsr��packagerLz	mysql-govzmysql-restrictr`ra�mySqlRestrictedT��with_package_markr9rIrFrB�items�users�	resellersr)'r�ru�is_cagefs_presentrv�is_clquota_presentrw�is_governor_presentr�r>rQr�r%rt�
_load_inforr�r�r��can_get_governor_limitsrryr�r��get_user_statusrr��
_package_data�get_limits_by_user_id�_get_inodes_limits�any�get_governor_status_by_username�get_restrict_status_by_username�get_limits_by_user�_filter_limits�appendr��_resellers_data�valuesr�)r{rr��keysr�r��is_governor_availabler�r�r��
cagefs_statusrB�	cpu_limit�io_limit�resellers_datar�r�s                @r7r�z!CloudlinuxLimits._get_action_list}sJ���
���J���<�)�)�+�+�	*�(�F�8���)�F�8���
��&��~�0�0�2�2�
-�"+��w���",��w����3�3�5�5�	,�!*�F�:���!+�F�:��)3�A�j�M�3�)G�)G�
Q�Q�z�]�
 �
 ��
%�
%�
%�T���E�E�E�E�4D�E�E�E�E�E�����Z�=� �Q�|�_�%<��:��AV�
R���'�'��*D�(E�PQ�Rc�Pd�'�e�e�e�e��"�
R�
R�
R��$�$��	�a�i�%P�%P�Q�Q�Q�Q�Q�Q�Q�Q�����
R����	*�$(�$@�$@�$B�$B�!�!�� �	*�	*�	*��j�!�Y�.�.�%,��z�"��6�)�)�')�F�8�$�36�q�6�6�F�8�$�Z�0�$)�!�!�!�!�!�!�����
	*����"�-�3�3�5�5�9	�9	�M�C���5�5�c�8�D�D�D��H�~�

8�$�,�"@�"@�"B�"B�

8�8�$(�L�$@�$@��j�AQ�$R�$R�M�2?�%O�Y�Y�Z�D��N�N��&�8�8�8�'.�F�8�$��v�-�-�+-��x�(�14�Q���F�8�$�X�.�.�.�.�.�.�����8����#�>�>�s�C�C�D��O���}�(�A�l�O�,G�1�Z�=�Kd�-1���*��\�7�7��Q�?Y�=Z�[�[�F��!�"�*�t�H�~�*��'�'��V�V�<�<�<��D��%�t�,<�'=�t�K�?P�RV�Wa�Rb�c�d�d�
:�-�
:�:��K�(�r�+/�+?�+_�+_�`d�eo�`p�+q�+q��Z�(��,�-�y�26�2F�2f�2f�gk�lv�gw�2x�2x��.�/��K�(�
=�D��,<�
=�.2�.B�.U�.U�VZ�[e�Vf�hl�/V�/n�/n�+�	�8���,�?�$�F�2�2�02��u�
�5>�F�5�M�'�2��
�+�=�#�6�1�1�/1��t��4<�F�4�L��1���(�:�:�:�)0�F�:�&��v�-�-�+-��x�(�36�q�6�6�F�8�$�Z�0�0�0�0�0�0�����:����
����f�-�-�-�#�D��N��L�L�������e�*�*��w����w���!�"�		)��|�+�7�!#�� $�� <� C� C� E� E�4�4�H��'�'��h�x�.@�A�A�A�"�)�)�(�3�3�3�3�&4��{�#�#�&(��{�#�	
�����%�%�%��qsa�2(D�
E�%"E�E�E*�*
F2�44F-�-F2�)H6�6
I0�&I+�+I0�'CO+�+
P%�5&P � P%r�rBr�returnc��|j���s d|d<d|�di��d<dS|j���s d|d<d|�di��d<dS	|j�|��\}}||d�|d<dS#t
$r6}d|d<t
|��|�di��d<Yd}~dSd}~wt$r}||j|j	d	�z}Yd}~dSd}~wwxYw)
z�
        Retrieve inodes limits for user

        :param int uid: user id
        :param dict limits: limits dict
        :param dict result: result dict
        r�r�z'LVE Manager/quota package not installedr�Nz#Quotas not activated on this systemrNrL)�warningr�)
rvr��
setdefault�is_clquota_activated�get_inodes_limits_by_uidrr>rr�r�)r{r�rBr�
soft_limit�
hard_limitr�s       r7rz#CloudlinuxLimits._get_inodes_limitssN���~�0�0�2�2�	�%�F�7�O�7`�F���h��+�+�G�4��F��~�2�2�4�4�	�%�F�7�O�7\�F���h��+�+�G�4��F�	C�%)�^�%L�%L�S�%Q�%Q�"�J�
�(2�J�G�G�F�8�����%�	>�	>�	>�%�F�7�O�7:�1�v�v�F���h��+�+�G�4�4�4�4�4�4�4������	C�	C�	C��!�)��	�B�B�B�F�F�F�F�F�F�F�����	C���s$�4%B�
D�%+C�
D�#C;�;Dc�z�|j���sdddid�}t|���|j���\}}|tjkrdddid�}t|���|tjkr|�|j���tvrdSdddd	�d�}t|���)
a�
        Checks if the Governor limits can be retreived.

        After making sure that mysqlgov is installed and operational,
        checks that its mode is in [abusers single], user is reseller
        and resellers limits is OFF, or user belongs to admin.

        Only returns if it's True - otherwise constructs and throws MySQLGovException.
        Does it this way because these exceptions are caught in the web UI and displayed
        with optional localization.
        For localization of messages from here, see example:
        cpanel-lvemanager/spa/src/assets/i18n/hu-hu.json, key "Governor mode is not abusers or single"

        :raises MySQLGovException: Error from the Governor status check, or a constructed error
        for UI to display.
        :raises gov_error: If the Governor status check returned an error, reraises it here.
        :return: Whether it's possible to retrieve Governor limits in current state.
        :rtype: bool
        z%(util)s not present in system�util�Governor�r�r�z%(util)s is currently disabledTz%(util)s mode is not %(mode)szabusers or single)r�mode)	rwr�r�get_governor_statusr�DISABLED�ERROR�get_governor_mode�MYSQL_GOV_ENABLED_MODE)r{�exc_message�
gov_status�	gov_errors    r7rz(CloudlinuxLimits.can_get_governor_limitss���(�#�7�7�9�9�	1�;�"�J�/���K�$�K�0�0�0� $� 4� H� H� J� J��
�I���0�0�0�;�"�J�/���K�$�K�0�0�0���-�-�-��O���1�1�3�3�7M�M�M��4�7� *�4G�H�H�
�
�� ��,�,�,r6c��dD]5}||s+|�|d��r|�|���6|ds+|�dd��r|�d��|dsj|�dd��rT|d�dd��r8|d�d��|ds|�d��|dsl|�dd��rX|d�dd��r>|d�d��|ds|�d��d	Sd	Sd	Sd	Sd	S)
z�
        Remove limits that are stored as key: False in `keys` dict;
        Used for --limits key;
        :type keys: dict[str, bool]
        :type limits: dict[str, str | dict]
        )rXr\rVr^FrbrTr_r9r:rFN)r��pop)r{r
rBr�s    r7r	zCloudlinuxLimits._filter_limitsIs���3�	�	�A���7�
�v�z�z�!�U�3�3�
��
�
�1�
�
�
���O�$�	����D�%�)@�)@�	��J�J�t�����G�}�	"����E�5�!9�!9�	"�f�U�m�>O�>O�PU�W\�>]�>]�	"��5�M���e�$�$�$��%�=�
"��
�
�5�!�!�!��D�z�	!�f�j�j��u�5�5�	!�&��,�:J�:J�5�RW�:X�:X�	!��4�L���U�#�#�#��$�<�
!��
�
�4� � � � � �	!�	!�	!�	!�	!�	!�
!�
!r6c���|j�d��r|���S|���\}}|���|�||��S)z#
        Run `set` command
        r�)r�r�r��_set_check_userr��_set_action)r{r�r�s   r7r�zCloudlinuxLimits._set_run^sl��
�:�>�>�.�/�/�	0��-�-�/�/�/��,�,�.�.�
��X�����������X�.�.�.r6c�������\}}t�fd�dD����}|�|�|s��ddi��t�fd�tD����r$t�fd�tD����s||fS�jds��jd	�Zt
�jd	��s@t�jd	��s%��d
d�jd	id���n>��|��}t|��r��d
d|id���||fS)z&
        Find user for modify
        c3�2�K�|]}�j|V��dSrk�r��r��xr{s  �r7r�z3CloudlinuxLimits._set_check_user.<locals>.<genexpr>ss9����� � �!��
�1�
� � � � � � r6)�--mysql-unrestrict-allr�r�Nrz1You must set lve-id or username for modify limitsc3�2�K�|]}�j|V��dSrkr/r0s  �r7r�z3CloudlinuxLimits._set_check_user.<locals>.<genexpr>}s)�����9�9��t�z�!�}�9�9�9�9�9�9r6c3�8�K�|]}�jd|��V��dS�z--Nr/r0s  �r7r�z3CloudlinuxLimits._set_check_user.<locals>.<genexpr>~s0�����H�H��t�z�(�q�(�(�+�H�H�H�H�H�Hr6r�r�z.Reseller limits for %(reseller)s are disabled.r�r�zYReseller limits for %(reseller)s are enabled. Admin can`t set limits for resellers users.)	r�rr�r#r&r�r
r r�)r{r�r��opts_without_userr�s`    r7r+z CloudlinuxLimits._set_check_userms�����(�(�*�*�
��X�� � � � �8
� � � ����
�K�8�+�5F�+�� � �(�,_�!`�a�a�a��9�9�9�9�&8�9�9�9�9�9�	!��H�H�H�H�5G�H�H�H�H�H�	!���=� ��z�+�,�	��z�*�+�7����Td�Ie�@f�@f�7�0���<L�1M�N�N���(�(�"R�$.��
�;K�0L�#M�*�*�����
!%� 7� 7�� A� A�
�,�]�;�;���(�(�#P�$.�
�#>�*�*�����H�}�r6c��tdg��}t|zt|zt|zt|zd�|}tt|��|z��dkrt
t|��|z��SdS)z�
        Return keys to reset that are only acceptable to this type of limits
        :param list defaults: List of keys to reset
        :param str t: one of "lve", "cl-quota", "dbgov"
        r:)r!�lvp�cl-quota�dbgovrN)r�r&r'r*r(r��list)�defaults�t�all_keyr
s    r7�_clean_defaultsz CloudlinuxLimits._clean_defaults�s����u�g�,�,��%��/�%��/�,�w�6�)�G�3�	
�
�
�
���s�8�}�}�t�#�$�$�q�(�(���H�
�
��,�-�-�-��tr6c��|j}|dp|d}|sdSt|��s|�dd|id���dSdS)z�
        If any reseller is specified in cli options ensures that it exists
        and really a reseller. Will exit with error if not.
        r�r�NzNo such reseller: %(reseller)sr�r�)r�rr�)r{r�r�s   r7r�z!CloudlinuxLimits._verify_reseller�s��

�J���&�'�>�1�-=�+>���	��F��8�$�$�	�� � �:�&��1�"�"�
�
�
�
�
�	�	r6c	�D�|j}d}d}ttj��}|r1|dr)|ddkr|�||��\}}}	d}nI|ddu}d|d<|r|r|�||��\}}}	n|�|||��\}}}	|pdg}t
|��rtd�|D��d	��Sttj��r|dkr|j	�
��|�||||	|||��S)
zl
        Process set limits command
        :param uid: User uid
        :param username: User name
        Fr�r�rTr�Nc3�K�|]}|�|V��	dSrkr5)r��codes  r7r�z/CloudlinuxLimits._set_action.<locals>.<genexpr>�s'����;�;�$�d�;��;�;�;�;�;�;r6�*)r�rr�RESELLER_LIMITS�_set_reseller_action�_set_user_actionr�nextrlrt�apply_all_limits�_make_set_action_response)
r{r�r�r��action_with_reseller_container�set_default_resellers_limits�reseller_limits_supported�is_lvectl_error�ret_listrs
          r7r,zCloudlinuxLimits._set_action�st��
�J��).�&�',�$�$>�w�?V�$W�$W�!�$�
	\��+;�)<�
	\��:��RS�AS�AS�15�0I�0I�!�S�0Q�0Q�-�O�X�v�+/�(�(�-.�/@�-A��-M�*� �A�j�M�(�
\�-K�
\�48�4M�4M�a�QT�4U�4U�1���6�6�48�4I�4I�!�S�RZ�4[�4[�1���6��?��s���x�=�=�	A��;�;�(�;�;�;�R�@�@�@�%�g�k�2�2�	,�s�a�x�x�
�L�)�)�+�+�+��-�-�.L�.=�q�&�.J�.1�8�=�=�	=r6c�����|jstd��dS|�tj��dd���|ds|drI|sGd|j_t
tj��rd|j	_
|����n�d}d}	tt��}
|d�|d�%|j�|d	�
��\|d<|d<|���D]Q\}}|dd�}|r@|t"vr7d	}	|r|t$vrd	}t'|��}t(|}
|
|
|���R|	�r	|r�d|j	_
|r!|j	�|d���nW|r;|j	�|d
��}|d}|�|d}|d�n|j	�|���d����fd�|
���D��}
|�|��}|r|||
d�g}|�d|i��n'||dkrdn|||
d�g}|�d|i��|�|d	��dS)Nr}r)r�r�	--default�--unlimitedF�--mysql-cpu�
--mysql-ioTr��r�r�r�r�rBc�`�t|t��r|�|��n|}|Srk)r�r�r=)�	old_value�	new_values  r7�update_funcz?CloudlinuxLimits._make_set_action_response.<locals>.update_funcs6��%�i��6�6�2�%�,�,�Y�7�7�7�7�(1�I�(�(r6c�H��i|]\}}||�vr�|�|��n|��Sr5r5)r��keyrC�
getted_limitsrYs   ��r7�
<dictcomp>z>CloudlinuxLimits._make_set_action_response.<locals>.<dictcomp>sV���%�%�%�'�C����-�/�/�)�[��
�c�0B�C�C�C�5:�%�%�%r6)r�r�rBr�rcre)r�r�r�rBr�)r��printr=r�rv�_inode_user_limitsrrrlrtrr�rr�rwrr�r$r&r>�
OUT_LIMITS�#get_default_limits_by_reseller_name�get_limits_by_reseller_namerr�r�)r{rKrNr�rrLr�r��
is_lve_limits�	is_limits�
setted_limitsr[rC�
value_func�getted_reseller_datar�r�r�r\rYs                  @@r7rJz*CloudlinuxLimits._make_set_action_response�s0�����}�	��)�����1��
�
������
�
�	�	�	�
�k�N�K	*�a�
�.�K	*��K	*�04�D�N�-�)�'�+�6�6�
2�-1���*��!�!�#�#�#�#�!�M��I�'��-�-�M����+�q���/J�59�4H�4[�4[�\d�nr�5\�5t�5t�1��-� �!�L�/��g�g�i�i�
5�
5�
��U��!�"�"�g���5�S�N�2�2� $�I��-��(:�!:�!:�(,�
���J�J�E�!+�C��J��J�}�e�4�4�4���1
4� ��15�D�L�.�3�T�)-��(X�(X�YZ�[k�Yl�(m�(m�
�
�9�	T�48�<�3[�3[�\]�^o�\p�3q�3q�0�';�F�'C�H�"�{�&:�4�&@��,@��,J�M�M�,0�L�,N�,N�s�,S�,S�M�)�)�)�%�%�%�%�%�+8�*=�*=�*?�*?�%�%�%�M�!%� 7� 7�� A� A�
�1�4�!� (�"/�"�"�!�I�
�M�M�;�	�":�;�;�;�;�#&�/7�6�/A�/A���x�(5�&3�	���E��M�M�7�E�"2�3�3�3��O�O�F�D�)�)�)��qr6c�f���d}g}i}�d}ttj��r�t�fd�tD����r�ddi�t��fd�tD����}��d��|d<	|j�|||��}	|�	|	��n9#t$r,}
|�|
j|
j
d	���Yd}
~
nd}
~
wwxYw�d
r�ttj��r_	|j�||��d}n)#tf$r}
d}|
j|
j
d	�}Yd}
~
nd}
~
wwxYw|rd|d
<i|d<||dd
<	|�|j�|��d}d}
n)#t"f$r}
d}|
j|
j
d	�}
Yd}
~
nd}
~
wwxYw|rd|d<d|vri|d<|
|dd<d}	|�	|	���d���ttj��rh	|��dd��}|�|j�||��d}d}n)#tf$r}
d}|
j|
j
d	�}Yd}
~
nd}
~
wwxYw|rd|d
<i|d<||dd
<�d��&	|��dd���|j�|��d}d}
n)#t"f$r}
d}|
j|
j
d	�}
Yd}
~
nd}
~
wwxYw|rd|d<d|vri|d<|
|dd<ttj��r�	|��dd��}|j���r|�|j�||��n9#t2f$r+}
d|vri|d<|
j|
j
d	�|dd<Yd}
~
nd}
~
wwxYwd}	|�	|	���dry	�ddk}|j�||��d}	|�	|	��n9#t8$r,}
|�|
j|
j
d	���Yd}
~
nd}
~
wwxYwttj���r�t�fd�t:D�����r�	|����r:�drw�ddk}	|j�||��}	|�	|	��n9#t2$r,}
|�|
j|
j
d	���Yd}
~
nd}
~
wwxYw�drw�ddk}	|j� ||��}	|�	|	��n9#t2$r,}
|�|
j|
j
d	���Yd}
~
nd}
~
wwxYw�dri	|j�!��}	|�	|	��n9#t2$r,}
|�|
j|
j
d	���Yd}
~
nd}
~
wwxYwt�fd�tDD����r��d�d }}|d!kr!|j�#d"��sd#}d#�d <	|j�$|d$krd%n|||��}	|�	|	��n9#t2$r,}
|�|
j|
j
d	���Yd}
~
nd}
~
wwxYwn9#t2$r,}
|�|
j|
j
d	���Yd}
~
nd}
~
wwxYw�d&r�	|j�%|�d&��dd���'��d}	|�	|	��n9#t"$r,}
|�|
j|
j
d	���Yd}
~
nd}
~
wwxYw|||fS)(NFr�c3�.�K�|]}�d|��V��dSr5r5�r��sr�s  �r7r�z4CloudlinuxLimits._set_user_action.<locals>.<genexpr>=s-�����:c�:c�1�1�X�!�X�X�;�:c�:c�:c�:c�:c�:cr6rb�mepc3�p�K�|]0}�d|���
��||���d|��fV��1dSr5)r�)r�r1�
limits_mapr�s  ��r7r�z4CloudlinuxLimits._set_user_action.<locals>.<genexpr>As_�����L�L�!�34�X�!�X�X�;�3J�&�>�>�!�Q�/�/��8��8�8��=�3J�3J�3J�3J�L�Lr6z--save-all-parameterszsave-all-parametersr�rRTr��lvectlr�r�rrQr!r9r:r�z--cagefsr�c3�.�K�|]}�d|��V��dSr5r5rjs  �r7r�z4CloudlinuxLimits._set_user_action.<locals>.<genexpr>�s.�����?n�?n�PQ��(�q�(�(��?n�?n�?n�?n�?n�?nr6z--mysql-gov�watchedz--mysql-restrict�
restrictedr2c3�.�K�|]}�d|��V��dSr5r5rjs  �r7r�z4CloudlinuxLimits._set_user_action.<locals>.<genexpr>�s-�����E�E�1�1�X�!�X�X�;�E�E�E�E�E�Er6rSrTr"z1.2-17rUrc�defaultz--inodes)�force)&rrrlrr&r�r�rt�set_lve_limits_by_user_idr
rr�r�r��set_lve_unlimitedrv� set_user_inodes_limits_unlimitedrr?�reset_lve_limits�reset_user_inodes_limits�GOVERNORrwr��reset_user_limits_to_defaultsrru�set_user_statusrr)r�set_governor_status_for_user�set_restricted_status_for_user�%set_unrestricted_status_for_all_usersr(�_is_governor_newer_then�set_limits_for_user�set_user_inodes_limits)r{r�r�r�rNrOrr�rB�ret_coder��lvectl_error_dict�is_quota_error�quota_error_dict�lve_defaults�
gov_limits�new_user_status�str9rFrns `                  @r7rGz!CloudlinuxLimits._set_user_action6sy
�����������*�+�
�%�g�k�2�2�	R�s�:c�:c�:c�:c�Pb�:c�:c�:c�7c�7c�	R�)�5�1�J��L�L�L�L�L�/�L�L�L�L�L�F�,-�E�E�2I�,J�,J�F�(�)�
R��<�A�A�#�v�}�]�]������)�)�)�)��"�
R�
R�
R��$�$��	�a�i�%P�%P�Q�Q�Q�Q�Q�Q�Q�Q�����
R����
�]��"	&�)�'�+�6�6�

C�T��L�2�2�3�
�F�F�F�(,�%�%��'�)�T�T�T�&*�O�34�9���(S�(S�%�%�%�%�%�%�����T����#�C�'.�F�8�$�')�F�8�$�1B�F�8�$�X�.�
O� �(��N�C�C�C�H�H�H�!&��#'� � ��$�&�
O�
O�
O�!%��./�i�A�I�#N�#N� � � � � � �����
O�����
=�")��w���6�)�)�')�F�8�$�,<��x� ��)��H��O�O�H�%�%�%��[�>�%�)�'�+�6�6�

T�	T�#'�#7�#7��+���#N�#N�L�#�/���5�5�c�<�H�H�H�&+�O�(,�%�%��'�)�T�T�T�&*�O�34�9���(S�(S�%�%�%�%�%�%�����T�����
?�#*��x� �#%��x� �->��x� ��*��!�"�*�S��+�+�A�k�N�J�G�G�S���?�?��D�D�D�%*�N�'+�$�$��(�*�S�S�S�%)�N�23�)��	�'R�'R�$�$�$�$�$�$�����S����"�A�&-�F�7�O��v�-�-�+-��x�(�0@�F�8�$�W�-�.�g�.>�?�?�c�c�%)�%9�%9�!�K�.�'�%R�%R�
��/�C�C�E�E�e�*�J`� �0�N�N�x�Yc�d�d�d���-�0�c�c�c�#�6�1�1�/1�F�8�,�BC�)�XY�Xa�7b�7b��x�(��4�4�4�4�4�4�����c�����H��O�O�H�%�%�%��Z�=�	R�
R�"#�J�-�9�"<����,�,�X��G�G�G�������)�)�)�)��"�
R�
R�
R��$�$��	�a�i�%P�%P�Q�Q�Q�Q�Q�Q�Q�Q�����
R����%�g�&6�7�7�,	R�C�?n�?n�?n�?n�Um�?n�?n�?n�<n�<n�,	R�+
R��/�/�1�1�(^���'�^��}�-��:��^�'+�';�'X�'X�Ya�ce�'f�'f�H�$�O�O�H�5�5�5�5��0�^�^�^� �0�0�A�I�RS�R[�1\�1\�]�]�]�]�]�]�]�]�����^�����+�,�^��1�2�l�B��^�'+�';�'Z�'Z�[c�eg�'h�'h�H�$�O�O�H�5�5�5�5��0�^�^�^� �0�0�A�I�RS�R[�1\�1\�]�]�]�]�]�]�]�]�����^�����1�2�^�^�'+�';�'a�'a�'c�'c�H�$�O�O�H�5�5�5�5��0�^�^�^� �0�0�A�I�RS�R[�1\�1\�]�]�]�]�]�]�]�]�����^�����E�E�E�E�0D�E�E�E�E�E�^�"#�M�"2�A�l�O�R��
��7�7�4�+?�+W�+W�X`�+a�+a�7�!"�B�./�A�l�O�^�'+�';�'O�'O�-5��-?�-?�	�	�X�s�TV�(�(�H�%�O�O�H�5�5�5�5��0�^�^�^� �0�0�A�I�RS�R[�1\�1\�]�]�]�]�]�]�]�]�����^������$�
R�
R�
R��$�$��	�a�i�%P�%P�Q�Q�Q�Q�Q�Q�Q�Q�����
R����
�Z�=�	R�
R���5�5���:��a�e�e�4K�U�.S�.S�6����������)�)�)�)��#�
R�
R�
R��$�$��	�a�i�%P�%P�Q�Q�Q�Q�Q�Q�Q�Q�����
R������&�0�0s��1B:�:
C0�"C+�+C0�D3�3E�>E�E�4 F�F;� F6�6F;�=I�I7�I2�2I7�:K�K<�!K7�7K<�4AN�N=�!N8�8N=� >P�
Q�)"Q�Q�)[$�>0S/�.[$�/
T%�9"T �[$� T%�%[$�=0U.�-[$�.
V$�8"V�[$�V$�$[$�0.W�[$�
X�)"X�[$�X�A[$�09Z*�)[$�*
[ �4"[�[$�[ � [$�$
\�."\�\�&A]5�5
^+�?"^&�&^+c�D���d}i}g}t�fd�tD����r�ddi�t��fd�tD����}	�jd�'�j��jd|��}n&�j��jd|��}|�|��n9#t$r,}��	|j
|jd	���Yd}~nd}~wwxYw|d
��	��|d
d��}	|	�6�j�
|d|	��}|�|��d}d}
n)#tf$r}d}|j
|jd	�}
Yd}~nd}~wwxYw|rd
|d<i|d<|
|dd<|dr{	�j�|d��d}
n)#tf$r}d}|j
|jd	�}
Yd}~nd}~wwxYw|rd
|d<i|d<|
|dd<d}|�|��|||fS)NFc3�8�K�|]}�jd|��V��dSr5r/)r�rkr{s  �r7r�z8CloudlinuxLimits._set_reseller_action.<locals>.<genexpr>�s0�����@�@��t�z�(�q�(�(�#�@�@�@�@�@�@r6rbrlc3��K�|]:}�jd|�����||���jd|��fV��;dSr5)r�r�)r�r1rnr{s  ��r7r�z8CloudlinuxLimits._set_reseller_action.<locals>.<genexpr>�se�����U�U�1�37�:�h�1�h�h�3G�3S�&�>�>�!�Q�/�/���H��H�H�1E�F�3S�3S�3S�3S�U�Ur6r�r�r�r�rQr8Tr�ror�rRr)rr'r�r�rt�set_lvp_defaults_by_reseller_id�set_lvp_limits_by_reseller_idr
rr�r�r�r?�reset_reseller_limits�set_lvp_unlimited)r{r�r�rNrrOrBr�r�r�r�rns`          @r7rFz%CloudlinuxLimits._set_reseller_action�s�����������@�@�@�@�-?�@�@�@�@�@�	R�)�5�1�J��U�U�U�U�U�/�U�U�U�U�U�F�
R��:�j�)�5� $�|�K�K�D�J�Wg�Lh�jp�q�q�H�H� $�|�I�I�$�*�Uf�Jg�io�p�p�H�����)�)�)�)��"�
R�
R�
R��$�$��	�a�i�%P�%P�Q�Q�Q�Q�Q�Q�Q�Q�����
R����
�[�>�%�

P�#�3�3�A�k�N�E�J�J���+�#�|�A�A�!�DU�BV�Xd�e�e�H��O�O�H�-�-�-�"'��$(�!�!��#�%�
P�
P�
P�"&��/0�y�Q�Y�$O�$O�!�!�!�!�!�!�����
P�����
?�#*��x� �#%��x� �->��x� ��*��]��	&�
P���.�.�q�1B�/C�D�D�D�$(�!�!��#�%�
P�
P�
P�"&��/0�y�Q�Y�$O�$O�!�!�!�!�!�!�����
P�����
?�#*��x� �#%��x� �->��x� ��*��H��O�O�H�%�%�%���&�0�0sJ�A/B?�?
C5�	"C0�0C5�AE�F�%E;�;F�#"G�G,�G'�'G,c��td���}td�|D����|_td�|D����|_dS)N)�cploginr��dns)�keylsc3�6K�|]}|d|dfV��dS)rr"Nr5�r��is  r7r�z/CloudlinuxLimits._init_cache.<locals>.<genexpr>�.����&B�&B���!��a��d�|�&B�&B�&B�&B�&B�&Br6c3�6K�|]}|d|dfV��dS)rrUNr5r�s  r7r�z/CloudlinuxLimits._init_cache.<locals>.<genexpr>r�r6)r	r��_user_to_reseller�_userdomain_cache)r{�infos  r7�_init_cachezCloudlinuxLimits._init_cachesW���:�;�;�;��!%�&B�&B�T�&B�&B�&B�!C�!C���!%�&B�&B�T�&B�&B�&B�!C�!C����r6c��|j�-	|���n#t$r
i|_YnwxYw|j�|d��}|S)zi
        Try to get reseller for given username;
        :type username: str
        :rtype: str
        Nre)r�r�rr�)r{r�r�s   r7r�z#CloudlinuxLimits._get_reseller_name sn���!�)�
,�� � �"�"�"�"���
,�
,�
,�)+��&�&�&�
,�����.�2�2�8�S�A�A�
�����2�2c��|j�-	|���n#t$r
i|_YnwxYw|j�|d��S)z~
        Retrive main domain for supplied user
        :param username: User name
        :return: Domain name or N/A
        Nr�)r�r�rr�r�s  r7r�z CloudlinuxLimits.get_user_domain.si���!�)�
,�� � �"�"�"�"���
,�
,�
,�)+��&�&�&�
,�����%�)�)�(�E�:�:�:r�c��	t|��}|r|Sn6#ttf$r"}tt	|����|�d}~wwxYwtdd|id����)zn
        Retrive username by domain
        :param domain_name: Domain name
        :return: Username
        NzThere is no domain '%(domain)s'r�r)r
�IOErrorrr1r>)r{�domain_namer�r�s    r7r�z(CloudlinuxLimits.get_user_name_by_domain;s���	1�#�K�0�0�H��
 ���
 ����&�	1�	1�	1�!�#�a�&�&�)�)�q�0�����	1�����*K�+3�[�*A�C�C�D�D�	Ds��A	�A�A	c��|j}d\}}d�}|ds|ddkri|d}|�|��}t|��}|s0t|��r!d�}|�||����||j|<n�|dr�|d}	|j�|��}n>#tj	$r,}|�|j
|jd���Yd}~nd}~wwxYw|�|��}|s-t|��r|�||����||j|<||fS)	a
        User identification from CLI options. Common for all commands.
        May return (None, None) when user wasn't specified in any way and this
        is a *valid* case when we want to list all users with command like:
        "... get --json --for-reseller=reseller1"
        )NNc��dd|id�S)Nr�r�r�r5)r�s r7�_username_messagez7CloudlinuxLimits._check_user.<locals>._username_messageTs��@�j�Zb�Mc�d�d�dr6r�rc��dd|id�S)Nz%(uid)s is not a panel userr�r�r5)r�s r7�_uid_messagez2CloudlinuxLimits._check_user.<locals>._uid_message_s��&C�QV�X[�P\�]�]�]r6r�r�N)r�r�rr�r�ryrsr�rr�r�r�)r{r�r�r�r��user_packager�r�s        r7r�zCloudlinuxLimits._check_userJs���
�J��"�
��X�	e�	e�	e�
�Z�=�	-�A�j�M�Q�.�.��J�-�C��;�;�C�@�@�L�/��4�4�H� �
8�D��I�I�
8�^�^�^��$�$�\�\�#�%6�%6�7�7�7�$,�D��S�!�!�
�|�_�	-����H�
R��k�)�)�(�3�3�����,�
R�
R�
R��$�$��	�a�i�%P�%P�Q�Q�Q�Q�Q�Q�Q�Q�����
R�����;�;�C�@�@�L��
B�D��I�I�
B��$�$�%6�%6�x�%@�%@�A�A�A�$,�D��S�!��H�}�s�B9�9C4�"C/�/C4r"c�~�|jr9|�dtj��i��t|d��nh	t	t|d��|�di��z��n-#t$r }t	d|�d|�d���Yd}~nd}~wwxYwtj	|��dS)	z�
        Print error and exit

        :param message dict: Dictionary with keys "result" as string and optional "context" as dict
        r�Trr�zError: z [�]N)
r�r=r�rr^r>r��KeyError�sys�exit)r{r��
error_coder�s    r7r�z CloudlinuxLimits._error_and_exitts����=�	1��N�N�K�����5�6�6�6��W�d�+�+�+�+�
1��c�'�(�+�,�,�w�{�{�9�b�/I�/I�I�J�J�J�J���
1�
1�
1��/��/�/�W�/�/�/�0�0�0�0�0�0�0�0�����
1�����������s�9A<�<
B&�B!�!B&)Fr})r")/r2r3r4�__doc__r�r�r�ryr�r�ror|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r?rrr	r�r+�staticmethodr?r�r,rJrGrFr�r�r�r�r�r��
__classcell__)rqs@r7ririDs����������
�E��H����K�����$�$�$�$�$�

�
�
�	<�	<�	<�	<�"H�"H�"H�H������@
'�
'�
'�	N�	N�	N�
N�
N�
N����>8�8�8�t=�=�=����4����$�����*A�A�A�FC�c�C�4�C��C�$�C�C�C�C�6,-�,-�,-�\!�!�!�*
/�
/�
/�#�#�#�J����\��"
�
�
�'=�'=�'=�RX�X�X�tj1�j1�j1�X71�71�71�rD�D�D�
���;�;�;�
D�
D�
D�(�(�(�T�������r6ric� �eZdZd�Zd�Zd�ZdS)rnc��t��|_t��|_t	��|_t
��|_i|_dSrk)	rrsrrurrvr+rxryrzs r7r|zCloudlinuxLimitsNoLve.__init__�s?���g�g����x�x���#�����;�=�=�������r6c�v�ddlm}	t||��d��}n#t$rd}YnwxYw|S)z�
        Get package name by user id.
        None package returns as str(None) for user checker compatibility:
          'not str(None)' is True
        :param: id - user/lve id
        :return: Package name
        r)�reseller_package_by_uidr"r�)�clcommon.cpapir�r>�
IndexError)r{r�r��package_names    r7r�z1CloudlinuxLimitsNoLve.get_package_name_by_user_id�sg��	;�:�:�:�:�:�	��6�6�s�;�;�A�>�?�?�L�L���	�	�	��L�L�L�	�����s�'�6�6c���i}|j}|j���rd|d<nd|d<|d�$|j���rd|d<nd|d<t|dt��r|d�d��nd�t�fd	�tD����}g}|j
���D�]\}}|�||��}|d
r�|j���rh	|j�
|d��}|rdnd|d<n=#t$r0}	d|d<d
|vri|d
<t
|	��|d
d<Yd}	~	nd}	~	wwxYw|�|��|d<i}
|d�|dr|�||
|��|
|d<|�|����t%|��|d<||d<|dsg|d<|�|d��dS)r�r�r�r�r�Nr�r�rMc3�*�K�|]
}|�p|�vfV��dSrkr5r�s  �r7r�z9CloudlinuxLimitsNoLve._get_action_list.<locals>.<genexpr>�r�r6r�r�r�r�r�rLrBr�r�r�Tr)r�rur�rvr�r�r>rQr�r%ryr�r�rrr�rr
r�r�)r{rr�r
r�r�r�r�rr�rBr�s           @r7r�z&CloudlinuxLimitsNoLve._get_action_list�sr���
���J���<�)�)�+�+�	*�(�F�8���)�F�8���
��&��~�0�0�2�2�
-�"+��w���",��w��)3�A�j�M�3�)G�)G�
Q�Q�z�]�
 �
 ��
%�
%�
%�T���E�E�E�E�4D�E�E�E�E�E����!�-�3�3�5�5�	�	�M�C���5�5�c�8�D�D�D��H�~�

8�$�,�"@�"@�"B�"B�

8�8�$(�L�$@�$@��j�AQ�$R�$R�M�2?�%O�Y�Y�Z�D��N�N��&�8�8�8�'.�F�8�$��v�-�-�+-��x�(�14�Q���F�8�$�X�.�.�.�.�.�.�����8����#�>�>�s�C�C�D��O��F��!�"�*�t�H�~�*��'�'��V�V�<�<�<�#�D��N��L�L�������e�*�*��w����w���!�"�	%�"$�F�;��	
�����%�%�%��qs�)D6�6
E0�&E+�+E0N)r2r3r4r|r�r�r5r6r7rnrn�sA������������ :�:�:�:�:r6rn)Br�r��collectionsr�clcommonr�clcommon.clfuncr�clcommon.clexceptionrr�rrr	r
rrr
rrr�clcommon.cpapi.cpapiexceptionsr�clcommon.librrr�	cli_utilsrr�	cllicenser�cllimitsrrrr�cllimits.clquota_librrr�	lvectllibrr r!�arg_parsersr#r$r%r&r'r(r)r*r+r,�utilsr-r.r/r1r`�ADMIN_RESELLER_NAMESr$rirnr5r6r7�<module>r�se���
�
�
�����#�#�#�#�#�#�������*�*�*�*�*�*�3�3�3�3�3�3�,�,�,�,�,�,�,�,�,�,�,�,�,�,�,�,�,�,�,�,�,�,�,�,�9�8�8�8�8�8�I�I�I�I�I�I�I�I�I�I�6�6�6�6�6�6�6�6�*�*�*�*�*�*�E�E�E�E�E�E�E�E�E�E�E�E�:�:�:�:�:�:�:�:�:�:�N�N�N�N�N�N�N�N�N�N�6�6�6�6�6�6�6�6�6�6�6�6�6�6�6�6�6�6�6�6�6�6�6�6�0�0�0�0�0�0�0�0�0�0�	�	�	�	�	�(�	�	�	�
��
D�
C�M�M�K�K���H�G�
B�
B�
?�
?�
?�
?�@�@�'��
�,.�-�-��#�X�.��~�~�~�~�~�~�~�~�B"S�S�S�S�S�,�S�S�S�S�Sr6

Youez - 2016 - github.com/yon3zu
LinuXploit