HEX
Server: LiteSpeed
System: Linux server3ir.xdlhost.com 4.18.0-553.30.1.lve.el8.x86_64 #1 SMP Tue Dec 3 01:21:19 UTC 2024 x86_64
User: gmparts (1037)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/__pycache__/sysctl.cpython-311.pyc
�

��Tj�#���ddlZddlZddlmZddlmZmZmZddlm	Z	m
Z
dZdZej
d��Zd�Zd	�ZGd
�d��ZGd�d
��ZdS)�N)�ConfigParser)�run_command�get_file_lines�ExternalProgramFailed)�AnyStr�Listz /etc/sysctl.d/90-cloudlinux.confz/etc/sysctl.confz[A-Za-z0-9._/-]+c��t|t��rt�|��st	d���dS)zLReject names that are not a valid sysctl key (prevents directive injection).z?Invalid sysctl parameter name (must match a sysctl key grammar)N)�
isinstance�str�_SYSCTL_NAME_RE�	fullmatch�
ValueError)�names ��/builddir/build/BUILDROOT/alt-python27-cllib-3.4.41-1.el8.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/sysctl.py�_validate_sysctl_namersH���d�C� � �\��(A�(A�$�(G�(G�\��Z�[�[�[�\�\�c��t|t��r|nt|��}td�|D����rtd���dS)zOReject control chars / \r / \n in a value so it cannot inject extra directives.c3�jK�|].}t|��dkst|��dko|dvV��/dS)� �z 	N)�ord)�.0�chs  r�	<genexpr>z)_validate_sysctl_value.<locals>.<genexpr>%sD����
R�
R�r�C��G�G�d�N�-�c�"�g�g��o�B�2�U�?�
R�
R�
R�
R�
R�
Rrz9Invalid sysctl value (control characters are not allowed)N)r
r�anyr)�value�texts  r�_validate_sysctl_valuers_���u�c�*�*�:�5�5��E�
�
�D��
R�
R�T�
R�
R�
R�R�R�V��T�U�U�U�V�Vrc�z�eZdZdZdZedfd�Zd�Zed���Z	d�Z
ed���Zd	�Z
d
�Zd�Zdd�Zd
�ZdS)�
SysCtlConfz(
    For reading params from sysctl
    z/sbin/sysctlTc�@�||_|j�d�|_||_dS)z�
        :param config_file: path to user defined systcl config file
        :param mute_errors: T/F value to define should we skip errors or not (used in cldiag checker)
        �.tmpN)�config_file�config_tmp_file�mute_errors)�selfr#r%s   r�__init__zSysCtlConf.__init__0s.��'���"&�"2�8�8�8���&����rc�j�|jdg}	t|��dS#t$r|js�YdSwxYw)z>
        Apply all params from sysctl.d & sysctl.conf
        z--systemN)�
SYSCTL_BINrrr%)r&�cmds  r�
_apply_allzSysCtlConf._apply_all;sf��
�O��
��	�
��������$�	�	�	��#�
��
�
�
�	���s��2�2c�p�|jddd|g}t|d���\}}}|���}|S)zM
        Read sysctl param
        :param name: name of sysctl param
        z-bz-nz--T)r*�return_full_output)r)r�strip)�clsrr*�ret_code�std_out�std_inrs       r�_read_sysctl_paramzSysCtlConf._read_sysctl_paramMsU��
�N���
��
��%0��#�%
�%
�%
�!��'�6��
�
�����rc�j�t|jdd���5}d�|��}|�|��|���tj|�����ddd��n#1swxYwYtj|j|j	��dS)zm
        Write sysctl params to sysctl.conf
        :param lines: content for writing to sysctl.conf
        �w�utf-8��encoding�N)
�openr$�join�write�flush�os�fsync�fileno�renamer#)r&�lines�sysctl_confs   r�_write_params_to_filez SysCtlConf._write_params_to_filefs����$�&��g�
>�
>�
>�	+�+��G�G�E�N�N�E����e�$�$�$��������H�[�'�'�)�)�*�*�*�		+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�
	�	�$�&��(8�9�9�9�9�9s�A%B	�	B
�B
c�\�|�d��d���S)N�=r)�splitr.)�lines r�_get_param_name_from_linez$SysCtlConf._get_param_name_from_liness%���z�z�#���q�!�'�'�)�)�)rc�.�t|j��}|S)zW
        Read content from sysctl.conf
        :return: lines from sysctl.conf
        )rr#)r&�results  r�_read_sysctl_confzSysCtlConf._read_sysctl_confys�� �� 0�1�1���
rc�j�������}t��fd�|D����}|S)Nc3�J�K�|]}���|��kV��dS)N)rI)rrH�
param_namer&s  ��rrz+SysCtlConf.has_parameter.<locals>.<genexpr>�s6�����_�_�D�Z�4�#A�#A�$�#G�#G�G�_�_�_�_�_�_r)rLr)r&rO�
file_linesrKs``  r�
has_parameterzSysCtlConf.has_parameter�sB�����+�+�-�-�
��_�_�_�_�_�T^�_�_�_�_�_���
rc�X�|���|�|��}|S)z{
        Get sysctl param by name
        :param name: name of sysctl param
        :return: value of sysctl param
        )r+r3)r&rrs   r�getzSysCtlConf.get�s,��	
�������'�'��-�-���rc��t|��t|��|�d|�d�}t|�����}d}t	|��D]8\}}|�d��r�|�|��}	||	kr|}�9|dkr|�|��n|r|||<|�|��|�	��dS)z�
        Set sysctl param by name
        :param overwrite: overwrite value of existed parameter
        :param name: name of sysctl param
        :param value: value of sysctl param
        z = �
����#N)
rr�listrL�	enumerate�
startswithrI�appendrDr+)
r&rr�	overwrite�param�sysctl_conf_output�	idx_param�irH�keys
          r�setzSysCtlConf.set�s��	�d�#�#�#��u�%�%�%��%�%�E�%�%�%��!�$�"8�"8�":�":�;�;���	� �!3�4�4�	�	�G�A�t����s�#�#�
���0�0��6�6�C��s�{�{��	����?�?��%�%�e�,�,�,�,�
�	2�,1��y�)��"�"�#5�6�6�6��������rc�:�|���t|�����}g}t|��D]6\}}|�|��}||kr|�d|���7|D]}||=�|�|��dS)z[
        Remove systcl param from config
        :param name: name of sysctl param
        rN)r+rXrLrYrI�insertrD)r&rr^�idx_listr`rHras       r�removezSysCtlConf.remove�s���	
������!�$�"8�"8�":�":�;�;���� �!3�4�4�	&�	&�G�A�t��0�0��6�6�C��s�{�{�����1�%�%�%���	&�	&�A�"�1�%�%��"�"�#5�6�6�6�6�6rN)T)�__name__�
__module__�__qualname__�__doc__r)�SYSCTL_FILEr'r+�classmethodr3rD�staticmethodrIrLrQrSrbrf�rrr r )s��������� �J�#.�D�	'�	'�	'�	'����$����[��0:�:�:��*�*��\�*�
	�	�	�����������87�7�7�7�7rr c�<�eZdZdZdZe�d�ZdZd�Zd�Zd�Z	d�Z
d	S)
�
SysCtlMigratezp
    Class for migrating of sysctl parameter from /etc/sysctl.conf to /etc/sysctl.conf.d/90-cloudlinux.conf
    z/var/lve/cl-sysctl.migrater"�mainc���tt���|_tt���|_tdd���|_|j�|j��dS)N)r#F)�
interpolation�strict)	r rk�	_src_conf�SYSCTL_CL_CONF_FILE�	_dst_confr�_migrate_config�read�MIGRATE_CONFIG_PATH)r&s rr'zSysCtlMigrate.__init__�s^��#��<�<�<���#�0C�D�D�D��� ,�$�u�M�M�M�����!�!�$�":�;�;�;�;�;rc���d}|j�|j��r@|j�|j|��r |j�|j|��}|S)NF)rx�has_section�MAIN_SECTION�
has_option�
getboolean)r&rOrKs   r�_is_migration_donez SysCtlMigrate._is_migration_done�se������+�+�D�,=�>�>�	T��$�/�/��0A�:�N�N�	T��)�4�4�T�5F�
�S�S�F��
rc��|j�|j��s|j�|j��|j�|j|d��t|jdd���5}|j�|��|���tj
|�����ddd��n#1swxYwYtj|j|j
��dS)N�truer5r6r7)rxr|r}�add_sectionrbr:�MIGRATE_CONFIG_TMP_PATHr<r=r>r?r@rArz)r&rO�
config_tmps   r�_set_migration_state_to_donez*SysCtlMigrate._set_migration_state_to_done�s(���#�/�/��0A�B�B�	@�� �,�,�T�->�?�?�?��� � ��!2�J��G�G�G�
�$�.��g�
F�
F�
F�	*�*�� �&�&�z�2�2�2��������H�Z�&�&�(�(�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	�	�$�.��0H�I�I�I�I�Is�7AC�C�Cc�N�|�|���rdS|j�|��r|j�|��}n|}|j�|��|�#|�dnd}|j�|||���|�|���dS)a%
        Migrate sysctl parameter from one config to another
        in conformity with presence of parameter in source config and default value.
        All cases of using you can see in doc:
        https://docs.google.com/spreadsheets/d/1H_q3TA3CMFCj1YwAOn7G1LZgxcS1F4h90B6jCgiTUpo
        )rONTF)r\)r�rurQrSrfrwrbr�)r&rO�
default_valuerr\s     r�migratezSysCtlMigrate.migrate�s����"�"�j�"�9�9�	��F��>�'�'�
�3�3�	"��N�&�&�z�2�2�E�E�"�E�	
����j�)�)�)���!.� 5���5�I��N���z�5�I��F�F�F��)�)�Z�)�@�@�@�@�@rN)rgrhrirjrzr�r}r'r�r�r�rnrrrprp�s~��������7��!4�:�:�:���L�<�<�<����J�J�J�A�A�A�A�Arrp)r>�re�configparserr�clcommon.utilsrrr�typingrrrvrk�compilerrrr rprnrr�<module>r�s��
�	�	�	�	�	�	�	�%�%�%�%�%�%�M�M�M�M�M�M�M�M�M�M���������8�� ��
�"�*�0�1�1��\�\�\�V�V�V�\7�\7�\7�\7�\7�\7�\7�\7�~DA�DA�DA�DA�DA�DA�DA�DA�DA�DAr