?PNG  IHDR ? f ??C1 sRGB ?? gAMA ? a pHYs ? ??od GIDATx^LeY?a?("Bh?_????q5k?*:t0A-o??]VkJM??f?8\k2ll1]q????T
Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/user1137782/www/china1.by/classwithtostring.php on line 86

Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 213

Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 214

Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 215

Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 216

Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 217

Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 218
XJXc@sdZdZddklZddkZddkZddkZddkZddk Z ddk Z ddk Z yddk l Z Wnej o dZ nXddklZddklZdd klZlZlZlZlZdd klZdd klZd d klZl Z l!Z!l"Z"d dk#l$Z$ei%i&ei%i'e(dZ)dZdZ*ddZ+dZ,ddZ-dddddZ.hdd6dd6Z/hddddZ0dei1fdYZ2d e"fd!YZ3d"e3fd#YZ4d$e"fd%YZ5d&ei1fd'YZ6d(e"fd)YZ7d*Z8d+Z9d,e"fd-YZ:d.ei1fd/YZ;d0ei1fd1YZ<dS(2s9Copyright (c) 2004 Cyril Jaquier; 2012 Yaroslav HalchenkotGPLi(topenN(tjournali(tJail(t FilterPoll(tFiltert FileFiltert FileContainertlocaletDNSUtils(tFailManagerEmpty(tMyTimei(t setUpMyTimettearDownMyTimet mtimesleeptLogCaptureTestCase(t DummyJailtfilescGs[t|djo|d }ntid jot|hdd6dd6St|SdS( sOverload built in open so we could assure sufficiently large buffer Explicit .flush would be needed to assure that changes leave the buffer iiPisutf-8tencodingtignoreterrorsN(iP(i(tlentsyst version_infotfopen(targs((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyR6s c Cscy|iWnnXyti|WnnXtii|dotd|dndS(Ns.bak(tclosetostunlinktpathtexistst _killfiletNone(tftname((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRDscCs<|i|d|d|i|d|p|dti|dti|d}}y|i||WnEtj o9}|it|d|ft|d|fnXt|djok|djo^tidjpt i i do d}nt }|i||d||dndS( sLittle helper to unify comparisons with the target entries and report helpful failure reports instead of millions of seconds ;) iiiis tcygwincSst|iddS(s\rt(treprtreplace(tx((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pytfsN( t assertEqualR t localtimetAssertionErrortfloatRR RtlinesepRtplatformt startswithR%(tutesttfoundtoutputtcountt found_timet output_timetetsrepr((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt_assert_equal_entriesSs5 # cCs@|i}|i}|i}|i}||||fS(s5Create a tuple for easy comparison from fail ticket (t getAttempttgetTimetgetIPt getMatches(ttickettattemptstdatetiptmatches((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt _ticket_tuplels     cCsRt|tot|i}nt|ii}t||||dS(sXAdditional helper to wrap most common test case Test filter to contain target ticket N(t isinstanceRRBt getFailTickett failManagerttoBanR8(R0tfilter_R2R3R1((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt_assert_correct_last_attemptvsitaR$c Cs3tt|tot|d}n|}xt|D]}|iq=Wd}g}xa|djp ||joF|i} |dj o| |joPn|i| |d7}q`Wt|tot||}n|idi ||i t|to|i nt i d|S(sWCopy lines from one file to another (which might be already open) Returns open fout triis g?N(RRCtstrRtxrangetreadlineR tappendtwritetjointflushRttimetsleep( tin_tfouttntskiptmodet terminal_linetfintitlinestl((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt_copy_lines_between_filess0     sfail2ban-testcasestSYSLOG_IDENTIFIERt7tPRIORITYcCst|tot|d}n|}|itxt|D]}|iqCWd}xm|djp ||joR|i}|dj o||joPnti d|i ||d7}q`Wt|to|i ndS(s<Copy lines from one file to systemd journal Returns None RJitMESSAGEiN( RCRKRtupdatetTEST_JOURNAL_FIELDSRLRMR RtsendtstripR(RTtfieldsRVRWRYRZR[R]((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt_copy_lines_to_journals"   t BasicFiltercBs5eZdZdZdZdZdZRS(cCstd|_dS(NR"(Rtfilter(tself((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pytsetUpscCso|i|iid|iit|i|iid|iit|i|iiddS(Ntwarntyestno(R)Rjt getUseDnst setUseDnstTruetFalse(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestGetSetUseDNSs cCsF|i|iid|iid|i|iiddS(NsDefault Detectorss^%Y-%m-%d-%H%M%S.%f %zs;^Year-Month-Day-24hourMinuteSecond.Microseconds Zone offset(NsDefault Detectors(s^%Y-%m-%d-%H%M%S.%f %zs;^Year-Month-Day-24hourMinuteSecond.Microseconds Zone offset(R)RjtgetDatePatternR tsetDatePattern(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestGetSetDatePatterns csitfddS(NcstdddS(s1.1.1.1ig;-Ag:-A(s1.1.1.1ig;-A(s1.1.1.1ig:-A(R8((Rk(sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyR(s(t assertRaisesR+(Rk((RksA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestAssertWrongTimes c CsxydD]q}xhdD]`}xWd D]O}ti}dig}|||fD]}|ti||qM~q!WqWqWdS( NR$us2016-09-05T20:18:56u2016-09-05T20:18:56s Fail for "göran" from 192.0.2.1u"Fail for "göran" from 192.0.2.1(R$uR$(s2016-09-05T20:18:56u2016-09-05T20:18:56s2016-09-05T20:18:56(s Fail for "göran" from 192.0.2.1u"Fail for "göran" from 192.0.2.1s Fail for "göran" from 192.0.2.1(RtgetpreferredencodingRPRt uni_decode(Rkta1ta2ta3tenct_[1]tv((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestWrongCharInTupleLines (t__name__t __module__RlRtRwRyR(((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRis     tIgnoreIPcBsbeZdZdZdZdZdZdZdZdZ dZ d Z RS( cCs/ti|t|_t|i|_dS(sCall before every test case.N(RRlRtjailRRj(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRls  cCsDd}x7|D]/}|ii||i|ii|q WdS(Ns 127.0.0.1s 192.168.0.1s255.255.255.255s 99.99.99.99(s 127.0.0.1s 192.168.0.1s255.255.255.255s 99.99.99.99(Rjt addIgnoreIPt assertTruetinIgnoreIPList(RktipListR@((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestIgnoreIPOKs cCsDd}x7|D]/}|ii||i|ii|q WdS(NR$s999.999.999.999s abcdef.abcdefs 192.168.0.(R$s999.999.999.999s abcdef.abcdefs 192.168.0.(RjRt assertFalseR(RkRR@((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestIgnoreIPNOKs cCs|iid|i|iid|i|iid|i|iid|i|iid|i|iid|i|iiddS(Ns192.168.1.0/25s 192.168.1.0s 192.168.1.1s 192.168.1.127s 192.168.1.128s 192.168.1.255s 192.168.0.255(RjRRRR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestIgnoreIPCIDR scCs|iid|i|iid|i|iid|i|iid|i|iid|i|iid|i|iiddS(Ns192.168.1.0/255.255.255.128s 192.168.1.0s 192.168.1.1s 192.168.1.127s 192.168.1.128s 192.168.1.255s 192.168.0.255(RjRRRR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestIgnoreIPMaskscCsOt|iid|iid|iid|idtdS(Ns192.168.1.0/25ss1387203300.222 192.168.1.32sIgnore 192.168.1.32(R RjRt addFailRegextprocessLineAndAddt assertLoggedR (Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestIgnoreInProcessLines  cCs>|iid|iid|id|iddS(Ns192.168.1.0/25s 192.168.1.32sIgnore 192.168.1.32s\Requested to manually ban an ignored IP 192.168.1.32. User knows best. Proceeding to ban it.(RjRt addBannedIPtassertNotLoggedR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestIgnoreAddBannedIP%s cCs`|iitidtiitd|i|ii d|i |ii ddS(Nt signorecommand.py s10.0.0.1s10.0.0.0( RjtsetIgnoreCommandRt executableRRRPtTEST_FILES_DIRRRR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestIgnoreCommand+s*cCs]d}xPdddgD]?}|ii|td||id|ii||fqWdS(Ns 93.184.216.34tdnsR@tcommandt ignore_sources[%s] Ignore %s by %s(Rjt logIgnoreIpRrRRR"(RkR@R((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestIgnoreCauseOK0s cCs=|iidtdd|id|iiddfdS(Ns example.comRt NOT_LOGGEDs[%s] Ignore %s by %s(RjRRsRRR"(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestIgnoreCauseNOK6s( RRRlRRRRRRRRR(((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRs       t IgnoreIPDNScBseZdZdZRS(cCs-|iid|i|iiddS(Ns www.epfl.chs 128.178.50.12(RjRRR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestIgnoreIPDNSOK=scCs_|iid|i|iid|i|iid|i|iiddS(Ns www.epfl.chs 127.177.50.10s 128.178.50.11s 128.178.50.13(RjRRR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestIgnoreIPDNSNOKAs(RRRR(((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyR;s tLogFilecBs)eZdZdZdZdZRS(stestcases/missingLogFilecCsti|dS(N(RRl(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRlMscCsti|dS(N(RttearDown(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRPscCs/td|_|it|iitidS(N(RR RjRxtIOErrort addLogPathRtMISSING(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestMissingLogFilesSs(RRRRlRR(((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRIs  tLogFileFilterPollcBs8eZeiiedZdZdZdZ RS(stestcase01.logcCs)tt|_|iitidS(sCall before every test case.N(RRRjRRtFILENAME(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRl\scCsdS(sCall after every test case.N((Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRascCs<|i|iiti|i|iitidS(N(RRjt isModifiedRRR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestIsModifiedhs( RRRRRPRRRlRR(((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRXs  tLogFileMonitorcBs}eZdZdZdZddZdZdZdZdZ d Z d Z d Z d Z d ZRS(s#Few more tests for FilterPoll API cCstti|d|_|_tidd\}|_t|id|_t t |_|ii |it |i_ |iiddS(sCall before every test case.tNAtfail2bantmonitorfailuresRIs(?:(?:Authentication failure|Failed [-/\w+]+) for(?: [iI](?:llegal|nvalid) user)?|[Ii](?:llegal|nvalid) user|ROOT LOGIN REFUSED) .*(?: from|FROM) N(R RRlRjR"ttempfiletmkstempRtfileRRRRrtactiveR(Rkt_((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRlps  cCs+tti|t|i|idS(N(R RRRRR"(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyR|s g@cCsWti}xDti||jo,|ii|iotStidqWtS(s?Wait up to `delay` sec to assure that it was modified or not g?(RRRjRR"RrRSRs(Rktdelayttime0((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRs cCs|id S(Ng?(R(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt notModifiedscCseti|id|ii|i|id|i}tidj}|i||jdS(NisUnable to open %stroot( RtchmodR"Rjt getFailurest _is_loggedtgetpasstgetuserR(Rktfailure_was_loggedtis_root((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestUnaccessibleLogFiles cCs>t|i|i|ii|i|id|idS(NsUnable to open %s(RRR"RjRR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt testNoLogFilescCs>|iid|id|iid|iddS(Nis6Cannot remove regular expression. Index 0 is not valid(Rjt delFailRegexRR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestRemovingFailRegexs cCs!|iid|iddS(Nis6Cannot remove regular expression. Index 0 is not valid(RjtdelIgnoreRegexR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestRemovingIgnoreRegexscCs}|i|i|i|i|i|itxbtdD]T}|iid||ii|i|i|i|itqMWti |i |i d|i|it |i d}|i|i|i|it|id||i|i|i|i|it ||i t |i |i ddS(Nisline%d s.oldRI( RRRRtrangeRRORQRtrenameR"RR(RkR[R!((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestNewChangeViaIsModifieds0    cCs|ii|i|it|iiitti |i dd|ii|i|it|iiitti |i dd|ii|it ||iti dS(NRViRW( RjRR"RxR RERFR^t GetFailurest FILENAME_01RRHt FAILURES_01(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt"testNewChangeViaGetFailures_simplescCs|iitti|ii|ii|it||iti tti|idddd|_|ii|it||iti dS(NRWiRXtw( RRR^RRR"RjRRHR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt#testNewChangeViaGetFailures_rewrites cCs|iitti|idddd|_|ii|i|it |ii i |i |ii i dti|i|idtti|iddi|ii|it||iti|i |ii i ddS( NRViRXRis.bakRWi(RRR^RRR"RjRRxR RERFR)t getFailTotalRRRHR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt testNewChangeViaGetFailures_moves (RRt__doc__RlRRRRRRRRRRR(((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRms        cs[tiddifdtiffdYdif_S(s8Generator of TestCase's for different filters/backends Rsmonitorfailures_%stMonitorFailurescseZdZfdZdZddZdZddZddZ d Z d Z d Z e d Zd ZdZdZdZRS(icstd|_|_d|if|_id7_t|id|_t|_|i|_|ii|it |i_ |ii d|ii |i dS(sCall before every test case.Rs%s-%diRIs(?:(?:Authentication failure|Failed [-/\w+]+) for(?: [iI](?:llegal|nvalid) user)?|[Ii](?:llegal|nvalid) user|ROOT LOGIN REFUSED) .*(?: from|FROM) N(R RjR"R3RRRRRRrRRtstartt _sleep_4_poll(Rk(Rttestclass_nametFilter_(sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRls   cSs8t|ii|iit|i|idS(N(R RjtstopRPRRR"(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRs   g@cSsQti}x>ti||jo&t|iotStidqWtS(s@Wait up to `delay` sec to assure that it was modified or not g?(RRRRRrRSRs(RkRR((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pytisFilled#s cSs"t|ito tndS(N(RCRjRR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyR-sg?cSs|i| S(N(R(RkR((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pytisEmpty4scSs3|i|idt||i|d|dS(NiR3(RRRHR(RktfailuresR3((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pytassert_correct_last_attempt8scSs|it|iiitti|idd|it|iii|i t |i tti|idd|i |i d|it |i d|it|iii|iti|it |i dtti|idd|itidS(NRViRWiiiid(RxR RjRERFR^RRRRRRRRR)RR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttest_grow_file<scSsn|iitti|ii|ititti|idddd|_|itidS(NRWiRXR(RRR^RRR"RR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttest_rewrite_fileYs  c Ss|iitti|idddd|_|i|idtt |i t dddi g}|i iD]}|t|qw~|it|i ii|i|i iidti|i|id tti|id di|iti|i|i iid td|id tti|idd i|iti|i|i iid dS(NRViRXRiis&Queue must be empty but it is not: %s.s, s.bakRWiidi(RRR^RRR"RRtintRCRjRRPRtqueueRKRxR RERFR)RRRRRRR (RkRR'((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttest_move_filegs  ,8cSs+tti|iddi|iti|i|ii i d|o!t d|it idntti|iddditi|id|i|iti|i|ii i dtti|iddi|iti|i|ii i ddS(NRVidig?s.newii (R^RRR"RRRR)RjRERRR RRRSRR(Rkt interim_kill((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt_test_move_into_files    cSs|idtdS(NR(RRs(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttest_move_into_filescSs|idtdS(NR(RRr(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt!test_move_into_file_after_removedscSstti|iddi|itit|idditti|iddi|iti|i|i i i dt d|iddS(NRVids.bak2Ri(R^RRR"RRRRR)RjRERRR (Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttest_new_bogus_filescSstti|idd|iti|ii|itti|idd|i |i d|ii |i|itiddtti|idd|itidS(NRVidiR3i( R^RRRRRRjt delLogPathR"RRR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttest_delLogPathsN(RRR3RlRRRRR RRRRRsRRRRR((RRR(sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRs          sMonitorFailures<%s>(%s)(RtmktempRtunittesttTestCase(R((RRRsA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pytget_monitor_failures_testcases %cs#dtiffdY}|S(s<Generator of TestCase's for journal based filters/backends tMonitorJournalFailurescs}eZdZfdZdZdZfdZddZddZd Z d Z d Z d Z RS( cSsptiitd|_t|_d|_t t i |_ d|i |_ hdd6|i d6|_dS(sCall before every test case.stestcase-journal.logsmonitorjournalfailures-%st1t TEST_FIELDt TEST_UUIDN(RRRPRt test_fileRRR RjRKtuuidtuuid4t test_uuidR"tjournal_fields(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRls  csi|i||_|iiddd|ig|iiddd|ig|iiddS(Ns$SYSLOG_IDENTIFIER=fail2ban-testcasess TEST_FIELD=1s TEST_UUID=%ss TEST_FIELD=2s(?:(?:Authentication failure|Failed [-/\w+]+) for(?: [iI](?:llegal|nvalid) user)?|[Ii](?:llegal|nvalid) user|ROOT LOGIN REFUSED) .*(?: from|FROM) (RRjtaddJournalMatchRR(Rktkwargs(R(sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt _initFilters  cSs9|io+|iio|ii|iindS(N(RjRRRP(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRs  cSs|idddS(Nt journalflagsi(R(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestJournalFlagsArgscs(dt|do |ipdfS(NsMonitorJournalFailures%s(%s)R"R(thasattrR"(Rk(R(sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt__str__sg@cSsQti}x>ti||jo&t|iotStidqWtS(s@Wait up to `delay` sec to assure that it was modified or not g?(RRRRRrRSRs(RkRR((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRs g?cSs|i| S(N(R(RkR((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRscSsk|i|id|ii}|i}|i}|i|i|||i||dS(Ni (RRRRDR9R;R<R)(Rkttest_ipt test_attemptsR=R>R@((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pytassert_correct_bans   cSs;|i|ii|it|iiit|i|i dd|it|iii|i t |i t|i|i dddd|i |id|it |i d|it|iii|idd|it |i dt|i|i dd dd |idddS( NRViRWiiis 193.168.0.128iii(RRjRRxR RERFRhRRRRRRRR)R(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRs"  cSs|i|iit|i|idd|idd|iiddd|igt|i|idddd|i |i d |ii ddd|ig|idd t|i|idd dd |i |i d dS( NRVis 193.168.0.128is$SYSLOG_IDENTIFIER=fail2ban-testcasess TEST_FIELD=1s TEST_UUID=%sRWiiii ( RRjRRhRRRtdelJournalMatchRRRRR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttest_delJournalMatch.s(    cSsh|i|iit|i|idddd|i|id|iddxadddi d d d d d i d d fD]/}|i}|i t t i d ||qW|i|idtid}x;t|idjo$ti|jotidqW|it|iii|iiigddgdS(NRWiRVii s 87.142.124.10s:error: PAM: Authentication failure for from 192.0.2.1u>error: PAM: Authentication failure for äöüß from 192.0.2.1sutf-8R&s>error: PAM: Authentication failure for äöüß from 192.0.2.2uFerror: PAM: Authentication failure for äöüß from 192.0.2.2Rbig?s 192.0.2.1s 192.0.2.2(RRjRRhRRRRRtdecodeRcRdRReR RRRRRSR)tsortedRDR;(RkR]Rgtendtm((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttest_WrongCharNs0    )3( RRRlRRRRRRRRRR((R(sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRs      (RR(RR((RsA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt%get_monitor_failures_journal_testcasesRcBs5eZeiiedZeiiedZeiiedZeiiedZ eiiedZ eiiedZ dddd gdfZ d Z d Zd Zd ZdddZdZdZdZdZdZdZdZdZdZdZdZRS(stestcase01.logstestcase02.logstestcase03.logstestcase04.logstestcase-usedns.logstestcase-multiline.logs 193.168.0.128igſAuVAug 14 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128cCsBti|tt|_t|i|_t|i_dS(sCall before every test case.N( RRlR RRRRjRrR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRlys   cCstti|dS(sCall after every test case.N(R RR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRscCs|i|iig|iitidt|i|iidid|iidi|i|iidi d|ii ti|i|iigdS(NttailiiuR$( R)RjtgetLogsRRRRrtgetPosRRMR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestTails##cCs|iitidt|i|iiti|iiti|i|iiti|i|iid|iiddS(NR s unknown.log( RjRRRRrRtcontainsLogPathRR(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestNoLogAddeds cCsg|pti}|pti}|ii||iid|ii|t||i|dS(Ns(?:(?:Authentication failure|Failed [-/\w+]+) for(?: [iI](?:llegal|nvalid) user)?|[Ii](?:llegal|nvalid) user|ROOT LOGIN REFUSED) .*(?: from|FROM) $(RRRRjRRRRH(RktfilenameR((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestGetFailures01s cCstidddd}ttit|d}}x.|iD] }|id|idqDW|i|i|i d|t ||dS( Ntprefixt tmp_fail2bantsuffixtcrlfRs%s s R( RRRRRt readlinesROtrstripRRR(RktfnameRZRUR]((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestCRLFFailures01s   cCs~dddg}d D]}|d|q~f}|iiti|iid |iitit||i|dS( Ns 141.3.81.106igxſAi5i6i9i:uhAug 14 11:%d:59 i60p295 sshd[12365]: Failed publickey for roehl from ::ffff:141.3.81.106 port 51332 ssh2sFailed .* from (i5i6i9i:(RjRRt FILENAME_02RRRH(RkRtmR2((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestGetFailures02s !cCsSd}|iiti|iid|iitit||i|dS(Ns203.162.223.135igzſAs%error,relay=,.*550 User unknown(s203.162.223.135igzſA(RjRRt FILENAME_03RRRH(RkR2((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestGetFailures03s cCsddg}|iiti|iid|iitiy4x-t|D]\}}t||i|qRWWntj onXdS( Ns 212.41.96.186igſAs 212.41.96.185g ɿAsInvalid user .* (s 212.41.96.186igſA(s 212.41.96.185ig ɿA( RjRRt FILENAME_04RRt enumerateRHR (RkR2R[tout((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestGetFailures04s  c Cs7tidddd}t|d}zxdD]}|i|q1W|id}d }xdD]}|dj o(|i|i|ii |n|i d|ii ||ii ||ii |t||i||id|idd|iddqeWWdt||XdS(NRRRRtwbs52015-01-14 20:00:58 user "testing" from "192.0.2.0" s22015-01-14 20:00:59 user "" from "192.0.2.0" s42015-01-14 20:01:00 user "testing" from "192.0.2.0" s 192.0.2.0ig;-As"^\s*user "[^"]*" from ""\s*$sutf-8tasciisError decoding lines7Continuing to process line ignoring invalid characters:s2015-01-14 20:00:58 user s2015-01-14 20:00:59 user (s52015-01-14 20:00:58 user "testing" from "192.0.2.0" s22015-01-14 20:00:59 user "" from "192.0.2.0" s42015-01-14 20:01:00 user "testing" from "192.0.2.0" (s 192.0.2.0ig;-A(Nsutf-8sascii(RRRRORR RRlRjtsetLogEncodingRRRRRHRR(RkRRUR]R2t failregexR((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestGetFailuresWrongChars6     cCsdddddgf}ddddgf}xd|fd|fd |ffD]}\}}t}t|d |}t|_|iid|iti|i d |i tit |||qOWdS( Ns 93.184.216.34igxſAu`Aug 14 11:54:59 i60p295 sshd[12365]: Failed publickey for roehl from example.com port 51332 ssh2uiAug 14 11:58:59 i60p295 sshd[12365]: Failed publickey for roehl from ::ffff:93.184.216.34 port 51332 ssh2iRnRoRmtuseDnssFailed .* from ( RRRrRREt setMaxRetryRRtFILENAME_USEDNSRRRH(Rkt output_yest output_noR(R2RRG((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestGetFailuresUseDNSs"          cCscd}|iiti|iid|iid|iitit||i|dS(Ns 141.3.81.106ig@yſAsFailed .* from sAccepted .* from (s 141.3.81.106ig@yſA(RjRRRRRRH(RkR2((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestGetFailuresMultiRegexs cCss|iiti|iid|iid|iid|iiti|it|ii i dS(NsFailed .* from sAccepted .* from s for roehl( RjRRRRtaddIgnoreRegexRRxR RERF(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestGetFailuresIgnoreRegexs cCsd d g}|iiti|iid|iid|iid|iitig}xMtoEy*|i t |ii i d d !Wqkt j oPqkXqkW|it|t|dS( Ns 192.0.43.10igſAs 192.0.43.11igſAsi^.*rsyncd\[(?P\d+)\]: connect from .+ \(\)$^.+ rsyncd\[(?P=pid)\]: rsync error: .*$idii(s 192.0.43.10igſA(s 192.0.43.11igſA(RjRRtFILENAME_MULTILINERt setMaxLinesR)RRrRNRBRERFR R)R(RkR2t foundList((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestGetFailuresMultiLine$s  $ cCsdg}|iiti|iid|iid|iid|iid|iitit ||i|i |i t |ii idS( Ns 192.0.43.10igſAsi^.*rsyncd\[(?P\d+)\]: connect from .+ \(\)$^.+ rsyncd\[(?P=pid)\]: rsync error: .*$srsync error: Received SIGINTidi(s 192.0.43.10igſA(RjRRR1RR/R2R)RRHtpopRxR RERF(RkR2((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt#testGetFailuresMultiLineIgnoreRegex7s cCsd ddg}|iiti|iid|iid |iid |iid|iitig}xMtoEy*|i t |ii i d d !Wq~t j oPq~Xq~W|it|t|dS(Ns 192.0.43.10igſAs 192.0.43.11igſAs 192.0.43.15si^.*rsyncd\[(?P\d+)\]: connect from .+ \(\)$^.+ rsyncd\[(?P=pid)\]: rsync error: .*$s^.* sendmail\[.*, msgid=<(?P[^>]+).*relay=\[\].*$^.+ spamd: result: Y \d+ .*,mid=<(?P=msgid)>(,bayes=[.\d]+)?(,autolearn=\S+)?\s*$idii(s 192.0.43.10igſA(s 192.0.43.11igſA(s 192.0.43.15igſA(RjRRR1RR2R)RRrRNRBRERFR R)R(RkR2R3((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt"testGetFailuresMultiLineMultiRegexEs$ $ N(RRRRRPRRRRRR*R1RRlRR RR RRRRR"R'R-R.R0R4R6R7(((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRls0       #   t DNSUtilsTestscBs5eZdZdZdZdZdZRS(cCsptidd}|i|gtidd}|i|dgtidd}|i|dgdS(Nswww.example.comRoRms 93.184.216.34Rn(R ttextToIpR)(Rktres((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt testUseDns]s cCsjdddg}xT|D]L}ti|d}|djo|i|dgq|i|gqWdS(Nswww.example.coms!doh1.2.3.4.buga.xxxxx.yyy.invalids1.2.3.4.buga.xxxxx.yyy.invalidRns 93.184.216.34(R R9R)(Rkt hostnamestsR:((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt testTextToIpes  cCsBtid}|i|dtid}|i|ddS(Ns8.8.4.4sgoogle-public-dns-b.google.coms 192.0.2.0(R tipToNameR)R (RkR:((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt testIpToNamesscCstid}|i|dtiddd}|i|dtiddd}|i|dtiddd}|i|dtiddd}|i|ddS(Ns10.0.0.0ltcidrl s10.0.0.1ll(R taddr2binR)R (RkR:((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt testAddr2binzscCs#tid}|i|ddS(Nls10.0.0.0(R tbin2addrR)(RkR:((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyt testBin2addrs(RRR;R>R@RCRE(((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyR8[s     t JailTestscBseZdZRS(cCstddddS(Nttesttbackendtpolling(R(Rk((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyttestSetBackend_gh83s(RRRJ(((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pyRFs(=t __copyright__t __license__t __builtin__RRRRRRRRRRtsystemdRt ImportErrorR t server.jailRtserver.filterpollRt server.filterRRRRR tserver.failmanagerR t server.mytimeR tutilsR R RRt dummyjailRRRPtdirnamet__file__RRR8RBRHR^RdRhRRiRRRRRRR RR8RF(((sA/usr/lib/python2.6/site-packages/fail2ban/tests/filtertestcase.pytsT        ("!    % +D 0