HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //lib/python3.6/site-packages/fail2ban/client/__pycache__/configreader.cpython-36.pyc
3

TB(dM4�@s�dZdZdZddlZddlZddlmZmZddlm	Z	m
Z
mZdd	lm
Z
mZmZmZe
e�Zeed
�Zdd�ZGd
d�d�ZGdd�de
�ZGdd�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)ZGPL�N)�
NoOptionError�NoSectionError�)�sys�SafeConfigParserWithIncludes�logLevel�)�	getLogger�_as_bool�_merge_dicts�substituteRecursiveTags)�bool�intccszt|ttf�rPxf|D]6}t|�dkr0|\}}}n|d\}}}|||fVqWn&x$|D]}||\}}|||fVqVWdS)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], ...}
	rN)�
isinstance�list�tuple�len)�options�optname�opttype�optvalue�r�"/usr/lib/python3.6/configreader.py�_OptionsTemplateGen)s

rc@s�eZdZdZd"dd�Zdd�Zdd�Zed	d
��Zd#dd
�Z	d$dd�Z
dd�Zdd�Zd%dd�Z
dd�Zdd�Zd&dd�Zdifdd�Zd d!�ZdS)'�ConfigReaderzkGeneric config reader class.

	A caching adapter which automatically reuses already shared configuration.
	NcKsPd|_d|_|dk	r||_|dk	r6||_||_d|_n|jdkrLtf|�|_dS)N)�
_cfg_share�_cfg�_cfg_share_kwargs�_cfg_share_basedir�ConfigReaderUnshared)�selfZ
use_config�share_config�kwargsrrr�__init__Ds
zConfigReader.__init__cCs|jr|jj|�n||_dS)N)r�
setBaseDirr)r �basedirrrrr$RszConfigReader.setBaseDircCs|jr|jj�S|jSdS)N)r�
getBaseDirr)r rrrr&Xs
zConfigReader.getBaseDircCs|jS)N)r)r rrrr!^szConfigReader.share_configTcCsT|js|j|�|r(|jjdk	r(|jjStjd||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'.
	  Nz Loading configs for %s under %s )r�_create_unshared�read_cfg_files�logSys�infor&�read)r �name�once�retrrrr+bs
zConfigReader.read�cCsv|jrd|jdk	rd|jj|�|_|jsrtfd|ji|j��|_|jdk	rV|jj|j�|j|j|<ntf|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!)rr�getrrrr$)r r,rrrr'ws
zConfigReader._create_unsharedcCs.ydd�|jj�D�Stk
r(gSXdS)Ncss|]}|jd�s|VqdS)zKNOWN/N)�
startswith)�.0�nrrr�	<genexpr>�sz(ConfigReader.sections.<locals>.<genexpr>)r�sections�AttributeError)r rrrr5�szConfigReader.sectionscCs&y|jj|�Stk
r dSXdS)NF)r�has_sectionr6)r �secrrrr7�szConfigReader.has_sectioncCs&|r|jj||�S||jjj|i�kS)N)r�
has_optionZ	_sectionsr0)r r8�opt�withDefaultrrrr9�szConfigReader.has_optioncCs|jj�j|�dS)N)rZget_defaults�update)r �drrr�merge_defaults�szConfigReader.merge_defaultscOs6y|jj|f|�|�Stk
r0t|��YnXdS)N)r�
merge_sectionr6r)r �section�argsr"rrrr?�szConfigReader.merge_sectionFcCs0y|jj||�Stk
r*t|��YnXdS)z�Return a list of option names for the given section name.

		Parameter `withDefault` controls the include of names from section `[DEFAULT]`
		N)rrr6r)r r@r;rrrr�szConfigReader.optionscCs6y|jj||||d�Stk
r0t|��YnXdS)N)�raw�vars)rr0r6r)r r8r:rBrCrrrr0�szConfigReader.getcOs6y|jj|f|�|�Stk
r0t|��YnXdS)N)r�
getOptionsr6r)r r@rAr"rrrrD�szConfigReader.getOptions)NN)T)r/)T)F)�__name__�
__module__�__qualname__�__doc__r#r$r&�propertyr!r+r'r5r7r9r>r?rr0rDrrrrr>s





rc@s@eZdZdZdZddd�Zdd�Zdd	�Zd
d�Zddd�Z	dS)rz�Unshared config reader (previously ConfigReader).

	Do not use this class (internal not shared/cached represenation).
	Use ConfigReader instead.
	z
/etc/fail2banNcOs&tj|f|�|�d|_|j|�dS)N)rr#r(r$)r r%rAr"rrrr#�szConfigReaderUnshared.__init__cCs|dkrtj}|jd�|_dS)N�/)r�DEFAULT_BASEDIR�rstrip�_basedir)r r%rrrr$�szConfigReaderUnshared.setBaseDircCs|jS)N)rM)r rrrr&�szConfigReaderUnshared.getBaseDircs^tjj|j�std|j��|jd�r2tjj|�}tjj|j|�}tj	d||j�|dg}|d}|t
tjd|��7}|j|d�|t
tjd|��7}t
ttjj|��}t|��r"tj	d	d
j|��tj||���fdd�|D�}|�rtjd
d
j|����rdStjd||j��dStjd|d|j�dd
j|�gtt|���dSdS)Nz/Base configuration directory %s does not exist z./z Reading configs for %s under %s z.confz.dz	%s/*.confz.localz
%s/*.localzReading config files: %sz, csg|]}|�kr|�qSrr)r2Zcf)�config_files_readrr�
<listcomp>�sz-ConfigReaderUnshared.read.<locals>.<listcomp>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�
ValueErrorr1�abspath�joinr)�debug�sorted�glob�appendr�filterrrr+�errorr&r
)r �filename�basenameZconfig_filesZ
config_dirZmissedr)rNrr+�s8





 zConfigReaderUnshared.readFTc
Cs4t�}|dkri}�xt|�D�]\}}}	||kr4qyD|j|||d�}
|
||<|rvtj|�}|rv|
dkrjw||
�||<Wqtk
r�}z|r��tj|�|	||<WYdd}~Xqtk
r�|	dk	r�tjd|||	f�|	||<Yqt	k
�r*tj
d|d|dt|	�d�|	||<YqXqW|S)N)rCz/'%s' not defined in '%s'. Using default one: %rzWrong value for 'z' in 'z'. Using default one: '�')�dictrr0�	CONVERTERrr)r[rrVrS�warning�repr)
r r8rZpOptionsZshouldExist�convert�valuesrrr�v�conv�errrrD�s<

"zConfigReaderUnshared.getOptions)N)NFT)
rErFrGrHrKr#r$r&r+rDrrrrr�s
2rc@szeZdZdZgZdd�Zdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zddd�Zdd�Z
dd�Zffdd�Zdd�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.
	cKsRtj|f|�|jd�r$tjj|�}|j|�|j|�||_t	�|_
t	�|_dS)Nz./)rr#r1rPrQrT�setFile�setJailName�	_initOptsr_�_pOpts�	_defCache)r Zfile_�jailNameZinitOptsr"rrrr#/s


z#DefinitionInitConfigReader.__init__cCs||_i|_dS)N)�_filerk)r ZfileNamerrrri9sz"DefinitionInitConfigReader.setFilecCs|jS)N)ro)r rrr�getFile=sz"DefinitionInitConfigReader.getFilecCs
||_dS)N)�	_jailName)r rnrrrrj@sz&DefinitionInitConfigReader.setJailNamecCs|jS)N)rq)r rrr�getJailNameCsz&DefinitionInitConfigReader.getJailNamecCstj||j�S)N)rr+ro)r rrrr+FszDefinitionInitConfigReader.readcCs"|js|j|j�tj|j|j�S)N)rr'rorr+)r rrr�readexplicitJsz'DefinitionInitConfigReader.readexplicitFcs|s
t�}�jrt|�j�}tj�d�j|dd��_|�_�jd�r‡fdd�}xp�j	ddd�D]^}|dkrnq`d}|j
d	�s�|dkr�||�}|�jd	|<|�jkr`|dkr�||�}|�j|<q`W|oΈjd��rx8�j	d�D]*}|dks�|�jkr�qވjd|��j|<q�WdS)
N�
DefinitionF)rc�Initcs�jd|�S)Nru)r0)r:)r rr�<lambda>\sz7DefinitionInitConfigReader.getOptions.<locals>.<lambda>)r;rEzknown/)r_rkrrrD�_configOpts�_optsrlr7rr1r0)r ZpOpts�allZgetoptr:rer)r rrDOs4


z%DefinitionInitConfigReader.getOptionsc
Cs~xxt|�D]l\}}}tj|�}|r
|j|�}|dkr6q
y||�||<Wq
tk
rttjd||||�|||<Yq
Xq
WdS)z:Convert interpolated combined options to expected type.
		Nz/Wrong %s value %r for %r. Using default one: %r)rr`r0rSr)ra)r �optsZ
configOptsrrrrfrerrr�convertOptionsms

z)DefinitionInitConfigReader.convertOptionscCsfy
|j|Stk
r`y|jjd||jd�}Wntttfk
rPd}YnX||j|<|SXdS)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.
		rt)rCN)rm�KeyErrorrZget_exrlrrrS)r rrerrr�
getCombOption|s


z(DefinitionInitConfigReader.getCombOptioncCs�|j}|jrt||j�}t|�s$iSt|�j�}x2|D]*}tjj|�}|r6|j	�\}}|j
|�q6Wt|||jd�}|s�t
d��|j||j�|S)N)�ignoreZaddreplz/recursive tag definitions unable to be resolved)rxrkrr�set�copyrZCONDITIONAL_RE�match�groups�addrr}rSr{rw)r r~Zcombinedoptsr3Zcondrzrrr�getCombined�s"
z&DefinitionInitConfigReader.getCombinedcCst�dS)N)�NotImplementedError)r rrrrc�sz"DefinitionInitConfigReader.convertN)F)rErFrGrHrwr#rirprjrrr+rsrDr{r}r�rcrrrrrh$s

rh)�
__author__Z
__copyright__Z__license__rXrPZconfigparserrrZconfigparserincrrrZhelpersr	r
rrrEr)rr`rrrrhrrrr�<module>sym