ogfUkdZdZdZddlZddlZddlZddlmZddlm Z ddl m Z m Z d d l mZmZmZdd lmZed ZGd deZe dZGddej,Zy)z Cyril Jaquierz Copyright (c) 2004 Cyril JaquierGPLN) DateDetector) datedetector)DatePatternRegex DateTemplate) setUpMyTimetearDownMyTimeLogCaptureTestCase) getLoggerfail2bancveZdZdZdZedZdZdZdZ dZ dZ d Z d Z d Zd Zd ZdZdZdZy)DateDetectorTestcPtj|td|_yzCall before every test case.N)r setUpr _DateDetectorTest__datedetectorselfs E/usr/lib/python3/dist-packages/fail2ban/tests/datedetectortestcase.pyrzDateDetectorTest.setUp*s4  -$cBtj|tyzCall after every test case.N)r tearDownr rs rrzDateDetectorTest.tearDown0sd#rc|j)t|_|jj|jS)N)rraddDefaultTemplaters rrzDateDetectorTest.datedetector5s6  %4))+  rc "t|_|jjddD]}dD]}||z}|dz}|jj |}|j |d|d|\}}|j t|||j|jdt|t|dzfd D]?}dD]8}||z}|dz}|jj |}|j|:Ay) NEPOCHiCClo&%s[%s]z[%s.555]zaudit(%s.555:101)* [sshd] error: PAM: Authentication failureParse epoch time for  failedr z.555) 1234567899999999999999999 1138049999A A1138049999) rrappendTemplatergetTime assertTrue assertEqualintassertIngroupstr assertFalse)rdateUnixdatelogdatelogmatchlogs rtestGetEpochTimez!DateDetectorTest.testGetEpochTime<s$$$$W-+Lh>Lt (?D = =C'',GOOGGH#gxS\8,MM(..#c(mS]65I%JKLLRh>t (?D = =C'',GW rc t|_|jjddD]}dD]}dD]}||z}||z}|dz}|jj |}|j |d|d|\}}|j t|||j |jdt|d D]?}d D]8}||z}|dz}|jj |}|j|:Ay) NLEPOCHr ii@Br )r"r#r#z audit(%s:101)r$r%r&r )r'999999999999999999r)r*r! rrr+rr,r-r.r/r1r2r3)rfactr4r5dateLongr6r7r8s rtestGetEpochMsTimez#DateDetectorTest.testGetEpochMsTimeQs%$$$$X. 8d, 8x784X 8OT > >S  ((-W __W$HI$w c'lH- hnnQ'X78 8 8Th>t (?D = =C'',GW rct|_|jjddD]}dD]}||z}d|z}|jj |}|j |d||\}}|j t|||j |jdt|dD]3}|z}|jj |}|j|5y)Nz(?<=\|\s){LEPOCH}(?=\s\|)r<r z"auth-error | %s | invalid passwordzParse epoch time failed: r )z test%s123ztest-right | %stestztest%s | test-leftr>)rr?r4r@r6r7r8s rtestGetEpochPatternz$DateDetectorTest.testGetEpochPatternhs$$$$%AB 7d,7x$H . 9C'',GOOGcCD#gxS\8,X^^A&H 677Hc x3    & &s +7Grcd}d}|jj|\}}|j|||j|jddy)Nz9Jan 23 21:59:59 [sshd] error: PAM: Authentication failure}Ar Jan 23 21:59:59)rr,r.r1)rr6r4r7r8s r testGetTimezDateDetectorTest.testGetTime{sSC# ( ++33C8GX7H%8>>!$&78rc!@t}|jdtj}d}|ddddd}d||dddd dfd ||fd ||dddd d fd||dddddfd||dddddfd||dddddfd||dddddfd||dddddfd||dddddfd||dddddfd||dddddfd||dddddfd||dddd d fd|dz|fd |dz|fd |dz|fd|dz|fd |dz|dddddfd|dz|dddddfd |dz|dddd dfd|d!z|dddd dfd|d"z|fd|d#z|dddddfd|d$z|dddddfd|d%z|dddd d ffD]v\}}}tj d&||||_|j |\}} |j|} |j| |d'| d(|d)|d*|d+|j d, x|jtt|d-d.d|_y)/Nz#^%ExY-%Exm-%Exd %H:%M:%S(?: ?%Exz)?z2017-01-23 15:00:00ir rzUTC+0300 UTCzUTC-0430zGMT+12CETz+0100zCEST-01CEST z+0200zCET+01zCET+0100zCET+0130z GMTz -1045-z -10:45z +0945z +09:45z Zz CETz CESTz CET+0130z== test %r with TZ %rz wrong offset z != z by z with default TZ z () default_tzzWRONG-TZ) rr+datetimelogSysdebugrXr,utcfromtimestampr. assertRaises ValueErrorsetattr) rdddtlogdtdtUTCtzr6desiredr7_vals rtestDefaultTimeZonez$DateDetectorTest.testDefaultTimeZones~"9:" % T1b"a %r$2r1-. ur$2r2./ r$2q!,-r$2r1-. r$2r1-. r$2r1-. r$2r1-. r$2r1-. r$2r1-. r$2r1-.r$2r1-.r$2r2./f e$ f e$f e$f e$ h4B2 67iD!RB!78 h4B2 67iD!RB!78d E" f r$2r156 g r$2r156 k!2dAr2r#:;=$fb#w@ <<'b12="**S/ZWa  W %3C?BGSRTVXVcVcdfG$fLJ\:F"-rcd}dD]\}}}}||dk7r|}tjd||||f|dudf| dfdfD]\}}||zd z}|s|d k(rtjd |||jj|} |rf|j | dd |d |d|d|| \} } |j | |d|d|d| d|d |j | j d|n|j | dd|d |d| |jj|x\} } }|jj||} tjd| r | jnd|rf|j | dd |d |d|d|| \} } |j | |d|d |d| d|d |j | j d|n|j | dd|d |d| tjdy)zKTest detection of various common date/time formats f2b should understand rE)")FTrFN)FFzSun Jan 23 21:59:59 2005N)FFzSun Jan 23 21:59:59N)FFzSun Jan 23 2005 21:59:59N)FTz2005/01/23 21:59:59N)FTz2005.01.23 21:59:59N)FTz23/01/2005 21:59:59N)FTz23/01/05 21:59:59N)FTz23/Jan/2005:21:59:59N)FTz23/Jan/2005:21:59:59 +0100N)FTz01/23/2005:21:59:59NFTz2005-01-23 21:59:59N)FTz2005-01-23 21:59:59,000N)FTz23-Jan-2005 21:59:59N)FTz23-Jan-2005 21:59:59.02N)FTz23-Jan-2005 21:59:59 +0100N)FTz23-01-2005 21:59:59NTT 1106513999N)FTz01-23-2005 21:59:59.252N)FFz@4000000041f4104f00000000N)FTz2005-01-23T20:59:59.252ZN)FTz2005-01-23T15:59:59-05:00Nrj)FT20050123T215959N)FTz20050123 215959N)TTz<01/23/05@21:59:59>N)FTz050123 21:59:59N)TTzJan-23-05 21:59:59N)FTzJan 23, 2005 9:59:59 PMNrk)TT1106513999.000N)TTz[1106513999.000]rn)FTzaudit(1106513999.000:987)rn)TT no date lineNNroz == test %rz bogus-prefix )F word-boundaryz)[sshd] error: PAM: Authentication failurerqz -- test %-5s for %rz'getTime retrieved nothing: failure for z by prefix z , anchored: z, log: zgetTime comparison failure for z : by prefix z "z " is not ""r z$getTime should have not matched for z Got: z -- found - %rFz: "z -- OK) rZr[rr,assertNotEqualr.r1 matchTimename)rr4anchoredboundsdaterdate should_matchprefixr6logtimelogUnixlogMatch timeMatchtemplaterts rtestVariousTimesz!DateDetectorTest.testVariousTimess2( #(I#hueH m/ << xu=> $ \?## #|V 5.F FC V. LL(,<'',G $Z_agiqsvwy$w gxPUW]_fhpqs hnnQ'/ gtGLfV]^`)-(9(9(C(CC(HHYI''Y7G LL"YHMMEJ $Z_agiqsvwy$w gxPUW]_fhpqs hnnQ'/ gtGLfV]^` LLG#MIrc|jt|jj|jjdy)Nr)r]r^rr+ templatesrs rtestAllUniqueTemplateNamesz+DateDetectorTest.testAllUniqueTemplateNames s4J 1 1 @ @ ##A&(rc tjtjddddddj}|jj d}|j |d|\}}|j|||j|jdd tdD]S}|jj d \}}|j|||j|jdd U|jj d\}}|j|||j|jdd y) Ni r%z#2012/10/11 02:37:17 [error] 18434#0r z2012/10/11 02:37:17z#11/10/2012 02:37:17 [error] 18434#0z11/10/2012 02:37:17) timemktimerY timetuplerr,rsr.r1range)rmulogdatelogTimer~is rtestFullYearMatch_gh130z(DateDetectorTest.testFullYearMatch_gh130s, {{8$$T2r1b"=GGIJ"    % %&K L'gt$!GX7B8>>!$&;< 9>a,,445Z[WhGR HNN1%'<=> ++334YZGX7B8>>!$&;? @ @ @rc<|j}dD]\}}}tjd|||ft|D]^}tjd||j |\}}|j ||j |jd|`y)N))z030324 0:03:59z9some free text 030324 0:03:59 -- 2003-03-07 17:05:01 ...r )z2003-03-07 17:05:01z+some free text 2003-03-07 17:05:01 test ...rJ)z030324 0:04:00z{server mysqld[1000]: 030324 0:04:00 [Warning] Access denied ... foreign-input just some free text 2003-03-07 17:05:01 testr)zSep 16 21:30:26z[server mysqld[1020]: Sep 16 21:30:26 server mysqld: 030916 21:30:26 [Warning] Access deniedrJ)z2005-10-07 06:09:42zEserver mysqld[5906]: 2005-10-07 06:09:42 5907 [Warning] Access denied)z2005-10-08T15:26:18.237955zFserver mysqld[5906]: 2005-10-08T15:26:18.237955 6 [Note] Access deniedr)z051009 10:05:30z@server mysqld[1000]: 051009 10:05:30 [Warning] Access denied ...2 == test: %rzLine: %sr )rrZr[rrtr-r.r1)rr`debitlinecntrmatchrs rtestAmbiguousInOrderedTemplatesz0DateDetectorTest.testAmbiguousInOrderedTemplatesbs ",udC  << tS12 #J,q LLT"ll4(OE8OOEU[[^U+ ,#,rc tj|_tjtj dzkr tj dzt_|j}d}dD]_\}}t |||zdzD]E}tj d||z|f|j||z\}}|j|Ga |jt_y#|jt_wxYw)Nr r))Gserver mysqld[5906]: 2005-10-07 06:09:%02i 5907 [Warning] Access deniedr)zCserver mysqld[5906]: 051007 06:10:%02i 5907 [Warning] Access deniedrV)rrr) rlogLevel _DateDetectorTest__old_eff_levelrZgetEffectiveLevelrr[rtr-)rr`rrrrrs rtestLowLevelLoggingz$DateDetectorTest.testLowLevelLogging{s0&//4f668::"446q8L 21{c 1aeAg  \\-$(C1||D1H-_UH __U  //<4//<s CC((C?ctd}|jt|jd|j d|j zt }|jt|jdy)Nz (%ExY%Exm%Exdz (20050101zCompile %r failedro)rr]rr assertLoggedrurr)rrs rtestWrongTemplatez"DateDetectorTest.testWrongTemplatesW'!Iq{{K8'!&&01n!Iqyy.9rN)__name__ __module__ __qualname__rrpropertyrr9rArCrGrhrrrrrrrrrrrr(sg     *.& 9/bRh(=((ET@*,20(:rrz%Y-%m-%d[T ]%H:%M:%S(?:\.%f)?%zc*eZdZdZdZdZdZdZy)CustomDateFormatsTestcVtjj|tyr)unittestTestCaserr rs rrzCustomDateFormatsTest.setUps $ -rcVtjj|tyr)rrrr rs rrzCustomDateFormatsTest.tearDowns T"rc ltjjtjdd}|j |tjddddd|j t tjd|j t tj||j tjdd|j tjdd|j tjd d|j tjd dtjjtjd d}|j |tjdddd dtjjtjd d}|j |tjdddd dtjjtjdd}|j |tjdddddtjjtjdd}|j |tjdddddy)Nz2007-01-25T12:00:00Zrir rKrpZz2007-01-01T120:00:00Zz2007-13-01T12:00:00Zz2007-01-25T12:00:00+0400z2007-01-25T12:00:00+04:00z2007-01-25T12:00:00-0400z2007-01-25T12:00:00-04)rYr\iso8601rr.r] TypeError)rr5s r testIso8601z!CustomDateFormatsTest.testIso8601s'    + + ??)*1- /$ T1b"a(*Iw5Iw57??2&-7??3'.7??#:;TB7??#9:DA    + + ??-.q1 3$ T1b!Q')    + + ??./2 4$ T1b!Q')    + + ??-.q1 3$ T1b"a(*    + + ??+,Q/ 1$ T1b"a(*rct}|jdD]\}}}tjd|||f||}nt}|j ||j |}|r\|j |t|tr%|j||djd|j||d|j|dy)N)))rFNz*Test failure Jan 23 21:59:59 for 192.0.2.1)FNz7Test failure TestJan 23 21:59:59.011 2015 for 192.0.2.1)FNz3Test failure Jan 23 21:59:59123456789 for 192.0.2.1)Aug 8 11:25:50Nz@Aug 8 11:25:50 20030f2329b8 Authentication failed from 192.0.2.1)rNzB[Aug 8 11:25:50] 20030f2329b8 Authentication failed from 192.0.2.1)zAug 8 11:25:50 2014NzEAug 8 11:25:50 2014 20030f2329b8 Authentication failed from 192.0.2.1)20:00:00 01.02.2003z%H:%M:%S %d.%m.%Y$z 192.0.2.1 at 20:00:00 01.02.2003)[20:00:00 01.02.2003]\[%H:%M:%S %d.%m.%Y\]192.0.2.1[20:00:00 01.02.2003])rr[20:00:00 01.02.2003]192.0.2.1)rz\[%H:%M:%S %d.%m.%Y\]$r)rz^\[%H:%M:%S %d.%m.%Y\]r)[17/Jun/2011 17:00:45]z^\[%d/%b/%Y %H:%M:%S\]z4[17/Jun/2011 17:00:45] Attempt, IP address 192.0.2.1)r\[%d/%b/%Y %H:%M:%S\]z3Attempt [17/Jun/2011 17:00:45] IP address 192.0.2.1)rrz:Attempt IP address 192.0.2.1, date: [17/Jun/2011 17:00:45])F%H:%M:%S %d.%m.%Y192.0.2.1x20:00:00 01.02.2003)Fr20:00:00 01.02.2003x192.0.2.1)r**%H:%M:%S %d.%m.%Y**r)rrr)z*20:00:00 01.02.2003*z\**%H:%M:%S %d.%m.%Y\**ztest*20:00:00 01.02.2003*test)rrz192.0.2.1 20:00:00 01.02.2003)rrz20:00:00 01.02.2003 192.0.2.1)Nz%Y-%Exm-%Exd %ExH:%ExM:%ExS)0000-12-30 00:00:00 - 2003-12-30 00:00:00)2003-12-30 00:00:00z%ExY-%Exm-%Exd %ExH:%ExM:%ExSr)rNr)z 200333 010203z %Y%m%d %H%M%S)text:200333 010203 | date:20031230 010203)20031230 010203%ExY%Exm%Exd %ExH%ExM%ExSr)rNr)z20030101 000000r!00001230 010203 - 20030101 000000)N"{^LN-BEG}%ExY%Exm%Exd %ExH%ExM%ExSr)rrz!20031230 010203 - 20030101 000000)20031230010203#{^LN-BEG}%ExY%Exm%Exd%ExH%ExM%ExS**2003123001020320030101000000)rrz#2003123001020320030101000000)rrz##2003123001020320030101000000)rz!{^LN-BEG}%ExY%Exm%Exd%ExH%ExM%ExSz[20031230010203]20030101000000)=`A.{^LN-BEG}%ExY-%Exm-%Exd %ExH:%ExM:%ExS(?: %z)? [2003-12-30 01:02:03] server ...)r.{^LN-BEG}%ExY-%Exm-%Exd %ExH:%ExM:%ExS(?: %Z)?r)EgAr$[2003-12-30 01:02:03 UTC] server ...)rrr)rr"[2003-12-30 01:02:03 Z] server ...)rrz&[2003-12-30 01:02:03 +0000] server ...)rrrrr r) rrrZr[r+r,r- isinstancer2r.r1)rdefDDmatchedrrr`r5s rtestAmbiguousDatePatternz.CustomDateFormatsTest.testAmbiguousDatePatterns .%=L!wD| << T23j B Bb **T 4 OOD'3 gtAw}}Q/0 gtAw'T4 YL!rcdD]\}}}tjd|||ft}|j||j |}|r\|j |t |tr%|j||djd|j||d|j|dy)N) )g?|Az^%B %Exd %I:%ExM:%ExS**zJanuary 23 12:59:59)g'\Az^%y %U %A %ExH:%ExM:%ExS**01 11 Wednesday 21:59:59)gWAz^%y %W %A %ExH:%ExM:%ExS**r)gZA^%y %W %w %ExH:%ExM:%ExS**z01 11 0 21:59:59)g'YArz01 11 6 21:59:59)gOA^%ExH:%ExM:%ExS**z21:59:59)g@XArz00:00:01)gMAz^%m/%d %ExH:%ExM:%ExS**z09/01 21:59:59)g8=MAz ^%Y-%m-%d**z 2004-09-01)g@DMAz ^%Y-%m-%d%z**z 2004-09-01Zrr r) rZr[rr+r,r-rr2r.r1)rrrrr`r5s rtestVariousFormatSpecsz,CustomDateFormatsTest.testVariousFormatSpecss !wD* << T232R **T 4 OOD'3 gtAw}}Q/0 gtAw'T4 A !rN)rrrrrrrrrrrrrs  !*FO!b!!rr) __author__ __copyright__ __license__rrrYserver.datedetectorrserverrserver.datetemplaterrutilsr r r helpersr rZrrrrrrrrsl. 2   .!@BB : n:)n:b = >a!H--a!r