
    ogf&                         d Z dZdZddlZddlmZmZ ddl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   )setUpMyTimetearDownMyTime   )
BanManager)DNSUtils)	BanTicketc                   ^     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 xZS )
AddFailurec                 ~    t         t        |           t                t	        dd      | _        t               | _        y)Call before every test case.193.168.0.128  ;fAN)superr   setUpr   r
   _AddFailure__ticketr   _AddFailure__banManagerself	__class__s    C/usr/lib/python3/dist-packages/fail2ban/tests/banmanagertestcase.pyr   zAddFailure.setUp$   s-    
D!-O\:$- l$    c                 >    t         t        |           t                yzCall after every test case.N)r   r   tearDownr   r   s    r   r   zAddFailure.tearDown+   s    
D"$r   c                    | j                  | j                  j                  | j                               | j	                  | j                  j                         d       | j	                  | j                  j                         d       | j                  j                  d       | j	                  | j                  j                         d       y )Nr   r   )
assertTruer   addBanTicketr   assertEqualsizegetBanTotalsetBanTotalr   s    r   testAddzAddFailure.testAdd0   s    //$##00?@4$$))+Q/4$$002A6"4$$002A6r   c                 (   | j                  | j                  j                  | j                               | j	                  | j                  j                  | j                               | j                  | j                  j                         d       y )Nr   )r   r   r   r   assertFalser    r!   r$   s    r   testAddDuplicatezAddFailure.testAddDuplicate7   se    //$##00?@4$$11$--@A4$$))+Q/r   c                 P   | j                   j                         }d}dD ]  \  }}t        dd      }t        d|      }||j                  |       | j	                  | j                   j                  |             | j                  | j                   j                  |             | j                  | j                   j                         d       | j                   j                  |j                               }| j                  |j                  |      |j                  |             | j	                  |j                  |      |kD         |j                  |      }| j                  |j                         d       |dk(  sd| j                  |j                  |      d        y )Nr   ))r   N)g  TfAN)r   iQ )r   r   r   r   r*   )r   
getBanTimer
   
setBanTimer   r   r'   r    r!   getTicketByIDgetIDgetEndOfBanTimegetTime)r   
defBanTimeprevEndOfBanTimetnewbtnewticket1ticket2	bantickets           r   testAddDuplicateWithTimez#AddFailure.testAddDuplicateWithTime<   sf     ++-* ;kdE 57-7u??4$$11':;D%%227;<D%%**,a0  ..w}}?9I--j97;R;RS];^_??9,,Z8;KKL--j9I%%'6rkY))*5r:-;r   c                     | j                  | j                  j                  | j                               t	        dd      }| j                  | j                  j                  |             y )Nr   r   )r   r   r   r   r
   
_inBanListr   tickets     r   testInListOKzAddFailure.testInListOK\   sL    //$##00?@_l3&//$##..v67r   c                     | j                  | j                  j                  | j                               t	        dd      }| j                  | j                  j                  |             y )Nz111.111.1.111r   )r   r   r   r   r
   r'   r:   r;   s     r   testInListNOKzAddFailure.testInListNOKa   sN    //$##00?@_l3&4$$//78r   c                 D   t        | j                  j                         | j                  j                               }d}dD ]  }| j                  j                  | j                         |dz  }|j                  |       | j                  | j                  j                  |             | j                  t        | j                  j                  |j                                     d|j                         d|j                         d|d|d	        | j                  j                  | j                         |dz  }|j                  d	       | j                  | j                  j                  |             |j                  d
       | j                  | j                  j                  |             | j                  t        | j                  j                  |j                                     d|j                         d|j                         dd	d|d	       y )Nr   )  i  r*   r   zBanTicket: ip=z time=z	 bantime=z
 bancount=z #attempts=0 matches=[]r*   rA   )r
   r   r.   r0   r   r   r,   r'   r    strr-   )r   r<   cis       r   testBanTimeIncrzAddFailure.testBanTimeIncrf   s   T]]((*DMM,A,A,CD&! ya!!$--0!q&!	QD%%226:;C))77GHPVP\P\P^`f`n`n`prsuvwy	y   /aB4$$11&9:D4$$11&9:3t((66v||~FGOU||~_e_m_m_oqsuvwyr   c                 |   | j                   j                         }| j                  j                         }| j	                  | j                   j                  | j                               | j	                  | j                   j                  | j                               | j                  | j                   j                  |      g        | j                  | j                   j                  ||z   dz         | j                  g       | j                  | j                   j                         d       | j	                  | j                   j                  | j                               t        | j                  j                         |dz         }| j                  | j                   j                  |             | j                  t        | j                   j                  ||z   dz               d       | j                  t        | j                   j                  ||z   dz   dz               d       t        d      D ]a  }t        d|z  |      }|j                  |j                  |      |dz  z          | j	                  | j                   j                  |             c | j                  t        | j                   j                  ||z   dz   dz               d       | j                  t        | j                   j                  ||z   dz   dz               d	       | j                  | j                   j                         d       y )
Nr   r   iX     z193.168.0.%s
   r   2      )r   r+   r   r0   r   r   r:   r    	unBanListr!   r
   r.   r'   lenranger,   )r   btimestimer<   rD   s        r   	testUnbanzAddFailure.testUnbany   s   



&
&
(%
--


!%//$##00?@//$##..t}}=>4$$..u5r:4$$..uu}q/@ADMM?S4$$))+Q///$##00?@T]]((*ECK8&4$$11&9:3t((2255=13DEFJ3t((2255=33F3JKLaP8 ;anq(%06	V&&u-"45??4$$11&9:; 3t((2255=43G!3KLMqQ3t((2255=43G!3KLMqQ4$$))+Q/r   c                    | j                   j                         }| j                   j                  d       	 | j                  | j                   j	                  | j
                               | j                  | j                   j                  | j
                               | j                  | j                   j                  | j
                  j                         |z   dz         g        | j                  | j                   j                         d       | j                   j                  |       y # | j                   j                  |       w xY w)Nr*   r   )r   r+   r,   r   r   r   r:   r    rK   r0   r!   )r   rN   s     r   testUnbanPermanentzAddFailure.testUnbanPermanent   s    



&
&
(%r"'??4$$11$--@A??4$$//>?D%%//0E0E0G%0ORS0STVXYD%%**,a0&4&s   CD. .Ec                     t        dd      t        dd      g}|d   j                  d       |D ]  }| j                  j                  |        | j	                  | j                  j                  dd      dd	g       y )
Nz	192.0.2.1r   z	192.0.2.2r   r*   T)orderedwithTimez:192.0.2.1 	2006-12-31 23:59:59 + 600 = 2007-01-01 00:09:59z9192.0.2.2 	2006-12-31 23:59:59 + -1 = 9999-12-31 23:59:59)r
   r,   r   r   assertSortedEqual
getBanList)r   ticketsts      r   testBanListzAddFailure.testBanList   s    [,'[,'' 
!* %a!!!$%**55dT5RBAr   )__name__
__module____qualname__r   r   r%   r(   r8   r=   r?   rE   rP   rR   rZ   __classcell__r   s   @r   r   r   #   s<    #
70
;@8
9
y&04	'r   r   c                   P     e Zd Z fdZ fdZdZd Zd Zd Zd Z	d Z
d	 Z xZS )
StatusExtendedCymruInfoc                    t         t        |           t        j                  j                          t                t        t        t        j                  d                  | _        d| _        d| _        d| _        t        | j                  d      }t!               | _        | j%                  | j"                  j'                  |             y)r   zresolver1.opendns.com36692USarinr   N)r   ra   r   unittestF2BSkipIfNoNetworkr   nextiterr	   dnsToIp _StatusExtendedCymruInfo__ban_ip_StatusExtendedCymruInfo__asn!_StatusExtendedCymruInfo__country_StatusExtendedCymruInfo__rirr
   r   $_StatusExtendedCymruInfo__banManagerr   r   )r   r<   r   s     r   r   zStatusExtendedCymruInfo.setUp   s    ,.
,, -tH,,-DEFG$-$*$.$*T]]L1& l$//$##0089r   c                 >    t         t        |           t                yr   )r   ra   r   r   r   s    r   r   z StatusExtendedCymruInfo.tearDown   s    /1r   )TNc                 *   t         }|j                  d   r9| j                  j                  t        j
                  j                  rdnd      }n|j                  d   }|j                  d      r$d|f|_        t	        j                  d|d   z        |S )	Nr   r      )timeoutr   errorFz.Skip test because service is not available: %s)	ra   	availablerp   getBanListExtendedCymruInforf   rg   fastgetSkipTest)r   tc
cymru_infos      r   _getBanListExtendedCymruInfoz4StatusExtendedCymruInfo._getBanListExtendedCymruInfo   s    "\\!_!!==,,##Q > .: Q:^^G#2<			KjY`Naa	bb	r   c                     | j                         }| j                  || j                  g| j                  g| j                  gd       y )Nasncountryrir)r}   assertDictEqualrm   rn   ro   )r   r|   s     r   testCymruInfoz%StatusExtendedCymruInfo.testCymruInfo   sA    002*z^^$	r   c                     | j                  | j                  j                  | j                               | j                  g       y N)r    rp   geBanListExtendedASNr}   rm   r$   s    r   testCymruInfoASNz(StatusExtendedCymruInfo.testCymruInfoASN   6    ))$*K*K*MNJJ<r   c                     | j                  | j                  j                  | j                               | j                  g       y r   )r    rp   geBanListExtendedCountryr}   rn   r$   s    r   testCymruInfoCountryz,StatusExtendedCymruInfo.testCymruInfoCountry   s7    --d.O.O.QRNNr   c                     | j                  | j                  j                  | j                               | j                  g       y r   )r    rp   geBanListExtendedRIRr}   ro   r$   s    r   testCymruInfoRIRz(StatusExtendedCymruInfo.testCymruInfoRIR   r   r   c                    t               | _        t        dd      }| j                  | j                  j	                  |             | j                         }| j                  |dgdgdgd       t        dd      }| j                  | j                  j	                  |             | j                         }| j                  |ddgddgdd	gdd
t               y )Nz0.0.0.0r   nxdomainr   z8.0.0.0g   <fA3356rd   re   r*   )levelkey)	r   rp   r
   r   r   r}   r   rV   rB   )r   r<   r|   s      r   testCymruInfoNxdomainz-StatusExtendedCymruInfo.testCymruInfoNxdomain   s     l$ Y-&//$##0089002*zL	 Y-&//$##0089002*V%&V$	&-/S  :r   )r[   r\   r]   r   r   rv   r}   r   r   r   r   r   r^   r_   s   @r   ra   ra      s2    :
 



:r   ra   )
__author____copyright____license__rf   utilsr   r   server.banmanagerr   server.ipdnsr	   server.ticketr
   TestCaser   ra    r   r   <module>r      sN   . 
2  . * # %H"" HVL:h// L:r   