????

Your IP : 3.14.141.163


Current Path : /opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/__pycache__/
Upload File :
Current File : //opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/__pycache__/clconfpars.cpython-311.pyc

�

�j�e�%��>�ddlZddlZddlZddlmZddlZGd�de��ZGd�de��ZdZ	dd	�Z
d
Zdedefd
�Z
dd�ZiZdd�Zd d�Zejdejejzejz��Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zedgd���Zd�ZdS)!�N)�
namedtuplec��eZdZd�ZdS)�WebConfigParsingErrorc��||_dS�N��message��selfr	s  ��/builddir/build/BUILDROOT/alt-python27-cllib-3.3.15-1.el8.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/clconfpars.py�__init__zWebConfigParsingError.__init__�
�������N��__name__�
__module__�__qualname__r
�rrrr�#����������rrc��eZdZd�ZdS)�WebConfigMissingc��||_dSrrr
s  rr
zWebConfigMissing.__init__rrNrrrrrrrrr�asectionFc�"�tjddd���}|rt|_|rbt	|d��5}|����tj��d��}ddd��n#1swxYwYn<t	|d��5}|���}ddd��n#1swxYwY|�	dt�d�|z|�	��t|�t�
����S)NTF)�allow_no_value�
interpolation�strict�rb�replace�r�[z]
)�source)�section)
�configparser�ConfigParser�str�optionxform�open�read�decode�locale�getpreferredencoding�read_string�SECHEAD�dict�items)�path�case_sensitive�ignore_bad_encoding�config�f�raws      r�loadr7s���
�
&�d�59�.3�5�5�5�F��!� �����
�$��
�
�	L���&�&�(�(�/�/�&�"=�"?�"?��K�K�C�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L���$��_�_�	���&�&�(�(�C�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
���'�7�'�'�'�#�-�d��;�;�;�����W��-�-�.�.�.s#�:A>�>B�B�B;�;B?�B?)�'�"�val�returnc��|�t��r$|�t��r
|dd�S|S)zW
    Strips single or double quote char only if the quote present from both sides.
    ����)�
startswith�_QUOTES�endswith)r:s r�$_strip_escape_quotes_of_config_valuerB/s>���~�~�g����3�<�<��#8�#8���1�R�4�y���Jr�=c�|�t��}t|dd���5}|���D]m}|�|d��}	|\}}n#t$rY�+wxYw|���}|rt
|��n|}|||���<�n	ddd��n#1swxYwY|S)Nr �surrogateescape)�errorsr=)r/r(�	readlines�split�
ValueError�striprB)	r1�	delimiter�strip_quotes�datar5�line�parts�key�values	         r�	load_fastrR8s���6�6�D�	
�d�C� 1�	2�	2�	2�&�a��K�K�M�M�	&�	&�D��J�J�y�!�,�,�E�
�"�
��U�U���
�
�
���
�����K�K�M�M�E� ��4�U�;�;�;��
�
!&�D��������	&�&�&�&�&�&�&�&�&�&�&�&����&�&�&�&� �Ks6�-B1�A�B1�
A"�B1�!A"�"AB1�1B5�8B5c���	t|}nV#t$rI	t|��x}t|<n+#ttjf$r|s�ix}t|<YnwxYwYnwxYw|S)zD
    Read ini file once (cached) and return its content as dict
    )�cache�KeyErrorr7�IOErrorr$�Error)r1�
ignore_errors�ress   r�	load_oncerZNs���#��D�k�����#�#�#�	#�!%�d���+�C�5��;�;����+�,�	#�	#�	#� �
�� "�"�C�%��+�+�+�	#������#�����Js/�
�
A#�5�A#�%A�A#�A�A#�"A#c��|s|dz}t|d��}t|d��}g}|D]�}|���}|r�|�d��sx|�dd��\}}	|���}||vrG|�|dzt||��zdz��|�|����|�|����|���t|�	����D]7}||vr1|�|dzt||��zdz���8|���tj||��dS)Nz.tmpr �w�#rCr=�
)r(rJr?rH�writer&�append�close�list�keys�os�rename)
r/r1�tmp_path�fin�fout�	used_keysrN�lrPrQs
          r�change_settingsrk^ss������;��
�t�S�/�/�C���#���D��I��	�	���J�J�L�L���	�Q�\�\�#�&�&�	�����a���J�C���)�)�+�+�C��d�{�{��
�
�3�s�7�3�t�C�y�>�>�1�$�6�7�7�7�� � ��%�%�%���
�
�4������I�I�K�K�K��D�I�I�K�K� � �4�4���i����J�J�s�3�w�s�4��9�~�~�-�d�2�3�3�3���J�J�L�L�L��I�h������ra
    (
      # Comments
      (:? \# .* $ )

      # Single-, double-quoted strings and bare strings without whitespaces
      | (:? "[^"\n]*?" )
      | (:? '[^'\n]*?' )
      | (:? [^"';\s\{\}]+ )

      # Structural characters
      | ;
      | \{
      | \}
      | \n
    )
    c�b�d�t�|��D��}d�|D��S)Nc3�nK�|]0}|�|�d���|�d��V��1dS)rN)�group)�.0�matchs  r�	<genexpr>z _ngx_tokenize.<locals>.<genexpr>�sZ����������[�[��^�^��
���A��������rc3�DK�|]}|�d���|V��dS)r]N)r?)ro�toks  rrqz _ngx_tokenize.<locals>.<genexpr>�s3����=�=�C�����)<�)<�=�C�=�=�=�=�=�=r)�_NGINX_TOKENS_RE�finditer)rM�tokenss  r�
_ngx_tokenizerw�sD����%�.�.�t�4�4����F�>�=�6�=�=�=�=rc#�*K�|D]
}||vrdS|V��dSrr)�itr:rss   r�_ngx_take_untilrz�s:���������#�:�:��F�F��	�	�	�	�	�rc#�`K�d}|D]&}|dkr|dz
}n|dkr|dz}|dkrdS|V��'dS)Nr=�{�}r)ry�lvl�ts   r�_ngx_take_until_block_endr��se����
�C�
������8�8��1�H�C�C�
�#�X�X��1�H�C���7�7��F�F�������rc��i}|D]@}|dkrt|��D]}�||vr"t|d��}t|��||<�A|S)z5Scan a block for required fields, skips nested blocksr|z;
)r�rzrb)�block_tokens�need_fields�infors�_�value_tokenss      r�_ngx_scan_block_infor��sj��
�D��+�+���#�:�:�.�|�<�<�
�
����+���*�<��?�?�L��\�*�*�D��I���Krc#�zK�t|��}|D]�}|dkr�	t|d��D]}�t|��}t|d��}	|d}|d}n#t$rY�YwxYw|s|s�bt|d��t|d��d|�dg��vd	�V���d
S)aq
    Parse content of NGINX configuration in a manner tolerant to minor mistakes
    and extract relevant fields from all `server` directives.

    Relevant fields are:
    - `server_name`
    - `root` - returned as `document_root`
    - `ssl` - if `listen` field contains "ssl" word

    Doesn't handle interpolated values (ex. `${val}`) outside of quoted strings
    �serverr|)�server_name�root�listenr�r�r�sslr�)r��
document_rootr�N)rwrzr�r�rUrB�get)rMrvrsr�r�r�r�r�s        r�nginx_conf_loose_parserr��s�����4�
 �
 �F��
�
���(�?�?��
!���-�-�	�	�A��1��8�8��$�L�2S�T�T��	��}�-�K���<�D�D���	�	�	��H�	�����	�4�	��@��A��O�O�A�$�q�'�J�J��D�H�H�X�r�2�2�2�
�
�	
�	
�	
�	
�/
�
s�A!�!
A.�-A.c��tj�|��std|z���t	|d��5}|���}ddd��n#1swxYwYt
t|����S)zGParse NGINX config file, see `nginx_conf_loose_parser` for more details�File does not exists %sr N)rdr1�isfilerr(r)rbr�)�	conf_filer5�
dirty_datas   r�nginx_conf_parserr��s���
�7�>�>�)�$�$�F��8�9�D�E�E�E�	
�i��	�	����V�V�X�X�
��������������������'�
�3�3�4�4�4s�A#�#A'�*A'c	�4�tj�|��std|z���t	��}t|d��}|���}|���d�|D��}d}d}i}g}t|��dkr�|�	d��}	d|	vr�|	�
��d}
d}	|
�
d	��\}}|�d
d��}n#t$r|
}YnwxYw|�
|��|�
|��d}��d
|	vr|||<|dz
}d}g}��|r|�
|	����t|��dk��|D�]�}
ddddt||
d��dd�}||
D�]O}d|vrD|�
��d����dd��|d<�Kd|vrC|�
��d����d��|d<��d|vr=d�d�|�
��dd�D����|d<��d|vr/|�
��d���|d<d|vrE|�
��d������dk|d<��Q|�
|�����|S)Nr�r c�<�g|]}tjd|���|��S)z^((?!#).)*$)�re�search)ro�is  r�
<listcomp>z&apache_conf_parser.<locals>.<listcomp>�s)��?�?�?�!�2�9�]�A�#>�#>�?�A�?�?�?rrFz<VirtualHostr=�0�:�>�Tz</VirtualHost>)�userr�r��server_alias�portr��
ServerNamezwww.r��DocumentRootr9r��ServerAlias�,c3�4K�|]}t|��V��dSr)r&)ro�ns  rrqz%apache_conf_parser.<locals>.<genexpr>+s(����/Q�/Q�1��A���/Q�/Q�/Q�/Q�/Q�/Qrr��SuexecUserGroupr��	SSLEngine�onr�)rdr1r�rrbr(rGra�len�poprHrrIr`�intrJ�join�lower)r��	conf_datar5�data_allrM�ID�enable�result�vhost�out�ip_portr��ipr�rNs               r�apache_conf_parserr��s=��
�7�>�>�)�$�$�F��8�9�D�E�E�E����I��Y����A��{�{�}�}�H��G�G�I�I�I�?�?�x�?�?�?�D�	
�B�
�F�
�F��E�

�d�)�)�a�-�-��h�h�q�k�k���S� � ��i�i�k�k�!�n�G��D�
�"�=�=��-�-���D��|�|�C��,�,�����
�
�
�����
�����L�L������L�L������F���s�"�"��F�2�J���E�B��F��E���	��L�L������1�d�)�)�a�-�-�4����� "�"$�!%��V�A�Y�q�\�*�*��
����1�I�	F�	F�D��t�#�#�&*�j�j�l�l�1�o�&;�&;�&=�&=�&E�&E�f�b�&Q�&Q��]�#����%�%�(,�
�
���Q��(=�(=�(?�(?�(E�(E�c�(J�(J��_�%����$�$�'*�x�x�/Q�/Q��
�
���Q�R�R�@P�/Q�/Q�/Q�'Q�'Q��^�$�� �D�(�(�#�z�z�|�|�A��4�4�6�6��V���d�"�"�"�j�j�l�l�1�o�3�3�5�5�;�;�=�=��E��U������������s�.D�D�D�	PamLVECfg)�min_uid�cagefs_enabled�groupsc��t|d��5}|D]�}|�d��r�|���}t|��}|dkr�|ddkr�|dkrt	|d��nd}|dkr"tt	|d����nd	}|d
kr|d�d��ndg}t
|||��ccd
d
d
��S��	d
d
d
��n#1swxYwYd
S)aD
    Parse string like:
    "session      required      pam_lve.so      500      1     group1,group2"
    :param configfile: path to config file to parse
    :type configfile: str
    :return: PamLVECfg instance when pam_lve configuratiom is found, None otherwise
    :rtype: namedtuple
    :raises: IOError, ValueError
    r r]��z
pam_lve.so�i��F�r��wheelN)r(r?rHr�r��boolr�)�
configfiler5rN�srjr�r�r�s        r�parse_pam_lve_configr�9s}��
�j�#�	�	�B�!��
	B�
	B�D����s�#�#�
���
�
���A��A���A��A�v�v�!�A�$�,�.�.�'(�A�v�v�#�a��d�)�)�)�3��45��F�F��c�!�A�$�i�i������,-��F�F��1����C�����	�� ��.�&�A�A�A�A�B�B�B�B�B�B�B�B��
	B�B�B�B�B�B�B�B�B�B�B�B����B�B�B�B��4s�C
C9�+C9�9C=�C=)FF)rCF)Fr) r$rdr��collectionsrr+�	Exceptionrrr.r7r@r&rBrRrTrZrk�compile�
IGNORECASE�	MULTILINE�VERBOSErtrwrzr�r�r�r�r�r�r�rrr�<module>r�s�������	�	�	�	�	�	�	�	�"�"�"�"�"�"�
�
�
�
������I����
�����y����
��
/�
/�
/�
/� ���c��c���������(	��
�
�
�
� ����0�2�:��"�M�B�L� �2�:�-�%���,>�>�>����	�	�	�
�
�
� (
�(
�(
�V5�5�5�G�G�G�T
�J�{�$K�$K�$K�L�L�	�����r