o ;s*b #@spdZdZdZddlZddlmZddlmZmZddl m Z dd l m Z Gd d d ej ZGd d d ej ZdS)z Cyril Jaquierz Copyright (c) 2004 Cyril JaquierGPLN) failmanager) FailManagerFailManagerEmpty)IPAddr) FailTicketcseZdZfddZfddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZZS) AddFailurecs tt|d|_t|_dS)Call before every test case.N)superr setUp_AddFailure__itemsr_AddFailure__failManagerself __class__D/usr/lib/python3/dist-packages/fail2ban/tests/failmanagertestcase.pyr %s zAddFailure.setUpcstt|dS)zCall after every test case.N)r r tearDownrrrrr+szAddFailure.tearDowncCs~ddgddgddgddgddgddgddgddgddgddgddgddgdd gg |_|jD]}|jt|d |d q-dS) N 193.168.0.128g;fAz 87.142.124.10 100.100.10.10geAgeAgfAggAhAr)r r addFailurer)rirrr _addDefItems/s" zAddFailure._addDefItemscCsZ|||jd||jd|jd||jd|jddS)N r)r assertEqualrsize getFailTotal setFailTotalrrrrtestFailManagerAdd@s  zAddFailure.testFailManagerAddcCsd}||j_gd}d}|D]}|d8}tdd||g}|d|j|q|jj}|t|d|d}||t||t| ||| |t||dtdd|}|t||j||jj}|t|d|d}||dt||t| ||| |t||d|j||jj}|t|d|d}||dt|d|t| ||| |t||dd |j_|j||jj}|d}|t| d | ddS) Nr)zabc z123 zABC z1234 P z 127.0.0.1iњ;riњ;r) r maxMatchesr setAttemptr_FailManager__failListrlen getAttempt getMatches setMatches)rr&failuresrfticket manFailListrrrtestFailManagerAdd_MaxMatchesHsJ        z(AddFailure.testFailManagerAdd_MaxMatchescCsH|||jd|jd||jd|jddS)NiXr)rrr getMaxTime setMaxTimerrrrtestFailManagerMaxTimezs  z!AddFailure.testFailManagerMaxTimecCs6||jd|jd||jddS)Nrz 111.111.1.111r)rr delFailurerr rrrrtestDels  zAddFailure.testDelcC.|d}|j|||jddS)Ng5fArrrcleanuprr r timestamprrr testCleanupOK zAddFailure.testCleanupOKcCr7)Ng9fArr8r:rrrtestCleanupNOKr=zAddFailure.testCleanupNOKcCs||jd|j}||d|t|tt ft|}t |}||d||d| | | d|| d|t|ddS)Nrz]FailTicket: ip=193.168.0.128 time=1167605999.0 bantime=None bancount=0 #attempts=5 matches=[]rz]FailTicket: ip=193.168.0.128 time=1000002000.0 bantime=None bancount=0 #attempts=5 matches=[])rr setMaxRetrytoBanrgetIP assertTrue isinstancestrrrepr assertFalsesetTimegetTime)rr/ ticket_str ticket_reprrrr testbanOKs,    zAddFailure.testbanOKcCs(||jd|t|jjdS)Nr%)rrr@ assertRaisesrrArrrr testbanNOKs zAddFailure.testbanNOKcCsP||j}||d|j}||d|t|jjdS)Nr)rrrAassertNotEqualrBrMr)rr/rrr testWindows   zAddFailure.testWindowcCs|jj}t}|j}|t|t|kd}||dd||td|jD] }||q-d|_ ||d|_ td|jD] }||qJ||dd||dddS)NTriF) r_FailManager__bgSvcrrCidservicerGrange_BgService__threshold_BgService__serviceTime)rbgSvcfailManager2ndbgSvc2rrrr testBgServices zAddFailure.testBgService)__name__ __module__ __qualname__r rrr#r1r4r6r<r>rLrNrPrZ __classcell__rrrrr #s  2r cs<eZdZfddZfddZeddZddZZS) FailmanagerComplexcs(tt|t|_tj|_dt_dS)r rN)r r_r r _FailmanagerComplex__failManagerrlogLevel_FailmanagerComplex__saved_llrrrrr s zFailmanagerComplex.setUpcstt||jt_dSN)r r_rrbrrarrrrrs zFailmanagerComplex.tearDownccsGdddt}d}gd}||krAtdddD]}||dkr+||d7<nd||<q|||fV|d7}||ksdSdS) Nc@s,eZdZddZddZddZddZd S) z)FailmanagerComplex._ip_range.._ipcSsdtt|S)N.)joinmaprErrrr__str__sz1FailmanagerComplex._ip_range.._ip.__str__cSt|SrcrErrrr__repr__z2FailmanagerComplex._ip_range.._ip.__repr__cSrhrcrirrrr__key__rkz1FailmanagerComplex._ip_range.._ip.__key__cSs0t|dd>|dd>B|dd>B|dBS)Nrrrr)intrrrr__hash__s0z2FailmanagerComplex._ip_range.._ip.__hash__N)r[r\r]rgrjrlrqrrrr_ips  rrr)rrrrr)listrT)maxipsrrrcnrrr _ip_ranges   zFailmanagerComplex._ip_rangecCs|tjjsdndD]D\}}|dkr|t|dq |dkr)|t|dq |dkr6|t|dq |dkrC|t|d q |d krO|t|d q dS) Niiz 127.0.0.255ruz 127.0.1.0z 127.0.3.233iz 127.0.255.255iz 127.1.0.0)rzunittestF2BfastrrE)rriprrrtestCheckIPGeneratorsz'FailmanagerComplex.testCheckIPGenerator) r[r\r]r r staticmethodrzrr^rrrrr_s    r_) __author__ __copyright__ __license__r|serverrserver.failmanagerrr server.ipdnsr server.ticketrTestCaser r_rrrrs   2