
    =*f#                         S r SrSrSSKrSSKJr  SSKJrJr  SSK	J
r
  SS	KJr   " S
 S\R                  5      r " S S\R                  5      rg)zCyril Jaquierz Copyright (c) 2004 Cyril JaquierGPL    N   )failmanager)FailManagerFailManagerEmpty)IPAddr)
FailTicketc                   v   ^  \ rS rSrU 4S jrU 4S jrS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrU =r$ )
AddFailure#   c                 V   > [         [        U ]  5         SU l        [	        5       U l        g)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   AddFailure.setUp%   s!    
D!$,"}$    c                 *   > [         [        U ]  5         g)zCall after every test case.N)r   r   tearDownr   s    r   r   AddFailure.tearDown+   s    
D"$r   c                     SS/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS	//U l         U R                    H.  nU R                  R                  [        US
   US   5      5        M0     g )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   _addDefItemsAddFailure._addDefItems/   s    "L1
<	(
<	(
<	(
<	(
<	(
<	(
<	(
<	(
<	(
<	(
<	(
<	(*$, <<a  AaD!A$!78 r   c                    U R                  5         U R                  U R                  R                  5       S5        U R                  U R                  R	                  5       S5        U R                  R                  S5        U R                  U R                  R	                  5       S5        U R                  R                  S5        g )N      r   )r#   assertEqualr   sizegetFailTotalsetFailTotalr   s    r   testFailManagerAddAddFailure.testFailManagerAdd@   s    4%%**,a04%%224b9!!!$4%%224a8!!"%r   c                    SnXR                   l        / SQnSnU HE  nUS-  n[        SSU-
  U/5      nUR                  S5        U R                   R	                  U5        MG     U R                   R
                  nU R                  [        U5      S5        US   nU R                  UR                  5       [        U5      5        U R                  [        UR                  5       5      U5        U R                  UR                  5       U[        U5      U-
  S  5        [        SSU5      nUR                  [        U5      5        U R                   R	                  U5        U R                   R
                  nU R                  [        U5      S5        US   nU R                  UR                  5       S[        U5      -  5        U R                  [        UR                  5       5      U5        U R                  UR                  5       U[        U5      U-
  S  5        U R                   R	                  U5        U R                   R
                  nU R                  [        U5      S5        US   nU R                  UR                  5       S[        U5      -  S-   5        U R                  [        UR                  5       5      U5        U R                  UR                  5       U[        U5      U-
  S  5        S	U R                   l        U R                   R	                  U5        U R                   R
                  nUS   nU R                  [        UR                  5       5      S	5        UR                  S 5        g )
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   r2   failuresr"   fticketmanFailLists          r   testFailManagerAdd_MaxMatches(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   U R                  5         U R                  U R                  R                  5       S5        U R                  R	                  S5        U R                  U R                  R                  5       S5        U R                  R	                  S5        g )NiX  r'   )r#   r(   r   
getMaxTime
setMaxTimer,   s    r   testFailManagerMaxTime!AddFailure.testFailManagerMaxTimez   st    4%%002C8#4%%002B7$r   c                     U R                  5         U R                  R                  S5        U R                  R                  S5        U R                  U R                  R	                  5       S5        g )Nr   z111.111.1.111r   )r#   r   
delFailurer(   r)   r,   s    r   testDelAddFailure.testDel   sU    004%%**,a0r   c                     U R                  5         SnU R                  R                  U5        U R                  U R                  R	                  5       S5        g )Ng  5fAr   r#   r   cleanupr(   r)   r   	timestamps     r   testCleanupOKAddFailure.testCleanupOK   F    )Y'4%%**,a0r   c                     U R                  5         SnU R                  R                  U5        U R                  U R                  R	                  5       S5        g )Ng  9fAr   rI   rK   s     r   testCleanupNOKAddFailure.testCleanupNOK   rO   r   c                 l   U R                  5         U R                  R                  S5        U R                  R                  5       nU R	                  UR                  5       S5        U R                  [        UR                  5       [        [        45      5        [        U5      n[        U5      nU R	                  US5        U R	                  US5        U R                  U(       + 5        UR                  S5        U R	                  UR                  5       S5        U R	                  [        U5      S5        g )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   r;   
ticket_strticket_reprs       r   	testbanOKAddFailure.testbanOK   s      ###%&6<<>?3//*V\\^c6];< 6{*V+bd bd v:..6>>#\2v;bdr   c                     U R                  5         U R                  R                  S5        U R                  [        U R                  R
                  5        g )Nr1   )r#   r   rU   assertRaisesr   rV   r,   s    r   
testbanNOKAddFailure.testbanNOK   s?      $$d&8&8&>&>?r   c                 `   U R                  5         U R                  R                  5       nU R                  UR	                  5       S5        U R                  R                  5       nU R                  UR	                  5       S5        U R                  [        U R                  R                  5        g )Nr   )r#   r   rV   assertNotEqualrW   rd   r   )r   r;   s     r   
testWindowAddFailure.testWindow   s    ##%&fllno6##%&fllno6$d&8&8&>&>?r   c                    U R                   R                  n[        5       nUR                  nU R                  [	        U5      [	        U5      :H  5        S nU R                  UR                  SS5      5        U R                  UR                  5       5        [        SUR                  5       H"  nU R                  UR                  5       5        M$     SUl	        U R                  UR                  5       5        SUl	        [        SUR                  5       H"  nU R                  UR                  5       5        M$     U R                  UR                  SS5      5        U R                  UR                  SS5      5        g )NTr    i  F)
r   _FailManager__bgSvcr   rX   idservicer\   range_BgService__threshold_BgService__serviceTime)r   bgSvcfailManager2ndbgSvc2r"   s        r   testBgServiceAddFailure.testBgService   s   



0
0%=.--&//"U)r&z)*&//%--d+,5==?#E//0aEMMO$ 1 #.%//%--/""-%E//0aEMMO$ 1//%--t,-5==-.r   )__failManager__items)__name__
__module____qualname____firstlineno__r   r   r#   r-   r=   rB   rF   rM   rQ   ra   re   ri   ru   __static_attributes____classcell__r   s   @r   r   r   #   sM    %%9"&0d%111d6@
@/ /r   r   c                   J   ^  \ rS rSrU 4S jrU 4S jr\S 5       rS rSr	U =r
$ )FailmanagerComplex   c                    > [         [        U ]  5         [        5       U l        [
        R                  U l        S[
        l        g)r   r&   N)r   r   r   r    _FailmanagerComplex__failManagerr   logLevel_FailmanagerComplex__saved_llr   s    r   r   FailmanagerComplex.setUp   s0    D')"}$(($/+r   c                 T   > [         [        U ]  5         U R                  [        l        g N)r   r   r   r   r   r   r   s    r   r   FailmanagerComplex.tearDown   s    D*,+r   c              #      #     " S S[         5      nSn/ SQnX :  aF  [        SSS5       H  nX4   S:  a  X4==   S-  ss'     OSX4'   M     X!" U5      4v   US-  nX :  a  ME  g g 7f)	Nc                   ,    \ rS rSrS rS rS rS rSrg))FailmanagerComplex._ip_range.<locals>._ip   c                 @    SR                  [        [        U 5      5      $ )N.)joinmaprZ   r,   s    r   __str__1FailmanagerComplex._ip_range.<locals>._ip.__str__   s    88CTN##r   c                     [        U 5      $ r   rZ   r,   s    r   __repr__2FailmanagerComplex._ip_range.<locals>._ip.__repr__       t9r   c                     [        U 5      $ r   r   r,   s    r   __key__1FailmanagerComplex._ip_range.<locals>._ip.__key__   r   r   c                 T    [        U S   S-  U S   S-  -  U S   S-  -  U S   -  5      $ )Nr      r       r      r&   )intr,   s    r   __hash__2FailmanagerComplex._ip_range.<locals>._ip.__hash__   s8    aBaB.aA=QGHHr    N)	ry   rz   r{   r|   r   r   r   r   r}   r   r   r   _ipr      s    $Ir   r   r   )   r   r   r   r&      r    )listro   )maxipsr   r"   cns        r   	_ip_rangeFailmanagerComplex._ip_range   st     	ID 	I !!	
!AbMqtczTQYT
AD	 
 SV61 	

s   AA$"A$c                    U R                  [        R                  R                  (       d  SOS5       H  u  pUS:X  a  U R	                  [        U5      S5        M(  US:X  a  U R	                  [        U5      S5        MK  US:X  a  U R	                  [        U5      S5        Mn  US:X  a  U R	                  [        U5      S	5        M  US
:X  d  M  U R	                  [        U5      S5        M     g )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(   rZ   )r   r"   ips      r   testCheckIPGenerator'FailmanagerComplex.testCheckIPGenerator   s    ~~8<<+<+<e$Gea3hSWm,	SSWk*	T	SWm,	U
SWo.	U
SWk* Hr   )rw   
__saved_ll)ry   rz   r{   r|   r   r   staticmethodr   r   r}   r~   r   s   @r   r   r      s+    )
 
 
,+ +r   r   )
__author____copyright____license__r   serverr   server.failmanagerr   r   server.ipdnsr   server.ticketr	   TestCaser   r   r   r   r   <module>r      sL   . 
2    > ! &n/"" n/b1+** 1+r   