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/tests/__pycache__/observertestcase.cpython-39.pyc
a

���`�Y�@s�dZdZdZddlZddlZddlZddlZddlZddlm	Z	ddl
mZmZddl
mZdd	lmZmZdd
lmZddlmZdd
lmZddlmZmZGdd�de�ZGdd�de�ZGdd�de�ZdS)zSerg G. Brester (sebres)z"Copyright (c) 2014 Serg G. BresterZGPL�N�)�MyTime)�
FailTicket�	BanTicket)�FailManager)�	Observers�ObserverThread)�Utils�)�LogCaptureTestCase)�	DummyJail)�
getFail2BanDb�
Fail2BanDbcsJeZdZ�fdd�Z�fdd�Zdd�Zddd	�Zd
d�Zdd
�Z�Z	S)�BanTimeIncrcs,tt|���t�|_|j|j_t�|_dS��Call before every test case.N)�superr�setUpr�_BanTimeIncr__jail�calcBanTimer�Observer��self��	__class__��A/usr/lib/python3/dist-packages/fail2ban/tests/observertestcase.pyr.s
zBanTimeIncr.setUpcstt|���dS�N)rr�tearDownrrrrr5szBanTimeIncr.tearDowncCs|j�|j||�Sr)rrr)r�banTime�banCountrrrr8szBanTimeIncr.calcBanTimeNcsB|j���dd�|���d�d���dd�|���d�d���dd���dd���d	|�|��fd
d�tdd
�D�gd����dd�gd�}|dur�t|�d��}|d
kr�|d|d�||dgd
|}|��fdd�tdd
�D�|���dd���dd�|��fdd�tdd
�D�gd����dd�|��fdd�tdd
�D�gd����dd���dd�|��fdd�tdd
�D�gd����dd���dd�|�d �fd!d�td"�D�v���dd�|�d �fd#d�td"�D�v���d	d���dd���dd���dd�dS)$N�	increment�trueT�maxtimeZ1d�Q�rndtime�factor�multiplierscsg|]}��d|��qS��X�r��.0�i��arr�
<listcomp>G�z+BanTimeIncr.testDefault.<locals>.<listcomp>r
��
��`	��%�K���,r$r$r$�30d)
r4r5r6r7r8r9r:iXi�i`	� rrcsg|]}��d|��qSr(r*r+r.rrr0Sr1�2csg|]}��d|��qSr(r*r+r.rrr0Zr1)
r5r6r7r8r9r:r$r$r$r$z1.33csg|]}t��d|���qSr(��intrr+r.rrr0`r1)
i<ixi�i�1i�ci��r$r$r$r$�12hcsg|]}��d|��qSr(r*r+r.rrr0gr1�
r4r5r6r7r8r9�rBrBrB�24h�5mFcs&g|]}d�fdd�td�D�v�qS)r4csg|]}��dd��qS�r)r
r*r+r.rrr0nr1�6BanTimeIncr.testDefault.<locals>.<listcomp>.<listcomp>�
��range�r,�cr.rrr0nr1rGcs&g|]}d�fdd�td�D�v�qS)r4csg|]}��dd��qSrEr*r+r.rrr0rr1rFrGrHrJr.rrr0rr1)	r�setBanTimeExtra�assertEqualZgetBanTimeExtrarI�len�split�
assertTrue�assertFalse)rr'ZarrZmultcntrr.r�testDefault;sh�&������zBanTimeIncr.testDefaultcCs,|�d�|�d�dd�td�D���dS)Nz1 2 4 8 16 32 64 128 256r<cSsg|]}td|>��qS)r
)�strr+rrrr0~r1z/BanTimeIncr.testMultipliers.<locals>.<listcomp>�)rR�joinrIrrrr�testMultiplierszs
zBanTimeIncr.testMultiplierscs�|j���dd���dd���dd���dd���dd�|��fd	d
�tdd�D�gd
����dd�|��fdd
�tdd�D�gd����dd���dd�|��fdd
�tdd�D�gd����dd���dd�|��fdd
�tdd�D�gd����dd���dd�|�d�fdd
�td�D�v���dd�|�d�fdd
�td�D�v���dd���dd���dd���dd���dd�dS)Nr#rCr%ZformulazGban.Time * math.exp(float(ban.Count+1)*banFactor)/math.exp(1*banFactor)r&z2.0 / 2.885385r'csg|]}t��d|���qSr(r>r+r.rrr0�r1z+BanTimeIncr.testFormula.<locals>.<listcomp>r
r2r3r;csg|]}t��d|���qSr(r>r+r.rrr0�r1)
r4r5r6r7r8r9r:iXi�i`	�1csg|]}t��d|���qSr(r>r+r.rrr0�r1)
i^iQi/i�r$r$r$r$r$r$r@csg|]}t��d|���qSr(r>r+r.rrr0�r1rArDFcs&g|]}d�fdd�td�D�v�qS)r4csg|]}t��dd���qSrEr>r+r.rrr0�r1�6BanTimeIncr.testFormula.<locals>.<listcomp>.<listcomp>rGrHrJr.rrr0�r1rGcs&g|]}d�fdd�td�D�v�qS)r4csg|]}t��dd���qSrEr>r+r.rrr0�r1rXrGrHrJr.rrr0�r1)rrLrMrIrPrQrrr.r�testFormula�sR������zBanTimeIncr.testFormula)N)
�__name__�
__module__�__qualname__rrrrRrVrY�
__classcell__rrrrr,s
?rcsBeZdZ�fdd�Z�fdd�Zddd�Zdd	�Zd
d�Z�ZS)
�
BanTimeIncrDBcs|tt|���tdur,tjdkr,t�d��ntdur8dSt�	dd�\}|_
t|j
�|_t
�|_|j|j_t�|_|jt_dS)rN)r�zEUnable to import fail2ban database module as sqlite is not available.z.dbZ	fail2ban_)rr^rr�sys�version_info�unittestZSkipTest�tempfileZmkstemp�
dbFilenamer
�dbr�jail�databaserrr�Main)r�_rrrr�s�
zBanTimeIncrDB.setUpcs:tdurdS|j��dt_t�|j�tt	|��
�dS�zCall after every test case.N)rr�stoprrh�os�removerdrr^rrrrrr�s
zBanTimeIncrDB.tearDownNcCs<|j}|dur|�|j���}|�d�|j�|||�}|Sr)rf�
getBanTime�actions�
setBanTimer�incrBanTime)r�ticketrrfZincrTimerrrrq�s
zBanTimeIncrDB.incrBanTimec
	s�tdurdS�j}�j�|�|j�d�|�dd�|�dd�d}tt�	��}t
||g������fdd�td	�D�gd
����
��j�|����dd��j�||dd�D�d
|dfg���|d������d�d��j�|����dd��j�||dd�D�d|ddfg���dd��j�|ddd�D�d|ddfg���dd��jj|||d�D�d|ddfg����jjd|dd�g��jj|dd�}��t|�d||df��jj|dd�}��t|�d||df��jj||dd�}��t|�d||df�d}td�D]F}��||d����d�}��||d��j�|��|}�q0��||d����d�}��||d���||��j�|��|}t
|d|d g�}|�d!�|�
��j�||�t
|d"|d g�}|�d#�|�
��j�||��jj|dd�}��t|�d���t|d$�d%|||d|f���t|d
�d&|d"|d d#f��jj|d'dd�}��t|�d	���t|d�d&|d|d d!f���|d
�|����|d
�|����|d�|����|d�|d'��t
|d(|d#g������|d)������|d*����d*�����|d)������|d*����d)�����|d*����d*���
��j�|���jj|dd�}��t|�d	���t|d�d&|d(|d#d*f��j���jj|dd�}��t|�d	���d)���
��j�|���j���jj|dd�}��t|�d���|d$��|�d+�j_�j���jj|dd�}��t|�d
���|d$��|d"�d,�j_�j���jj|dd�}��|g�td-d.�}	d|	j_|	�dd��j|	_�j�|	�td/d-d0�}
d|
j_�j|
_�j�|
�t
||g�}|�d1�|�
��j�|	|�t
||d1g�}|�d2�|� d
�|�
��j�|
|��jj|	|dd�}��t|�d
���t|d$�d&||d1f��jj|
|dd�}��t|�d
���t|d$�d3||d1d2f��j�||	�D]}��|d
|d1f��q��qp�j�||
�D]"}��|d|d1d2f��qq��jj|dd4�D]}��|d	|d5f��q�q�|	j!dd6�|	�"�����j#���t��d&||d1f�|
j!dd6���|
�"�d�|	�d7d8�|	�!�|	�"�����j#���t��d&||d)f�|
�!���|
�"�d�dS)9NrGr!r"r'z&1 2 4 8 16 32 64 128 256 512 1024 2048�	192.0.2.1csg|]}���d��qS)rG)rqr+�rrrrrr0�r1z1BanTimeIncrDB.testBanTimeIncr.<locals>.<listcomp>�)rGrGrGcSsg|]\}}}|||f�qSrr�r,r Z	timeOfBan�lastBanTimerrrr0�r1Fr
��cSsg|]\}}}|||f�qSrrrvrrrr0�r1rcSsg|]\}}}|||f�qSrrrvrrrr0�r1�TcSsg|]\}}}|||f�qSrrrvrrrr0r1)�
forbantime�fromtimei����)r{r|�correctBanTime)�ipr}zFFailTicket: ip=%s time=%s bantime=20 bancount=2 #attempts=0 matches=[])r|r}zH[FailTicket: ip=%s time=%s bantime=20 bancount=2 #attempts=0 matches=[]]�rfr|r}�r=r$rBrWi@�rzGFailTicket: ip=%s time=%s bantime=%s bancount=13 #attempts=0 matches=[]zFFailTicket: ip=%s time=%s bantime=%s bancount=1 #attempts=0 matches=[]i ��3r)���i]�����Zpolling)�backendzDummyJail-2)�namer�ipi�.zFFailTicket: ip=%s time=%s bantime=%s bancount=2 #attempts=0 matches=[])ZoveralljailsiPF)r}r#Z10m)$rrfre�addJailrorprLr?r�timerrMrIZincrBanCount�addBanZgetBanZsetTimerq�getCurrentBansrSZassertNotEqualrNrQZ
isTimedOutrP�purgeZgetIP�	_purgeAger�filterZ
ignoreSelfrg�setBanCountZrestoreCurrentBans�
getFailTicketZrestored)
rrfr~�stime�restored_ticketsrwr-r�ticket2Zjail1Zjail2Zticket1�rowrrtr�testBanTimeIncr�sv�
��������


�
�
�



�









�
�



�
�zBanTimeIncrDB.testBanTimeIncrcCstdurdS|j}|j�|�|j�d�|�dd�tj}|�	�|�
|j�|�d�|�d�d|j_
|�ddd	�|jd
dd�|�d
�|�d�|�d�tt���}|j��}|�|g�d}t||dg�}t�}|�d�td�D]}|�|�|�d|||�q�|�d�|�|��d�|�|���|�d�|j�|j|�|jj ||ddd�}	|�t!|	�d�t||g�}t�}|�d�|�|�|�d||j|�|�d�t"�#|jd�}
|�|
�|�|
�$�|�%��|
}t&�'|�}
|�|
|�|�d|
|d�|�d�|�|
�(�d�|�|
��d�|jj ||dd�}	|�t!|	�d�|�|	d�(�d�|�|	d��d�t||ddg�}|�)|�|�*|j�+��t|t��dg�}|�)|�|�|j�+��|�d�|jj ||dd�}	|�t!|	�d�|�|	d�(�d�|�|	d��d�t|dt��dg�}|�d �|�)|�|�|j�+��|�d�t|dt��dg�}|�d!�|�)|�|�*|j�+��|�d�|jj ||dd�}	|�t!|	�d"�|�|	d�(�d �|�|	d��d�|�,�dS)#NrGr!r"Znopr�r�ZDB_PURGEg����MbP?Zdb_purgezPurge database event occurredT)�waitg�������?rs�xruZfailureFoundr�Frr
ZbanFound��<ztest-expired-ban-timeztest-actionsi@�rWztest-permanentr�r)r)-rrfrer�rorprLrrh�startZdb_set�add�
wait_emptyr�Zadd_named_timer�assertLogged�	wait_idler?rr�ZgetBansrMrrZsetMaxRetryrIZ
addFailureZgetBanCountrPr�r�r�r�rNr	�wait_forZgetRetryZgetMaxRetryrZwraprnZ
putFailTicketrQZcheckBanrk)rrf�obsr�Zticketsr~rrZfailManagerr-r�r�Zfailticket2rrr�testObserver�s�
























zBanTimeIncrDB.testObserver)N)	rZr[r\rrrqr�r�r]rrrrr^�s


jr^csHeZdZ�fdd�Z�fdd�Zdd�ZGdd�de�Zd	d
�Z�Z	S)�ObserverTestcstt|���dSr)rr�rrrrrr6szObserverTest.setUpcstt|���dSrj)rr�rrrrrr:szObserverTest.tearDowncCst�}|��|�d�tdg�}|�d|j�|�d|jd�|�d�|�|j�|�	|tdg��d|_
|�d|j�|�d|jd�|�dtj�|�
|j�|�	|tdg��d|_
|�d�|�	|tdg��|�
|���|�
|���|��d}dS)	Nr
�testZcallZtest2TZtest3rGF)rr�r��setr��clearr�rQZis_fullrMZpausedr	ZDEFAULT_SLEEP_TIMErPZisActiveZisAliverk)rr��orrr�testObserverBanTimeIncr>s,



z$ObserverTest.testObserverBanTimeIncrc@seZdZdd�ZdS)zObserverTest._BadObservercCstd��dS)N�run bad thread exception)�RuntimeErrorrrrr�run^szObserverTest._BadObserver.runN)rZr[r\r�rrrr�_BadObserver]sr�cs�t��}dd�|_tj}g��fdd�t_z>|��|��|����t	�
��fdd�d��W|t_n|t_0��d���t
��d����ddt���t�dd�d	�dS)
NcSsdS)Nrr)�vrrr�<lambda>dr1z1ObserverTest.testObserverBadRun.<locals>.<lambda>cs
��|�Sr)�append)�args)�xrrr�hr1cst��o��d�S)N�Unhandled exception)rNZ
_is_loggedr�rr�rrr�mr1rur�r
rr�)r�r�r�r`�__excepthook__r�rkrUrPr	r�r�rMrNr�rS)rr�Zprev_exchookrr�r�testObserverBadRunas

zObserverTest.testObserverBadRun)
rZr[r\rrr�rr�r�r]rrrrr�4s
r�)�
__author__Z
__copyright__Z__license__rlr`rbrcr�Z
server.mytimerZ
server.ticketrrZserver.failmanagerrZserver.observerrrZserver.utilsr	ZutilsrZ	dummyjailrZdatabasetestcaser
rrr^r�rrrr�<module>s,