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__/observertestcase.cpython-312.pyc
�

�ogfZ����dZdZdZddlZddlZddlZddlZddlZddlm	Z	ddl
mZmZddl
mZdd	lmZmZdd
lmZddlmZdd
lmZddlmZmZGd�de�ZGd�de�ZGd�de�Zy)zSerg G. Brester (sebres)z"Copyright (c) 2014 Serg G. Brester�GPL�N�)�MyTime)�
FailTicket�	BanTicket)�FailManager)�	Observers�ObserverThread)�Utils�)�LogCaptureTestCase)�	DummyJail)�
getFail2BanDb�
Fail2BanDbc�B��eZdZ�fd�Z�fd�Zd�Zdd�Zd�Zd�Z�xZ	S)�BanTimeIncrc���tt|��t�|_|j
|j_t
�|_y��Call before every test case.N)�superr�setUpr�_BanTimeIncr__jail�calcBanTimer
�Observer��self�	__class__s ��A/usr/lib/python3/dist-packages/fail2ban/tests/observertestcase.pyrzBanTimeIncr.setUp.s5�����T� �"���$�+� �,�,�$�+�+�� �"�$�-�c�*��tt|��y�N)rr�tearDownrs �rr"zBanTimeIncr.tearDown5s�����T�#�%rc�P�|jj|j||�Sr!)rrr)r�banTime�banCounts   rrzBanTimeIncr.calcBanTime8s��	
���	"�	"�4�;�;���	B�Brc��|j}|jdd�|j|jd�d�|jdd�|j|jd�d�|jdd�|jdd�|jd	|�|jt	d
d�D�cgc]}|jd|���c}gd
��|jdd�gd�}|�7t
|jd��}|dkr|d|d
z
||dz
gd|z
zz}|jt	d
d�D�cgc]}|jd|���c}|�|jdd�|jdd�|jt	d
d�D�cgc]}|jd|���c}gd��|jdd�|jt	d
d�D�cgc]}t|jd|����c}gd��|jdd�|jdd�|jt	d
d�D�cgc]}|jd|���c}gd��|jdd�|jdd�|jdt	d�D��cgc]-}dt	d�D�cgc]}|jdd
���c}v��/c}}v�|jdd�|jdt	d�D��cgc]-}dt	d�D�cgc]}|jdd
���c}v��/c}}v�|jd	d�|jdd�|jdd�|jdd�ycc}wcc}wcc}wcc}wcc}wcc}wcc}}wcc}wcc}}w)N�	increment�trueT�maxtime�1d�Q�rndtime�factor�multipliersr��X�
��`	��%�K���,r+r+r+�30d)
r2r3r4r5r6r7r8iXi�i`	� rr�2)
r3r4r5r6r7r8r+r+r+r+z1.33)
i<ixi�i�1i�ci��r+r+r+r+�12h�
r2r3r4r5r6r7�r>r>r>�24h�5mF�
r2)r�setBanTimeExtra�assertEqual�getBanTimeExtra�ranger�len�split�int�
assertTrue�assertFalse)rr.�a�i�arr�multcnt�cs       r�testDefaultzBanTimeIncr.testDefault;sf��
�k�k�!����K��(����1�$�$�[�1�4�8����I�t�$����1�$�$�Y�/��:����I�t�$����H�d�#����M�;�/����#(��B�<�0�a�A�M�M�#�q��0�E��
���I�u�%�M�#���
��"�"�3�'�
(�7�
��l�

�a���	�
�s�7�1�9�~�.�"�W�*�=�
>�C����#(��B�<�0�a�A�M�M�#�q��0������I�t�$����H�c�"����#(��B�<�0�a�A�M�M�#�q��0�F��
���H�f�%����(-�a���5�1�C��
�
�c�1���5�F�����H�d�#����I�u�%����#(��B�<�0�a�A�M�M�#�q��0�E�����I�u�%����I�t�$��/�/���r��S�A�T�U�2�Y�?��a�m�m�C��+�?�
?�S�S�����I�t�$������r��S�A�T�U�2�Y�?��a�m�m�C��+�?�
?�S�S�����M�4�(����H�d�#����I�u�%����I�t�$��c1��1��1��6��1��@��S��@��SsN�N.�
N3�+N8�9"N=�"O�O�O�/O�*O�=O�O�O�Oc��|jd�|jdjtd�D�cgc]}td|z���c}��ycc}w)Nz1 2 4 8 16 32 64 128 256r:�r)rP�joinrE�str)rrLs  r�testMultiplierszBanTimeIncr.testMultiplierszsB�����-�.����3�8�8��b�	�:�1�S��A��Y�:�;�<��:s�Ac��|j}|jdd�|jdd�|jdd�|jdd�|jdd�|jtd	d
�D�cgc]}t	|jd|����c}gd��|jdd
�|jtd	d
�D�cgc]}t	|jd|����c}gd��|jdd�|jdd�|jtd	d
�D�cgc]}t	|jd|����c}gd��|jdd�|jdd�|jtd	d
�D�cgc]}t	|jd|����c}gd��|jdd�|jdd�|j
dtd�D��cgc]6}dtd�D�cgc]}t	|jdd	����c}v��8c}}v�|jdd�|jdtd�D��cgc]6}dtd�D�cgc]}t	|jdd	����c}v��8c}}v�|jdd�|jdd�|jdd�|jdd�|jdd�ycc}wcc}wcc}wcc}wcc}wcc}}wcc}wcc}}w)Nr)r?r,�formulazGban.Time * math.exp(float(ban.Count+1)*banFactor)/math.exp(1*banFactor)r-z2.0 / 2.885385r.rr/r0r1r9)
r2r3r4r5r6r7r8iXi�i`	�1)
i^iQi/i�r+r+r+r+r+r+r<r=r@FrAr2)rrBrCrErHrrIrJ)rrKrLrOs    r�testFormulazBanTimeIncr.testFormula�s���
�k�k�!����I�u�%����I�t�$����I�h�i����H�.�/����M�4�(����(-�a���5�1�C��
�
�c�1���5�E��
���I�u�%����(-�a���5�1�C��
�
�c�1���5�H�����I�u�%����H�c�"����(-�a���5�1�C��
�
�c�1���5�G�����H�.�/����I�u�%����(-�a���5�1�C��
�
�c�1���5�E�����I�u�%����I�t�$��/�/��e�TV�i�X��T�%��)�D�Q�c�!�-�-��Q�/�0�D�
D�X�X�����I�t�$�����e�TV�i�X��T�%��)�D�Q�c�!�-�-��Q�/�0�D�
D�X�X�����H�d�#����M�4�(����H�d�#����I�u�%����I�t�$��M6��6��6��6��E��X��E��XsH�"L"�"L'�"L,�)"L1�L;�&"L6�L;�M�"M�8M�6L;�Mr!)
�__name__�
__module__�__qualname__rr"rrPrUrY�
__classcell__�rs@rrr,s#���#�&�C�=%�~=�0%rrc�<��eZdZ�fd�Z�fd�Zdd�Zd�Zd�Z�xZS)�
BanTimeIncrDBc�z��tt|��t�t	j
d��t�yt
jdd�\}|_t|j�|_
t�|_|j|j_
t�|_|jt _y)rNzEUnable to import fail2ban database module as sqlite is not available.z.db�	fail2ban_)rr`rr�unittest�SkipTest�tempfile�mkstemp�
dbFilenamer�dbr�jail�databaser
rr	�Main)r�_rs  �rrzBanTimeIncrDB.setUp�s�����
�t�"�$���	�	�	��
����	��'�'��{�;��!�T�_��$�/�/�*�$�'��k�$�)��w�w�$�)�)�� �"�$�-��=�=�)�.rc���t�y|jj�dt_tj|j�tt|�+�y�zCall after every test case.N)rr�stopr	rk�os�removergrr`r"rs �rr"zBanTimeIncrDB.tearDown�s@�����	��-�-�����)�.��)�)�D�O�O���
�t�%�'rc���|j}|�)|j|jj��}|jd�|jj|||�}|Sr!)ri�
getBanTime�actions�
setBanTimer�incrBanTime)r�ticketr$ri�incrTimes     rrvzBanTimeIncrDB.incrBanTime�sX��	
���$��_�
�
�
�t�|�|�6�6�8�
9�7����D��
�]�]�
&�
&�t�W�f�
=�(�	�/rc
��t�y|j}|jj|�|jjd�|j
dd�|j
dd�d}ttj��}t||g�}|jtd�D�cgc]}|j|d���c}gd��|j�|jj||�|j|jj!||dd	�D���cgc]\}}}|||f��
c}}}d
|dfg�|j#|dz�|j|j|d�d�|jj||�|j|jj!||dd	�D���cgc]\}}}|||f��
c}}}d
|dzdfg�|j|jj!|ddd�D���cgc]\}}}|||f��
c}}}d
|dzdfg�|j|jj!|||��D���cgc]\}}}|||f��
c}}}d
|dzdfg�|j|jj%d|d	��g�|jj%|d	��}	|jt'|	�d|�d|dz�d��|jj%|d	��}	|jt'|	�d|�d|dz�d��|jj%||d	��}	|jt'|	�d|�d|dz�d��d}td�D]^}|j#||zdz�|j|d�}
|j|
|d
z�|jj||�|
}�`|j#||zdz�|j|d�}
|j)|
|d
z�|j|
|�|jj||�|
}t|dz|dz
g�}|jd�|j�|jj||�t|dz|dz
g�}|jd �|j�|jj||�|jj%|d	��}	|jt+|	�d
�|jt'|	d!�d|�d||zdz�d"|�d#��|jt'|	d
�d|dz�d|dz
�d"d �d$��|jj%|d%z
d	��}	|jt+|	�d�|jt'|	d
�d|dz�d|dz
�d"d�d$��|j-|	d
j/|��|j-|	d
j/|��|j1|	d
j/|��|j-|	d
j/|d%z
��t|d&z|d z
g�}|j1|j/|d'��|j-|j/|d(��|jd(�|j-|j/|d'��|j-|j/|d(��|jd'�|j1|j/|d(��|jd(�|j�|jj||�|jj%|d	��}	|jt+|	�d�|jt'|	d
�d|d&z�d|d z
�d"d(�d$��|jj3�|jj%|d	��}	|jt+|	�d�|jd'�|j�|jj||�|jj3�|jj%|d	��}	|jt+|	�d
�|j|	d!j5�|�d)|j_|jj3�|jj%|d	��}	|jt+|	�d
�|j|	d!j5�|dz�d*|j_|jj3�|jj%|d	��}	|j|	g�t9d+�,�}d	|j:_|j
dd�|j|_|jj|�t9d-d+�.�}
d	|
j:_|j|
_|jj|
�t||g�}|jd/�|j�|jj||�t||d/z
g�}|jd0�|jAd
�|j�|jj|
|�|jj%||d	��}	|jt+|	�d
�|jt'|	d!�d|�d|�d"d/�d$��|jj%|
|d	��}	|jt+|	�d
�|jt'|	d!�d|�d|d/z
�d"d0�d1��|jj!||�D]}|j|d
|d/f�n|jj!||
�D]}|j|d
|d/z
d0f�n|jj!|d�2�D]}|j|d|d3f�n|jCd	�4�|jE�}|j1|jF�|jt'|�d|�d|�d"d/�d$��|
jCd	�4�|j|
jE�d	�|j
d5d6�|jC�|jE�}|j1|jF�|jt'|�d|�d|�d"d'�d$��|
jC�|j|
jE�d	�ycc}wcc}}}wcc}}}wcc}}}wcc}}}w)7NrAr'r(r.z&1 2 4 8 16 32 64 128 256 512 1024 2048�	192.0.2.1�)rArArAFr��r�T)�
forbantime�fromtimei����)rr��correctBanTime)�ipr�zFailTicket: ip=z time=z- bantime=20 bancount=2 #attempts=0 matches=[])r�r�z[FailTicket: ip=z. bantime=20 bancount=2 #attempts=0 matches=[]]�rir�r��r;r+r>rXi@�rz	 bantime=z# bancount=13 #attempts=0 matches=[]z" bancount=1 #attempts=0 matches=[]i ��3r0���i]������polling��backendzDummyJail-2)�namer�ipi�.z" bancount=2 #attempts=0 matches=[])�overalljailsiPF)r�r)�10m)$rrirh�addJailrtrurBrHr�timerrCrErv�incrBanCount�addBan�getBan�setTime�getCurrentBansrT�assertNotEqualrFrJ�
isTimedOutrI�purge�getID�	_purgeAger�filter�
ignoreSelfrj�setBanCount�restoreCurrentBans�
getFailTicket�restored)rrir��stimerwrLr%�	timeOfBan�lastBanTime�restored_ticketsr$�ticket2�jail1�jail2�ticket1�rows                r�testBanTimeIncrzBanTimeIncrDB.testBanTimeIncr�s�����	�	
���$��'�'�/�/�$���,�,���"�����{�F�+����}�&N�O��"�

�f�k�k�m�
�%��b�%��$�&����*/��(�3�Q�D���V�R� �3���
	�����'�'�.�.��v�����OS�w�w�~�~�^`�bf�hl�ns�Ot�u�u�+K�8�Y��X�y�+�&�u���r�N���
	�.�.��������4�#�#�F�B�/��4��'�'�.�.��v�����OS�w�w�~�~�^`�bf�hl�ns�Ot�u�u�+K�8�Y��X�y�+�&�u����
�B����
���OS�w�w�~�~�^`�bd�fj�lp�Oq�r�r�+K�8�Y��X�y�+�&�r����
�B����
���OS�w�w�~�~�^`�mr�~C�~�PD�E�E�+K�8�Y��X�y�+�&�E����
�B����
����7�7���Y��u��U���
�W�W�+�+�r�%�+�H��������PR�TY�\^�T^�_��
�W�W�+�+�U�5�+�Q��������RT�V[�^`�V`�a��
�W�W�+�+���V[�+�\��������RT�V[�^`�V`�a��
�+���9��a�	�>�>�%�+�%��)�*�
�
�
�f�b�
)�7����G�[�1�_�-��7�7�>�>�$����;��	�.�.���$�q�(�)����V�R�(�'����g�{�Q��/����7�K�(��'�'�.�.��v���+��r�#�v�u�X�~�r�2�'�	���X��	�����'�'�.�.��w���r�#�v�u�X�~�r�2�'�	���X��	�����'�'�.�.��w���W�W�+�+�U�5�+�Q�����3�'�(�!�,���������PR�TY�\g�Tg�jk�Tk�mx�y����������OQ�RU�v�W\�]e�We�go�p��
�W�W�+�+�U�8�^�TY�+�Z�����3�'�(�!�,���������OQ�RU�v�W\�]e�We�go�p��
���#�A�&�1�1�%�8�9����#�A�&�1�1�%�8�9��/�/�"�1�%�0�0��7�8����#�A�&�1�1�%��.�A�B�
�B�s�F�E�(�N�B�	/�&��/�/�&�#�#�E�3�/�0����6�$�$�U�B�/�0����B�����6�$�$�U�C�0�1����6�$�$�U�B�/�0����C���/�/�&�#�#�E�2�.�/�	���B�������'�'�.�.��v���W�W�+�+�U�5�+�Q�����3�'�(�!�,���������OQ�RU�v�W\�]e�We�gi�j��
�'�'�-�-�/��W�W�+�+�U�5�+�Q�����3�'�(�!�,����C�������'�'�.�.��v���'�'�-�-�/��W�W�+�+�U�5�+�Q�����3�'�(�!�,����#�A�&�,�,�.��3� �$�'�'���'�'�-�-�/��W�W�+�+�U�5�+�Q�����3�'�(�!�,����#�A�&�,�,�.��3��7�!�$�'�'���'�'�-�-�/��W�W�+�+�U�5�+�Q�����#�R�(��I�
&�%�!�%�,�,������V�,��7�7�%�.��'�'�/�/�%��
��	�
:�%�!�%�,�,���7�7�%�.��'�'�/�/�%���r�5�"�%�'�	���T��	�����'�'�.�.��� ��r�5��:�r�*�'�	���U��	���a��	�����'�'�.�.��� ��W�W�+�+���W\�+�]�����3�'�(�!�,���������OQ�SX�Z^�_���W�W�+�+���W\�+�]�����3�'�(�!�,���������OQ�SX�Y]�S]�_d�e��
�W�W�^�^�B��
&�	�c����C�!�U�D�)�*��	��W�W�^�^�B��
&�	�c����C�!�U�4�Z��/�0��	��W�W�^�^�B�T�^�
2�	�c����C�!�U�E�*�+��	����%��0���� �&��/�/�&�/�/�"����3�v�;�OQ�SX�Z^�_�����%��0����5�&�&�(�%�0����	�5�)�������� �&��/�/�&�/�/�"����3�v�;�OQ�SX�Z]�^���������5�&�&�(�%�0��q4��v��v��
s��
Es�2w�.w �w'�w.�'w5c��t�ytd��x}|_|j|_|jj|�|jjd�|jdd�tj}|j�|j|j�|jd�|jd�d|j_|j!d	d
d�|j#dd
��|j%d�|jd�|jd�t't)j*��}|jj-�}|j/|g�d}t1||dz
g�}t3�x}|j4_|j9d�t;d�D]&}|j=|�|jd||��(|jd�|j/|j?�d�|jA|jC��|jEd�|jjG||�|jjI||dz
d��}	|j/tK|	�d�t1||g�}t3�x}|j4_|j9d�|j=|�|jd||�|jd�tMjN|jBd�}
|jA|
�|j/|
jQ�|jS��|
}tUjV|�}
|j/|
|�|jd|
|d�|jd�|j/|
jY�d�|j/|
j?�d�|jjI||d��}	|j/tK|	�d�|j/|	djY�d�|j/|	dj?�d�t1||dz
dg�}|j[|�|j]|jj_��t1|t)j*�dg�}|j[|�|jA|jj_��|jd�|jjI||d��}	|j/tK|	�d�|j/|	djY�d�|j/|	dj?�d�t1|d zt)j*�d!g�}|jd"�|j[|�|jA|jj_��|jd�t1|d zt)j*�d!g�}|jd#�|j[|�|j]|jj_��|jd�|jjI||d��}	|j/tK|	�d$�|j/|	djY�d"�|j/|	dj?�d�|ja�y)%Nr�r�rAr'r(�nopr�r��DB_PURGEg����MbP?�db_purgezPurge database event occurredT)�waitg�������?rz�xr{�failureFoundr�Fr�r�banFound��<ztest-expired-ban-timeztest-actionsi@�rXztest-permanentr�r0r)1rrrirhrjr�rtrurBr	rk�start�db_set�add�
wait_emptyr��add_named_timer�assertLogged�	wait_idlerHrr��getBansrCrrr��failManager�setMaxRetryrE�
addFailure�getBanCountrIr�r�r�r�rFr�wait_for�getRetry�getMaxRetryr�wraprs�
putFailTicketrJ�checkBanro)rri�obsr��ticketsr�rwr�rLr�r��failticket2s            r�testObserverzBanTimeIncrDB.testObserver�s�����	��y�1�1�$����'�'�$�-��'�'�/�/�$���,�,���"�����{�F�+����#��)�)�+��*�*�T�W�W���'�'�%�.��.�.��� �$�'�'�����j�%��4����3�$��?��-�-����'�'�%�.��.�.���

�f�k�k�m�
�%��G�G�O�O��'����7�B���"��b�%��)�R�(�&�*5�-�7�+����'�
���!����8�)�a����&�!��7�7�>�4��(�)��.�.������6�%�%�'��+��/�/�d�(�(�*�*�+����Q���'�'�.�.��v���W�W�+�+���c�	�Z_�+�`�����3�'�(�!�,��b�%��$�&�*5�-�7�+����'�
���!��
���� ��'�'�.�$��'��.�.����N�N�4�-�-�r�2�'��/�/�'�����7�#�#�%�{�'>�'>�'@�A��+��N�N�;�'�'����7�K�(��'�'�*�g�t�R�(��.�.������7�%�%�'��-����7�&�&�(�!�,��W�W�+�+���V[�+�\�����3�'�(�!�,����#�A�&�1�1�3�S�9����#�A�&�2�2�4�a�8��b�%��(�%<�$=�>�&����V�����4�<�<�(�(�*�+��b�&�+�+�-�.�)9�:�&����V���/�/�$�,�,�'�'�)�*��.�.����W�W�+�+���V[�+�\�����3�'�(�!�,����#�A�&�1�1�3�S�9����#�A�&�2�2�4�a�8��b��f�f�k�k�m�.>�-?�@�&����B�����V���/�/�$�,�,�'�'�)�*��.�.����b��f�f�k�k�m�.>�-?�@�&����C�����V�����4�<�<�(�(�*�+��.�.����W�W�+�+���V[�+�\�����3�'�(�!�,����#�A�&�1�1�3�R�8����#�A�&�2�2�4�a�8��(�(�*rr!)	rZr[r\rr"rvr�r�r]r^s@rr`r`�s���!� (��g1�Rq
rr`c�J��eZdZ�fd�Z�fd�Zd�ZGd�de�Zd�Z�xZ	S)�ObserverTestc�*��tt|��yr)rr�rrs �rrzObserverTest.setUp7s�����d�!�#rc�*��tt|��yrn)rr�r"rs �rr"zObserverTest.tearDown;s�����d�$�&rc��t�}|j�|jd�tdg�}|j	d|j
�|j	d|jd�|j
d�|j|j�|j|tdg��d|_
|j	d|j
�|j	d|jd�|j
dtjz�|j|j�|j|tdg��d|_
|j
d�|j|tdg��|j|j��|j|j��|j!�d}y)	Nr�test�call�test2T�test3rAF)r
r�r��setr��clearr�rJ�is_fullrC�pausedr�DEFAULT_SLEEP_TIMErI�isActive�isAlivero)rr��os   r�testObserverBanTimeIncrz$ObserverTest.testObserverBanTimeIncr?sI����#��)�)�+��-�-���	�6�(�m�!��'�'�&�!�'�'���'�'�&�!�%�%��!��.�.������3�;�;�����1�c�7�)�n�%��#�*��'�'�&�!�'�'���'�'�&�!�%�%��!��.�.��e�.�.�.�/��/�/�#�+�+�����1�c�7�)�n�%��#�*��.�.������1�c�7�)�n�%��/�/�#�,�,�.�!��/�/�#�+�+�-� ��(�(�*��#rc��eZdZd�Zy)�ObserverTest._BadObserverc��td��)N�run bad thread exception)�RuntimeError)rs r�runzObserverTest._BadObserver.run_s��	�0�	1�1rN)rZr[r\r��rr�_BadObserverr�^s��2rr�c�<���tj�}d�|_tj}g��fd�t_	|j�|j
�|j��jtj��fd�d��|t_�jd��jt��d��j�ddt��jt�dd�d�y#|t_wxYw)	Nc��y)Nr�r�)�vs r�<lambda>z1ObserverTest.testObserverBadRun.<locals>.<lambda>es�rc�&���j|�Sr!)�append)�args�xs �rr�z1ObserverTest.testObserverBadRun.<locals>.<lambda>is���Q�X�X�d�^�rc�@��t��xr�jd�S)N�Unhandled exception)rF�
_is_logged)rr�s��rr�z1ObserverTest.testObserverBadRun.<locals>.<lambda>ns���C��F�,]�t���G\�7]�rr{r�rrr�)r�r�r��sys�__excepthook__r�rorSrIrr�r�rCrFr�rT)rr��prev_exchookr�s`  @r�testObserverBadRunzObserverTest.testObserverBadRunbs�����!�!�#�#��#�.��#�#�,��!�3�#��%��9�9�;��8�8�:��8�8�:��?�?�E�N�N�$]�_`�a�c�$�3�����)�*����3�q�6�1�����1�Q�4��7�L�)����3�q��t�A�w�<�!;�<��	%�3��s
�AD�
D)
rZr[r\rr"r�r
r�r�r]r^s@rr�r�5s#���$�'�
�>2�N�2�=rr�)�
__author__�
__copyright__�__license__rpr�rcrer��
server.mytimer�
server.ticketrr�server.failmanagerr�server.observerr	r
�server.utilsr�utilsr
�	dummyjailr�databasetestcaserrrr`r�r�rr�<module>rsj��.(�
�4�
���	�
����"�1�,�7� �%� �7�D%�$�D%�N@
�&�@
�D?=�%�?=r