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/server/__pycache__/ticket.cpython-36.pyc
3

UB(d!�@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:eZdZdEZd	Zd
ZdZdddidfd
d�Zdd�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd �Zd!d"�ZdFd#d$�ZdGd&d'�ZdHd(d)�Zd*d+�ZdId,d-�ZdJd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zed8d9��Zejd:d9��Zed;d<��Zejd=d<��Zd>d?�Z dKd@dA�Z!edBdC��Z"e"jdDdC��Z"dS)L�Ticket�_id�_flags�	_banCount�_banTime�_time�_data�_retry�
_lastResetl���r�NcCs�|j|�d|_d|_d|_|dk	r(|ntj�|_|p8gdd�|_|dk	rrx&|j�D]\}}|dk	rT||j|<qTW|r�|j	|�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.6/ticket.py�__init__+s
zTicket.__init__c
Cs<d|jjjd�d|j|j|j|j|jd|jjdg�fS)Nz@%s: ip=%s time=%s bantime=%s bancount=%s #attempts=%d matches=%r�.rrr���)	�	__class__�__name__�splitrrr
r	r�get)rrrr�__str__BszTicket.__str__cCst|�S)N)�str)rrrr�__repr__HszTicket.__repr__cCsJy0|j|jko0t|jd�t|jd�ko0|j|jkStk
rDdSXdS)NrF)r�roundrr�AttributeError)r�otherrrr�__eq__Ksz
Ticket.__eq__cCs4x.|jD]$}t||d�}|dk	rt|||�qWdS)N)�	__slots__�getattr�setattr)rr�nrrrrrSsz
Ticket.updatecCst|t�rt|�}||_dS)N)�
isinstancer'rr)r�valuerrrrYs
zTicket.setIDcCs|jS)N)r)rrrr�getID_szTicket.getIDcCs|jjd|j�S)Nr)rr%r)rrrr�getIPbszTicket.getIPcCs
||_dS)N)r)rr2rrr�setTimeeszTicket.setTimecCs|jS)N)r)rrrr�getTimehszTicket.getTimecCs
||_dS)N)r
)rr2rrr�
setBanTimekszTicket.setBanTimecCs|jdk	r|jS|S)N)r
)r�	defaultBTrrr�
getBanTimenszTicket.getBanTimeFcCs|s||jkr||_dS)N)r	)rr2�alwaysrrr�setBanCountqszTicket.setBanCountcCs|j|7_dS)N)r	)rr2rrr�incrBanCountuszTicket.incrBanCountcCs|jS)N)r	)rrrr�getBanCountxszTicket.getBanCountcCs,|jdk	r|jn|}|dkr"tjS|j|S)Nrr!)r
r�MAX_TIMEr)rr8�bantimerrr�getEndOfBanTime{szTicket.getEndOfBanTimecCs.|jdk	r|jn|}|dkr dS||j|kS)NrFr!)r
r)rrr8r?rrr�
isTimedOut�szTicket.isTimedOutcCs||jd<dS)Nr)r)rr2rrr�
setAttempt�szTicket.setAttemptcCs
|jdS)Nr)r)rrrr�
getAttempt�szTicket.getAttemptcCs6|r||jd<n"y|jd=Wntk
r0YnXdS)Nr)r�KeyError)rrrrr�
setMatches�szTicket.setMatchescCsdd�|jjdf�D�S)NcSs(g|] }t|ttf�s|ndj|��qS)�)r1�list�tuple�join)�.0�linerrr�
<listcomp>�sz%Ticket.getMatches.<locals>.<listcomp>r)rr%)rrrr�
getMatches�szTicket.getMatchescCs|jtj@S)N)rr�RESTORED)rrrr�restored�szTicket.restoredcCs,|r|jtjO_n|jtjM_dS)N)rrrN)rr2rrrrO�scCs|jtj@S)N)rr�BANNED)rrrr�banned�sz
Ticket.bannedcCs,|r|jtjO_n|jtjM_dS)N)rrrP)rr2rrrrQ�scOs�t|�dkr*tdd�|dj�D��|_nLt|�dkrF|jj|f�n0t|�dkrv|jjdd�tt|�gd�D��t|�r�|jj|�tdd�|jj�D��|_dS)	NrcSs g|]\}}|dk	r||f�qS)Nr)rJrrrrrrL�sz"Ticket.setData.<locals>.<listcomp>rrcss|]\}}||fVqdS)Nr)rJrrrrr�	<genexpr>�sz!Ticket.setData.<locals>.<genexpr>cSs g|]\}}|dk	r||f�qS)Nr)rJrrrrrrL�s)�len�dictrrr�zip�iter)r�args�argvrrr�setData�s$zTicket.setDatacs��dkr|jS|js|St�ttd�ttttf�s|t��rVt	�fdd�|jj
�D��St�d�r|t	�fdd�|jj
�D��S|jj�|�S)Ncs g|]\}}�|�r||f�qSrr)rJrr)�keyrrrL�sz"Ticket.getData.<locals>.<listcomp>�__iter__cs g|]\}}|�kr||f�qSrr)rJrr)rZrrrL�s)
rr1r'�type�int�float�bool�complex�callablerTr�hasattrr%)rrZ�defaultr)rZr�getData�s
zTicket.getDatacCst|dd�S)N�	_banEpochr)r.)rrrr�banEpoch�szTicket.banEpochcCs
||_dS)N)re)rr2rrrrf�s)rrr	r
rrr
r)N)F)r)N)N)NN)#r#�
__module__�__qualname__r-r>rNrPrr&r(r,rrr3r4r5r6r7r9r;r<r=r@rArBrCrErM�propertyrO�setterrQrYrdrfrrrrr#sB




	
rc@sNeZdZdddidfdd�Zdd�Zdd�Zdd	�Zddd�Zed
d��Z	dS)�
FailTicketNcCsTd|_d|_tj||||||�t|t�sP|dk	r6|n|j�|_|jjdd�|_dS)Nrr)	�
_firstTimer
rrr1rkr6r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)rr2rrr�setRetry�s


zFailTicket.setRetrycCs|jS)zV Returns failures / attempt count or
		artificial retry count increased for bad IPs
		)r
)rrrr�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)rrlr]r)r
r^)rrZmaxTimerrr�
adjustTime�s

"
zFailTicket.adjustTimercCsR|j|7_|jd|7<|rN|jdrD|jd||jd<n
||jd<dS)Nrr)r
r)rrZattempt�countrrr�incs
zFailTicket.inccCs
t|_|S)N)rkr")�orrr�wrapszFailTicket.wrap)Nrr)
r#rgrhrrmrnrorq�staticmethodrsrrrrrk�s

rkc@seZdZedd��ZdS)�	BanTicketcCs
t|_|S)N)rur")rrrrrrs"szBanTicket.wrapN)r#rgrhrtrsrrrrru sruN)�
__author__Z
__copyright__Z__license__ZhelpersrZipdnsrZmytimerr#ZlogSys�objectrrkrurrrr�<module>s??