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__/actionstestcase.cpython-39.opt-2.pyc
a

~
,��c`��@s�dZdZdZddlZddlZddlZddlmZddlm	Z	dd	l
mZdd
lm
Z
mZmZmZej�ej�e�d�ZGdd
�d
e
�ZdS)zDaniel BlackzCopyright (c) 2013 Daniel BlackZGPL�N�)�
FailTicket)�Utils�)�	DummyJail)�LogCaptureTestCase�
with_alt_time�with_tmpdir�MyTime�filescs�eZdZ�fdd�Z�fdd�Zifdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Ze
dd��Zdd�Zdd�Ze
edd���Z�ZS)�ExecuteActionscs$tt|���t�|_|jj|_dS)zCall before every test case.N)�superr�setUpr�_ExecuteActions__jailZactions�_ExecuteActions__actions��self��	__class__��B/usr/lib/python3.9/site-packages/fail2ban/tests/actionstestcase.pyr)szExecuteActions.setUpcstt|���dS)N)r
r�tearDownrrrrr/szExecuteActions.tearDowncCs�|j�d�|jd}d|�dd�|_d|�dd�|_d|�dd�|_d	|�d
d�|_d|�dd�|_d
|�dd�|_|S)N�ipz
echo ip start�start�zecho ip ban <ip>�banzecho ip unban <ip>Zunbanz
echo ip check�checkz
echo ip flush�flushzecho ip stop�stop)	r�add�getZactionstart�	actionban�actionunban�actioncheck�actionflushZ
actionstop)r�o�actrrr�
defaultAction2s
zExecuteActions.defaultActioncCs"|j�d�|�t|jjd�dS)N�test)rr�assertRaises�
ValueErrorrrrr�testActionsAddDuplicateName=sz*ExecuteActions.testActionsAddDuplicateNamecCs�|j�d�|�|jd�|�d|j�|�d|j�|j�d�|jd=|jd=|�d|j�|�t|j�d�|j�d�|�|j��d�|�	t
|jjd�dS)Nr(znonexistant actionZtest1r�z	127.0.0.1)rr�
assertTrueZassertInZassertNotIn�assertEqual�len�
setBanTimeZ
getBanTimer)r*�removeBannedIPrrrr�testActionsManipulationAsz&ExecuteActions.testActionsManipulationcCsj|�|j�d�d�|�d�|��|�|j�gd��d�|�d�|�d�|�d�|�d�dS)	N�	192.0.2.1r�
Ban 192.0.2.1)r3z	192.0.2.2z	192.0.2.3r�192.0.2.1 already bannedz
Ban 192.0.2.2z
Ban 192.0.2.3)r.r�addBannedIP�assertLogged�pruneLog�assertNotLoggedrrrr�testAddBannedIPPs



zExecuteActions.testAddBannedIPcCs�|��|j��|jdddd�|j��|j��|�dddd�|�|j��ddd	gfg�|�|j�d
�ddg�dS)N�
stdout: %r�ip startT��waitzip flush�ip stop)zCurrently bannedr)zTotal bannedrzBanned IP listZshort)r'rrr7r�joinr.�statusrrrr�testActionsOutputZs


��z ExecuteActions.testActionsOutputc
s��j�dtj�td�ddi���d��j����t	�
�fdd�d���j���j����d	���t
�jjd
di��j�dtj�td�dd
d����t�jjdtj�td�dd
dd����t�jjdtj�td�i�dS)N�Actionzaction.d/action.py�opt1�valuezTestAction initialisedcs
��d�S)NzTestAction action start�Z
_is_loggedrrrr�<lambda>n�z4ExecuteActions.testAddActionPython.<locals>.<lambda>�zTestAction action stopZAction3z/does/not/exist.pyZAction4Zvalue2)rD�opt2ZAction5Zvalue3)rDrJZopt3)rr�os�pathr@�TEST_FILES_DIRr7rr-r�wait_forrr)�IOError�	TypeErrorrrrr�testAddActionPythonfs4�




��

�
�z"ExecuteActions.testAddActionPythonc	s���t�jjdtj�td�i���t�jjdtj�td�i��j�dtj�td�i��j����	t
��fdd�d���j���j����
d�dS)	NrCzaction.d/action_noAction.pyzaction.d/action_nomethod.pyzaction.d/action_errors.pycs
��d�S)NzFailed to startrFrrrrrG�rHz7ExecuteActions.testAddPythonActionNOK.<locals>.<lambda>rIzFailed to stop)r)�RuntimeErrorrrrKrLr@rMrr-rrNrr7rrrr�testAddPythonActionNOK�s.
��
��
��


z%ExecuteActions.testAddPythonActionNOKcCs�|j�dtj�td�i�|j�dtj�td�i�|j�td��|j�	�|�
d�|�d�|�d�|j��|�
d�|�d	�|�d
�dS)NZaction1zaction.d/action_modifyainfo.pyZaction2z1.2.3.4�Failed to execute banzaction1 ban deleted aInfo IPzaction2 ban deleted aInfo IPzFailed to execute unbanzaction1 unban deleted aInfo IPzaction2 unban deleted aInfo IP)
rrrKrLr@rMr�
putFailTicketrZ_Actions__checkBanr9r7�_Actions__flushBanrrrr�testBanActionsAInfo�s&��






z"ExecuteActions.testBanActionsAInfocCs�d|j_d|j_|j�d�|j��t�d�d}|dkr`d|}|j�t	|d��|d7}q4|j
dd	d
�t�d�|dkr�d|}|j�t	|d��|d7}qx|j
d
d	d
�|j��|j��|�
d�|�
d�dS)NrI��dr�z
192.0.2.%drz / 20,Tr=���2z / 50,zUnbanned 30, 0 ticket(s)zUnbanned 50, 0 ticket(s))rZ
banPrecedenceZ
unbanMaxCountr0rr
�setTimerrUrr7rr@r9)r�irrrr�testUnbanOnBusyBanBombing�s*







z(ExecuteActions.testUnbanOnBusyBanBombingcCs|�ddd��}|jd|d<d|_d|j|_d|j|_|j��|�dd�|�|j�	d	�d
�|�|j�	d�d
�|j
dd
ddddddddd�|�d�|jd|d<|j�
d�|j
ddd�|�d�|j��|j
ddddddddddddd�	|�d�|j|d<|�|j�	d�d
�|j
d
ddddddd�|jdddd�|�d�|j��|j
dddddd ddd�|jddddddd!dd�|�d"�|j|d<|j��|j��|j
ddddd#ddd�|jd$ddd%dd�dS)&N�	 <family>)rr�; exit 1�actionflush?family=inet6T�<actioncheck> ; r;r<r3r�2001:db8::1r4�Ban 2001:db8::1�ip ban 192.0.2.1�ip ban 2001:db8::1��allr>�>[test-phase 1a] simulate inconsistent irreparable env by unban�actioncheck?family=inet6z,Invariant check failed. Unban is impossible.r=z>[test-phase 1b] simulate inconsistent irreparable env by flush�ip flush inet4�ip flush inet6�Failed to flush bans�'No flush occurred, do consistency check�<Invariant check failed. Trying to restore a sane environmentr?�[test-phase 2] consistent env�ip check inet4�ri�-[test-phase 3] failed flush in consistent env�ip check inet6�Unable to restore environment�![test-phase end] flush successful�action ip terminated�ERROR�Unban tickets each individualy)r'r$�actionstart_on_demandr!r"rrr9r.r6r7r8r#r1rVrr@�rr&rrr�testActionsConsistencyCheck�s�
�
�

�

�
�

��



��z*ExecuteActions.testActionsConsistencyCheckcCs|�ddddd��}|jd|d<d|_d|_d|j|_d|j|_|j��|�dd�|�	|j�
d	�d
�|�	|j�
d�d
�|jdd
ddddddddddd�|jd|d<|�
d�|j�d�|jdddddd�|jdddddddd�|�
d�|�	|j�
d�d
�|jdddddddddddd�|jdddddd�|j|d<|�	|j�
d�d
�|jd|d<|�
d�|j��|jdddd d!d"dddd#ddd�	|jdddd�|�
d$�|j|d<|�	|j�
d�d
�|jd
ddddddd�|jdd%dddd�|�
d&�|j|d<|j��|jd!d"dd ddddd�|jdddddddddddd�|�
d'�|j|d<|j��|j��|jdd ddddd(ddd�|jd)ddd*dd�dS)+Nr`)rrrrrarbTrcr;r<r3rrdr4re�ip start inet4rf�ip start inet6rgrhrkrjrpz
ip stop inet6z
ip stop inet4rsz<[test-phase 1b] simulate inconsistent irreparable env by banrurvrT�2001:db8::2z>[test-phase 1c] simulate inconsistent irreparable env by flushrlrmrnrozFailed to flush bans in jailrqrrrtrwrxryrz)r'r$r{Zactionrepair_on_unbanr!r"rrr9r.r6r7r#r8r1rVrr@r|rrr�"testActionsConsistencyCheckDiffFam%s�
�
��
��


�
�

��


��	



��z1ExecuteActions.testActionsConsistencyCheckDiffFamcCs�|�dddddd��}|d|d<d	|_d
|_d|_|�d�|�|j�d
dg�d�|jddddddddddd	d�|�d�|�	|d�|�d�|�
d�|��|�	|d�|�d�|�
d�t�t�
�d�|�d�|�|j�gd��d �|jd!d"d#dd$dd%d	d�|�	|d�|�	|d�|j
d&d'dddd(dddd)d*d+d	d�	t�t�
�d�t�|d�t�|d�|�d,�|�|j�d
dg�d�|jd-dd.dd/d0d1dd(dd)d	d�|�d2�|�|j�d3�d �|jd4dd5d	d�|j
d-dd.dd/d0d1dd(dd)d	d�|�d6�|�	|d�|�d7�|�
d8�|��|�	|d�|jd8d9d	d�|�
d7�d:|_d;|_|�|j�td
d<��d<�|jd=d>d	d�dS)?Nz <family>; touch "<FN>"z <family>; test -f "<FN>"z <family>; echo -n "" > "<FN>"z <family>; rm -f "<FN>"z) <family>; echo "<ip> <family>" >> "<FN>")rrrrrz	/<family>ZFNTz%echo ip repair <family>; touch "<FN>"zGecho ip reban <ip> <family>; echo "<ip> <family> -- rebanned" >> "<FN>"z[test-phase 0] initial banr3rdrr4rer;r~zip ban 192.0.2.1 inet4rzip ban 2001:db8::1 inet6rsz[test-phase 1] check banz/inet4z192.0.2.1 inet4z2001:db8::1 inet6z/inet6�z#[test-phase 2] check already banned)r3rdr�rr5z2001:db8::1 already bannedzBan 2001:db8::2rrruzReban 192.0.2.1zReban 2001:db8::1zip reban 192.0.2.1 inet4zip reban 2001:db8::1 inet6z192.0.2.1 inet4 -- repairedz2001:db8::1 inet6 -- repairedz3[test-phase 3a] check reban after sane env repairedrpzip repair inet4zip repair inet6zReban 192.0.2.1, action 'ip'zReban 2001:db8::1, action 'ip'z>[test-phase 3a] check reban by epoch mismatch (without repair)r�zReban 2001:db8::2, action 'ip'zip reban 2001:db8::2 inet6z[test-phase 4] check rebanz192.0.2.1 inet4 -- rebannedz2001:db8::1 inet6 -- rebannedz2001:db8::2 inet6 -- rebannedrzexit 1rzFailed to execute rebanzError banning 192.0.2.1)r'r{ZactionrepairZactionrebanr8r.rr6r7ZdumpFiler9r
r]�timerK�remover!Z_Actions__reBanr)r�tmpr&rrr�!testActionsRebanBrokenAfterRepair�s��
�





��

�

��



�
�z0ExecuteActions.testActionsRebanBrokenAfterRepair)�__name__�
__module__�__qualname__rrr'r+r2r:rBrQrSrWrr_r}r�r	r��
__classcell__rrrrr's"

%Nrr)�
__author__Z
__copyright__Z__license__r�rK�tempfileZ
server.ticketrZserver.utilsrZ	dummyjailrZutilsrrr	r
rLr@�dirname�__file__rMrrrrr�<module>s