HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/fail2ban/client/__pycache__/configreader.cpython-311.pyc
�

�BdO4����dZdZdZddlZddlZddlmZmZddlm	Z	m
Z
mZdd	lm
Z
mZmZmZe
e��Zeed
�Zd�ZGd�d
��ZGd�de
��ZGd�de��ZdS)z?Cyril Jaquier, Yaroslav Halchenko, Serg G. Brester (aka sebres)z\Copyright (c) 2004 Cyril Jaquier, 2007 Yaroslav Halchenko, 2015 Serg G. Brester (aka sebres)�GPL�N)�
NoOptionError�NoSectionError�)�sys�SafeConfigParserWithIncludes�logLevel�)�	getLogger�_as_bool�_merge_dicts�substituteRecursiveTags)�bool�intc#��K�t|ttf��r0|D]+}t|��dkr|\}}}n|dc\}}}|||fV��,dS|D]}||\}}|||fV��dS)z�Iterator over the options template with default options.
	
	Each options entry is composed of an array or tuple with:
		[[type, name, ?default?], ...]
	Or it is a dict:
		{name: [type, default], ...}
	r
N)�
isinstance�list�tuple�len)�options�optname�opttype�optvalues    �>/usr/lib/python3/dist-packages/fail2ban/client/configreader.py�_OptionsTemplateGenr)s������w��e��%�%�
$��$�$�g�	�'�l�l�Q���!(��G�W�h�h�#*�D� ��W�g��	�'�8�	#�#�#�#�#�$�$��$�$�g��w�'��7�H�	�'�8�	#�#�#�#�#�$�$�c��eZdZdZdd�Zd�Zd�Zed���Zdd�Z	dd
�Z
d�Zd�Zdd
�Z
d�Zd�Zdd�Zdifd�Zd�ZdS)�ConfigReaderzkGeneric config reader class.

	A caching adapter which automatically reuses already shared configuration.
	Nc��d|_d|_|�||_|�||_||_d|_dS|j�t	di|��|_dSdS)N�)�
_cfg_share�_cfg�_cfg_share_kwargs�_cfg_share_basedir�ConfigReaderUnshared)�self�
use_config�share_config�kwargss    r�__init__zConfigReader.__init__Dsi���$�/��$�)����4�9���!�4�?�"�4��!�4�����y��#�-�-�f�-�-�4�9�9�9��rc�Z�|jr|j�|��dS||_dS�N)r"�
setBaseDirr$�r&�basedirs  rr-zConfigReader.setBaseDirRs6��	�Y�%��9���� � � � � �$�4���rc�P�|jr|j���S|jSr,)r"�
getBaseDirr$�r&s rr1zConfigReader.getBaseDirXs)��	�Y�"�
�)�
�
�
 �
 � �
�
!�!rc��|jSr,)r!r2s rr(zConfigReader.share_config^s
��	
��rTc�$�|js|�|��|r|jj�|jjSt�d||j�����|j�|��}||j_|S)z� Overloads a default (not shared) read of config reader.

	  To prevent mutiple reads of config files with it includes, reads into 
	  the config reader, if it was not yet cached/shared by 'name'.
	  Nz Loading configs for %s under %s )r"�_create_unshared�read_cfg_files�logSys�infor1�read)r&�name�once�rets    rr9zConfigReader.readbs���
����������	�#�d�i�&�2�
�)�
"�"�	�+�+�0�$��	�8L�8L�8N�8N�O�O�O��	���t���#�!�$�)��	�*r�c�F�|js�|j�||j�|��|_|jsTtdd|ji|j��|_|j�|j�|j��|j|j|<dSdStdi|j��|_dS)z� Allocates and share a config file by it name.

	  Automatically allocates unshared or reuses shared handle by given 'name' and 
	  init arguments inside a given shared storage.
	  Nr(r )r"r!�getr%r#r$r-)r&r:s  rr5zConfigReader._create_unsharedws���
��>�t��2���"�"�4�(�(�4�9�
�)�&�$�\�\�$�/�\�T�E[�\�\�D�I���*�	�Y���$�1�2�2�2� �I�D�O�D����	&�&�$�=�=�d�&<�=�=�4�9�9�9rc�n�	d�|j���D��S#t$rgcYSwxYw)Nc3�DK�|]}|�d���|V��dS)zKNOWN/N)�
startswith)�.0�ns  r�	<genexpr>z(ConfigReader.sections.<locals>.<genexpr>�s3����
I�
I��!�,�,�x�2H�2H�
I�1�
I�
I�
I�
I�
I�
Ir)r"�sections�AttributeErrorr2s rrFzConfigReader.sections�sM��
�
I�
I�d�i�(�(�*�*�
I�
I�
I�I��	�
�
�
�
�9�9�9�
���s�"%�4�4c�Z�	|j�|��S#t$rYdSwxYw)NF)r"�has_sectionrG)r&�secs  rrIzConfigReader.has_section�s?���
�)�
�
��
$�
$�$��	����
�%�%����s��
*�*c��|r|j�||��n!||jj�|i��vSr,)r"�
has_option�	_sectionsr?)r&rJ�opt�withDefaults    rrLzConfigReader.has_option�sC��+6�
0���	�	�c�3�	'�	'�	'��t�y�"�&�&�s�B�/�/�/�0rc�^�|j����|��dSr,)r"�get_defaults�update)r&�ds  r�merge_defaultszConfigReader.merge_defaults�s*���)�����!�!�!�$�$�$�$�$rc�j�	|jj|g|�Ri|��S#t$rt|���wxYwr,)r"�
merge_sectionrGr�r&�section�argsr)s    rrVzConfigReader.merge_section�sU��!�
!�$�)�
!�'�
;�D�
;�
;�
;�F�
;�
;�;��	�!�!�!�	��	 �	 � �!������2Fc�t�	|j�||��S#t$rt|���wxYw)z�Return a list of option names for the given section name.

		Parameter `withDefault` controls the include of names from section `[DEFAULT]`
		)r"rrGr)r&rXrOs   rrzConfigReader.options�sH��
!�
�)�
�
�G�[�
1�
1�1��	�!�!�!�	��	 �	 � �!���s��7c�z�	|j�||||���S#t$rt|���wxYw)N)�raw�vars)r"r?rGr)r&rJrNr]r^s     rr?zConfigReader.get�sL���
�)�-�-��S�c��-�
5�
5�5��	����	��	�	�����s� �:c�j�	|jj|g|�Ri|��S#t$rt|���wxYwr,)r"�
getOptionsrGrrWs    rr`zConfigReader.getOptions�sU��!�
�$�)�
�w�
8��
8�
8�
8��
8�
8�8��	�!�!�!�	��	 �	 � �!���rZ)NN)T)r=�F)�__name__�
__module__�__qualname__�__doc__r*r-r1�propertyr(r9r5rFrIrLrTrVrr?r`r rrrr>s!��������
.�.�.�.�%�%�%�"�"�"�����(��
�
�
�
�*>�>�>�>� 
�
�
����0�0�0�0�%�%�%�!�!�!�!�!�!�!�#������!�!�!�!�!rrc�8�eZdZdZdZdd�Zd�Zd�Zd�Zdd
�Z	dS)
r%z�Unshared config reader (previously ConfigReader).

	Do not use this class (internal not shared/cached represenation).
	Use ConfigReader instead.
	z
/etc/fail2banNc�h�tj|g|�Ri|��d|_|�|��dSr,)rr*r6r-)r&r/rYr)s    rr*zConfigReaderUnshared.__init__�sC���'��>�t�>�>�>�v�>�>�>��$���/�/�'�����rc�V�|�tj}|�d��|_dS)N�/)r%�DEFAULT_BASEDIR�rstrip�_basedirr.s  rr-zConfigReaderUnshared.setBaseDir�s&���_�
!�
1�7��.�.��%�%�$�-�-�-rc��|jSr,)rmr2s rr1zConfigReaderUnshared.getBaseDir�s
��	
��rc	���tj�|j��st	d|jz���|�d��rtj�|��}tj�|j|��}t�	d||j��|dzg}|dz}|ttjd|z����z
}|�|dz��|ttjd|z����z
}tttjj|����}t|��r�t�	d	d
�|����t!j||����fd�|D��}|r.t�dd
�|�����rd
St�d||�����dSt�d|zd|���zdd
�|��zgt)t|����z��dS)Nz/Base configuration directory %s does not exist �./z Reading configs for %s under %s z.confz.dz	%s/*.confz.localz
%s/*.localzReading config files: %sz, c���g|]}|�v�|��	Sr r )rC�cf�config_files_reads  �r�
<listcomp>z-ConfigReaderUnshared.read.<locals>.<listcomp>�s$���H�H�H�R�2�5F�+F�+F�b�+F�+F�+FrzCould not read config files: %sTz0Found no accessible config files for %r under %sFz(Found no accessible config files for %r zunder %szamong existing ones: )�os�path�existsrm�
ValueErrorrB�abspath�joinr7�debug�sorted�glob�appendr�filterrrr9�errorr1r)r&�filename�basename�config_files�
config_dir�missedrss      @rr9zConfigReaderUnshared.read�sV���	�����
�	&�	&��	�E��=��
�
��
������(��g�o�o�h�'�'�8�
�W�\�\�$�-��
2�
2�(��,�,�1�H�d�m�L�L�L��g�%�'�,��$��*��&���;��#;�<�<�=�=�=�,����h��)�*�*�*��&���<�*�#<�=�=�>�>�>�,��f�R�W�^�\�:�:�;�;�,������	�<�<�*�D�I�I�l�,C�,C�D�D�D�3�8��|�L�L��H�H�H�H�<�H�H�H�6��G�
�L�L�2�D�I�I�f�4E�4E�F�F�F����4�	�<�<�B�����"�"�$�$�$�
�%�	�<�<�:�X�E�����)�)�)��$�)�)�L�"9�"9�9�;�;?��L�@Q�@Q�;R�;R�T�U�V�V�V��%rFTc
�l�t��}|�i}t|��D�]\}}}	||vr�	|�|||���}
|
||<|r-t�|��}|r|
��K||
��||<�Z#t$r,}|r�t
�|��|	||<Yd}~��d}~wt$r-|	�(t
�d|�d|�d|	����|	||<Y��t$rBt
�d|zdz|zdzt|	��zdz��|	||<Y��wxYw|S)N�r^�'z' not defined in 'z'. Using default one: zWrong value for 'z' in 'z'. Using default one: ')�dictrr?�	CONVERTERrr7r�r�warningrx�repr)
r&rJr�pOptions�shouldExist�convert�valuesrrr�v�conv�es
             rr`zConfigReaderUnshared.getOptions�s����6�6�&�
���8�$7��$@�$@��� �g�w��
����������g�H��-�-�A��F�7�O�� ��M�M�'�"�"�T�� �	
��H���Q���f�W�o���
������
�
�L�L��O�O�O��F�7�O�O�O�O�O�O�����
� � � ����^�^�^��7�7�C�C�C���#�$�$�$��V�G�_�������
�N�N�&��0�8�;�c�A� �!�#'��>�>�2�47�8�9�9�9��F�7�O�O�O�����
�-s*�=A<�-A<�<
D1�"B-�-7D1�&AD1�0D1r,)NFT)
rbrcrdrerkr*r-r1r9r`r rrr%r%�s{��������#������
&�&�&�
���&�&�&�d"�"�"�"�"�"rr%c�b�eZdZdZgZd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zdd
�Zd�Z
d�Zdd�Zd�ZdS)�DefinitionInitConfigReaderz�Config reader for files with options grouped in [Definition] and
	[Init] sections.

	Is a base class for readers of filters and actions, where definitions
	in jails might provide custom values for options defined in [Init]
	section.
	c�@�tj|fi|��|�d��rtj�|��}|�|��|�|��||_t��|_
t��|_dS)Nrp)rr*rBrurvry�setFile�setJailName�	_initOptsr��_pOpts�	_defCache)r&�file_�jailName�initOptsr)s     rr*z#DefinitionInitConfigReader.__init__/s������'�'��'�'�'�
���d���"�
�7�?�?�5�!�!�5��,�,�u�������8�����$�.����$�+��6�6�$�.�.�.rc�"�||_i|_dSr,)�_filer�)r&�fileNames  rr�z"DefinitionInitConfigReader.setFile9s���$�*��$�.�.�.rc��|jSr,)r�r2s r�getFilez"DefinitionInitConfigReader.getFile=s
��	
��rc��||_dSr,��	_jailName)r&r�s  rr�z&DefinitionInitConfigReader.setJailName@s
���$�.�.�.rc��|jSr,r�r2s r�getJailNamez&DefinitionInitConfigReader.getJailNameCs
��	
��rc�B�t�||j��Sr,)rr9r�r2s rr9zDefinitionInitConfigReader.readFs��	�	�	�4���	,�	,�,rc��|js|�|j��tj|j|j��Sr,)r"r5r�rr9r2s r�readexplicitz'DefinitionInitConfigReader.readexplicitJs9��	
��%������$�$�$�	%�	*�4�9�d�j�	A�	A�ArFc���|st��}�jrt|�j��}t��d�j|d����_|�_��d��rw�fd�}��	dd���D]Z}|dkr�	d}|�
d��s|�||��}|�jd|z<|�jvr|�||��}|�j|<�[|r[��d��rH��	d��D]4}|dks	|�jvr���d|���j|<�1dSdSdS)	N�
DefinitionF)r��Initc�0����d|��S)Nr�)r?)rNr&s �r�<lambda>z7DefinitionInitConfigReader.getOptions.<locals>.<lambda>\s��������-�-�r)rOrbzknown/)r�r�r
rr`�_configOpts�_optsr�rIrrBr?)r&�pOpts�all�getoptrNr�s`     rr`z%DefinitionInitConfigReader.getOptionsOs����
���6�6�5�	�^�/���t�~�.�.�5��&�&���t�'���'�?�?�$�*��$�+�	���f����-�-�-�-�6��l�l�6�u�l�5�5���s�
�j���(��A��>�>�(�#�#�&�	�	�v�v�c�{�{�1�$%�T�^�H�S�L�!�
�$�.� � �	�	�v�v�c�{�{�1��T�^�C����2�T�
�
�l�
+�
+�2��l�l�<�(�(�2�2�s�
�j���C�4�:�-�-�x��h�h�|�S�1�1�D�J�s�O�O�2�2�2�2�2�2rc	� �t|��D]}\}}}t�|��}|r[|�|��}|��:	||��||<�J#t$r&t�d||||��|||<Y�ywxYw�~dS)z:Convert interpolated combined options to expected type.
		Nz/Wrong %s value %r for %r. Using default one: %r)rr�r?rxr7r�)r&�opts�
configOptsrrrr�r�s        r�convertOptionsz)DefinitionInitConfigReader.convertOptionsms���%8�
�$C�$C�
�
� �g�w��
�-�-��
 �
 �4�
��������A��y�(���T�!�W�W�T�'�]�]�������^�^�E�
�q�'�8�%�%�%��T�'�]�]�]������
�
s�A�-B
�	B
c���	|j|S#t$rR	|j�d||j���}n#t
ttf$rd}YnwxYw||j|<|cYSwxYw)z�Get combined definition option (as string) using pre-set and init
		options as preselection (values with higher precedence as specified in section).

		Can be used only after calling of getOptions.
		r�r�N)r��KeyErrorr"�get_exr�rrrx)r&rr�s   r�
getCombOptionz(DefinitionInitConfigReader.getCombOption|s����
�.��
!�!��	����
��	����w�T�[��A�A�A�A���=�*�
5�
�
�
��A�A�A�
�����4�>�'��
�8�8�8�
���s/��
A+�"=�A+�A�A+�A�A+�*A+r c���|j}|jrt||j��}t|��siSt	|�����}|D]O}tj�|��}|r,|�	��\}}|�
|���Pt|||j���}|std���|�||j��|S)N)�ignore�addreplz/recursive tag definitions unable to be resolved)r�r�r
r�set�copyr�CONDITIONAL_RE�match�groups�addrr�rxr�r�)r&r��combinedoptsrD�condr�s      r�getCombinedz&DefinitionInitConfigReader.getCombined�s�����,�	�^�=��|�T�^�<�<�<�	�\�	�	�
�
�9��v�;�;�����&����a�
&�
5�
;�
;�A�
>�
>�4�
���k�k�m�m�G�A�t�
�J�J�q�M�M�M��	 ��
�$�,�
.�
.�
.�$�	
�G�	�E�	F�	F�F����d�D�,�-�-�-�	
�+rc��t�r,)�NotImplementedErrorr2s rr�z"DefinitionInitConfigReader.convert�s���rNra)r )rbrcrdrer�r*r�r�r�r�r9r�r`r�r�r�r�r rrr�r�$s��������������������������-�-�-�B�B�B�
2�2�2�2�<
�
�
���� ����,����rr�)�
__author__�
__copyright__�__license__r}ru�configparserrr�configparserincrrr	�helpersrrr
rrbr7rr�rrr%r�r rr�<module>r�sZ��.O�
�n�
�������	�	�	�	�6�6�6�6�6�6�6�6�H�H�H�H�H�H�H�H�H�H�P�P�P�P�P�P�P�P�P�P�P�P�
��8�	�	��
��
�
�	�$�$�$�*v!�v!�v!�v!�v!�v!�v!�v!�rj�j�j�j�j�7�j�j�j�Z����������r