HEX
Server: Apache/2.4.65 (Debian)
System: Linux kubikelcreative 5.10.0-35-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64
User: www-data (33)
PHP: 8.4.13
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/fail2ban/server/__pycache__/failregex.cpython-39.pyc
a

���`.3�@s�dZdZdZddlZddlZddlZddlmZe�d�Z	e�d�Z
d	ejfd
ejfdddd
dgZ
dZdZdZdZdZdZdZde
ee
efe
e<de
ee
efe
e<de
ee
ee
efe
e<e
ee
ee
ee
ee
ee
ee
ee
ee
ee
ee
ee
eddd�Zddd�Zdd�ZdZdZeefZe�d d!�e�d"�ZGd#d$�d$�ZGd%d&�d&e�Zd'Z e d(Z!Gd)d*�d*e�Z"dS)+z
Cyril Jaquierz Copyright (c) 2004 Cyril JaquierZGPL�N�)�IPAddrz
</?[\w\-]+/?>z^(/?)F-([A-Z0-9_\-]+)$z(?:::f{4,6}:)?(?P<ip4>%s)z(?P<ip6>%s)z(?P<dns>[\w\-.^_]*\w)�z
(?P<cidr>\d+)�����z\[?(?:%s|%s)\]?z	(?:%s|%s)z\[?(?:%s|%s)(?:/%s)?\]?z(?P<fid>\S+)z(?P<fport>\w+))ZIP4zF-IP4/ZIP6zF-IP6/ZADDRzF-ADDR/ZCIDRzF-CIDR/ZSUBNETz	F-SUBNET/ZDNSzF-DNS/zF-ID/zF-PORT/�fidZfport)�idZportcCs|��}t�||�S�N)�lower�R_MAP�get)�tag�r�;/usr/lib/python3/dist-packages/fail2ban/server/failregex.py�
mapTag2Opt^srZalt_Ztuple_z^(�|z)(.*?)(?:_\d+)?$c@s�eZdZd"dd�Zdd�Zed#dd��Zd	d
�Zedd��Zd$dd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd
S)%�RegexFcKsJd|_tj|fi|��}|��dkr,td��z�t�||r>tjnd�|_||_	g|_
g|_dd�|jjD�D]V}t
�|�}|rj|�d�t|�d��}}|tkr�|j
�||f�qj|j�||f�qj|j
��|j��t|j
�r�|j
nd|_
t|j�r�|jnd|_Wn"tj�y&td|��Yn0|j
�s8|j�r>|jn|j|_dS)	NrzCannot add empty regexrcSs$g|]}t|�ttd�kr|�qS)r)�len�
COMPLNAME_PRE)�.0�krrr�
<listcomp>��z"Regex.__init__.<locals>.<listcomp>rrz)Unable to compile regular expression '%s')�_matchCacher�_resolveHostTag�lstrip�RegexException�re�compile�	MULTILINE�	_regexObj�_regex�
_altValues�_tupleValues�
groupindex�
COMPLNAME_CRE�match�groupr�ALTNAME_PRE�append�sortr�
sre_constants�error�_getGroupsWithAlt�
_getGroups�	getGroups)�self�regexZ	multiline�kwargsr�n�grrr�__init__{s2


�zRegex.__init__cCsd|jj|jfS)Nz%s(%r))�	__class__�__name__r$�r3rrr�__str__�sz
Regex.__str__�yescs*t��ddi����fdd�}t�||�S)N�nlrcs�|��}|dd�}|dkr0t�dvr*tntS|dkrV�d}|d�d<d|fSz
t|WStyrYn0t�|�}|r�|��}|d}|dr���	|�r�d	S|Sd�|<t
|�}d
|fS|S)Nr���ZHOST)ZnoZ	SKIPLINESr>z!\n(?P<skiplines%i>(?:(?:.*\n)*?))r�)z(?P<%s>)r*�R_HOST�RI_HOST�RI_ADDR�RH4TAG�KeyError�
FCUSTNAME_CREr)�groupsrr)�mrZtnr>�ZopenTagsZprops�useDnsrr�substTag�s0




z'Regex._resolveHostTag.<locals>.substTag)�dict�FTAG_CRE�sub)r4rJrKrrIrr�s
�'zRegex._resolveHostTagcCs|jSr)r$r;rrr�getRegex�szRegex.getRegexcCsd�dd�|D��dS)N�
cSs g|]}d�|ddd���qS)rNr��join)r�vrrrr�rz(Regex._tupleLinesBuf.<locals>.<listcomp>rQ)�
tupleLinesrrr�_tupleLinesBuf�szRegex._tupleLinesBufNcCs�|}t|t�st�|�}|j�|�|_|j�r�|dur:|}t|�dkrV||_g|_	�nDz$|jj
�dd|j��d�d}Wnt
y�d}Yn0z"|jj
�d|j��d�d}Wnt
y�t|jj
�}Yn0|jj
�dd|�}|jj
�dd|�}|||�|_|d|�|_	d}|��D]d}	t|j|d��D]J\}
}d�|ddd��|	k�r6|j	�|j�||
��||
7}�q �q6�q |j	�||d��dS)NrrPrrr)�
isinstance�strrrUr#�searchrr�_matchedTupleLines�_unmatchedTupleLines�string�rindex�start�
ValueError�index�end�count�getSkippedLines�	enumeraterRr,�pop�extend)r3rTZorgLinesZbufZmatchLineStartZmatchLineEndZ
lineCount1Z
lineCount2r6ZskippedLinerHZmatchedTupleLinerrrrX�sZ


��
������zRegex.searchcCs|jr
dSdSdS)NTF)rr;rrr�
hasMatchedszRegex.hasMatchedcCs
|j��Sr)r�	groupdictr;rrrr1$szRegex._getGroupscCs�|j��}|jr@|jD](\}}|�|�}|r|�|�s|||<q|jr�|jD]B\}}|�|�}|�|�}t|t�r~||f7}n||f}|||<qL|Sr)rrgr%rr&rV�tuple)r3�failrr6rS�trrrr0's






zRegex._getGroupsWithAltcCsdSrrr;rrrr2<szRegex.getGroupscCs�|js
gSd}d}z4|j�d|�dur<||j�d|�7}|d7}Wqty\Yq�Yqty|dtjvrt�Yq�Yq0q|�d�S)Nrrzskiplines%irZPyPyF)rr*�
IndexErrorrE�sys�version�
splitlines)r3ZskippedLinesr6rrrrbEs
zRegex.getSkippedLinescCs|��sgS|jSdSr�rfrZr;rrr�getUnmatchedTupleLines^szRegex.getUnmatchedTupleLinescCs |��sgSdd�|jD�SdS)NcSsg|]}d�|��qS�rrQ�r�linerrrrhrz+Regex.getUnmatchedLines.<locals>.<listcomp>ror;rrr�getUnmatchedLinesdszRegex.getUnmatchedLinescCs|��sgS|jSdSr�rfrYr;rrr�getMatchedTupleLinesqszRegex.getMatchedTupleLinescCs |��sgSdd�|jD�SdS)NcSsg|]}d�|��qSrqrQrrrrrr{rz)Regex.getMatchedLines.<locals>.<listcomp>rur;rrr�getMatchedLineswszRegex.getMatchedLines)F)r=)N)r:�
__module__�__qualname__r8r<�staticmethodrrOrUrXrfr1r0r2rbrprtrvrwrrrrrrs"	
	6

.
	
rc@seZdZdS)rN)r:rxryrrrrr�sr)r
�ip4�ip6�dns)Zmlfidc@s2eZdZd
dd�Zefdd�Zdd�Zdd	�ZdS)�	FailRegexNcsRtj�|fi|���fdd�tD�sN�dus@�fdd�tD�sNtd�j��dS)Ncsg|]}|�jjvr|�qSr�r#r'�r�grpr;rrr�rz&FailRegex.__init__.<locals>.<listcomp>csg|]}|�jjvr|�qSrrr�)�	prefRegexrrr�rzNo failure-id group in '%s')rr8�FAILURE_ID_PRESENTSrr$)r3r4r�r5r)r�r3rr8�s��zFailRegex.__init__c
Csvd}|D]<}z|j�|�}Wnttfy6YqYn0|durqFq|durn|jj}|jj}td||f��t|�S)Nz!No group found in '%s' using '%s')rr*rkrEr[r rrW)r3rGr
r��s�rrrr�	getFailID�s
zFailRegex.getFailIDcCs
|�d�S)N)r{r|r})r�r;rrr�getHost�szFailRegex.getHostcCs(|��}t|�d�t|�d�p"tj��S)N)r{r|Zcidr)r2rr��intrZCIDR_UNSPEC)r3rirrr�getIP�szFailRegex.getIP)N)r:rxryr8�FAILURE_ID_GROPSr�r�r�rrrrr~�s	
r~)#�
__author__Z
__copyright__Z__license__r r.rlZipdnsrr!rMrFZIP_4_REZIP_6_RErAZRI_IPV4ZRI_IPV6ZRI_DNSrCrBZRI_CIDRZ	RI_SUBNETrDrrr+ZTUPNAME_PRErrRr(r�	Exceptionrr�r�r~rrrr�<module>sp



���