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 JaquierÚGPLéNé)Ú failmanager)Ú FailManagerÚFailManagerEmpty)ÚIPAddr)Ú FailTicketcs€eZdZ‡fdd„Z‡fdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Z‡ZS)Ú AddFailurecs tt|ƒ ¡d|_tƒ|_dS)úCall before every test case.N)Úsuperr ÚsetUpÚ_AddFailure__itemsrÚ_AddFailure__failManager©Úself©Ú __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]}|j t|d |d ƒ¡q-dS) Nú 193.168.0.128gÀ;fÑAz 87.142.124.10ú 100.100.10.10geÍÍAgúeÍÍAgôfÍÍAgîgÍÍAçèhÍÍAré)r rÚ addFailurer)rÚirrrÚ _addDefItems/s"ô ÿzAddFailure._addDefItemscCsZ| ¡| |j ¡d¡| |j ¡d¡|j d¡| |j ¡d¡|j d¡dS)Néé r)rÚ assertEqualrÚsizeÚ getFailTotalÚ setFailTotalrrrrÚtestFailManagerAdd@s  zAddFailure.testFailManagerAddcCsd}||j_gd¢}d}|D]}|d8}tdd||gƒ}| d¡|j |¡q|jj}| t|ƒd¡|d}| | ¡t|ƒ¡| t|  ¡ƒ|¡| |  ¡|t|ƒ|d…¡tdd|ƒ}| t|ƒ¡|j |¡|jj}| t|ƒd¡|d}| | ¡dt|ƒ¡| t|  ¡ƒ|¡| |  ¡|t|ƒ|d…¡|j |¡|jj}| t|ƒd¡|d}| | ¡dt|ƒd¡| t|  ¡ƒ|¡| |  ¡|t|ƒ|d…¡d |j_|j |¡|jj}|d}| t|  ¡ƒd ¡|  d¡dS) Nr)zabc z123 zABC z1234 éPé z 127.0.0.1iÐÑš;riÆÑš;r) rÚ maxMatchesrÚ setAttemptrÚ_FailManager__failListrÚlenÚ getAttemptÚ getMatchesÚ setMatches)rr&ÚfailuresrÚfÚticketÚ manFailListrrrÚtestFailManagerAdd_MaxMatchesHsJ        z(AddFailure.testFailManagerAdd_MaxMatchescCsH| ¡| |j ¡d¡|j d¡| |j ¡d¡|j d¡dS)NiXr)rrrÚ getMaxTimeÚ setMaxTimerrrrÚtestFailManagerMaxTimezs  z!AddFailure.testFailManagerMaxTimecCs6| ¡|j d¡|j d¡| |j ¡d¡dS)Nrz 111.111.1.111r)rrÚ delFailurerr rrrrÚtestDels  zAddFailure.testDelcCó.| ¡d}|j |¡| |j ¡d¡dS)NgÀ5fÑAr©rrÚcleanuprr ©rÚ timestamprrrÚ testCleanupOKˆó zAddFailure.testCleanupOKcCr7)Ng€9fÑArr8r:rrrÚtestCleanupNOKŽr=zAddFailure.testCleanupNOKcCs¨| ¡|j d¡|j ¡}| | ¡d¡| t| ¡tt fƒ¡t|ƒ}t |ƒ}| |d¡| |d¡|  | ¡|  d¡| |  ¡d¡| t|ƒd¡dS)Nérz]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Ú setMaxRetryÚtoBanrÚgetIPÚ assertTrueÚ isinstanceÚstrrÚreprÚ assertFalseÚsetTimeÚgetTime)rr/Ú ticket_strÚ ticket_reprrrrÚ testbanOK”s,  þþ  þzAddFailure.testbanOKcCs(| ¡|j d¡| t|jj¡dS)Nr%)rrr@Ú assertRaisesrrArrrrÚ testbanNOK¯s zAddFailure.testbanNOKcCsP| ¡|j ¡}| | ¡d¡|j ¡}| | ¡d¡| t|jj¡dS)Nr)rrrAÚassertNotEqualrBrMr)rr/rrrÚ testWindow´s   zAddFailure.testWindowcCsÐ|jj}tƒ}|j}| t|ƒt|ƒk¡d}| | dd¡¡| | ¡¡td|jƒD] }| | ¡¡q-d|_ | | ¡¡d|_ td|jƒD] }| | ¡¡qJ| | dd¡¡| | dd¡¡dS)NTri€F) rÚ_FailManager__bgSvcrrCÚidÚservicerGÚrangeÚ_BgService__thresholdÚ_BgService__serviceTime)rÚbgSvcÚfailManager2ndÚbgSvc2rrrrÚ testBgService¼s zAddFailure.testBgService)Ú__name__Ú __module__Ú __qualname__r rrr#r1r4r6r<r>rLrNrPrZÚ __classcell__rrrrr #s  2r cs<eZdZ‡fdd„Z‡fdd„Zedd„ƒZdd„Z‡ZS) ÚFailmanagerComplexcs(tt|ƒ ¡tƒ|_tj|_dt_dS)r rN)r r_r rÚ _FailmanagerComplex__failManagerrÚlogLevelÚ_FailmanagerComplex__saved_llrrrrr Ös zFailmanagerComplex.setUpcstt|ƒ ¡|jt_dS©N)r r_rrbrrarrrrrÞs zFailmanagerComplex.tearDownccs†Gdd„dtƒ}d}gd¢}||krAtdddƒD]}||dkr+||d7<nd||<q|||ƒfV|d7}||ksdSdS) Nc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) z)FailmanagerComplex._ip_range.._ipcSsd tt|ƒ¡S)NÚ.)ÚjoinÚmaprErrrrÚ__str__æsz1FailmanagerComplex._ip_range.._ip.__str__cSót|ƒSrc©rErrrrÚ__repr__èóz2FailmanagerComplex._ip_range.._ip.__repr__cSrhrcrirrrrÚ__key__êrkz1FailmanagerComplex._ip_range.._ip.__key__cSs0t|dd>|dd>B|dd>B|dBƒS)Nrérérér)ÚintrrrrÚ__hash__ìs0z2FailmanagerComplex._ip_range.._ip.__hash__N)r[r\r]rgrjrlrqrrrrÚ_ipås  rrr)érrrréÿÿÿÿéÿr)ÚlistrT)ÚmaxipsrrrÚcÚnrrrÚ _ip_rangeãs€   ùzFailmanagerComplex._ip_rangecCs¤| tjjsdnd¡D]D\}}|dkr| t|ƒd¡q |dkr)| t|ƒd¡q |dkr6| t|ƒd¡q |dkrC| t|ƒd ¡q |d krO| t|ƒd ¡q dS) Niièéþz 127.0.0.255ruz 127.0.1.0z 127.0.3.233iþÿz 127.0.255.255iÿÿz 127.1.0.0)rzÚunittestÚF2BÚfastrrE)rrÚiprrrÚtestCheckIPGeneratorús€öz'FailmanagerComplex.testCheckIPGenerator) r[r\r]r rÚ staticmethodrzr€r^rrrrr_Ôs    r_)Ú __author__Ú __copyright__Ú __license__r|ÚserverrÚserver.failmanagerrrÚ server.ipdnsrÚ server.ticketrÚTestCaser r_rrrrÚs   2