HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ns3133907 6.8.0-86-generic #87-Ubuntu SMP PREEMPT_DYNAMIC Mon Sep 22 18:03:36 UTC 2025 x86_64
User: cssnetorguk (1024)
PHP: 8.2.28
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/fail2ban/tests/__pycache__/actionstestcase.cpython-312.pyc
�

G�kc�J����dZdZdZddlZddlZddlZddlmZddlm	Z	dd	l
mZdd
lm
Z
mZmZmZej"j%ej"j'e�d�ZGd�d
e
�Zy)zDaniel BlackzCopyright (c) 2013 Daniel Black�GPL�N�)�
FailTicket)�Utils�)�	DummyJail)�LogCaptureTestCase�
with_alt_time�with_tmpdir�MyTime�filesc���eZdZ�fd�Z�fd�Zifd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Ze
d��Zd�Zd
�Ze
ed���Z�xZS)�ExecuteActionsc�~��tt|��t�|_|jj
|_y)zCall before every test case.N)�superr�setUpr�_ExecuteActions__jail�actions�_ExecuteActions__actions��self�	__class__s ��@/usr/lib/python3/dist-packages/fail2ban/tests/actionstestcase.pyrzExecuteActions.setUp)s*������#�%���$�+��;�;�&�&�$�.�c�*��tt|��y)N)rr�tearDownrs �rrzExecuteActions.tearDown/s������&�(rc��|jjd�|jd}d|jdd�z|_d|jdd�z|_d|jdd�z|_d	|jd
d�z|_d|jdd�z|_d
|jdd�z|_|S)N�ipz
echo ip start�start�zecho ip ban <ip>�banzecho ip unban <ip>�unbanz
echo ip check�checkz
echo ip flush�flushzecho ip stop�stop)	r�add�get�actionstart�	actionban�actionunban�actioncheck�actionflush�
actionstop)r�o�acts   r�
defaultActionzExecuteActions.defaultAction2s����.�.���T�����t��#�#�A�E�E�'�2�$6�6�#�/�$�Q�U�U�5�"�%5�5�#�-�(����w��);�;�#�/�#�A�E�E�'�2�$6�6�#�/�#�A�E�E�'�2�$6�6�#�/�!�!�%�%���"3�3�#�.�	�*rc��|jjd�|jt|jjd�y)N�test)rr&�assertRaises�
ValueError�rs r�testActionsAddDuplicateNamez*ExecuteActions.testActionsAddDuplicateName=s0���.�.���V�����J���� 2� 2�F�;rc��|jjd�|j|jd�|jd|j�|j	d|j�|jjd�|jd=|jd=|j	d|j�|jt
|j�d�|jjd�|j|jj�d�|jt|jjd�y)Nr2znonexistant action�test1r�z	127.0.0.1)rr&�
assertTrue�assertIn�assertNotIn�assertEqual�len�
setBanTime�
getBanTimer3r4�removeBannedIPr5s r�testActionsManipulationz&ExecuteActions.testActionsManipulationAs����.�.���V���/�/�$�.�.��(�)��-�-�����'����'����8��.�.���W��
�n�n�V��
�n�n�W�����6�4�>�>�*����3�t�~�~�&��*��.�.���C� ����4�>�>�,�,�.�s�3����J���� =� =�{�Krc�~�|j|jjd�d�|jd�|j	�|j|jjgd��d�|jd�|jd�|jd�|jd�y)	N�	192.0.2.1r�
Ban 192.0.2.1)rDz	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�assertNotLoggedr5s r�testAddBannedIPzExecuteActions.testAddBannedIPPs������4�>�>�-�-�k�:�A�>����O�$��-�-�/����4�>�>�-�-�.U�V�XY�Z����.�/�����'����O�$����O�$rc���|j�|jj�|jddzd��|jj	�|jj�|jddzddz�|j
|jj�ddd	gfg�|j
|jjd
�ddg�y)N�
stdout: %r�ip startT��waitzip flush�ip stop)zCurrently bannedr)zTotal bannedrzBanned IP list�short)r0rrrHr%�joinr=�statusr5s r�testActionsOutputz ExecuteActions.testActionsOutputZs��������.�.�������L�:�-�D��9��.�.�����.�.�������L�:�-�|�i�/G�H����4�>�>�(�(�*�,D�#�&6��%<�,>�?����4�>�>�(�(��1�3K�#�3%�&rc
�����jjdtjj	t
d�ddi��j
d��jj��jtj�fd�d���jj��jj	��j
d��jt�jjd	d
i��jjdtjj	t
d�ddd
���jt�jjdtjj	t
d�dddd���jt�jjdtjj	t
d�i�y)N�Actionzaction.d/action.py�opt1�valuezTestAction initialisedc�&���jd�S)NzTestAction action start��
_is_loggedr5s�r�<lambda>z4ExecuteActions.testAddActionPython.<locals>.<lambda>ns���$�/�/�:S�*T�r�zTestAction action stop�Action3z/does/not/exist.py�Action4�value2)rX�opt2�Action5�value3)rXrb�opt3)rr&�os�pathrS�TEST_FILES_DIRrHrr:r�wait_forr%r3�IOError�	TypeErrorr5s`r�testAddActionPythonz"ExecuteActions.testAddActionPythonfsd����.�.����R�W�W�\�\�.�*>�
?�
�G������,�-��.�.�����/�/�5�>�>�"T�VW�X�Z��.�.�����.�.�������,�-����G��>�>���y�"6��<��.�.����b�g�g�l�l�>�+?�@��X�&�(�����d�n�n� � �)��7�7�<�<�� 4�5��X�x�8�:�
����d�n�n� � �)��7�7�<�<�� 4�5�r�;rc	�����jt�jjdtj
j
td�i��jt�jjdtj
j
td�i��jjdtj
j
td�i��jj��jtj�fd�d���jj��jj
��jd�y)NrWzaction.d/action_noAction.pyzaction.d/action_nomethod.pyzaction.d/action_errors.pyc�&���jd�S)NzFailed to startr[r5s�rr]z7ExecuteActions.testAddPythonActionNOK.<locals>.<lambda>�s���$�/�/�:K�*L�rr^zFailed to stop)r3�RuntimeErrorrr&rfrgrSrhrr:rrir%rHr5s`r�testAddPythonActionNOKz%ExecuteActions.testAddPythonActionNOK�s�������L�$�.�.�"4�"4��R�W�W�\�\�.�!�#������L�$�.�.�"4�"4��R�W�W�\�\�.�!�#����.�.����R�W�W�\�\�.��!����.�.�����/�/�5�>�>�"L�a�P�R��.�.�����.�.�������$�%rc�|�|jjdtjj	t
d�i�|jjdtjj	t
d�i�|jjtd��|jj�|jd�|jd�|jd�|jj�|jd�|jd	�|jd
�y)N�action1zaction.d/action_modifyainfo.py�action2z1.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)
rr&rfrgrSrhr�
putFailTicketr�_Actions__checkBanrJrH�_Actions__flushBanr5s r�testBanActionsAInfoz"ExecuteActions.testBanActionsAInfo�s����.�.�����7�7�<�<�� @�A����.�.�����7�7�<�<�� @�A����+�+���J�y�1�2��.�.�#�#�%����.�/����2�3����2�3��.�.�#�#�%����0�1����4�5����4�5rc���d|j_d|j_|jjd�|jj	�tjd�d}|dkr5d|z}|jjt|d��|dz
}|dkr�5|jdd	�
�tjd�|dkr5d|z}|jjt|d��|dz
}|dkr�5|jd
d	�
�|jj�|jj�|jd�|jd�y)Nr^��dr�z
192.0.2.%drz / 20,TrO���2z / 50,zUnbanned 30, 0 ticket(s)zUnbanned 50, 0 ticket(s))r�
banPrecedence�
unbanMaxCountr?rr�setTimerrurrHr%rSrJ)r�irs   r�testUnbanOnBusyBanBombingz(ExecuteActions.testUnbanOnBusyBanBombing�s;��"#�$�.�.��!"�$�.�.���.�.���C� ��.�.�����.�.����!�	�B���q��2��;�;���Z��A�.�/���6�1�	
�B�����H�4��(��.�.���	�B���q��2��;�;���Z��C�0�1���6�1�	
�B�����H�4��(��.�.�����.�.�������.�/����1�2rc��|jddd��}|jdz|d<d|_d|jz|_d|jz|_|j
j
�|jddz�|j|j
jd	�d
�|j|j
jd�d
�|jdd
ddzddzddzdd��|jd�|jdz|d<|j
jd�|jdd��|jd�|j
j�|jddzddzdddddzddd��	|jd�|j|d<|j|j
jd�d
�|jd
ddzddzdd��|jddzd��|jd�|j
j�|jddddzdd zdd��|jddzddzddzd!d��|jd"�|j|d<|j
j�|j
j!�|jddzddzd#dd��|jd$ddzd%d��y)&N�	 <family>)r#r$�; exit 1�actionflush?family=inet6T�<actioncheck> ; rMrNrDr�2001:db8::1rE�Ban 2001:db8::1�ip ban 192.0.2.1�ip ban 2001:db8::1��allrP�>[test-phase 1a] simulate inconsistent irreparable env by unban�actioncheck?family=inet6z,Invariant check failed. Unban is impossible.rOz>[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 environmentrQ�[test-phase 2] consistent env�ip check inet4�r��-[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)r0r,�actionstart_on_demandr)r*rrrJr=rGrHrIr+rArwr%rS�rr/s  r�testActionsConsistencyCheckz*ExecuteActions.testActionsConsistencyCheck�s0�����K��E�F�#�$'�O�O�j�$@�#� �!�"�#��$�s�}�}�4�#�-�&����8�#�/��.�.�������|�j�0�1����4�>�>�-�-�k�:�A�>����4�>�>�-�-�m�<�a�@����O�%6��*���$�$��&�&��$�	���-�-�P�Q�$'�O�O�j�$@�#� �!��.�.���
�.����B�����-�-�P�Q��.�.�#�#�%�����"�"��"�"��,�A��)����$����-�-�/�0�$'�O�O�#� �!����4�>�>�-�-�m�<�a�@����%��*���&�&��$������|�&6�6���
��-�-�?�@��.�.�#�#�%����*�,��"�"��"�"��$�	��
����"�"��)���*��"���
��-�-�3�4�$'�O�O�#� �!��.�.�����.�.��������"�"��)����$�	�����w��"�"�#���
rc�^�|jddddd��}|jdz|d<d|_d|_d|jz|_d|j
z|_|jj�|jddz�|j|jjd	�d
�|j|jjd�d
�|jdd
ddzddzddzddzdd��|jdz|d<|jd�|jjd�|jdddzdd��|jddzddzddzd��|jd�|j|jjd�d
�|jdddzddzddzdddd��|jddzddzd��|j|d<|j|jjd�d
�|jdz|d<|jd�|jj�|jddzdd zd!d"dddzd#dd��	|jddzd��|jd$�|j|d<|j|jjd�d
�|jd
ddzddzdd��|jdd%zddzd��|jd&�|j|d<|jj�|jd!d"dd zddzdd��|jddzddzddzddzddzd��|jd'�|j|d<|jj!�|jj#�|jdd zddzddzd(dd��|jd)ddzd*d��y)+Nr�)rr#r$r%r�r�Tr�rMrNrDrr�rEr��ip start inet4r��ip start inet6r�r�r�r�r�z
ip stop inet6z
ip stop inet4r�z<[test-phase 1b] simulate inconsistent irreparable env by banr�r�rt�2001:db8::2z>[test-phase 1c] simulate inconsistent irreparable env by flushr�r�r�r�zFailed to flush bans in jailr�r�r�r�r�r�r�)r0r,r��actionrepair_on_unbanr)r*rrrJr=rGrHr+rIrArwr%rSr�s  r�"testActionsConsistencyCheckDiffFamz1ExecuteActions.testActionsConsistencyCheckDiffFam%s������K��k�bm�n�o�#�$'�O�O�j�$@�#� �!�"�#��"�#��$�s�}�}�4�#�-�&����8�#�/��.�.�������|�j�0�1����4�>�>�-�-�k�:�A�>����4�>�>�-�-�m�<�a�@����O�%6��"�"��$�$��"�"��&�&��$���%(�O�O�j�$@�#� �!��-�-�P�Q��.�.���
�.����R��/�!��$�������"�"��/�!��"�"��	�
��-�-�N�O����4�>�>�-�-�m�<�a�@����R��/�!��"�"��"�"�"���$�
������/�!��"�"���
�
%(�O�O�#� �!����4�>�>�-�-�m�<�a�@�$'�O�O�j�$@�#� �!��-�-�P�Q��.�.�#�#�%�����"�"��"�"��,�A��/�!�!��$�������/�!���
�
�-�-�/�0�$'�O�O�#� �!����4�>�>�-�-�m�<�a�@����%��"�"��&�&��$�������"�"��"�"���
�
�-�-�?�@�$'�O�O�#� �!��.�.�#�#�%����*�,��"�"��"�"��$�	��
����"�"��/�!��"�"��/�!��"�"��
�
��-�-�3�4�$'�O�O�#� �!��.�.�����.�.��������"�"��/�!��/�!���$������w��"�"�#���
rc�(�|jdddddd��}|dz|d<d	|_d
|_d|_|j	d�|j|jjd
dg�d�|jddddzddzddzddzd	��|j	d�|j|dz�|jd�|jd�|j	�|j|dz�|jd�|jd�tjtj�dz�|j	d�|j|jjgd��d �|jd!d"d#dd$zdd%zd	��|j|dz�|j|dz�|jd&d'ddzdd(zddzdd)zd*d+d	��	tjtj�dz�tj|dz�tj|dz�|j	d,�|j|jjd
dg�d�|jd-dd.zdd/zd0d1dd(zdd)zd	��|j	d2�|j|jjd3�d �|jd4dd5zd	��|jd-dd.zdd/zd0d1dd(zdd)zd	��|j	d6�|j|dz�|jd7�|jd8�|j	�|j|dz�|jd8d9d	��|jd7�d:|_d;|_|j|jj#t%d
d<��d<�|jd=d>d	��y)?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>")rr#r$r%r!z	/<family>�FNTz%echo ip repair <family>; touch "<FN>"zGecho ip reban <ip> <family>; echo "<ip> <family> -- rebanned" >> "<FN>"z[test-phase 0] initial banrDr�rrEr�rMr�zip ban 192.0.2.1 inet4r�zip ban 2001:db8::1 inet6r�z[test-phase 1] check banz/inet4z192.0.2.1 inet4z2001:db8::1 inet6z/inet6�z#[test-phase 2] check already banned)rDr�r�rrFz2001:db8::1 already bannedzBan 2001:db8::2r�r�zReban 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 repairedr�zip 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 -- rebannedr zexit 1rzFailed to execute rebanzError banning 192.0.2.1)r0r��actionrepair�actionrebanrIr=rrGrH�dumpFilerJrr��timerf�remover)�_Actions__reBanr)r�tmpr/s   r�!testActionsRebanBrokenAfterRepairz0ExecuteActions.testActionsRebanBrokenAfterRepair�s'��	
���$�&�+�$�6��	�#��+�o�#�d�)�"�#��<�#��]�#�/��-�-�,�-����4�>�>�-�-�{�M�.J�K�Q�O����O�%6��"�"��*�*��"�"��,�,���
��-�-�*�+��-�-��H������%�&����*�+��-�-�/��-�-��H������'�(����(�)�	�.�.������"�#��-�-�5�6����4�>�>�-�-�.Y�Z�\]�^�����;�=N��"�"��"�"��	�
�
�-�-��H����-�-��H������(�*=��*�*��,�,��,�,��.�.� �"���
�	�.�.������"�#��)�)�C��L���)�)�C��L���-�-�E�F����4�>�>�-�-�{�M�.J�K�Q�O����A��#�#��#�#�!�#C��,�,��.�.���
��-�-�P�Q����4�>�>�-�-�m�<�a�@����#��.�.���
����A��#�#��#�#�!�#C��,�,��.�.���
��-�-�,�-��-�-��H������1�2����6�7��-�-�/��-�-��H������"�"���.����4�5��#�/��#�-����4�>�>�1�1�*�[�!�2L�M�q�Q������$��(r)�__name__�
__module__�__qualname__rrr0r6rBrKrUrlrprxr
r�r�r�rr��
__classcell__)rs@rrr's|���'�)��	
�<�
L�%�
&�;�>&�&6�2�#3��#3�JL
�\p
�d�
�g(���g(rr)�
__author__�
__copyright__�__license__r�rf�tempfile�
server.ticketr�server.utilsr�	dummyjailr�utilsr	r
rrrgrS�dirname�__file__rhr�rr�<module>r�s^��.�
�1�
����	��&� � �I�I������b�g�g�o�o�h�7��A��Y(�'�Y(r