https://t.me/RX1948
Server : Apache
System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64
User : dh_edsupp ( 6597262)
PHP Version : 8.2.26
Disable Function : NONE
Directory :  /lib/python3/dist-packages/fail2ban/server/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/fail2ban/server/__pycache__/jail.cpython-310.pyc
o

;s*b1-�@sxdZdZdZddlZddlZddlZddlZddlmZddl	m
Z
mZmZm
Z
dd	lm
Z
e
e�ZGd
d�de�ZdS)z.Cyril Jaquier, Lee Clemens, Yaroslav HalchenkozPCopyright (c) 2004 Cyril Jaquier, 2011-2012 Lee Clemens, 2012 Yaroslav Halchenko�GPL�N�)�Actions�)�	getLogger�_as_bool�extractOptions�MyTime)r	c@seZdZdZgd�Zd7dd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zedd��Z
edd��Zejdd��Zedd��Zedd��Zedd��Zejdd��Zd8d d!�Zed"d#��Zd$d%�Zd&d'�Zd(d)�Zd9d*d+�Zd,d-�Zd:d/d0�Zd1d2�Zd;d3d4�Zd5d6�ZdS)<�JailagFail2Ban jail, which manages a filter and associated actions.

	The class handles the initialisation of a filter, and actions. It's
	role is then to act as an interface between the filter and actions,
	passing bans detected by the filter, for the actions to then act upon.

	Parameters
	----------
	name : str
		Name assigned to the jail.
	backend : str
		Backend to be used for filter. "auto" will attempt to pick
		the most preferred backend method. Default: "auto"
	db : Fail2BanDb
		Fail2Ban persistent database instance. Default: `None`

	Attributes
	----------
	name
	database
	filter
	actions
	idle
	status
	)�	pyinotify�gamin�polling�systemd�autoNcCsh||_t|�dkrt�d|�||_t��|_d|_i|_	t�
d|j�|dur/|�|�||_
dS)N�z]Jail name %r might be too long and some commands might not function correctly. Please shortenzCreating new jail '%s')�	_Jail__db�len�logSys�warning�_Jail__name�queue�Queue�_Jail__queue�
_Jail__filter�	_banExtra�info�name�_setBackend�backend)�selfrr�db�r!�6/usr/lib/python3/dist-packages/fail2ban/server/jail.py�__init__Gs�


z
Jail.__init__cCsd|jj|jfS)Nz%s(%r))�	__class__�__name__r�rr!r!r"�__repr__Xsz
Jail.__repr__cCs4t|�\}}|��}|j}|dkr0||jvr't�d||f�td||f��||�|�d�}|D]X}t|d|���}z)|di|��|dkrW||krWt�	d||f�nt�
d|�t|�|_WdSt
y�}zt�|dkrwtjntjd||f�WYd}~q2d}~wwt�d|j�td|j��)	Nrz.Unknown backend %s. Must be among %s or 'auto'z_init%sz9Could only initiated %r backend whenever %r was requestedzInitiated %r backendz)Backend %r failed to initialize due to %sz,Failed to initialize any backend for Jail %rr!)r�lower�	_BACKENDSr�error�
ValueError�index�getattr�
capitalizerrr�_Jail__actions�ImportError�log�logging�DEBUG�ERRORr�RuntimeError)rr�beArgs�backends�b�
initmethod�er!r!r"r[sH
���

�����zJail._setBackendcK�6ddlm}t�d|j|f�||fi|��|_dS)Nr)�
FilterPollzJail '%s' uses poller %r)�
filterpollr<rrrr)r�kwargsr<r!r!r"�_initPolling�szJail._initPollingcKr;)Nr)�FilterGaminzJail '%s' uses Gamin %r)�filtergaminr@rrrr)rr>r@r!r!r"�
_initGamin��zJail._initGamincKr;)Nr)�FilterPyinotifyzJail '%s' uses pyinotify %r)�filterpyinotifyrDrrrr)rr>rDr!r!r"�_initPyinotify�rCzJail._initPyinotifycKr;)Nr)�
FilterSystemdzJail '%s' uses systemd %r)�
filtersystemdrGrrrr)rr>rGr!r!r"�_initSystemd�rCzJail._initSystemdcC�|jS)zName of jail.
		)rr&r!r!r"r��z	Jail.namecCrJ)z;The database used to store persistent data for the jail.
		�rr&r!r!r"�database�rKz
Jail.databasecCs
||_dS�NrL�r�valuer!r!r"rM�s
cCrJ)z;The filter which the jail is using to monitor log files.
		)rr&r!r!r"�filter�rKzJail.filtercCrJ)z2Actions object used to manage actions for jail.
		)r/r&r!r!r"�actions�rKzJail.actionscCs|jjp|jjS)z-A boolean indicating whether jail is idle.
		�rQ�idlerRr&r!r!r"rT�sz	Jail.idlecCs||j_||j_dSrNrSrOr!r!r"rT�s�basiccCs$d|jj|d�fd|jj|d�fgS)zThe status of the jail.
		�Filter)�flavorr)rQ�statusrR)rrWr!r!r"rX�s�zJail.statuscCs|j��S)z-Retrieve whether queue has tickets to ban.
		)r�emptyr&r!r!r"�hasFailTickets�szJail.hasFailTicketscCs|j�|�dS)zQAdd a fail ticket to the jail.

		Used by filter to add a failure for banning.
		N)r�put�r�ticketr!r!r"�
putFailTicket�szJail.putFailTicketcCs*z	|j�d�}|WStjyYdSw)zTGet a fail ticket from the jail.

		Used by actions to get a failure for banning.
		F)r�getr�Emptyr\r!r!r"�
getFailTicket�s�zJail.getFailTicketcs�|j}|dkr	d}|dur|||<n||vr||=t�d||�|dkr9t|�||<|�|�r9|jdur9t�d�|dvrH|durHt�|�||<|dvsT|�dd�dur�|dkrnd	d
�|durh|dkrh|�	d�ngD�|d<|�dg��t
|�d
d��}t��r�|f�fdd�	}n|�dd�}t|dd�}||fdd�}|�dd�dur�|d�|f�fdd�	}|�dd�dur�|d�|f�fdd�	}||d<dSdS)N�zSet banTime.%s = %s�	incrementzDban time increment is not available as long jail database is not set)�maxtime�rndtime)�formula�factorrdre�multipliers�	evformularhcSsg|]}t|��qSr!)�int)�.0�ir!r!r"�
<listcomp>��z(Jail.setBanTimeExtra.<locals>.<listcomp>� �
evmultipliersrg�1cs*|j|�|jt��kr|jSdS)N���)�Time�Countr)�ban�	banFactor)rhr!r"�<lambda>�s*z&Jail.setBanTimeExtra.<locals>.<lambda>rfz?ban.Time * (1<<(ban.Count if ban.Count<20 else 20)) * banFactorz~inline-conf-expr~�evalcSst|jt|��SrN)�maxrsrx)rurvrfr!r!r"rwsrdcst||���SrN)�min�ruri)rdr!r"rwsrecs||�t���SrN)�randomr{)rer!r"rw	rn)
rrrrr_rMrr	�str2seconds�splitrxr�compile)r�optrP�bervrirfr!)rdrhrer"�setBanTimeExtra�sB

,�zJail.setBanTimeExtracCs|dur|j�|d�S|jSrN)rr_)rr�r!r!r"�getBanTimeExtraszJail.getBanTimeExtracCs$|j�d�r
|j�dd�S|j��S)z)Returns max possible ban-time of jail.
		rcrdrr)rr_rR�
getBanTimer&r!r!r"�
getMaxBanTimes
��zJail.getMaxBanTimeTcCsPz�|jdur�|j�d�rd}|r|��}n|j��}|jj||||jjj	d�D]]}z9|jj
|��dd�r6Wq'd|_|�|�}t
��|��}|dkrR|dkrR||8}|dkr\|dkr\Wq'|�|�Wq'ty�}ztjd|t��tjkd	�WYd}~q'd}~wwWdSWdSty�}ztjd
|t��tjkd	�WYd}~dSd}~ww)z5Restore any previous valid bans from the database.
		Nrc)�jail�
forbantime�correctBanTime�
maxmatchesT)�
log_ignorerrrzRestore ticket failed: %s��exc_infozRestore bans failed: %s)rMrr_r�rRr��getCurrentBansrQ�failManager�
maxMatches�inIgnoreIPList�getIP�restoredr	�time�getTimer^�	Exceptionrr*�getEffectiveLevelr2r3)rr�r�r]�btm�diftmr:r!r!r"�restoreCurrentBanssF
�



�
�������zJail.restoreCurrentBanscCs<t�d|j�|j��|j��|��t�d|j�dS)z�Start the jail, by starting filter and actions threads.

		Once stated, also queries the persistent database to reinstate
		any valid bans.
		zStarting jail %rzJail %r startedN)r�debugrrQ�startrRr�rr&r!r!r"r�=s


z
Jail.startcCs�|r	t�d|j�|j|jfD]2}z|r|��|r|��WqtyA}ztjd||j|t�	�t
jkd�WYd}~qd}~ww|rMt�d|j�dSdS)z9Stop the jail, by stopping filter and actions threads.
		zStopping jail %rzStop %r of jail %r failed: %sr�NzJail %r stopped)
rr�rrQrR�stop�joinr�r*r�r2r3r)rr�r��objr:r!r!r"r�Is$�����z	Jail.stopcCs|j��p	|j��S)z?Check jail "isAlive" by checking filter and actions threads.
		)rQ�isAliverRr&r!r!r"r�\szJail.isAlive)rN)rUrN)T)TT)r%�
__module__�__qualname__�__doc__r)r#r'rr?rBrFrI�propertyrrM�setterrQrRrTrXrZr^rar�r�r�r�r�r�r�r!r!r!r"r
'sH
&








	
-
$
r
)�
__author__�
__copyright__�__license__r2�mathr|rrRr�helpersrrrr	�mytimer%r�objectr
r!r!r!r"�<module>s

https://t.me/RX1948 - 2025