File: //opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/__pycache__/sysctl.cpython-311.pyc
�
��Tj�# � � � d dl Z d dlZd dlmZ d dlmZmZmZ d dlm Z m
Z
dZdZ ej
d� � Zd� Zd � Z G d
� d� � Z G d� 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_namer sH � � �d�C� � � \��(A�(A�$�(G�(G� \��Z�[�[�[�\� \� c � � t | t � � r| nt | � � }t d� |D � � � � rt d� � �dS )zOReject control chars / \r / \n in a value so it cannot inject extra directives.c 3 �j K � | ].}t |� � d k st |� � dk o|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�
Rr z9Invalid sysctl value (control characters are not allowed)N)r
r �anyr )�value�texts r �_validate_sysctl_valuer s_ � � �u�c�*�*�:�5�5��E�
�
�D� �
R�
R�T�
R�
R�
R�R�R� V��T�U�U�U�V� Vr c �z � e Zd ZdZdZedfd�Zd� Zed� � � Z d� Z
ed� � � Zd � 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__0 s. � � '���"&�"2�8�8�8���&����r c �j � | j dg} t |� � dS # t $ r | j s� Y dS w xY w)z>
Apply all params from sysctl.d & sysctl.conf
z--systemN)�
SYSCTL_BINr r r% )r&