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.opt-2.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 JaquierZGPL�)�	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)
�setIDrr	r
r�timerr�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__�splitrrr
r	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�roundrr�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'�rr3rrr�setTimeeszTicket.setTimecCs|jSr'r7r%rrr�getTimehszTicket.getTimecCs
||_dSr'�r
r3rrr�
setBanTimekszTicket.setBanTimecCs|jdur|jS|Sr'r:)r�	defaultBTrrr�
getBanTimenszTicket.getBanTimeFcCs|s||jkr||_dSr'�r	)rr4�alwaysrrr�setBanCountqszTicket.setBanCountcCs|j|7_dSr'r>r3rrr�incrBanCountuszTicket.incrBanCountcCs|jSr'r>r%rrr�getBanCountxszTicket.getBanCountcCs,|jdur|jn|}|dkr"tjS|j|S)Nr )r
r�MAX_TIMEr)rr<�bantimerrr�getEndOfBanTime{szTicket.getEndOfBanTimecCs.|jdur|jn|}|dkr dS||j|kS)Nr F)r
r)rrr<rDrrr�
isTimedOut�szTicket.isTimedOutcCs||jd<dS�Nr�rr3rrr�
setAttempt�szTicket.setAttemptcCs
|jdSrGrHr%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)�)r2�list�tuple�join)�.0�linerrr�
<listcomp>�s�z%Ticket.getMatches.<locals>.<listcomp>rr)rr$r%rrr�
getMatches�s�zTicket.getMatchescCs|jtj@Sr'�rr�RESTOREDr%rrr�restored�szTicket.restoredcCs,|r|jtjO_n|jtjM_dSr'rUr3rrrrW�scCs|jtj@Sr'�rr�BANNEDr%rrr�banned�sz
Ticket.bannedcCs,|r|jtjO_n|jtjM_dSr'rXr3rrrrZ�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�rQrrrrrrS��z"Ticket.setData.<locals>.<listcomp>rrcss|]\}}||fVqdSr'rr[rrr�	<genexpr>�r\z!Ticket.setData.<locals>.<genexpr>cSs g|]\}}|dur||f�qSr'rr[rrrrS�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[��keyrrrS�r\z"Ticket.getData.<locals>.<listcomp>�__iter__cs g|]\}}|�vr||f�qSrrr[rerrrS�r\)
rr2r(�type�int�float�bool�complex�callabler_r�hasattrr$)rrf�defaultrrer�getData�s
zTicket.getDatacCst|dd�S)N�	_banEpochr)r/r%rrr�banEpoch�szTicket.banEpochcCs
||_dSr')rqr3rrrrr�s)N)F)r)N)N)NN)#r"�
__module__�__qualname__r.rCrVrYrr&r)r-rrr5r6r8r9r;r=r@rArBrErFrIrJrLrT�propertyrW�setterrZrdrprrrrrrr#sN




	





rc@sNeZdZdddidfdd�Zdd�Zdd�Zdd	�Zddd�Zed
d��Z	dS)�
FailTicketNcCsTd|_d|_t�||||||�t|t�sP|dur6|n|��|_|j�dd�|_dS)Nrr)	�
_firstTimer
rrr2rwr9r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�r
rr3rrr�setRetry�s


zFailTicket.setRetrycCs|jS)zV Returns failures / attempt count or
		artificial retry count increased for bad IPs
		)r
r%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)rrxrir*r
rj)rrZmaxTimerrr�
adjustTime�s

"
zFailTicket.adjustTimercCsR|j|7_|jd|7<|rN|jdrD|jd||jd<n
||jd<dS)Nrrry)rrZattempt�countrrr�incs
zFailTicket.inccCs
t|_|Sr')rwr!��orrr�wrapszFailTicket.wrap)Nrr)
r"rsrtrrzr{r|r~�staticmethodr�rrrrrw�s

rwc@seZdZedd��ZdS)�	BanTicketcCs
t|_|Sr')r�r!rrrrr�"szBanTicket.wrapN)r"rsrtr�r�rrrrr� sr�N)�
__author__Z
__copyright__Z__license__ZhelpersrZipdnsrZmytimerr"ZlogSys�objectrrwr�rrrr�<module>s??