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

�ogf�Z��V�dZdZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
ddlmZddl
mZddlmZmZd	d
lmZ	ddlmZej,Zd	dlmZmZej8j;ej8j=e�d
�Z d�Z!Gd�de�Z"y#e$rdZY�UwxYw)z"Copyright (c) 2013 Steven Hiscocks�GPL�N�)�
FileContainer�Filter)�MyTime)�
FailTicket)�Actions�Utils�)�	DummyJail)�database)�LogCaptureTestCase�logSys�filesc�b�tjjrtd�St|�S)N�:memory:)�unittest�F2B�	memory_db�
Fail2BanDb)�filenames �A/usr/lib/python3/dist-packages/fail2ban/tests/databasetestcase.py�
getFail2BanDbr0s%���L�L���	�J�	���8���c����eZdZ�fd�Zed��Zejd��Z�fd�Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z�xZS)�DatabaseTestc����tt|��t�t	j
d��d|_tjjstjdd�\}|_d|_y)zCall before every test case.NzEUnable to import fail2ban database module as sqlite is not available.�.db�	fail2ban_�:auto-create-in-memory:)�superr�setUprr�SkipTest�
dbFilenamerr�tempfile�mkstemp�_db)�self�_�	__class__s  �rr"zDatabaseTest.setUp8sd�����d�!�#���	�	�	��
���$�/�	���	�	� �(�(���<��1�d�o�
&�$�(rc��t|jt�r)|jdk(rt|j�|_|jS)Nr )�
isinstancer'�strrr$�r(s r�dbzDatabaseTest.dbDs5������#��4�8�8�/H�#H��D�O�O�,�4�8�	
���/rc�z�t|jt�r|jj�||_y�N)r,r'r�close)r(�values  rr/zDatabaseTest.dbIs%������*�%��8�8�>�>��
�$�(rc���tt|��t�y|j� tj|j�yy)zCall after every test case.N)r!r�tearDownrr$�os�remove)r(r*s �rr5zDatabaseTest.tearDownOs8�����d�$�&���	�	�_�_� ��9�9�T�_�_��!rc��|jjdk(rtjd��|j	|j
|jj�y)Nr�in :memory: database)r/rrr#�assertEqualr$r.s r�testGetFilenamezDatabaseTest.testGetFilenameXsD��	�W�W����#�	�	�	�1�	2�2����4�?�?�D�G�G�$4�$4�5rc�,�|j|jjd�d|j_|j|jjd�d|j_|j|jjd�y)Ni�Q�1y6mon15d5h30mi�_�z2y 12mon 30d 10h 60miP��)r:r/�purgeager.s r�testPurgeAgezDatabaseTest.testPurgeAge]sh�����4�7�7�#�#�U�+�%�$�'�'�����4�7�7�#�#�X�.�+�$�'�'�����4�7�7�#�#�Z�0rc�N�|jtjtd�y)Nz/this/path/should/not/exist)�assertRaises�sqlite3�OperationalErrorrr.s r�testCreateInvalidPathz"DatabaseTest.testCreateInvalidPathds�����
���
� �"rc�4�|jjdk(rtjd��|j	�t|j�|_|j|jj|jj�vd�y)Nrr9z3Jail not retained in Db after disconnect reconnect.)r/rrr#�testAddJailrr$�
assertTrue�jail�name�getJailNamesr.s r�testCreateAndReconnectz#DatabaseTest.testCreateAndReconnectjsn��	�W�W����#�	�	�	�1�	2�2������t���'�$�'��/�/��9�9�>�>�T�W�W�)�)�+�+�8�:rc���tjd�stjd��d|_|j
�t
jdd�\}|_dD�]#}|jd|z�tjtjjtd�|j
�tj|j
tj �}tj"||�tj$|�	t'|j
�|_|dk(r}|j)d	d
dd�
�|j+|jj-�t/dg��|j+t1|jj3��d�n{|j)dd
dd�
�|j+t1|jj-��d�|j+t1|jj3��d�|js���|jj4dk7s���tj6|jj8�d|_��&y#|jrK|jj4dk7r1tj6|jj8�d|_wwwxYw)Nzsqlite3 --versionzno sqlite3 commandrr)�6i�z)[test-repair], next phase - file-size: %d�database_v1.dbrMzRepair seems to be successfulzCheck integrityzDatabase updatedT)�all�/tmp/Fail2BanDb_pUlZJh.logrzRepair seems to be failedzNew database created.rr)r
�
executeCmdrr#r/r$r%r&�pruneLog�shutil�copyfiler6�path�join�TEST_FILES_DIR�open�O_RDWR�	ftruncater2r�assertLoggedr:�getLogPaths�set�lenrJ�_dbFilenamer7�_dbBackupFilename)r(r)�	truncSize�fs    r�testRepairDbzDatabaseTest.testRepairDbus#��	�	�	�-�	.�	�	�	�/�	0�0��$�'�	�_�_�� �(�(���<��1�d�o�!��i��=�=�<�y�H�I�	�?�?��G�G�L�L��!1�2�D�O�O�E�
�w�w�t����	�	�*�1��<�<��9���8�8�A�;������)�D�G��E��	���6��+���7�	���d�g�g�)�)�+�S�2N�1O�-P�Q�	���c�$�'�'�.�.�0�1�1�5�	���2��0�d��<�	���c�$�'�'�-�-�/�0�!�4�	���c�$�'�'�.�.�0�1�1�5��w�w�4�7�7�&�&�*�4��Y�Y�t�w�w�(�(�)��T�W�1��,�w�w�4�7�7�&�&�*�4��Y�Y�t�w�w�(�(�)��T�W�5�w�s�DJ�AKc�l�d|_	|j�tjdd�\}|_t	j
tjjtd�|j�t|j�|_|j|jj�tdg��|j|jj�tdg��tdddg�}|j|jj!�d	|�|j|jj#tj$�tj$�|j't(|jj"tj$d
z�|jj+dd�
�}|jt-|�d
�|j|d	j/�d�|jrD|jj0dk7r*t
j2|jj4�yyy#|jrD|jj0dk7r*t
j2|jj4�wwwxYw)NrrrNz"DummyJail #29162448 with 0 ticketsrP�	127.0.0.1gף��ծ�A�abc
rriW�Ri@�)�fromtime�correctBanTimer)r/r$r%r&rSrTr6rUrVrWrr:rJr]r\r�getBans�updateDb�__version__rA�NotImplementedError�getCurrentBansr^�
getBanTimer_r7r`)r(r)�ticket�ticketss    r�testUpdateDbzDatabaseTest.testUpdateDb�s����$�'�)�
�o�o��!�)�)�%��=��A�t��	�?�?��G�G�L�L��!1�2�D�O�O�E�
����
(�4�7����D�G�G�(�(�*�C�1U�0V�,W�X����D�G�G�'�'�)�3�0L�/M�+N�O��{�M�G�9�=�6����D�G�G�O�O�%�a�(�&�1����D�G�G�$�$�Z�%;�%;�<�j�>T�>T�U����(�$�'�'�*:�*:�J�<R�<R�UV�<V�W�
�W�W�
#�
#�Z��
#�
O�7����C��L�!�$����G�A�J�)�)�+�V�4�
�g�g�$�'�'�%�%��3��I�I�d�g�g�'�'�(�4�g��d�g�g�$�'�'�%�%��3��I�I�d�g�g�'�'�(�4�g�s
�HI!�!AJ3c�L�d|_|j�tjdd�\}|_t	j
tjjtd�|j�t|j�|_|j|jj�tdg��|j|jj�tdg��|jj�}|jt!|�d�t#ddgd	��}|j%d
�|j|d|�|j|dj'�d
�|j|jj)tj*�tj*�t-d��|_|jj1|j.d��}|jt!|�d�|j|dj3�d�|j5t6|jj(tj*dz�t
j8|jj:�y)Nrrzdatabase_v2.dbzpam-genericz/var/log/auth.logrz1.2.3.7if�~T)z�Dec  3 09:31:08 f2btest test:auth[27658]: pam_unix(test:auth): authentication failure; logname= uid=0 euid=0 tty=test ruser= rhost=1.2.3.7z�Dec  3 09:31:32 f2btest test:auth[27671]: pam_unix(test:auth): authentication failure; logname= uid=0 euid=0 tty=test ruser= rhost=1.2.3.7z�Dec  3 09:31:34 f2btest test:auth[27673]: pam_unix(test:auth): authentication failure; logname= uid=0 euid=0 tty=test ruser= rhost=1.2.3.7�rrz1.2.3.8�rI)rHrgiX)r/r$r%r&rSrTr6rUrVrWrr:rJr]r\rir^r�
setAttempt�getIDrjrkrrHrmrnrArlr7r`)r(r)�bansrorps     r�
testUpdateDb2zDatabaseTest.testUpdateDb2�s����$�'�	�_�_�� �(�(���<��1�d�o��/�/��7�7�<�<�� 0�1�4�?�?�D��t���'�$�'����4�7�7�'�'�)�3�
��+?�@����4�7�7�&�&�(�#�/B�.C�*D�E�	
�����	�$����3�t�9�a� ��i��.��&�
	���A�����4��7�F�#����4��7�=�=�?�I�.����4�7�7�#�#�J�$:�$:�;�Z�=S�=S�T��]�+�$�)��G�G�"�"��	�	�J�"�G�'����3�w�<��#����7�1�:�(�(�*�C�0����'����)9�)9�:�;Q�;Q�TU�;U�V��)�)�D�G�G�%�%�&rc���t�|_|jj|j�|j	|jj
|jj
d�vd�y)NTzJail not added to database)rrHr/�addJailrGrIrJr.s rrFzDatabaseTest.testAddJail�sM���k�$�)��'�'�/�/�$�)�)���/�/��9�9�>�>�T�W�W�)�)�$�/�/��!rc��|j�tjdd�\}}t|d�|_|j
j
|j|j�}|j|du�|j||j
j|j��tj|�y)Nz.log�Fail2BanDb_�utf-8)
rFr%r&r�
fileContainerr/�addLogrHrG�assertInr\r6r7)r(r)r�poss    r�_testAddLogzDatabaseTest._testAddLog�s�������� � ���7�+�!�X�$�X�w�7�$�������t�y�y�$�"4�"4�5�#��/�/�#��+���-�-��$�'�'�-�-�d�i�i�8�9��)�)�H�rc�z�|j�|jj�}t|d�}|j	d�|j�|jj�|jj
�|jj�|jj�}|j|dkD�|jj|j|j�t|d�|_|j|jj�d�|j|jj|j|j�|�t|d�}|j	d�|j�t|d�|_|j|jj�d�|j|jj|j|j�d�tj |�y)N�wz,Some text to write which will change md5sum
rr}z%Some different text to change md5sum
)r�r~�getFileNamerX�writer2�readline�getPosrGr/�	updateLogrHrr:rr6r7)r(r�file_�lastPoss    r�
testUpdateLogzDatabaseTest.testUpdateLog�s��������
�
�
+�
+�
-�(�
�x��
�%��+�+�=�>��+�+�-�������������������
���%�%�'�'��/�/�'�A�+���'�'���D�I�I�t�1�1�2�%�X�w�7�$�����4�%�%�,�,�.��2�����7�7�>�>�$�)�)�T�/�/�0�'�;��x��
�%��+�+�6�7��+�+�-�$�X�w�7�$�����4�%�%�,�,�.��2�����7�7�>�>�$�)�)�T�/�/�0�$�8��)�)�H�rc
�r�|j�|j|jj|jd�d�dD]l}|jj|jd|dt
|�z�|j|jj|jd�|��ny)Nzsystemd-journal)i/hYi/hYi/hY�TEST)rFr:r/�
getJournalPosrH�
updateJournalr-)r(�ts  r�testUpdateJournalzDatabaseTest.testUpdateJournal
s����������4�7�7�(�(����4E�F��M�/�L�a��7�7������$5�q�&��Q��-�H����D�G�G�)�)�$�)�)�5F�G��K�Lrc�R�|j�tdddg�}|jj|j|�|jj|j��}|j
t|�d�|jt|dt��y)Nrerrf�rHr)
rFrr/�addBanrHrir:r^rGr,)r(rorps   r�
testAddBanzDatabaseTest.testAddBansz�������k�1�w�i�0�&��'�'�.�.����F�#��G�G�O�O����O�+�'����3�w�<��#��/�/�
�g�a�j�*�%�'rc��|j�tddgd��tddgd��tddgd��tddgd��td	dd
dg�tddd
dg�td
dd
dg�g}|D](}|jj|j|��*|jd�|jj
|j��}|jd�|jt|�d�t|�D]�\}}tjd|||j��tjd||j��|j||j�|j��|jt||j��t|j�����|jd�t j"}	dt _|D](}|jj|j|��*|j%d�|jj
|j��}|j%d�|jt|�d�|t _|jd�|jj|jtd��|jj
|j��}|jt|�d�|jdd�y#|t _wxYw)Nrer)�user "test"�user "Ñâåòà"uuser "äöüß"�	127.0.0.2z	127.0.0.3)r�suser "�����"suser "äöüß"z	127.0.0.4)r�r�uuser "äöüß"z	127.0.0.5r�uunterminated Ïz	127.0.0.6z	127.0.0.7sunterminated �zjson dumps failedr�zjson loads failed�zreadtickets[%d]: %rz == tickets[%d]: %rz[test-phase 2] simulate errorszf2b-test::non-existing-encoding�z[test-phase 3] still operable?z	127.0.0.8�)rFrr/r�rH�assertNotLoggedrir:r^�	enumerate�	DefLogSys�debug�getDatarv�
getMatchesrRr
�
PREFER_ENCr[)r(rpro�readtickets�i�priorEncs      r�testAddBanInvalidEncodedz%DatabaseTest.testAddBanInvalidEncodeds��������{�A�x�y��{�A�x�y��{�A�z�{��{�A�h�i��{�A�
�/B�C�D��{�A�
�/B�C�D��{�A�
�/C�D�E�
�'��%�f��7�7�>�>�$�)�)�V�$�%����*�+������T�Y�Y��/�+����*�+����3�{�#�Q�'�
�W�%�P�i�a���?�?�(�!�[��^�-C�-C�-E�F��?�?�(�!�V�^�^�-=�>����K��N�(�(�*�F�L�L�N�;����C��A��1�1�3�4�c�&�:K�:K�:M�6N�O�	P��-�-�0�1�
�
 �
 �(�"�:�8���&�v��G�G�N�N�4�9�9�f�%�&����(�)������d�i�i��0�;����(�)����C��$�b�)�!�8���-�-�0�1��'�'�.�.����J�{�3�4������T�Y�Y��/�+����3�{�#�R�(����*�,?�@��"�8��s
�;BL5�5
Mc�$�|j�dD]9}td|zddg�}|jj|j|��;|jj|j��}|j
t|�d�|S)N)rrrsz
192.0.2.%drztest
r�rs)rFrr/r�rHrir:r^)r(r�rorps    r�
_testAdd3BanszDatabaseTest._testAdd3BansYs{�������%�a���q�(�1�x�j�9�6��7�7�>�>�$�)�)�V�$�%�
�G�G�O�O����O�+�'����3�w�<��#�	�.rc� �|j�}|jj|j|dj	��|jt
|jj|j���d�|jj|j|dj	�|dj	��|jt
|jj|j���d�y)Nrr�rr)r�r/�delBanrHrvr:r^ri)r(rps  r�
testDelBanzDatabaseTest.testDelBanbs������ �'��'�'�.�.����G�A�J�,�,�.�/����3�t�w�w���D�I�I��6�7��;��'�'�.�.����G�A�J�,�,�.���
�0@�0@�0B�C����3�t�w�w���D�I�I��6�7��;rc���|j�|jj|j�|j	t|jj
|j���d�y)Nr�r)r�r/r�rHr:r^rir.s r�
testFlushBanszDatabaseTest.testFlushBansksJ�������'�'�.�.��������3�t�w�w���D�I�I��6�7��;rc��|j�|jj|jt	dtj�dz
dg��|jj|jt	dtj�dz
dg��|jt|jj|jd���d�|jt|jj|jd���d	�|jt|jj|jd
���d�y)Nre�<rf�(�2)rH�bantimer�r���r)
rFr/r�rHrr�timer:r^rir.s r�testGetBansWithTimez DatabaseTest.testGetBansWithTimeqs��������'�'�.�.��9�9�j��f�k�k�m�b�&8�7�)�D�F��'�'�.�.��9�9�j��f�k�k�m�b�&8�7�)�D�F����3�t�w�w���D�I�I�b��A�B�A�F����3�t�w�w���D�I�I�b��A�B�A�F����3�t�w�w���D�I�I�b��A�B�A�Frc
�
�|j�d}dgtdg�d�dgtdg�d�dgtddg�d�dgtddg�d�g}|D�cgc]
}|d	d
��}}d}|D]a}|dz}td
tj�|z
|��}|jd�|jj|j|��c||j_	|jjd
�}|j|j�d
�|j|j�t|��|jt|j��|�|j|j�||d�td
tj�dz
|dtddg�i��}|jt|��|jj|j|�|jjd
�}|j|j�dt|�z�|jt|j��|�|j|j�||d�|jj!|jd
tj�dz
��}|j#|du�|j|j�t|��|jt|j��|�|j|j�||d�|jj!|jd
tj�dz
d��}|jt|j��d�|j|j�|dd	�|jj!|jd
tj�dz
d
��}|jt|j��d
�|j%gd��d
|j_	|jj|j|�|jj!|jd
tj�dz
��}|j#|du�|j|j�t|��|jt|j��d
�ycc}w)Nrrf�test)�matches�user�123
�ABC
�rootz1234
r�r�P�
re)�datarr��d)rg)rg�
maxmatchesrs)�1�2�3)rFr]rrr�rur/r�rH�
maxMatches�
getBansMergedr:rv�
getAttemptr^r�rmrG�
setMatches)r(r��failuresrb�matches2findr�ros       r�testGetBansMerged_MaxMatchesz)DatabaseTest.testGetBansMerged_MaxMatches}sA�������*��y�#�v�h�-�0��y�#�v�h�-�0��y�#�v�v�&6�"7�8��z�3���'7�#8�9�	�(�,4�4�a�!�I�,�q�/�4�,�4��!��%�a���7�1��{�F�K�K�M�A�$5�A�>�6�	���Q���7�7�>�>�$�)�)�V�$�	%�"�$�'�'���7�7� � ��-�&����6�<�<�>�;�/����6�$�$�&��H�
�6����3�v�(�(�*�+�Z�8����6�$�$�&��j�[�\�(B�C��k�6�;�;�=�2�#5�|�	��f�f�%�&�'�)�&����C��M�"��'�'�.�.����F�#��7�7� � ��-�&����6�$�$�&��C��M�(9�:����3�v�(�(�*�+�Z�8����6�$�$�&��j�[�\�(B�C��7�7�!�!�$�)�)�[�6�;�;�=�QT�CT�!�U�&��/�/�&��$�%����6�$�$�&��H�
�6����3�v�(�(�*�+�Z�8����6�$�$�&��j�[�\�(B�C��7�7�!�!�$�)�)�[�6�;�;�=�QT�CT��"��&����3�v�(�(�*�+�Q�/����6�$�$�&����I�(>�?��7�7�!�!�$�)�)�[�6�;�;�=�QT�CT��"��&����3�v�(�(�*�+�Q�/����M�"��$�'�'���'�'�.�.����F�#��7�7�!�!�$�)�)�[�6�;�;�=�QT�CT�!�U�&��/�/�&��$�%����6�$�$�&��H�
�6����3�v�(�(�*�+�Q�/��]5s�T>c	���|j�td��}|jj|�t	dtj�dz
dg�}|jd�|jj|j|�t	dtj�dz
dg�}|jd	�|jj|j|�t	d
tj�d	z
dg�}|jd�|jj|j|�t	dtj�dz
dg�}|jd�|jj||�|jjd�}|j|j�d�|j|j�d�|j|j�gd
��|jjd|j��}|j|j�d�|j|j�d�|j|j�ddg�|jt|�t|jjd|j����t	d
tj�d	z
dg�}|jd�|jj|j|�|jt|�t|jjd|j����t	dtj�dz
dg�}|jd�|jj|j|�|j!t|�t|jjd|j����|jj�}|jt#|�d�|j%t't)d�|D���|D�cgc]}|j���c}�|jj|��}|jt#|�d�|jjd��}|jt#|�d�|jjd��}|jt#|�d�|jjd��}|jt#|�d�|jjd��}|jt#|�d�|jj+|j��}|jt#|�d�|jj+dd��}|j|j�d�|jj+|jdtj���}|jt#|�d�|jj+|jdtj�tj,d�z��}|jt#|�d�|jj+|jdtj�tj,d�z��}|jt#|�d�|j/d�|jj|j|�|jj+|jdtj�tj,d�z��}|jt#|�d�|j1d|jj3�z�|jj4j/d�|jj+|jdtj�tj,d�z��}|jt#|�d�|j|dj7�d�ycc}w)NzDummyJail-2rtrer�rfr��r�r�r�r��F)rfr�r�r�rc3�<K�|]}|j����y�wr1)rv)�.0ros  r�	<genexpr>z1DatabaseTest.testGetBansMerged.<locals>.<genexpr>�s����1�v�F�L�L�N�1�s�r�)r�r��rr�)rH�ip)rH�
forbantimerg�1yearz(ignore ticket (with new max ban-time %r))rFrr/rzrrr�rur�rHr�r:rvr�r��id�assertNotEqualr^�assertSortedEqual�listr]rm�str2seconds�
setBanTimer[�
getMaxBanTime�actionsrn)r(�jail2ro�	newTicketrps     r�testGetBansMergedzDatabaseTest.testGetBansMerged�s�������
��
'�%��'�'�/�/�%���k�6�;�;�=�2�#5��y�A�&����B���'�'�.�.����F�#��k�6�;�;�=�2�#5��y�A�&����B���'�'�.�.����F�#��k�6�;�;�=�2�#5��y�A�&����B���'�'�.�.����F�#��k�6�;�;�=�2�#5��y�A�&����B���'�'�.�.�����7�7� � ��-�&����6�<�<�>�;�/����6�$�$�&��+����6�$�$�&�(C�D��7�7� � ��4�9�9� �=�&����6�<�<�>�;�/����6�$�$�&��+����6�$�$�&��'�(:�;�����f�:��d�g�g���K�d�i�i��8�9�;���f�k�k�m�b�&8�7�)�D�)����B���'�'�.�.����I�&�����f�:��d�g�g���K�d�i�i��8�9�;���f�k�k�m�b�&8�7�)�D�)����B���'�'�.�.����I�&�����f�:��d�g�g���K�d�i�i��8�9�;�
�G�G�!�!�#�'����3�w�<��#������1��1�1�2�!(�)�v�F�L�L�N�)�+�
�G�G�!�!�u�!�-�'����3�w�<��#��G�G�!�!�"�!�-�'����3�w�<��#��G�G�!�!�"�!�-�'����3�w�<��#��G�G�!�!�!�!�,�'����3�w�<��#�
�G�G�!�!�"�!�-�'����3�w�<��#��G�G�"�"��	�	�"�2�'����3�w�<��#��7�7�!�!�t��!�<�&����6�<�<�>�;�/�
�G�G�"�"��	�	�b��K�K�M�
#�
�'����3�w�<��#��G�G�"�"��	�	�b��K�K�M�F�.�.�w�7�7�
#�
9�'����3�w�<��#��G�G�"�"��	�	�b��K�K�M�F�.�.�w�7�7�
#�
9�'����3�w�<��#����B���'�'�.�.����F�#��G�G�"�"��	�	�b��K�K�M�F�.�.�w�7�7�
#�
9�'����3�w�<��#����>����AX�AX�AZ�Z�[��)�)�����r�"��G�G�"�"��	�	�b��K�K�M�F�.�.�w�7�7�
#�
9�'����3�w�<��#����7�1�:�(�(�*�B�/��_*s�	c%
c��|j�|j|j_|jj	|j�|jj
}|j
dtjjtd�i�|jjd�t|j�x|j_}|jj!d�t#d�}|j%d�|j'ddg�|jj)|�|j+�|j-dd	z�|j-d
dz�y)N�action_checkainfozaction.d/action_checkainfo.pyr�r�z1.2.3.4r�r�zban ainfo %s, %s, %s, %s)TTTTzjail info %d, %d, %d, %d)r�rr�)rFr/rHr
rzr��addr6rUrVrW�
banManager�setBanTotalr�
_Jail__filter�failManager�setFailTotalrrur��
putFailTicket�_Actions__checkBanr[)r(r��fltros    r�testActionWithDBzDatabaseTest.testActionWithDBs�������w�w�$�)�)���'�'�/�/�$�)�)���I�I���'�	�+�+���7�7�<�<�� ?�@���
��� � ��$�"(����"3�3�$�)�)��C��/�/���r�"��i� �&����A�����V�V�$�%��)�)���&�!�	�������.�1I�I�J����.��?�@rc�$�|j�|jj|j�|jj	�}|jt
|�dk(xr|jj|�|jj	d��}|jt
|�dk(xr|jj|�|jj	d��}|jt
|�dk(�|jj|j�|jj	�}|jt
|�dk(xr|jj|�|jj	d��}|jt
|�dk(xr|jj|�|jj	d��}|jt
|�dk(�y)NrF)�enabledTr)
rFr/�delJailrHrJr�r^rIrGrz)r(�jailss  r�testDelAndAddJailzDatabaseTest.testDelAndAddJail4sj�������'�'�/�/�$�)�)��
�'�'�
�
�
 �%��-�-��E�
�a��2�D�I�I�N�N�E�:�
�'�'�
�
�u�
�
-�%��-�-��E�
�a��2�D�I�I�N�N�E�:�
�'�'�
�
�t�
�
,�%��/�/�#�e�*��/�"��'�'�/�/�$�)�)��
�'�'�
�
�
 �%��-�-��E�
�a��2�D�I�I�N�N�E�:�
�'�'�
�
�t�
�
,�%��-�-��E�
�a��2�D�I�I�N�N�E�:�
�'�'�
�
�u�
�
-�%��/�/�#�e�*��/�"rc�.�|j�|jj�|jt	|jj��d�|jj
|j�|jj�|jt	|jj��d�|j�|jj
|j�|jj�|jt	|jj��d�|jt	|jj|j���d�|j�|jj|jtdtj�dg��|jj
|j�|jj�|jt	|jj��d�|jt	|jj|j���d�y)Nrrr�rerf)rFr/�purger:r^rJr�rHr�rir�rrr�r.s r�	testPurgezDatabaseTest.testPurgeGs��������'�'�-�-�/����3�t�w�w�+�+�-�.��2��'�'�/�/�$�)�)���'�'�-�-�/����3�t�w�w�+�+�-�.��2��/�/���'�'�/�/�$�)�)���'�'�-�-�/����3�t�w�w�+�+�-�.��2����3�t�w�w���D�I�I��6�7��;������'�'�.�.��9�9�j��f�k�k�m�g�Y�?�A��'�'�/�/�$�)�)���'�'�-�-�/����3�t�w�w�+�+�-�.��2����3�t�w�w���D�I�I��6�7��;r)�__name__�
__module__�__qualname__r"�propertyr/�setterr5r;r?rDrKrcrqrxrFr�r�r�r�r�r�r�r�r�r�r�r�r�r��
__classcell__)r*s@rrr6s����
'������)�)����
�6�
1�"�	:�!�F)�.'�B!�
�%�NL�'�:A�x�<�<�
G�70�rg1�RA�*#�&<rr)#�
__copyright__�__license__r6�sysrr%rBrS�
server.filterrr�
server.mytimer�
server.ticketr�server.actionsr	r
�	dummyjailr�serverr
r�ImportError�utilsrrr�rUrV�dirname�__file__rWrr�rr�<module>rs���,5�
���	�
����
�1�"�&�+� ����!�!��;������b�g�g�o�o�h�7��A���h<�%�h<�������s�B�B(�'B(