�
�Bd
# � � � d Z dZdZddlZddlmZ ddlmZmZ ddl m
Z
dd lmZ G d
� dej
� � Z G d� d
ej
� � ZdS )z
Cyril Jaquierz Copyright (c) 2004 Cyril Jaquier�GPL� N� )�failmanager)�FailManager�FailManagerEmpty)�IPAddr)�
FailTicketc �j � � e Zd Z� fd�Z� fd�Zd� Zd� Zd� Zd� Zd� Z d� Z
d � Zd
� Zd� Z
d� Zd
� Z� xZS )�
AddFailurec � �� t t | � � � � � d| _ t � � | _ dS )�Call before every test case.N)�superr �setUp�_AddFailure__itemsr �_AddFailure__failManager��self� __class__s ��D/usr/lib/python3/dist-packages/fail2ban/tests/failmanagertestcase.pyr zAddFailure.setUp% s8 �� ��
�D�����!�!�!��$�,�"�}�}�$���� c �V �� t t | � � � � � dS )zCall after every test case.N)r r �tearDownr s �r r zAddFailure.tearDown+ s% �� ��
�D���"�"�$�$�$�$�$r c �� � ddgddgddgddgddgddgddgddgddgddgddgddgdd gg
| _ | j D ]6}| j � t |d
|d � � � � �7d S )N�
193.168.0.128g �;f�Az
87.142.124.10�
100.100.10.10g e��Ag �e��Ag �f��Ag �g��A� �h��Ar � )r r �
addFailurer )r �is r �_addDefItemszAddFailure._addDefItems/ s� � �"�L�1�
�<� (�
�<� (�
�<� (�
�<� (�
�<� (�
�<� (�
�<� (�
�<� (�
�<� (�
�<� (�
�<� (�
�<� (�*�$�,� �<� 9� 9�a��� � ��A�a�D�!�A�$�!7�!7�8�8�8�8�9� 9r c � � | � � � | � | j � � � d� � | � | j � � � d� � | j � d� � | � | j � � � d� � | j � d� � d S )N� �
r )r �assertEqualr �size�getFailTotal�setFailTotal�r s r �testFailManagerAddzAddFailure.testFailManagerAdd@ s� � ����������4�%�*�*�,�,�a�0�0�0����4�%�2�2�4�4�b�9�9�9���!�!�!�$�$�$����4�%�2�2�4�4�a�8�8�8���!�!�"�%�%�%�%�%r c � � d}|| j _ g d�}d}|D ]K}|dz }t dd|z
|g� � }|� d� � | j � |� � �L| j j }| � t |� � d� � |d }| � |� � � t |� � � � | � t |� � � � � |� � | � |� � � |t |� � |z
d � � � t dd|� � }|� t |� � � � | j � |� � | j j }| � t |� � d� � |d }| � |� � � dt |� � z � � | � t |� � � � � |� � | � |� � � |t |� � |z
d � � � | j � |� � | j j }| � t |� � d� � |d }| � |� � � dt |� � z dz � � | � t |� � � � � |� � | � |� � � |t |� � |z
d � � � d | j _ | j � |� � | j j }|d }| � t |� � � � � d � � |�
d � � d S )
Nr )zabc
z123
zABC
z1234
�P �
z 127.0.0.1i�њ;r i�њ;r )r �
maxMatchesr �
setAttemptr �_FailManager__failListr$ �len�
getAttempt�
getMatches�
setMatches)r r- �failuresr �f�ticket�manFailLists r �testFailManagerAdd_MaxMatchesz(AddFailure.testFailManagerAdd_MaxMatchesH s� � ��*�",�$���
2�
2�
2�(��!�� )� )�a���7�1��{�J��N�Q�C�8�8�6� ���Q������ � ��(�(�(�(��"�9�+����3�{�#�#�Q�'�'�'��{�#�&����6�$�$�&�&��H�
�
�6�6�6����3�v�(�(�*�*�+�+�Z�8�8�8����6�$�$�&�&���X����1K�1L�1L�(M�N�N�N��k�?�H�=�=�&����C��M�M�"�"�"������'�'�'��"�9�+����3�{�#�#�Q�'�'�'��{�#�&����6�$�$�&�&��C��M�M�(9�:�:�:����3�v�(�(�*�*�+�+�Z�8�8�8����6�$�$�&�&���X����1K�1L�1L�(M�N�N�N������'�'�'��"�9�+����3�{�#�#�Q�'�'�'��{�#�&����6�$�$�&�&��C��M�M�(9�A�(=�>�>�>����3�v�(�(�*�*�+�+�Z�8�8�8����6�$�$�&�&���X����1K�1L�1L�(M�N�N�N�"#�$��������'�'�'��"�9�+��{�#�&����3�v�(�(�*�*�+�+�Q�/�/�/����D�����r c �J � | � � � | � | j � � � d� � | j � d� � | � | j � � � d� � | j � d� � d S )NiX r# )r r$ r �
getMaxTime�
setMaxTimer( s r �testFailManagerMaxTimez!AddFailure.testFailManagerMaxTimez s� � ����������4�%�0�0�2�2�C�8�8�8������#�#�#����4�%�0�0�2�2�B�7�7�7������$�$�$�$�$r c �� � | � � � | j � d� � | j � d� � | � | j � � � d� � d S )Nr z
111.111.1.111r )r r �
delFailurer$ r% r( s r �testDelzAddFailure.testDel� sm � ������������0�0�0������0�0�0����4�%�*�*�,�,�a�0�0�0�0�0r c � � | � � � d}| j � |� � | � | j � � � d� � d S )Ng �5f�Ar �r r �cleanupr$ r% �r � timestamps r �
testCleanupOKzAddFailure.testCleanupOK� �[ � ��������)�����Y�'�'�'����4�%�*�*�,�,�a�0�0�0�0�0r c � � | � � � d}| j � |� � | � | j � � � d� � d S )Ng �9f�Ar rA rC s r �testCleanupNOKzAddFailure.testCleanupNOK� rF r c �� � | � � � | j � d� � | j � � � }| � |� � � d� � | � t |� � � t t f� � � � t |� � }t |� � }| � |d� � | � |d� � | � | � � |� d� � | � |�
� � d� � | � t |� � d� � d S )N� r z]FailTicket: ip=193.168.0.128 time=1167605999.0 bantime=None bancount=0 #attempts=5 matches=[]r z]FailTicket: ip=193.168.0.128 time=1000002000.0 bantime=None bancount=0 #attempts=5 matches=[])r r �setMaxRetry�toBanr$ �getID�
assertTrue�
isinstance�strr �repr�assertFalse�setTime�getTime)r r6 �
ticket_str�ticket_reprs r � testbanOKzAddFailure.testbanOK� s^ � ��������� � ��#�#�#���#�#�%�%�&����6�<�<�>�>�?�3�3�3��/�/�*�V�\�\�^�^�c�6�]�;�;�<�<�<� �6�{�{�*��V���+����
�b�d� d� d� ����b�d� d� d� ���v�:�����.�.��������6�>�>�#�#�\�2�2�2�����v�;�;�b�d� d� d� d� dr c � � | � � � | j � d� � | � t | j j � � d S )Nr, )r r rK �assertRaisesr rL r( s r �
testbanNOKzAddFailure.testbanNOK� sN � ��������� � ��$�$�$����$�d�&8�&>�?�?�?�?�?r c �| � | � � � | j � � � }| � |� � � d� � | j � � � }| � |� � � d� � | � t | j j � � d S )Nr )r r rL �assertNotEqualrM rY r )r r6 s r �
testWindowzAddFailure.testWindow� s� � ���������#�#�%�%�&����f�l�l�n�n�o�6�6�6���#�#�%�%�&����f�l�l�n�n�o�6�6�6����$�d�&8�&>�?�?�?�?�?r c �\ � | j j }t � � }|j }| � t |� � t |� � k � � d }| � |� dd� � � � | � |� � � � � t d|j � � D ])}| � |� � � � � �*d|_ | � |� � � � � d|_ t d|j � � D ])}| � |� � � � � �*| � |� dd� � � � | � |� dd� � � � d S )NTr i �F)
r �_FailManager__bgSvcr rN �id�servicerR �range�_BgService__threshold�_BgService__serviceTime)r �bgSvc�failManager2nd�bgSvc2r s r �
testBgServicezAddFailure.testBgService� sj � �
�
�
0�%��=�=�.��-�&��/�/�"�U�)�)�r�&�z�z�)�*�*�*��&��/�/�%�-�-��d�+�+�,�,�,����5�=�=�?�?�#�#�#���E�/�0�0� %� %�a����E�M�M�O�O�$�$�$�$�"-�%���/�/�%�-�-�/�/�"�"�"�"-�%����E�/�0�0� %� %�a����E�M�M�O�O�$�$�$�$��/�/�%�-�-��t�,�,�-�-�-����5�=�=���-�-�.�.�.�.�.r )�__name__�
__module__�__qualname__r r r r) r8 r< |