
    Bd#                         d Z dZdZddlZddlmZ ddlmZmZ ddl	m
Z
 dd	lmZ  G d
 dej                  Z G d dej                  ZdS )zCyril Jaquierz Copyright (c) 2004 Cyril JaquierGPL    N   )failmanager)FailManagerFailManagerEmpty)IPAddr)
FailTicketc                   j     e Zd Z fdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Z xZS )
AddFailurec                     t          t          |                                            d| _        t	                      | _        dS )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   zAddFailure.setUp%   s8    
D!!!$,"}}$    c                 V    t          t          |                                            dS )zCall after every test case.N)r   r   tearDownr   s    r   r   zAddFailure.tearDown+   s%    
D""$$$$$r   c                     ddgddgddgddgddgddgddgddgddgddgddgddgdd	gg| _         | j         D ]6}| j                            t          |d
         |d                              7d S )N193.168.0.128g  ;fAz87.142.124.10100.100.10.10g    eAg   eAg   fAg   gA   hAr      )r   r   
addFailurer	   )r   is     r   _addDefItemszAddFailure._addDefItems/   s    "L1
<	(
<	(
<	(
<	(
<	(
<	(
<	(
<	(
<	(
<	(
<	(
<	(*$, < 9 9a  AaD!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   testFailManagerAddzAddFailure.testFailManagerAdd@   s    4%**,,a0004%2244b999!!!$$$4%2244a888!!"%%%%%r   c                    d}|| j         _        g d}d}|D ]K}|dz  }t          dd|z
  |g          }|                    d           | j                             |           L| j         j        }|                     t          |          d           |d         }|                     |                                t          |                     |                     t          |	                                          |           |                     |	                                |t          |          |z
  d                     t          dd|          }|                    t          |                     | j                             |           | j         j        }|                     t          |          d           |d         }|                     |                                dt          |          z             |                     t          |	                                          |           |                     |	                                |t          |          |z
  d                     | j                             |           | j         j        }|                     t          |          d           |d         }|                     |                                dt          |          z  dz              |                     t          |	                                          |           |                     |	                                |t          |          |z
  d                     d	| j         _        | j                             |           | j         j        }|d         }|                     t          |	                                          d	           |
                    d            d S )
Nr   )zabc
z123
zABC
z1234
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71{JNQC886	Q  (((("9+3{##Q'''{#&6$$&&H6663v((**++Z8886$$&&X1K1L1L(MNNNk?H==&CMM"""'''"9+3{##Q'''{#&6$$&&CMM(9:::3v((**++Z8886$$&&X1K1L1L(MNNN'''"9+3{##Q'''{#&6$$&&CMM(9A(=>>>3v((**++Z8886$$&&X1K1L1L(MNNN"#$'''"9+{#&3v((**++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2C888###4%0022B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   testDelzAddFailure.testDel   sm    0000004%**,,a00000r   c                     |                                   d}| j                            |           |                     | j                                        d           d S )Ng  5fAr   r    r   cleanupr$   r%   r   	timestamps     r   testCleanupOKzAddFailure.testCleanupOK   [    )Y'''4%**,,a00000r   c                     |                                   d}| j                            |           |                     | j                                        d           d S )Ng  9fAr   rA   rC   s     r   testCleanupNOKzAddFailure.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   	testbanOKzAddFailure.testbanOK   s^     #####%%&6<<>>?333//*V\\^^c6];;<<< 6{{*V+bd d d bd d d v:..6>>##\222v;;bd d d d dr   c                     |                                   | j                            d           |                     t          | j        j                   d S )Nr,   )r    r   rK   assertRaisesr   rL   r(   s    r   
testbanNOKzAddFailure.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   
testWindowzAddFailure.testWindow   s    ##%%&fllnno666##%%&fllnno666$d&8&>?????r   c                 \   | j         j        }t                      }|j        }|                     t	          |          t	          |          k               d }|                     |                    dd                     |                     |                                           t          d|j                  D ])}|                     |                                           *d|_	        |                     |                                           d|_	        t          d|j                  D ])}|                     |                                           *|                     |                    dd                     |                     |                    dd                     d S )NTr   i  F)
r   _FailManager__bgSvcr   rN   idservicerR   range_BgService__threshold_BgService__serviceTime)r   bgSvcfailManager2ndbgSvc2r   s        r   testBgServicezAddFailure.testBgService   sj   


0%==.-&//"U))r&zz)***&//%--d++,,,5==??###E/00 % %aEMMOO$$$$"-%//%--//""""-%E/00 % %aEMMOO$$$$//%--t,,---5==--.....r   )__name__
__module____qualname__r   r   r    r)   r8   r<   r?   rE   rH   rW   rZ   r]   rh   __classcell__r   s   @r   r   r   #   s        % % % % %% % % % %9 9 9"& & &0 0 0d% % %1 1 11 1 11 1 1d d d6@ @ @
@ @ @/ / / / / / /r   r   c                   D     e Zd Z fdZ fdZed             Zd Z xZS )FailmanagerComplexc                     t          t          |                                            t                      | _        t
          j        | _        dt
          _        dS )r   r"   N)r   ro   r   r    _FailmanagerComplex__failManagerr   logLevel_FailmanagerComplex__saved_llr   s    r   r   zFailmanagerComplex.setUp   sD    D!!'')))"}}$($/+r   c                 x    t          t          |                                            | j        t          _        d S N)r   ro   r   rs   r   rr   r   s    r   r   zFailmanagerComplex.tearDown   s0    D!!**,,,+r   c              #      K    G d dt                     }d}g d}|| k     rSt          ddd          D ]%}||         dk     r||xx         dz  cc<    nd||<   &| ||          fV  |dz  }|| k     Qd S d S )	Nc                   &    e Zd Zd Zd Zd Zd ZdS ))FailmanagerComplex._ip_range.<locals>._ipc                 R    d                     t          t          |                     S )N.)joinmaprP   r(   s    r   __str__z1FailmanagerComplex._ip_range.<locals>._ip.__str__   s    88CTNN###r   c                      t          |           S ru   rP   r(   s    r   __repr__z2FailmanagerComplex._ip_range.<locals>._ip.__repr__       t99r   c                      t          |           S ru   r   r(   s    r   __key__z1FailmanagerComplex._ip_range.<locals>._ip.__key__   r   r   c                 t    t          | d         dz  | d         dz  z  | d         dz  z  | d         z            S )Nr      r      r      r"   )intr(   s    r   __hash__z2FailmanagerComplex._ip_range.<locals>._ip.__hash__   s;    aBaB.aA=QGHHHr   N)ri   rj   rk   r}   r   r   r    r   r   _iprx      sU        $ $ $    I I I I Ir   r   r   )   r   r   r   r"      r   )listrb   )maxipsr   r   cns        r   	_ip_rangezFailmanagerComplex._ip_range   s      	I 	I 	I 	I 	ID 	I 	I 	I !kk!	F

!AbMM  qtczzqTTTQYTTT
UAaDD
SSVV61 	
F





r   c                    |                      t          j        j        sdnd          D ]\  }}|dk    r$|                     t          |          d           /|dk    r$|                     t          |          d           Y|dk    r$|                     t          |          d           |dk    r$|                     t          |          d	           |d
k    r#|                     t          |          d           d S )Ni   i     z127.0.0.255r   z	127.0.1.0z127.0.3.233i  z127.0.255.255i  z	127.1.0.0)r   unittestF2Bfastr$   rP   )r   r   ips      r   testCheckIPGeneratorz'FailmanagerComplex.testCheckIPGenerator   s    ~~8<+<Fee$GG 
+ 
+ea3hhSWWm,,,,	SSWWk****	T		SWWm,,,,	U

SWWo....	U

SWWk***
+ 
+r   )	ri   rj   rk   r   r   staticmethodr   r   rl   rm   s   @r   ro   ro      s{            ) ) ) ) )
 
 
 ,
,+ + + + + + +r   ro   )
__author____copyright____license__r   serverr   server.failmanagerr   r   server.ipdnsr   server.ticketr	   TestCaser   ro   r   r   r   <module>r      s   . 
2              > > > > > > > > ! ! ! ! ! ! & & & & & &n/ n/ n/ n/ n/" n/ n/ n/b1+ 1+ 1+ 1+ 1+* 1+ 1+ 1+ 1+ 1+r   