HEX
Server: LiteSpeed
System: Linux 112.webhostingindonesia.co.id 5.14.0-570.62.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 10:10:59 EST 2025 x86_64
User: iyfwylsv (10313)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //usr/lib/python3.9/site-packages/fail2ban/server/__pycache__/ticket.cpython-39.pyc
a

C
;%��@sldZdZdZddlmZddlmZddlmZee	�Z
Gdd	�d	e�ZGd
d�de�Z
Gdd
�d
e
�ZdS)z
Cyril Jaquierz Copyright (c) 2004 Cyril Jaquier�GPL�)�	getLogger�)�IPAddr)�MyTimec@s:eZdZdZdZdZdZdddidfdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd>dd�Zd?dd �Zd@d!d"�Zd#d$�ZdAd%d&�ZdBd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zed1d2��Zejd3d2��Zed4d5��Zejd6d5��Zd7d8�Z dCd9d:�Z!ed;d<��Z"e"jd=d<��Z"dS)D�Ticket)�_id�_flags�	_banCount�_banTime�_time�_data�_retryZ
_lastResetl���r�NcCs�|�|�d|_d|_d|_|dur(|nt��|_|p8gdd�|_|durn|��D]\}}|durR||j|<qR|r||�	|�dS)z{Ticket constructor

		@param ip the IP address
		@param time the ban time
		@param matches (log) lines caused the ticket
		�N)�matches�failures)
�setIDr	r
rr�timerr
�items�update)�self�iprr�data�ticket�k�v�r�:/usr/lib/python3.9/site-packages/fail2ban/server/ticket.py�__init__+s
zTicket.__init__cCs<d|jj�d�d|j|j|j|j|jd|j�dg�fS)Nz@%s: ip=%s time=%s bantime=%s bancount=%s #attempts=%d matches=%r�.���rr)	�	__class__�__name__�splitrrrr
r
�get�rrrr�__str__Bs��zTicket.__str__cCst|�S�N)�strr&rrr�__repr__HszTicket.__repr__cCsLz2|j|jko0t|jd�t|jd�ko0|j|jkWStyFYdS0dS)NrF)r�roundrr
�AttributeError)r�otherrrr�__eq__Ks�
�z
Ticket.__eq__cCs0|jD]$}t||d�}|durt|||�qdSr()�	__slots__�getattr�setattr)rr�nrrrrrSs
z
Ticket.updatecCst|t�rt|�}||_dSr()�
isinstancer)rr�r�valuerrrrYs
zTicket.setIDcCs|jSr()rr&rrr�getID_szTicket.getIDcCs|j�d|j�S)Nr)r
r%rr&rrr�getIPbszTicket.getIPcCs
||_dSr(�rr4rrr�setTimeeszTicket.setTimecCs|jSr(r8r&rrr�getTimehszTicket.getTimecCs
||_dSr(�rr4rrr�
setBanTimekszTicket.setBanTimecCs|jdur|jS|Sr(r;)r�	defaultBTrrr�
getBanTimenszTicket.getBanTimeFcCs|s||jkr||_dSr(�r
)rr5�alwaysrrr�setBanCountqszTicket.setBanCountcCs|j|7_dSr(r?r4rrr�incrBanCountuszTicket.incrBanCountcCs|jSr(r?r&rrr�getBanCountxszTicket.getBanCountcCs,|jdur|jn|}|dkr"tjS|j|S)Nr!)rr�MAX_TIMEr)rr=�bantimerrr�getEndOfBanTime{szTicket.getEndOfBanTimecCs.|jdur|jn|}|dkr dS||j|kS)Nr!F)rr)rrr=rErrr�
isTimedOut�szTicket.isTimedOutcCs||jd<dS�Nr�r
r4rrr�
setAttempt�szTicket.setAttemptcCs
|jdSrHrIr&rrr�
getAttempt�szTicket.getAttemptcCs4|r||jd<n z|jd=Wnty.Yn0dS)Nr)r
�KeyError)rrrrr�
setMatches�szTicket.setMatchescCsdd�|j�dd�D�S)NcSs(g|] }t|ttf�s|nd�|��qS)�)r3�list�tuple�join)�.0�linerrr�
<listcomp>�s�z%Ticket.getMatches.<locals>.<listcomp>rr)r
r%r&rrr�
getMatches�s�zTicket.getMatchescCs|jtj@Sr(�r	r�RESTOREDr&rrr�restored�szTicket.restoredcCs,|r|jtjO_n|jtjM_dSr(rVr4rrrrX�scCs|jtj@Sr(�r	r�BANNEDr&rrr�banned�sz
Ticket.bannedcCs,|r|jtjO_n|jtjM_dSr(rYr4rrrr[�scOs�t|�dkr*tdd�|d��D��|_nLt|�dkrF|j�|f�n0t|�dkrv|j�dd�tt|�gd�D��t|�r�|j�|�tdd�|j��D��|_dS)	NrcSs g|]\}}|dur||f�qSr(r�rRrrrrrrT��z"Ticket.setData.<locals>.<listcomp>rrcss|]\}}||fVqdSr(rr\rrr�	<genexpr>�r]z!Ticket.setData.<locals>.<genexpr>cSs g|]\}}|dur||f�qSr(rr\rrrrT�r])�len�dictrr
r�zip�iter)r�args�argvrrr�setData�s$zTicket.setDatacs��dur|jS|js|St�ttd�ttttf�s|t��rVt	�fdd�|j�
�D��St�d�r|t	�fdd�|j�
�D��S|j��|�S)Ncs g|]\}}�|�r||f�qSrrr\��keyrrrT�r]z"Ticket.getData.<locals>.<listcomp>�__iter__cs g|]\}}|�vr||f�qSrrr\rfrrrT�r])
r
r3r)�type�int�float�bool�complex�callabler`r�hasattrr%)rrg�defaultrrfr�getData�s
zTicket.getDatacCst|dd�S)N�	_banEpochr)r0r&rrr�banEpoch�szTicket.banEpochcCs
||_dSr()rrr4rrrrs�s)N)F)r)N)N)NN)#r#�
__module__�__qualname__r/rDrWrZrr'r*r.rrr6r7r9r:r<r>rArBrCrFrGrJrKrMrU�propertyrX�setterr[rerqrsrrrrr#sN




	





rc@sNeZdZdddidfdd�Zdd�Zdd�Zdd	�Zddd�Zed
d��Z	dS)�
FailTicketNcCsTd|_d|_t�||||||�t|t�sP|dur6|n|��|_|j�dd�|_dS)Nrr)	�
_firstTimerrrr3rxr:r
r%)rrrrrrrrrr�s
zFailTicket.__init__cCs6||_|jdsd|jd<|s2d|jd<g|jd<dS)z� Set artificial retry count, normally equal failures / attempt,
		used in incremental features (BanTimeIncr) to increase retry count for bad IPs
		rrrrN�rr
r4rrr�setRetry�s


zFailTicket.setRetrycCs|jS)zV Returns failures / attempt count or
		artificial retry count increased for bad IPs
		)rr&rrr�getRetry�szFailTicket.getRetrycCsN||jkrJ|j||krDtt|jt||j�|��|_|||_||_dS)z� Adjust time of ticket and current attempts count considering given maxTime
		as estimation from rate by previous known interval (if it exceeds the findTime)
		N)rryrjr+rrk)rrZmaxTimerrr�
adjustTime�s

"
zFailTicket.adjustTimercCsR|j|7_|jd|7<|rN|jdrD|jd||jd<n
||jd<dS)Nrrrz)rr�attempt�countrrr�incs
zFailTicket.inccCs
t|_|Sr()rxr"��orrr�wrapszFailTicket.wrap)Nrr)
r#rtrurr{r|r}r��staticmethodr�rrrrrx�s

rxc@seZdZedd��ZdS)�	BanTicketcCs
t|_|Sr()r�r"r�rrrr�"szBanTicket.wrapN)r#rtrur�r�rrrrr� sr�N)�
__author__�
__copyright__�__license__ZhelpersrZipdnsrZmytimerr#�logSys�objectrrxr�rrrr�<module>s??