%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python2.7/site-packages/fail2ban/tests/
Upload File :
Create Path :
Current File : //usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyo

�
��&dc@sdZdZdZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlmZddlmZddlmZmZmZmZdd	lmZmZdd
lmZddlmZddlm Z dd
l!m!Z!ee"�a#dZ$ej%j&dd�Z(e(s�ej)j*ej)j+dd��r�dZ(q�dZ(nej)j*ej)j+e(d��Z,ej-dej)j.ej)j.ej)j.ej)j/e0�����dej1fd��YZ2dd�Z3d�Z4de2fd��YZ5d�Z6d�Z7e8ed�s�de9fd��YZ:e:e_:ej;j<Z=d�Z<e<ej;_<nd �Z>d!�Z?ej%j&d"d�Z@d#�ZAd$�ZBddd%�ZCddlDZDddlEZEe8ejFd&�s0dd'�ZGeGejF_Gnd(eHeIdd)�ZJeJejF_Je8ejFd*�s{d+�ZKeKejF_KneLr�dd,�ZMeMejF_Mdd-�ZNeNejF_NnejFjOZPd.�ZQejFjRZSd/�ZTeQejF_OeTejF_Rd0ejFfd1��YZUejVZVdS(2sYaroslav Halchenkos%Copyright (c) 2013 Yaroslav HalchenkotGPLi����N(tStringIO(twrapsi(t	getLoggertstr2LogLeveltgetVerbosityFormatt
uni_decode(tIPAddrtDNSUtils(tMyTime(tUtils(tasyncserver(tversioni �BtFAIL2BAN_CONFIG_DIRtconfigs
fail2ban.confs
/etc/fail2bant
PYTHONPATHtDefaultTestOptionscBseZd�ZRS(cCsSi
dd6dd6td6dd6dd6td6td6td6td	6td
6|_dS(Nt	log_levelt	verbositytlog_lazyt
log_tracebacktfull_tracebacktfastt	memory_dbtno_gamint
no_networkt	negate_re(tNonetTruetFalset__dict__(tself((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt__init__Hs
(t__name__t
__module__R (((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRGstcCs�tj}tjddtjd|ddt�}|j|dddd	d
ddd�|d
ddddd
ddd�|ddddddtd
ddd�|dddddd
t	dd�|dddddddd�|dd dddd!dd"�|d#d$dddd%dd&�|d'd(dddd)dd*�|d+d,dddd-dd.�|d/d0dddd1�|d2dddd3�g�|S(4Ntusages%s [OPTIONS] [regexps]
iRs%prog s-ls--log-leveltdestRtdefaultthelps4Log level for the logger to use during running testss-vtactiontcountRsIncrease verbositys--verbositytstorettypes'Set numerical level of verbosity (0..4)s--log-directtstore_falseRs!Prevent lazy logging inside testss-ns--no-networkt
store_trueRs)Do not run tests that require the networks-gs
--no-gaminRs'Do not run tests that require the gamins-ms--memory-dbRs/Run database tests using memory instead of files-fs--fastRsQTry to increase speed of the tests, decreasing of wait intervals, memory databases-is--ignoreRsAnegate [regexps] filter to ignore tests matched specified regexpss-ts--log-tracebacks.Enrich log-messages with compressed tracebackss--full-tracebacksBEither to make the tracebacks full, not compressed (as by default)(
toptparsetOptiontOptionParsertsystargvRtadd_optionsRtintR(tdocR/tp((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytgetOptParserSsN		

cCs�td�ad}|jdk	r@t|j�}tj|�ntjtj�tj|_|j	}|dkr|dkr�dno|tj
kr�dnZ|tjkr�dnE|ttj
tj�kr�dn$|ttjtj�kr�dnd}||_	ntjtj�}d}|jrNddlm}|jrAd	pDd
|}n	tj}t||�}|j||��tj|�|j	dkr�dtttj�jdd
�fGHn|S(Ntfail2baniiiiis %(message)s(tFormatterWithTraceBacks %(tb)ss %(tbc)ss1Fail2ban %s test suite. Python %s. Please wait...s
R#(RtlogSysRRRtsetLeveltloggingtCRITICALtlevelRt
HEAVYDEBUGtDEBUGtmintINFOtNOTICEtWARNINGtERRORt
StreamHandlerR1tstdoutRthelpersR9Rt	FormatterRtsetFormattert
addHandlerRtstrtreplace(toptstllevRRGtfmtRI((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytinitProcesss:	!!		
$tF2BcBsMeZdZdZd�Zd�Zd�Zd�Zd�Ze	d�Z
RS(i<icCs;|j|_|jr*t|_t|_ni|jd<dS(Ntshare_config(RRRRR(RRN((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR �s
		cCsdS(N((R((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt
SkipIfFast�scCsdS(N((R((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytSkipIfNoNetwork�scKs�ts�|jd�r'tjd��nx�d
D]�}|j|�}|dkrUq.ntjj|�ddkr~|d7}ntjjtjj	t
|d|��s.tjd	||f��q.q.WndS(Ntstocks/Skip test because of missing stock-config filesR(tfilteriR#s.confs.ds-Skip test because of missing %s-config for %r(sactionsfilter(tSTOCKtgettunittesttSkipTestRtostpathtsplitexttexiststjoint
CONFIG_DIR(Rtkwargstttv((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytSkipIfCfgMissing�s

(cs�fd�}|S(Ncs"t����fd��}|S(Ncs tjj���|||�S(N(RZRRRe(RtargsRb(tdecargstf(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytwrapper�s(R(RhRi(Rg(Rhs8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt
_deco_wrapper�s((RRgRj((Rgs8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytskip_if_cfg_missing�scCsPt|t�r!|r!|j}n|jrLt|t�rLt|�d}n|S(Ni
(t
isinstancetbooltMAX_WAITTIMERR4tfloat(Rtwtime((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytmaxWaitTime�s
(R!R"RntMID_WAITTIMER RTRUReRkRRq(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRR�s				
	cst���fd��}|S(Ncs>tjdd�}z�||||�SWdtj|�XdS(Ntprefixsf2b-temp(ttempfiletmkdtemptshutiltrmtree(RRfRbttmp(Rh(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRi�s(R(RhRi((Rhs8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytwith_tmpdir�scst���fd��}|S(Ncs*t�z�|||�SWdt�XdS(N(tsetUpMyTimettearDownMyTime(RRfRb(Rh(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRi�s(R(RhRi((Rhs8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt
with_alt_time�sR[cBseZRS((R!R"(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR[scCsw|dtkrc|jr6|jjt|d��n)|jr_|jjd�|jj�ndSt|||�dS(Niits(	R[tshowAlltstreamtwritelnRLtdotstwritetflusht
_org_AddError(Rttestterr((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytaddErrors		cs�|stt��}nt|�t_tjjrfdt_dt_dt_d�}|tj_	n<dt_dt_dt_t
j��fd�}|t
_tjjr�d�}|tj_
nd	tjd
<t
j�tjt�tj}|jddd
d'�xdtd�D]V}|jd|d�|jd|d�|jd|d�|jd|d�qW|jdd�|jdd�tjjr�|jdd�|jdd�|jdd�tj}x�dt�fdt�fdt�fdt�fd t�fd!t�fd"ttd#�td$�g�fd%ttd#�td$�g�ffD]}|j|�qfWtjjr�x0tj�D]}|j|tjd&��q�Wq�ndS((Ng{�G�zd?g����Mb@?g-C��6?cSstjd��dS(NsSkip test because of "--fast"(RZR[(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytF2B_SkipIfFast"sg�������?g{�G�zt?cs-|dkrtd|��n�|�dS(Ng�?sT[BAD-CODE] To long sleep interval: %s, try to use conditional Utils.wait_for instead(t
ValueError(Rd(t
_org_sleep(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt
_new_sleep,scSstjd��dS(Ns#Skip test because of "--no-network"(RZR[(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytF2B_SkipIfNoNetwork3ssCET-01CEST-02,M3.5.0,M10.5.0tTZtmaxCounti'tmaxTimeii<is
192.0.2.%ss
198.51.100.%ss203.0.113.%ss2001:db8::%ss	test-hosts2001:db8::ffffs
test-others
87.142.124.10s192.0.2.888s8.8.4.4s
dns.googles999.999.999.999s
abcdef.abcdefs
192.168.0.s
failed.dns.chs!doh1.2.3.4.buga.xxxxx.yyy.invalids1.2.3.4.buga.xxxxx.yyy.invalidsexample.coms"2606:2800:220:1:248:1893:25c8:1946s
93.184.216.34swww.example.comt	localhosti,(RQRRRRZRR
tDEFAULT_SLEEP_TIMEtDEFAULT_SLEEP_INTERVALtDEFAULT_SHORT_INTERVALRTttimetsleepRRUR\tenvironttzsetR	tsetAlternateNowtTEST_NOWRtCACHE_ipToNamet
setOptionstxrangetsetRtCACHE_nameToIpRtgetSelfNamestdnsToIp(RNR�R�R�tcti((R�s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt	initTestss`										


		!+cCsdS(N((((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt
mtimesleepesR�cCstjt�dS(N(R	tsetTimeR�(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRzmscCs
dt_dS(N(RR	tmyTime(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR{sscs�t��ddlm}ddlm}ddlm}ddlm}ddlm}ddlm}ddlm}dd	lm	}	dd
lm
}
ddlm}ddlm}dd
lm
}
ddlm}ddlm}ddlm}ddlm}ddlm}�s/tj�}n.dtjf���fd��Y���}|jtj|j��|jtj|j��|jtj|j��|jtj|j��|jtj|j��|jtj|
j��|jtj|j��|jtj|j��|jtj|j��|jtj|j ��|jtj|j��y)ddl!}|jtj|j"��Wnt#k
r�nX|jtj|j$��|jtj|j%��|jtj|j&��|jtj|j'��|jtj|j(��|jtj|j)��|jtj|j*��|jtj|j+��|jtj|
j,��|jtj|
j-��|jtj|
j.��|jtj|
j/��|jtj|j0��|jtj|j1��|jtj|j2��|jtj|j3��|jtj|j4��|jtj|j5��|jtj|j6��|jtj|j7��|jtj|j8��|jtj|j9��|jtj|j:��|jtj|j;��|jtj|j<��|jtj|j��|jtj|	j=��|jtj|	j>��|jtj|j?��|jtj|j@��|jtj|jA��|jtj|jB��tjC�}ddlmD}x�tEjFtEjGjHtEjGjI|jJ���D]Z}|jKd�r|jLd�r|j|jMd|jNtEjGjO|�df��qqWddlPmQ}|g}y^tjRjSs�tjRjTr�t#dtjRjStjRjTf��nddlUmV}|jW|�Wn$t#k
r}tXjYd|�nXy!dd lZm[}|jW|�Wn$t#k
rW}tXjYd!|�nXx-|D]%}|jtj|j\|���q_Wy3dd"l]m^}|jtj|j_|���Wn$t#k
r�}tXjYd#|�nX|jtj|j`��|S($Ni(tbanmanagertestcase(tclientbeautifiertestcase(tclientreadertestcase(ttickettestcase(tfailmanagertestcase(tfiltertestcase(tservertestcase(tdatedetectortestcase(tactiontestcase(tactionstestcase(tsockettestcase(tmisctestcase(tdatabasetestcase(tobservertestcase(tsamplestestcase(tfail2banclienttestcase(tfail2banregextestcasetFilteredTestSuitecs<eZg�D]Zeje�^q
Z��fd�ZRS(cs�g}x�|D]�}t|tj�r8|j|�q
nt|�}xG|jD]<}|j|�}�jsr|n|rN|j|�PqNqNWq
Wx$|D]}t	�|�j|�q�WdS(N(
RlRZt	TestSuitetaddTestRLt_regexpstsearchRtappendtsuper(RtsuitetmatchedR�R}trtm(R�RN(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR��s



(R!R"R�tretcompileR�R�((R�RNtregexps(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR��s"i����(taction_dttest_s.pys%s.%sii(t
FilterPollsSkip, fast: %s, no_gamin: %s(tFilterGamins2Skipping gamin backend testing. Got exception '%s'(tFilterPyinotifys9I: Skipping pyinotify backend testing. Got exception '%s'(t
FilterSystemds7I: Skipping systemd backend testing. Got exception '%s'(aR�R#R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�RZR�R�t	makeSuitetTransmittert	JailTestst
RegexTeststLoggingTeststServerConfigReaderTeststCommandActionTesttExecuteActionstTicketTestst
AddFailuretFailmanagerComplextdnstStatusExtendedCymruInfotImportErrortBeautifierTesttConfigReaderTesttJailReaderTesttFilterReaderTesttJailsReaderTesttJailsReaderTestCachetSockett
ClientMisctHelpersTestt	SetupTesttTestsUtilsTestt
MyTimeTesttDatabaseTesttObserverTesttBanTimeIncrt
BanTimeIncrDBtIgnoreIPtBasicFiltertLogFiletLogFileMonitortLogFileFilterPolltIgnoreIPDNStGetFailurest
DNSUtilsTeststDNSUtilsNetworkTeststDateDetectorTesttCustomDateFormatsTesttFilterSamplesRegextFail2banClientTesttFail2banServerTesttFail2banRegexTestt
TestLoaderR�R\tlistdirR]tabspathtdirnamet__file__t
startswithtendswithtloadTestsFromNameR!R^tserver.filterpollR�RRRRtserver.filtergaminR�R�R:twarningtserver.filterpyinotifyR�tget_monitor_failures_testcasetserver.filtersystemdR�t%get_monitor_failures_journal_testcasetTransmitterLogging(R�RNR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�ttestsR�t
testloaderR�tfile_R�tfiltersR�teR�tFilter_R�((R�RNR�s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytgatherTestsws�
%	
	(.	%
#tassertDictEqualcCs�|jt|t�d�|jt|t�d�||kr�d||f}ddjtjtj|�j�tj|�j���}|p�||}|j	|�ndS(Ns"First argument is not a dictionarys#Second argument is not a dictionarys%r != %rs
(
tassert_RltdictR`tdifflibtndifftpprinttpformatt
splitlinestfail(Rtd1td2tmsgtstandardMsgtdiff((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR'sic
s�d��|rt�n|�fd�����fd��y�|||||�Wn�tk
r�}t|t�r�|jdn
t|�d}ddjtjt	j
|�j�t	j
|�j���}	|p�||	}|j|�nXdS(NcSs=t|t�r)td�|j�D��Std�|D��S(Ncss'|]}t|tttf�VqdS(N(RlRtlistttuple(t.0Rd((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pys	<genexpr>;scss'|]}t|tttf�VqdS(N(RlRRR(R Rd((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pys	<genexpr><s(RlRtanyt
itervalues(Rd((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt
_is_nested9scsEt|tttf�rAtt��fd�|D��d��S|S(Nc3s|]}�|��VqdS(N((R Rd(t_nest_sortedtkey(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pys	<genexpr>BsR%(RlR�RRtsorted(RdR%(R$(R%s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR$@s)cst|�t|�kr1td||f��n|r�|r��|�r��|�r�||krhdStd||f��nt|t�rMt|t�rMxs|j�D]�\}}||}t|tttf�r!t|tttf�r!�|||dkr|dnd||�q�||kr�td||f��q�q�Wn��|d|�}�|d|�}x�t||�D]�\}}t|tttf�r�t|tttf�r��|||dkr�|dnd||�q�||kr�td||f��q�q�WdS(Ns%r != %riiR%(tlenR�RlRt	iteritemsRRtzip(tatbR>t
nestedOnlyR%tktv1tv2(t_assertSortedEqualR#R$(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR0Es('
0/ 0/is
within:s
(
R&t	ExceptionRlR�RfRLR`RRRRRR(
RR*R+R>R,R%RR
RR((R0R#R$s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytassertSortedEqual3s		,tassertRaisesRegexpcOs}y|||�WnK|k
r^}tj|t|��dkry|jd||f�qynX|jdt|d��dS(Ns"%s" does not match "%s"s
%s not raisedR!(R�R�RLRRtgetattr(RtexcclstregexptfunRfRbR
((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR3jscCs�|}t}|dkrUt|d�rUt|t�rUtj|�\}}t}n||kr�|rvt|�}n|p�d||f}|j	|�ndS(Nt__iter__s%r was not found in %r(
RRthasattrRlt
basestringt	itertoolstteeRRR(RR*R+Rtbbtwrap((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytassertInvs+	cCs�|}t}|dkrUt|d�rUt|t�rUtj|�\}}t}n||kr�|rvt|�}n|p�d||f}|j	|�ndS(NR8s%r unexpectedly found in %r(
RRR9RlR:R;R<RRR(RR*R+RR=R>((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytassertNotIn�s+	cCsttjjtjkrBtjjd�tj	dd	|j
��nt|�tjjdkrpt
j
�|_ndS(
Ns
t=i
s %s iis
==========s========== %s s====================(RZRRRR<R@R1tstderrR�R:tdebugtidt
_org_setUpRR�t__startTime(R((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt_customSetUp�s
cCs=tjjdkr9tjjdtj�|jf�ndS(Nis
 %.3fs -- (RZRRRR1RBR�R�RF(R((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt_customTearDown�stLogCaptureTestCasecBsxeZdejfd��YZd�Zd�Zd�Zd�Zd�Z	d
d�Zd�Ze
ejd	��ZRS(t_MemHandlercBsDeZed�Zdd�Zd�Zd�Zd�Zd�Z	RS(cCsktj�|_d|_d|_t�|_d|_t�|_	t
jj|�|rg|j
|_ndS(NR#i(t	threadingtLockt_lockt_valt_dirtyRt_recst
_nolckCntrRt_strmR<tHandlerR t_handle_lazythandle(Rtlazy((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR �s			cCs[|rtd|��nd|_|j�*d|_t�|_|jjd�WdQXdS(Ns.invalid size argument: %r, should be None or 0R#i(R1RNRMRORRPRRttruncate(Rtsize((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRW�s	
	cCs�yX|j�d}y|jj|�Wn-tk
rV|jj|jdd��nXWn'tk
r�}|jjd|�nXdS(Ns
sUTF-8RMsError by logging handler: %r(t
getMessageRRR�tUnicodeEncodeErrortencodeR1(RtrecordRR
((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt__write�s
$cCs|js|jS|jjt�}|jd@r�|ss|jd7_|jdkrZ|jSd|_|jj�nz(|jdM_|j}t�|_Wd|jj�XxC|D]}|j	|�q�Wn%|r�|jdM_|jj�n|j
j�|_|jS(Niiiiii����i����(RORNRMtacquireRRQRPRtreleaset_MemHandler__writeRRtgetvalue(RtlcktrecsR\((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRa�s,	
		
cCs0|j|�|j�|jdO_WdQXdS(Ni(R`RMRO(RR\((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRU�s

cCs3|j�$|jj|�|jdO_WdQXdS(Ni(RMRPR�RO(RR\((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRT�s
N(
R!R"RR RRWR`RaRURT(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRJ�s	
	
	"	cCs�tj|_tj|_tjtjj	�|_
|j
gt_|jtjkrftj|j7_n|jtjdkr�tj
tjd�ntt|�j�dS(Ni(R:R>t
_old_levelthandlerst
_old_handlersRIRJRZRRRt_logR<R@R;R�tsetUp(R((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRh�scCs9|j�|jt_|jt_tt|�j�dS(N(	tpruneLogRfR:ReRdR>R�RIttearDown(R((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRjs
cOsx|jj�}|jdt�sOx|D]}||kr(tSq(WtrttSn%x|D]}||krVtSqVWtSdS(Ntall(RgRaRYRR(RR}Rbtloggedts_((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt
_is_loggeds

cs�jdd�}|rNtjj|�}tj���fd�|�}n�j���}�jdt�s�|s�j	j
�}�jd�|r�d|nd|f�qnb|s�j	j
�}xJ�D]?}||kr��jd||rd|nd|f�q�q�WndS(Ntwaitcs�j���S(N(Rn((RbR}R(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt<lambda>2sRks/None among %r was found in the log%s: ===
%s===s, waited %sR#s(%r was not found in the log%s: ===
%s===(RYRRZRRRqR
twait_forRnRRgRaR(RR}RbRotresRlRm((RbR}Rs8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytassertLogged#s $$
cOs�|jj�}t|�dkro|jdt�rox|D]}||kr;dSq;W|jd||f�n7x4|D],}||krv|jd||f�qvqvWdS(NiRks6All of the %r were found present in the log: ===
%s===s"%r was found in the log: ===
%s===(RgRaR'RYRR(RR}RbRlRm((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytassertNotLoggedDs
%

cCs1|jjd�|r-tjdd|�ndS(NiRAis %s s=====s	===== %s s=====(RgRWR:RC(Rtlogphase((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRiYscCs
|jj�S(N(RgRa(R((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytgetLog^scCs~|tjks$tj�tjkrz|d|d�x0tj|�D]}|jd�}||�qFW|dd�ndS(Ns---- s ----s
t-i(R:RCtgetEffectiveLevelR<R@t	fileinputtinputtrstrip(tfnRUtline((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytdumpFileas$N(R!R"R<RSRJRhRjRnRsRtRRiRvtstaticmethodR:RCR~(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRI�sX				!		(Wt
__author__t
__copyright__t__license__RyR;R<R.R\R�RtRvR1R�RKRZt	cStringIORt	functoolsRRHRRRRtserver.ipdnsRRt
server.mytimeR	tserver.utilsR
tserverRRR!R:R�R�RYRRaR]R_R`RXtputenvR�R�R�tValuesRR7RQRRRyR|R9R1R[t_TextTestResultR�R�R�R�told_TZRzR{RRRtTestCaseRRtreprR2R3RR?R@RhRERGRjt
_org_tearDownRHRIt
pid_exists(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt<module>s�"!		!$,	82		
				O			�
4	

	
	�

Zerion Mini Shell 1.0