
    Bd&                         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dS )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                      | _        dS )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$   sK    
D!!!---O\::$- ll$    c                 r    t          t          |                                            t                       dS zCall after every test case.N)r   r   tearDownr   r   s    r   r   zAddFailure.tearDown+   s1    
D""$$$r   c                    |                      | j                            | j                             |                     | j                                        d           |                     | j                                        d           | j                            d           |                     | j                                        d           d S )Nr   r   )
assertTruer   addBanTicketr   assertEqualsizegetBanTotalsetBanTotalr   s    r   testAddzAddFailure.testAdd0   s    //$#00??@@@4$))++Q///4$0022A666"""4$0022A66666r   c                 (   |                      | j                            | j                             |                     | j                            | j                             |                     | j                                        d           d S )Nr   )r   r   r   r   assertFalser    r!   r$   s    r   testAddDuplicatezAddFailure.testAddDuplicate7   sy    //$#00??@@@4$11$-@@AAA4$))++Q/////r   c                    | j                                         }d}dD ]\  }}t          dd          }t          d|          }||                    |           |                     | j                             |                     |                     | j                             |                     |                     | j                                         d           | j         	                    |
                                          }|                     |                    |          |                    |                     |                     |                    |          |k               |                    |          }|                     |                                d           |dk    r)|                     |                    |          d           d S )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<   s    ++--* ; ;kdE 557--7u??4$11'::;;;D%227;;<<<D%**,,a000 ..w}}??9I--j997;R;RS];^;^___??9,,Z88;KKLLL--j99I%%''666rkkY))*55r:::-; ;r   c                     |                      | j                            | j                             t	          dd          }|                      | j                            |                     d S )Nr   r   )r   r   r   r   r
   
_inBanListr   tickets     r   testInListOKzAddFailure.testInListOK\   s_    //$#00??@@@_l33&//$#..v6677777r   c                     |                      | j                            | j                             t	          dd          }|                     | j                            |                     d S )Nz111.111.1.111r   )r   r   r   r   r
   r'   r:   r;   s     r   testInListNOKzAddFailure.testInListNOKa   sa    //$#00??@@@_l33&4$//7788888r   c                    t          | j                                        | j                                                  }d}dD ]}| j                            | j                   |dz  }|                    |           |                     | j                            |                     |                     t          | j        
                    |                                                    d|                                d|                                d|d|d	           | j                            | j                   |dz  }|                    d	           |                     | j                            |                     |                    d
           |                     | j                            |                     |                     t          | j        
                    |                                                    d|                                d|                                dd	d|d	           d S )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]((**DM,A,A,C,CDD&! y ya!!$-000!q&!	QD%226::;;;C)77GGHHHPVP\P\P^P^P^P^`f`n`n`p`p`p`prsrsrsuvuvuvwy y y y   ///aB4$11&99:::D4$11&99:::3t(66v||~~FFGGGOU||~~~~_e_m_m_o_o_o_oqsqsqsuvuvuvwy y y y yr   c                    | j                                         }| j                                        }|                     | j                             | j                             |                     | j                             | j                             |                     | j                             |          g            |                     | j                             ||z   dz             | j        g           |                     | j         	                                d           |                     | j                             | j                             t          | j                                        |dz             }|                     | j                             |                     |                     t          | j                             ||z   dz                       d           |                     t          | j                             ||z   dz   dz                       d           t          d          D ]p}t          d|z  |          }|                    |                    |          |dz  z              |                     | j                             |                     q|                     t          | j                             ||z   dz   dz                       d           |                     t          | j                             ||z   dz   dz                       d	           |                     | j         	                                d           d S )
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55r:::4$..uu}q/@AADM?SSS4$))++Q/////$#00??@@@T]((**ECK88&4$11&99:::3t(2255=13DEEFFJJJ3t(2255=33F3JKKLLaPPP88 ; ;anq(%006	V&&u--"4555??4$11&99::::3t(2255=43G!3KLLMMqQQQ3t(2255=43G!3KLLMMqQQQ4$))++Q/////r   c                    | j                                         }| j                             d           	 |                     | j                             | j                             |                     | j                             | j                             |                     | j                             | j        	                                |z   dz             g            |                     | j         
                                d           | j                             |           d S # | 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AA??4$//>>???D%//0E0E0G0G%0ORS0STTVXYYYD%**,,a000&&&&&4&&&&s   CD- -E	c                    t          dd          t          dd          g}|d                             d           |D ]}| j                            |           |                     | j                            dd          dd	g           d S )
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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 7 70 0 0
; ; ;@8 8 8
9 9 9
y y y&0 0 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                                         t                       t          t          t          j
        d                              | _        d| _        d| _        d| _        t          | j        d          }t!                      | _        |                     | j                            |                     dS )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EFFGG$-$*$.$*T]L11& ll$//$#008899999r   c                 r    t          t          |                                            t                       dS r   )r   ra   r   r   r   s    r   r   z StatusExtendedCymruInfo.tearDown   s2    &&//111r   )TNc                    t           }|j        d         r/| j                            t          j        j        rdnd          }n|j        d         }|                    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    "\!_  !==,#+QQ > . .:: Q:^^G c#2<		KjY`Naa	b	bb	r   c                     |                                  }|                     || j        g| j        g| j        gd           d S )Nasncountryrir)r}   assertDictEqualrm   rn   ro   )r   r|   s     r   testCymruInfoz%StatusExtendedCymruInfo.testCymruInfo   sW    0022*z^$	 	    r   c                     |                      | j                            |                                           | j        g           d S N)r    rp   geBanListExtendedASNr}   rm   r$   s    r   testCymruInfoASNz(StatusExtendedCymruInfo.testCymruInfoASN   K    ))$*K*K*M*MNNJ<    r   c                     |                      | j                            |                                           | j        g           d S r   )r    rp   geBanListExtendedCountryr}   rn   r$   s    r   testCymruInfoCountryz,StatusExtendedCymruInfo.testCymruInfoCountry   sL    --d.O.O.Q.QRRN    r   c                     |                      | j                            |                                           | j        g           d S r   )r    rp   geBanListExtendedRIRr}   ro   r$   s    r   testCymruInfoRIRz(StatusExtendedCymruInfo.testCymruInfoRIR   r   r   c                    t                      | _        t          dd          }|                     | j                            |                     |                                 }|                     |dgdgdgd           t          dd          }|                     | j                            |                     |                                 }|                     |ddgddgdd	gdd
t                     d S )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    ll$ Y--&//$#00889990022*zL	 	   Y--&//$#00889990022*V%&V$	& 	&-/S  : : : : :r   )r[   r\   r]   r   r   rv   r}   r   r   r   r   r   r^   r_   s   @r   ra   ra      s        : : : : :    
 
 
 
    
  
  
: : : : : : :r   ra   )
__author____copyright____license__rf   utilsr   r   server.banmanagerr   server.ipdnsr	   server.ticketr
   TestCaser   ra    r   r   <module>r      s   . 
2  . . . . . . . . * * * * * * # # # # # # % % % % % %H H H H H" H H HVL: L: L: L: L:h/ L: L: L: L: L:r   