
    ogf#                         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y)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                 V    t         t        |           d| _        t	               | _        y)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%   s!    
D!$,"}$    c                 *    t         t        |           y)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 ]-  }| j                  j                  t        |d
   |d                / y )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
<	(
<	(
<	(
<	(
<	(
<	(
<	(
<	(
<	(
<	(
<	(
<	(*$, << 9a  AaD!A$!789r   c                    | j                          | j                  | j                  j                         d       | j                  | j                  j	                         d       | j                  j                  d       | j                  | j                  j	                         d       | j                  j                  d       y )N      r   )r    assertEqualr   sizegetFailTotalsetFailTotalr   s    r   testFailManagerAddzAddFailure.testFailManagerAdd@   s    4%%**,a04%%224b9!!!$4%%224a8!!"%r   c                    d}|| j                   _        g d}d}|D ]D  }|dz  }t        dd|z
  |g      }|j                  d       | j                   j	                  |       F | j                   j
                  }| j                  t        |      d       |d   }| j                  |j                         t        |             | j                  t        |j                               |       | j                  |j                         |t        |      |z
  d         t        dd|      }|j                  t        |             | j                   j	                  |       | j                   j
                  }| j                  t        |      d       |d   }| j                  |j                         dt        |      z         | j                  t        |j                               |       | j                  |j                         |t        |      |z
  d         | j                   j	                  |       | j                   j
                  }| j                  t        |      d       |d   }| j                  |j                         dt        |      z  dz          | j                  t        |j                               |       | j                  |j                         |t        |      |z
  d         d	| j                   _        | j                   j	                  |       | j                   j
                  }|d   }| j                  t        |j                               d	       |j                  d        y )
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(! )a71{JNQC86	Q  (	) ""99+3{#Q'{#&6$$&H63v((*+Z86$$&X1K1L(MNk?H=&CM"'""99+3{#Q'{#&6$$&CM(9:3v((*+Z86$$&X1K1L(MN'""99+3{#Q'{#&6$$&CM(9A(=>3v((*+Z86$$&X1K1L(MN"#$'""99+{#&3v((*+Q/Dr   c                 8   | j                          | j                  | j                  j                         d       | j                  j	                  d       | j                  | j                  j                         d       | j                  j	                  d       y )NiX  r#   )r    r$   r   
getMaxTime
setMaxTimer(   s    r   testFailManagerMaxTimez!AddFailure.testFailManagerMaxTimez   st    4%%002C8#4%%002B7$r   c                     | j                          | j                  j                  d       | j                  j                  d       | j                  | j                  j	                         d       y )Nr   z111.111.1.111r   )r    r   
delFailurer$   r%   r(   s    r   testDelzAddFailure.testDel   sU    004%%**,a0r   c                     | j                          d}| j                  j                  |       | j                  | j                  j	                         d       y )Ng  5fAr   r    r   cleanupr$   r%   r   	timestamps     r   testCleanupOKzAddFailure.testCleanupOK   F    )Y'4%%**,a0r   c                     | j                          d}| j                  j                  |       | j                  | j                  j	                         d       y )Ng  9fAr   rA   rC   s     r   testCleanupNOKzAddFailure.testCleanupNOK   rF   r   c                 d   | j                          | j                  j                  d       | j                  j                         }| j	                  |j                         d       | j                  t        |j                         t        t        f             t        |      }t        |      }| j	                  |d       | j	                  |d       | j                  |        |j                  d       | j	                  |j                         d       | j	                  t        |      d       y )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//*V\\^c6];< 6{*V+bd bd v:..6>>#\2v;bdr   c                     | j                          | j                  j                  d       | j                  t        | j                  j
                         y )Nr,   )r    r   rK   assertRaisesr   rL   r(   s    r   
testbanNOKzAddFailure.testbanNOK   s?      $$d&8&8&>&>?r   c                 `   | j                          | j                  j                         }| j                  |j	                         d       | j                  j                         }| j                  |j	                         d       | j                  t        | j                  j                         y )Nr   )r    r   rL   assertNotEqualrM   rY   r   )r   r6   s     r   
testWindowzAddFailure.testWindow   s    ##%&fllno6##%&fllno6$d&8&8&>&>?r   c                    | j                   j                  }t               }|j                  }| j                  t	        |      t	        |      k(         d }| j                  |j                  dd             | j                  |j                                t        d|j                        D ]!  }| j                  |j                                # d|_	        | j                  |j                                d|_	        t        d|j                        D ]!  }| j                  |j                                # | j                  |j                  dd             | j                  |j                  dd             y )NTr   i  F)
r   _FailManager__bgSvcr   rN   idservicerR   range_BgService__threshold_BgService__serviceTime)r   bgSvcfailManager2ndbgSvc2r   s        r   testBgServicezAddFailure.testBgService   s"   



0
0%=.--&//"U)r&z)*&//%--d+,5==?#E//0 %aEMMO$% #.%//%--/""-%E//0 %aEMMO$%//%--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   #   sH    %%9"&0d%111d6@
@/r   r   c                   >     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
        _        y)r   r"   N)r   ro   r   r    _FailmanagerComplex__failManagerr   logLevel_FailmanagerComplex__saved_llr   s    r   r   zFailmanagerComplex.setUp   s0    D')"}$(($/+r   c                 T    t         t        |           | j                  t        _        y N)r   ro   r   rs   r   rr   r   s    r   r   zFailmanagerComplex.tearDown   s    D*,+r   c              #      K    G d dt               }d}g d}|| k  rFt        ddd      D ]  }||   dk  r||xx   dz  cc<    nd||<     | ||      f |dz  }|| k  rEy y w)	Nc                   $    e Zd Zd Zd Zd Zd Zy))FailmanagerComplex._ip_range.<locals>._ipc                 @    dj                  t        t        |             S )N.)joinmaprP   r(   s    r   __str__z1FailmanagerComplex._ip_range.<locals>._ip.__str__   s    88CTN##r   c                     t        |       S ru   rP   r(   s    r   __repr__z2FailmanagerComplex._ip_range.<locals>._ip.__repr__       t9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__   s8    aBaB.aA=QGHHr   N)ri   rj   rk   r}   r   r   r    r   r   _iprx      s    $Ir   r   r   )   r   r   r   r"      r   )listrb   )maxipsr   r   cns        r   	_ip_rangezFailmanagerComplex._ip_range   s     	ID 	I !!	F
!AbM qtczqTQYT
AaD	
 SV61 	
F
s   AA$"A$c                    | j                  t        j                  j                  sdnd      D ]  \  }}|dk(  r| j	                  t        |      d       '|dk(  r| j	                  t        |      d       H|dk(  r| j	                  t        |      d       i|dk(  r| j	                  t        |      d	       |d
k(  s| j	                  t        |      d        y )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<<+<+<e$G 
+ea3hSWm,	SSWk*	T	SWm,	U
SWo.	U
SWk*
+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      sL   . 
2    > ! &n/"" n/b1+** 1+r   