%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/fail2banregextestcase.pyo

�
��&dc@sJdZdZdZddlZddlZddlZddlmZddlm	Z	m
Z
mZmZm
Z
dd	lmZmZmZmZdd
lmZee_d�Zee_ejjejje�d�Zejjejje�d
�Zdad�Zd�Zdefd��YZ d�Z!dZ"dZ#dZ$dZ%dZ&ejjed�Z'ejjed�Z(ejjed�Z)dZ*dZ+dZ,ejjedd�Z-ejjed d!�Z.ejjed"�Z/ejjed d#�Z0ejjedd$�Z1ejjed d%�Z2d&efd'��YZ3dS((sSerg BrestersHCopyright (c) 2015 Serg G. Brester (sebres), 2008- Fail2Ban ContributorstGPLi����Ni(t
fail2banregex(t
Fail2banRegextget_opt_parsertexec_command_linetoutputtstr2LogLeveli(tsetUpMyTimettearDownMyTimetLogCaptureTestCasetlogSys(t
CONFIG_DIRcGstj|d�dS(Ni(R
tnotice(targs((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyt_test_output%stconfigtfilescGs_t�}|jt|��\}}|jdkrLtjt|j��n||t|�fS(NRtwarning(snoticeR(Rt
parse_argstlistt	log_levelR
tsetLevelRR(R
tparsertopts((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyt_Fail2banRegex/s
	cGs"t|�\}}}|j|�S(N(Rtstart(R
Rt
fail2banRegex((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyt
_test_exec7st
ExitExceptioncBseZd�ZRS(cCs||_d||_dS(NsExit with code: %s(tcodetmsg(tselfR((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyt__init__<s	(t__name__t
__module__R (((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyR;scGs�dd�}itjd6tjd6tjd6}d}|t_tsZttjd�antt_t_z7ytt	|��Wnt
k
r�}|j}nXWd|dt_|dt_|dt_X|S(NicSst|��dS(N(R(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyt_exitAstexittstdouttstderrtw(tsysR$R%R&tDEV_NULLtopentostdevnullRRRR(R
R#t_orgt
_exit_codete((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyt_test_exec_command_line@s $	

sRDec 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 192.0.2.0sB[sshd] error: PAM: Authentication failure for kevin from 192.0.2.0s�(?:(?:Authentication failure|Failed [-/\w+]+) for(?: [iI](?:llegal|nvalid) user)?|[Ii](?:llegal|nvalid) user|ROOT LOGIN REFUSED) .*(?: from|FROM) <HOST>s8Authentication failure for <F-ID>.*?</F-ID> from <ADDR>$s<Authentication failure for <F-USER>.*?</F-USER> from <ADDR>$stestcase01.logstestcase02.logstestcase-wrong-char.logs"Nov 28 09:16:03 srv sshd[32307]: Failed publickey for git from 192.0.2.1 port 57904 ssh2: ECDSA 0e:ff:xx:xx:xx:xx:xx:xx:xx:xx:xx:...
Nov 28 09:16:03 srv sshd[32307]: Failed publickey for git from 192.0.2.1 port 57904 ssh2: RSA 04:bc:xx:xx:xx:xx:xx:xx:xx:xx:xx:...
Nov 28 09:16:03 srv sshd[32307]: Postponed publickey for git from 192.0.2.1 port 57904 ssh2 [preauth]
Nov 28 09:16:05 srv sshd[32310]: Failed publickey for git from 192.0.2.2 port 57910 ssh2: ECDSA 1e:fe:xx:xx:xx:xx:xx:xx:xx:xx:xx:...
Nov 28 09:16:05 srv sshd[32310]: Failed publickey for git from 192.0.2.2 port 57910 ssh2: RSA 14:ba:xx:xx:xx:xx:xx:xx:xx:xx:xx:...
Nov 28 09:16:05 srv sshd[32310]: Disconnecting: Too many authentication failures for git [preauth]
Nov 28 09:16:05 srv sshd[32310]: Connection closed by 192.0.2.2 [preauth]s�Nov 28 09:16:06 srv sshd[32307]: Accepted publickey for git from 192.0.2.1 port 57904 ssh2: DSA 36:48:xx:xx:xx:xx:xx:xx:xx:xx:xx:...sINov 28 09:16:06 srv sshd[32307]: Connection closed by 192.0.2.1 [preauth]tlogstsshdsfilter.ds	sshd.confszzz-sshd-obsolete-multiline.logs zzz-sshd-obsolete-multiline.confszzz-generic-exampleszzz-generic-example.conftFail2banRegexTestcBs:eZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d �Z"d!�Z#RS("cCstj|�t�dS(N(R	tsetUpR(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyR4ys
cCstj|�t�dS(N(R	ttearDownR(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyR5~s
cCs'|jtdd��|jd�dS(Nttests.** from <HOST>$s$Unable to compile regular expression(tassertFalseRtassertLogged(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestWrongRE�s	
cCs0|jtddddd��|jd�dS(Ns
--datepatterns{^LN-BEG}EPOCHR6s.*? from <HOST>$s.**s$Unable to compile regular expression(R7RR8(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestWrongIngnoreRE�s	cCs3|jtddddtd��|jd�dS(Ns
--datepatterns*^(?:%a )?%b %d %H:%M:%S(?:\.%f)?(?: %ExY)?s--print-all-matcheds--print-no-misseds+Authentication failure for .*? from <HOST>$s.Lines: 1 lines, 0 ignored, 1 matched, 0 missed(t
assertTrueRtSTR_00R8(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestDirectFound�s	
cCs*|jtdtd��|jd�dS(Ns--print-all-missedsXYZ from <HOST>$s.Lines: 1 lines, 0 ignored, 0 matched, 1 missed(R;RR<R8(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestDirectNotFound�s
	
cCs-|jtdtdd��|jd�dS(Ns--print-all-ignoreds+Authentication failure for .*? from <HOST>$skevin from 192.0.2.0$s.Lines: 1 lines, 1 ignored, 0 matched, 0 missed(R;RR<R8(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestDirectIgnored�s	
cCsd|jtdddtt��|jd�|jd�|jd�|jd�|jd�dS(	Ns
--datepatterns*^(?:%a )?%b %d %H:%M:%S(?:\.%f)?(?: %ExY)?s--print-all-matcheds0Lines: 19 lines, 0 ignored, 16 matched, 3 missedsError decoding lines6Continuing to process line ignoring invalid characterssVDez 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128sVDec 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 87.142.124.10(R;RtFILENAME_01tRE_00R8(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestDirectRE_1�s	




cCs3|jtddddtt��|jd�dS(Ns
--datepatterns*^(?:%a )?%b %d %H:%M:%S(?:\.%f)?(?: %ExY)?s--print-all-matcheds--raws0Lines: 19 lines, 0 ignored, 19 matched, 0 missed(R;RR@RAR8(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestDirectRE_1raw�s
	
c	Cs||jtdddddtt��|jd�|j�|jtddd	d
��|jddt�|jd
�dS(Ns
--datepatterns*^(?:%a )?%b %d %H:%M:%S(?:\.%f)?(?: %ExY)?s--print-all-matcheds--raws--usedns=nos0Lines: 19 lines, 0 ignored, 16 matched, 3 misseds-ds^Epochs1490349000 test failed.dns.chs^\s*test <F-ID>\S+</F-ID>s.Lines: 1 lines, 0 ignored, 1 matched, 0 missedtalls)Unable to find a corresponding IP address(R;RR@RAR8tpruneLogtTruetassertNotLogged(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestDirectRE_1raw_noDns�s		


	
cCs0|jtdddtt��|jd�dS(Ns
--datepatterns*^(?:%a )?%b %d %H:%M:%S(?:\.%f)?(?: %ExY)?s--print-all-matcheds/Lines: 13 lines, 0 ignored, 5 matched, 8 missed(R;RtFILENAME_02RAR8(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestDirectRE_2�s
	
cCsV|jtdddddddtt�	�|jd�|jd	�|jd
�dS(Ns
--datepatterns*^(?:%a )?%b %d %H:%M:%S(?:\.%f)?(?: %ExY)?s
--timezonesUTC+0200s	--verboses--verbose-dates--print-no-misseds/Lines: 13 lines, 0 ignored, 5 matched, 8 misseds&141.3.81.106  Sun Aug 14 11:53:59 2005s&141.3.81.106  Sun Aug 14 11:54:59 2005(R;RRIRAR8(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestVerbose�s		


cCs�|jtdddddddttd�
�|jd	d
dt�|j�|jtddddtd
d��|jdddt�|jdddt�dS(Ns-lRs-vs--verbose-dates--print-all-matcheds--print-all-ignoreds-cR2s8[29116]: User root not allowed because account is lockeds)[29116]: Received disconnect from 1.2.3.4RDs-vvsRDec 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 192.0.2.1ssshd[logtype=short]sReal  filter options :s'logtype': 'short's'logtype': 'file's'logtype': 'journal'(R;RRt
FILENAME_SSHDR8RFRERG(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestVerboseFullSshd�s	
	

		
c	CsB|jtddddttd��|jdddd	t�dS(
Ns-lRs--print-all-matcheds-cssshd.conf[mode=normal]s"[29116]: Connection from 192.0.2.4s8[29116]: User root not allowed because account is lockeds+[29116]: Received disconnect from 192.0.2.4RD(R;RRtFILENAME_ZZZ_SSHDR8RF(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestFastSshd�s	
cCsW|jtdddddtjjt�ttjjt���|jddt	�dS(Ns-lRs--print-all-matcheds--print-all-misseds-cs+[29116]: Received disconnect from 192.0.2.4RD(
R;RR+tpathtdirnametFILTER_ZZZ_SSHDRNtbasenameR8RF(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestMultilineSshds	cCs$|jtddttd��dS(Ns-lRs[mode=test](R;RtFILENAME_ZZZ_GENtFILTER_ZZZ_GEN(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestFullGenerics	cCs�x�dD]}|jd|�|jtdddddd	d
d|dd
�	�|jd|d|df�|jdddt�qWdS(Niis[test-phase %s]s--usednstnos-ds^Epochs--print-all-matcheds
--maxlinest5s1490349000 TEST-NL
sL1490349000 FAIL
1490349000 TEST1
1490349001 TEST2
1490349001 HOST 192.0.2.34s*^\s*FAIL\s*$<SKIPLINES>^\s*HOST <HOST>\s*$s0Lines: %s lines, 0 ignored, 2 matched, %s missediis|  1490349000 FAILs|  1490349001 HOST 192.0.2.34RD(ii(RER;RR8RF(RtpreLines((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestDirectMultilineBufs
	
cCsO|jtddddddddd	d
�
�|jd�|jdd
�dS(Ns--usednsRXs-ds^Epochs
--debuggexs--print-all-matcheds
--maxlinesRYsL1490349000 FAIL
1490349000 TEST1
1490349001 TEST2
1490349001 HOST 192.0.2.34s*^\s*FAIL\s*$<SKIPLINES>^\s*HOST <HOST>\s*$s.Lines: 4 lines, 0 ignored, 2 matched, 2 misseds&flags=ms?flags=m(R;RR8(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestDirectMultilineBufDebuggex)s	

cCs<|jtddddddddd	�	�|jd
�dS(Ns--usednsRXs-ds^Epochs--print-all-matcheds-Lt2s)1490349000 FAIL: failure
host: 192.0.2.35s^\s*FAIL:\s*.*\nhost:\s+<HOST>$s.Lines: 2 lines, 0 ignored, 2 matched, 0 missed(R;RR8(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestSinglelineWithNLinContent3s
		
c	Cs6|jtddddddd��|jd�dS(	Ns-rs-ds^\[{LEPOCH}\]\s+s
--maxlinesRYs�[1516469849] 192.0.2.1 FAIL: failure
[1516469849551] 192.0.2.2 FAIL: failure
[1516469849551000] 192.0.2.3 FAIL: failure
[1516469849551.000] 192.0.2.4 FAIL: failures^<HOST> FAIL\bs.Lines: 4 lines, 0 ignored, 4 matched, 0 missed(R;RR8(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestRegexEpochPatterns<s
	
c	CsL|jtddddddd��|jd�|jd	d
dt�dS(Ns-vvs-ds^\[{LEPOCH}\]\s+s
--maxlinesRYs�[1516469849] 192.0.2.1 FAIL: failure
[1516469849] 192.0.2.1/24 FAIL: failure
[1516469849] 2001:DB8:FF:FF::1 FAIL: failure
[1516469849] 2001:DB8:FF:FF::1/60 FAIL: failure
s^<SUBNET> FAIL\bs.Lines: 4 lines, 0 ignored, 4 matched, 0 misseds192.0.2.0/24s2001:db8:ff:f0::/60RD(R;RR8RF(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestRegexSubnetGs	

cCs�|jtddtt��|jd�|j�|jtdddd��|jtd��|j�|jtdddd	��|j�|jtddd
d��|jtd��|j�|jtddtt��|jddddt�|j�|jtddtt��|jddddt�|j�|jtddtt��|jt�|j�|jtddtt��|jd�|j�|jtddtt��|jd�|j�dS(Ns-otidtkevins"1591983743.667 192.0.2.1 192.0.2.2s(^\s*<F-ID/> <F-TUPLE_ID>\S+</F-TUPLE_ID>s	192.0.2.1s	192.0.2.2s#1591983743.667 left 192.0.2.3 rightsM^\s*<F-TUPLE_ID_1>\S+</F-TUPLE_ID_1> <F-ID/> <F-TUPLE_ID_2>\S+</F-TUPLE_ID_2>s+1591983743.667 left [192.0.2.4]:12345 rightsc^\s*<F-TUPLE_ID_1>\S+</F-TUPLE_ID_1> <F-ID><ADDR>:<F-PORT/></F-ID> <F-TUPLE_ID_2>\S+</F-TUPLE_ID_2>s[192.0.2.4]:12345tlefttrighttrows['kevin's'ip4': '192.0.2.0's'fid': 'kevin'RDs['192.0.2.0's'user': 'kevin'Rtusers<ip>, <F-USER>, <family>s192.0.2.0, kevin, inet4(s	192.0.2.1s	192.0.2.2(s[192.0.2.4]:12345RcRd(	R;RR<tRE_00_IDR8REtstrRFt
RE_00_USER(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestFrmtOutputSs@














cCs�|jtddddtt��|jddddt�|j�|jtdd	ddtt��|jddt�|jdddt�dS(
Ns-ds{^LN-BEG}EPOCHs-osFound-ID:<F-ID>s*Found a match but no valid date/time foundsMatch without a timestamp:sFound-ID:kevinRDs{NONE}(R;RtSTR_00_NODTRgR8RFRERG(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestNoDateTime~s"

"
cCs9|jtdddd��|jddddt�dS(	Ns-osFound-ADDR:<ip>s�192.0.2.1 - - [02/May/2021:18:40:55 +0100] "GET / HTTP/1.1" 302 328 "-" "Mozilla/5.0" "-"
192.0.2.2 - - [02/May/2021:18:40:55 +0100
192.0.2.3 - - [02/May/2021:18:40:55s^<ADDR>sFound-ADDR:192.0.2.1sFound-ADDR:192.0.2.2sFound-ADDR:192.0.2.3RD(R;RR8RF(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestIncompleteDateTime�s	
cCs�tjjdt�|jtdddtddtdtd��tj	d�}|jd	|d
koud	|dk�|j
d|d
d|dd
t�|jd�|jd�|jtdddtddtdtd��|j
d|dd|dd|d
d|dd
t�|jd�|jd�|jtdddtddtdt
d��tj	d�dd!t
j	d�d}|j
d|dd|d
d|dd
t�dS(Ntstocks-os<ip>, <F-USER>, <msg>s-cs--usednsRXs
s&sshd[logtype=short, publickey=invalid]s	192.0.2.2i����i����s192.0.2.2, git, RDs192.0.2.1, git, sA[test-phase 1] mode=aggressive & publickey=nofail + OK (accepted)s$sshd[logtype=short, mode=aggressive]i����i����sL[test-phase 2] mode=aggressive & publickey=nofail + FAIL (closed on preauth)ii(tunittesttF2BtSkipIfCfgMissingRFR;RRtSTR_ML_SSHDtSTR_ML_SSHD_OKtsplitR8RGREtSTR_ML_SSHD_FAIL(Rtlines((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestFrmtOutputWrapML�s@'



'cCs|jttt��dS(N(R7RRU(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestWrongFilterFile�s	cCsddlm}|j�dS(Ni(t_decode_line_warn(t
server.filterRytclear(RRy((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyt_reset�scCs�tjjdt�|j�|jtddddtt��|j	d�|j	d�|j	d�|j	d	�|j	d
�dS(NRns-lRs
--datepatterns*^(?:%a )?%b %d %H:%M:%S(?:\.%f)?(?: %ExY)?s.Lines: 4 lines, 0 ignored, 2 matched, 2 missedsError decoding lines7Continuing to process line ignoring invalid characters:sMNov  8 00:16:12 main sshd[32548]: input_userauth_request: invalid user llincoskNov  8 00:16:12 main sshd[32547]: pam_succeed_if(sshd:auth): error retrieving information about user llinco(
RoRpRqRFR|R;RtFILENAME_WRONGCHARtFILTER_SSHDR8(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestWronChar�s
	




cCsstjjdt�|j�|jtddddddttd�	�|j	d	�|j	d
�|j	d�dS(NRns-lRs
--datepatterns*^(?:%a )?%b %d %H:%M:%S(?:\.%f)?(?: %ExY)?s
--debuggexs--print-all-matchedsllinco[^\\]sError decoding lines.Lines: 4 lines, 1 ignored, 2 matched, 1 missedshttps://(
RoRpRqRFR|R;RR}R~R8(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestWronCharDebuggex�s
	


cCsj|jt�d�|j�|jtd�d�|jtj��|j�|jtd�d�dS(Nis-Vs	--version(tassertNotEqualR0REtassertEqualR8RtnormVersion(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestExecCmdLine_Usage�s

cCs0|jtddtd�d�|jd�dS(Ns-ltinfos+Authentication failure for .*? from <HOST>$is.Lines: 1 lines, 0 ignored, 1 matched, 0 missed(R�R0R<R8(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestExecCmdLine_Direct�s
		cCs0|jtddtd�d�|jd�dS(Ns-lR�sAuthentication failureisNo failure-id group in (R�R0R<R8(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestExecCmdLine_MissFailIDs
		cCso|jtdddddd�d�|jd�|j�|jtd	dddd�d�|jd
�dS(Ns-lRs-ds%:%.%-tLOGtREis ERROR: Failed to set datepatterns-vsFailed to set datepattern(R�R0R8RE(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestExecCmdLine_ErrorParams	

	cCs�tjstjd��n|jtdtdd��|jd�|jd�|jd�|j	�|jtdtdd	d��|jd�|jd�dS(
Ns.Skip test because no systemd backend availablessystemd-journals,[journalmatch="SYSLOG_IDENTIFIER=dummy",s; failregex="^dummy regex, never match <F-ID>xxx</F-ID>"]s'logtype': 'journal's'logtype': 'file's.Lines: 0 lines, 0 ignored, 0 matched, 0 misseds[logtype=file,s, journalmatch="SYSLOG_IDENTIFIER=dummy",(
Rt
FilterSystemdRotSkipTestR;RRVR8RGRE(R((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyttestLogtypeSystemdJournals		



	
($R!R"R4R5R9R:R=R>R?RBRCRHRJRKRMRORTRWR[R\R^R_R`RjRlRmRwRxR|RR�R�R�R�R�R�(((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyR3wsD																
				
					+			-								
(4t
__author__t
__copyright__t__license__R+R(RotclientRtclient.fail2banregexRRRRRtutilsRRR	R
RRRPtjoinRQt__file__tTEST_CONFIG_DIRtTEST_FILES_DIRtNoneR)RRt	ExceptionRR0R<RkRARgRiR@RIR}RrRsRuRLR~RNRRRURVR3(((sH/usr/lib/python2.7/site-packages/fail2ban/tests/fail2banregextestcase.pyt<module>sJ("			!!			


Zerion Mini Shell 1.0