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

*d\���%�@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__��C/usr/lib/python3.9/site-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)
�
BanTimeIncrDBcsrtt|���tdur"t�d��ntdur.dSt�dd�\}|_t	|j�|_
t�|_|j
|j_
t�|_|jt_dS)rNzEUnable to import fail2ban database module as sqlite is not available.z.dbZ	fail2ban_)rr^rr�unittestZSkipTest�tempfile�mkstemp�
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�stoprrf�os�removerbrr^rrrrrr�s
zBanTimeIncrDB.tearDownNcCs<|j}|dur|�|j���}|�d�|j�|||�}|Sr)rd�
getBanTime�actions�
setBanTimer�incrBanTime)r�ticketrrdZincrTimerrrro�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)ror+�rrprrr0�r1z1BanTimeIncrDB.testBanTimeIncr.<locals>.<listcomp>�)rGrGrGcSsg|]\}}}|||f�qSrr�r,r Z	timeOfBan�lastBanTimerrrr0�r1Fr
��cSsg|]\}}}|||f�qSrrrtrrrr0�r1rcSsg|]\}}}|||f�qSrrrtrrrr0�r1�TcSsg|]\}}}|||f�qSrrrtrrrr0r1)�
forbantime�fromtimei����)ryrz�correctBanTime)�ipr{zFFailTicket: ip=%s time=%s bantime=20 bancount=2 #attempts=0 matches=[])rzr{zH[FailTicket: ip=%s time=%s bantime=20 bancount=2 #attempts=0 matches=[]]�rdrzr{�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]������polling��backendzDummyJail-2)�namer�ipi�.zFFailTicket: ip=%s time=%s bantime=%s bancount=2 #attempts=0 matches=[])ZoveralljailsiPF)r{r#Z10m)$rrdrc�addJailrmrnrLr?r�timerrMrIZincrBanCount�addBanZgetBanZsetTimero�getCurrentBansrSZassertNotEqualrNrQZ
isTimedOutrP�purgeZgetID�	_purgeAger�filterZ
ignoreSelfre�setBanCountZrestoreCurrentBans�
getFailTicketZrestored)
rrdr|�stime�restored_ticketsrur-r�ticket2Zjail1Zjail2Zticket1�rowrrrr�testBanTimeIncr�sv�
��������


�
�
�



�









�
�



�
�zBanTimeIncrDB.testBanTimeIncrcCs0tdurdStdd�}|_|j|_|j�|�|j�d�|�dd�t	j
}|��|�|j�|�
d�|�d�d|j_|�d	d
d�|jdd
d�|�d�|�
d�|�d�tt���}|j��}|�|g�d}t||dg�}t�}|j_|�d�td�D]}|�|�|�
d||��q|�d�|�|��d�|� |�!��|�"d�|j�#||�|jj$||ddd�}	|�t%|	�d�t||g�}t�}|j_|�d�|�|�|�
d||�|�d�t&�'|j!d�}
|� |
�|�|
�(�|�)��|
}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|d t��d!g�}|�d"�|�-|�|� |j�/��|�d�t|d t��d!g�}|�d#�|�-|�|�.|j�/��|�d�|jj$||dd�}	|�t%|	�d$�|�|	d�,�d"�|�|	d��d�|�0�dS)%Nr�r�rGr!r"Znopr~r�ZDB_PURGEg����MbP?Zdb_purgezPurge database event occurredT)�waitg�������?rq�xrsZfailureFoundr�Fr}r
ZbanFound��<ztest-expired-ban-timeztest-actionsi@�rWztest-permanentr�r)r)1rrrdrcrer�rmrnrLrrf�startZdb_set�add�
wait_emptyr�Zadd_named_timer�assertLogged�	wait_idler?rr�ZgetBansrMrrr��failManagerZsetMaxRetryrIZ
addFailureZgetBanCountrPr�r�r�r�rNr	�wait_forZgetRetryZgetMaxRetryrZwraprlZ
putFailTicketrQZcheckBanri)rrd�obsr�Zticketsr|rpr�r-r�r�Zfailticket2rrr�testObserver�s�
























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


jr^csHeZdZ�fdd�Z�fdd�Zdd�ZGdd�de�Zd	d
�Z�Z	S)�ObserverTestcstt|���dSr)rr�rrrrrr7szObserverTest.setUpcstt|���dSrh)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
�test�callZtest2TZtest3rGF)rr�r��setr��clearr�rQZis_fullrMZpausedr	ZDEFAULT_SLEEP_TIMErPZisActiveZisAliveri)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>er1z1ObserverTest.testObserverBadRun.<locals>.<lambda>cs
��|�Sr)�append)�args)�xrrr�ir1cst��o��d�S)N�Unhandled exception)rNZ
_is_loggedr�rr�rrr�nr1rsr�r
rr�)r�r�r��sys�__excepthook__r�rirUrPr	r�r�rMrNr�rS)rr�Zprev_exchookrr�r�testObserverBadRunbs

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