HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ns3133907 6.8.0-86-generic #87-Ubuntu SMP PREEMPT_DYNAMIC Mon Sep 22 18:03:36 UTC 2025 x86_64
User: cssnetorguk (1024)
PHP: 8.2.28
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/fail2ban/client/__pycache__/configreader.cpython-312.pyc
�

�ogfO4���dZdZdZddlZddlZddlmZmZddlm	Z	m
Z
mZdd	lm
Z
mZmZmZe
e�Zeed
�Zd�ZGd�d
�ZGd�de
�ZGd�de�Zy)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�r,|D]&}t|�dkDr|\}}}n|dc\}}}|||f���(y|D]}||\}}|||f���y�w)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�Q��!(��G�W�h�#*�D� ��W�g��	�'�8�	#�#�$��$�g��w�'��7�H�	�'�8�	#�#�$�s�AAc�~�eZdZdZdd�Zd�Zd�Zed��Zdd�Z	dd�Z
d	�Zd
�Zdd�Z
d�Zd
�Zdd�Zdifd�Zd�Zy)�ConfigReaderzkGeneric config reader class.

	A caching adapter which automatically reuses already shared configuration.
	Nc��d|_d|_|�||_|�||_||_d|_y|j�t	di|��|_yy)N�)�
_cfg_share�_cfg�_cfg_share_kwargs�_cfg_share_basedir�ConfigReaderUnshared)�self�
use_config�share_config�kwargss    r�__init__zConfigReader.__init__DsX���$�/��$�)����4�9���!�4�?�"�4��!�4���y�y��#�-�f�-�4�9��c�b�|jr|jj|�y||_y�N)r!�
setBaseDirr#�r%�basedirs  rr-zConfigReader.setBaseDirRs#��	�Y�Y��9�9���� �$�4�r*c�f�|jr|jj�S|jSr,)r!�
getBaseDirr#�r%s rr1zConfigReader.getBaseDirXs(��	�Y�Y�
�)�)�
�
�
 � �
�
!�
!�!r*c��|jSr,)r r2s rr'zConfigReader.share_config^s��	
���r*c�R�|js|j|�|r,|jj�|jjStj	d||jj��|jj
|�}||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'.
	  z Loading configs for %s under %s )r!�_create_unshared�read_cfg_files�logSys�infor1�read)r%�name�once�rets    rr9zConfigReader.readbs���
��������	�d�i�i�&�&�2�
�)�)�
"�
"�"�	�+�+�0�$��	�	�8L�8L�8N�O��	�	���t��#�!�$�)�)��	�*r*c��|js�|j��|jj|�|_|jsqtdd|ji|j��|_|j
�%|jj
|j
�|j|j|<yytdi|j��|_y)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[�E[�\�D�I����*�	�Y�Y���$�1�1�2� �I�I�D�O�O�D��	�$�=�d�&<�&<�=�4�9r*c�h�	d�|jj�D�S#t$rgcYSwxYw)Nc3�DK�|]}|jd�r�|���y�w)zKNOWN/N)�
startswith)�.0�ns  r�	<genexpr>z(ConfigReader.sections.<locals>.<genexpr>�s����
I��!�,�,�x�2H�1�
I�s� � )r!�sections�AttributeErrorr2s rrEzConfigReader.sections�s3��
�
I�d�i�i�(�(�*�
I�I��	�
�
�9�
�s� #�1�1c�X�	|jj|�S#t$rYywxYw)NF)r!�has_sectionrF)r%�secs  rrHzConfigReader.has_section�s.���
�)�)�
�
��
$�$��	��
��s��	)�)c��|r|jj||�S||jjj|i�vSr,)r!�
has_option�	_sectionsr>)r%rI�opt�withDefaults    rrKzConfigReader.has_option�sA��+6����	�	�c�3�	'�0��t�y�y�"�"�&�&�s�B�/�/�0r*c�V�|jj�j|�yr,)r!�get_defaults�update)r%�ds  r�merge_defaultszConfigReader.merge_defaults�s���)�)����!�!�!�$r*c�t�	|jj|g|��i|��S#t$rt|��wxYwr,)r!�
merge_sectionrFr�r%�section�argsr(s    rrUzConfigReader.merge_section�sB��!�
!�$�)�)�
!�
!�'�
;�D�
;�F�
;�;��	�!�	��	 � �!���"�7Fc�l�	|jj||�S#t$rt|��wxYw)z�Return a list of option names for the given section name.

		Parameter `withDefault` controls the include of names from section `[DEFAULT]`
		)r!rrFr)r%rWrNs   rrzConfigReader.options�s8��
!�
�)�)�
�
�G�[�
1�1��	�!�	��	 � �!�s��3c�r�	|jj||||��S#t$rt|��wxYw)N)�raw�vars)r!r>rFr)r%rIrMr\r]s     rr>zConfigReader.get�s<���
�)�)�-�-��S�c��-�
5�5��	��	��	���s�!�6c�t�	|jj|g|��i|��S#t$rt|��wxYwr,)r!�
getOptionsrFrrVs    rr_zConfigReader.getOptions�sB��!�
�$�)�)�
�
�w�
8��
8��
8�8��	�!�	��	 � �!�rY)NN)T)��F)�__name__�
__module__�__qualname__�__doc__r)r-r1�propertyr'r9r5rErHrKrSrUrr>r_rr*rrr>sc���
.�%�"�����
�*>� 
��0�%�!�!�#���!r*rc�6�eZdZdZdZd	d�Zd�Zd�Zd�Zd
d�Z	y)r$z�Unshared config reader (previously ConfigReader).

	Do not use this class (internal not shared/cached represenation).
	Use ConfigReader instead.
	z
/etc/fail2banNc�f�tj|g|��i|��d|_|j|�yr,)rr)r6r-)r%r/rXr(s    rr)zConfigReaderUnshared.__init__�s.���'�'��>�t�>�v�>��$���/�/�'�r*c�T�|�tj}|jd�|_y)N�/)r$�DEFAULT_BASEDIR�rstrip�_basedirr.s  rr-zConfigReaderUnshared.setBaseDir�s"���_�
!�
1�
1�7��.�.��%�$�-r*c��|jSr,)rmr2s rr1zConfigReaderUnshared.getBaseDir�s��	
���r*c	��tjj|j�st	d|jz��|jd�rtjj
|�}tjj|j|�}tjd||j�|dzg}|dz}|ttjd|z��z
}|j|dz�|ttjd|z��z
}tttjj|��}t|�r�tjd	d
j|��t!j"||�}|D�cgc]	}||vs�|��}}|r%tj%dd
j|��|rytj%d
||j'��ytj%d|zd|j'�zdd
j|�zgt)t|��z�ycc}w)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, zCould 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�
ValueErrorrA�abspath�joinr7�debug�sorted�glob�appendr�filterrrr9�errorr1r)r%�filename�basename�config_files�
config_dir�config_files_read�cf�misseds        rr9zConfigReaderUnshared.read�s���	������
�
�	&�	�E��=�=��
��
������g�g�o�o�h�'�8�
�W�W�\�\�$�-�-��
2�(��,�,�1�H�d�m�m�L��g�%�'�,��$��*��&����;��#;�<�=�=�,����h��)�*��&����<�*�#<�=�>�>�,��f�R�W�W�^�^�\�:�;�,����	�<�<�*�D�I�I�l�,C�D�3�8�8��|�L��'�H�R�2�5F�+F�b�H�6�H��
�L�L�2�D�I�I�f�4E�F���	�<�<�B�����"�$�
�	�<�<�:�X�E�����)�)��$�)�)�L�"9�9�;�;?��L�@Q�;R�T�U�V���
Is�	I�%Ic
��t�}|�i}t|�D]L\}}}	||vr�	|j|||��}
|
||<|r%tj|�}|r|
��B||
�||<�N|S#t$r'}|r�t
j
|�|	||<Yd}~�|d}~wt$r(|	�#t
jd|�d|�d|	���|	||<Y��t$r8t
jd|zdz|zdzt|	�zdz�|	||<Y��wxYw)N�r]�'z' not defined in 'z'. Using default one: zWrong value for 'z' in 'z'. Using default one: ')�dictrr>�	CONVERTERrr7r|r�warningrt�repr)
r%rIr�pOptions�shouldExist�convert�valuesrrr�v�conv�es
             rr_zConfigReaderUnshared.getOptions�s5���6�&�
���8�$7��$@�� �g�w��
���������g�H��-�A��F�7�O���M�M�'�"�T��	
��H��Q��f�W�o���:
�-��%���
�
�L�L��O��F�7�O��
� ����^�^��C��#�$��V�G�_����
�N�N�&��0�8�;�c�A� �!�#'��>�2�47�8�9��F�7�O��s)�4A+�A+�+	D	�4B�1D	�	=D	�D	r,)NFT)
rbrcrdrerkr)r-r1r9r_rr*rr$r$�s(���#���
&�
�&�d"r*r$c�`�eZdZdZgZd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zdd	�Zd
�Z
d�Zdd�Zd
�Zy)�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|��|jd�rtjj|�}|j
|�|j|�||_t�|_
t�|_y)Nrp)rr)rArqrrru�setFile�setJailName�	_initOptsr��_pOpts�	_defCache)r%�file_�jailName�initOptsr(s     rr)z#DefinitionInitConfigReader.__init__/sh������'��'�
���d��
�7�7�?�?�5�!�5��,�,�u�����8���$�.���$�+��6�$�.r*c� �||_i|_yr,)�_filer�)r%�fileNames  rr�z"DefinitionInitConfigReader.setFile9s���$�*��$�.r*c��|jSr,)r�r2s r�getFilez"DefinitionInitConfigReader.getFile=s��	
���r*c��||_yr,��	_jailName)r%r�s  rr�z&DefinitionInitConfigReader.setJailName@s	���$�.r*c��|jSr,r�r2s r�getJailNamez&DefinitionInitConfigReader.getJailNameCs��	
���r*c�B�tj||j�Sr,)rr9r�r2s rr9zDefinitionInitConfigReader.readFs��	�	�	�4����	,�,r*c��|js|j|j�tj|j|j�Sr,)r!r5r�rr9r2s r�readexplicitz'DefinitionInitConfigReader.readexplicitJs6��	
���������$�	%�	*�	*�4�9�9�d�j�j�	A�Ar*c���|s
t�}�jrt|�j�}tj	�d�j
|d���_|�_�jd�rz�fd�}�jdd��D]_}|dk(r�	d}|jd�s|�||�}|�jd|z<|�jvs�G|�||�}|�j|<�a|r\�jd�rJ�jd�D]5}|dk(s|�jvr��jd|��j|<�7yyy)	N�
DefinitionF)r��Initc�(���jd|�S)Nr�)r>)rMr%s �r�<lambda>z7DefinitionInitConfigReader.getOptions.<locals>.<lambda>\s��������-�r*)rNrbzknown/)r�r�r
rr_�_configOpts�_optsr�rHrrAr>)r%�pOpts�all�getoptrMr�s`     rr_z%DefinitionInitConfigReader.getOptionsOsE���
��6�5�	�^�^���t�~�~�.�5��&�&���t�'�'���'�?�$�*��$�+�	���f��-�6��l�l�6�u�l�5��s�
�j��(��A��>�>�(�#�	�	�v�c�{�1�$%�T�^�^�H�S�L�!�
�$�.�.� �	�	�v�c�{�1��T�^�^�C���	�T�
�
�l�
+��l�l�<�(�2�s�
�j��C�4�:�:�-�x��h�h�|�S�1�D�J�J�s�O�2�,�Sr*c	��t|�D]>\}}}tj|�}|s�|j|�}|��3	||�||<�@y#t$r!tjd||||�|||<Y�kwxYw)z:Convert interpolated combined options to expected type.
		Nz/Wrong %s value %r for %r. Using default one: %r)rr�r>rtr7r�)r%�opts�
configOptsrrrr�r�s        r�convertOptionsz)DefinitionInitConfigReader.convertOptionsms���%8�
�$C�
� �g�w��
�-�-��
 �4�
������A��y�(���!�W�T�'�]�
�����^�^�E�
�q�'�8�%��T�'�]��s�A�'A8�7A8c���	|j|S#t$rZ	|jjd||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�rrrt)r%rr�s   r�
getCombOptionz(DefinitionInitConfigReader.getCombOption|sw���
�.�.��
!�!��	��
��	�	����w�T�[�[��A�A���=�*�
5�
��A�
���4�>�>�'��
�8�
�s2��	A4�(A�A4�A�A4�A�A4�3A4c���|j}|jrt||j�}t|�siSt	|�j�}|D]H}tjj|�}|s�%|j�\}}|j|��Jt|||j��}|std��|j||j�|S)N)�ignore�addreplz/recursive tag definitions unable to be resolved)r�r�r
r�set�copyr�CONDITIONAL_RE�match�groups�addrr�rtr�r�)r%r��combinedoptsrC�condr�s      r�getCombinedz&DefinitionInitConfigReader.getCombined�s������,�	�^�^��|�T�^�^�<�<�	�\�	�
�9��v�;����&���a�
&�
5�
5�
;�
;�A�
>�4�
��k�k�m�G�A�t�
�J�J�q�M�	�
!��
�$�,�,�
.�$�	
�	�E�	F�F����d�D�,�,�-�	
�+r*c��t�r,)�NotImplementedErrorr2s rr�z"DefinitionInitConfigReader.convert�s���r*Nra)r)rbrcrdrer�r)r�r�r�r�r9r�r_r�r�r�r�rr*rr�r�$sK����������-�B�
2�<
�� �,r*r�)�
__author__�
__copyright__�__license__ryrq�configparserrr�configparserincrrr	�helpersrrr
rrbr7rr�rrr$r�rr*r�<module>r�sw��.O�
�n�
����	�6�H�H�P�P�
�8�	��
��
�	�$�*v!�v!�rj�7�j�Z��r*