HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/fail2ban/tests/__pycache__/fail2banregextestcase.cpython-38.pyc
U

ܜ^�?�@s�dZdZdZddlZddlZddlZddlmZddlm	Z	m
Z
mZmZm
Z
dd	lmZmZmZmZdd
lmZee_dd�Zee_ej�ej�e�d
�Zej�ej�e�d�Zdadd�Zdd�ZGdd�de�Zdd�Z dZ!dZ"dZ#dZ$ej�ed�Z%ej�ed�Z&ej�ed�Z'ej�edd�Z(ej�ed d!�Z)ej�ed"�Z*ej�ed d#�Z+ej�edd$�Z,ej�ed d%�Z-Gd&d'�d'e�Z.dS)(zSerg BresterzHCopyright (c) 2015 Serg G. Brester (sebres), 2008- Fail2Ban ContributorsZGPL�N�)�
fail2banregex)�
Fail2banRegex�get_opt_parser�exec_command_line�output�str2LogLevel�)�setUpMyTime�tearDownMyTime�LogCaptureTestCase�logSys)�
CONFIG_DIRcGst�|d�dS)Nr)r
�notice)�args�r�F/usr/lib/python3/dist-packages/fail2ban/tests/fail2banregextestcase.py�_test_output%srZconfig�filescGs@t�}|�t|��\}}|jdkr2t�t|j��||t|�fS)N)rZwarning)r�
parse_args�listZ	log_levelr
ZsetLevelrr)r�parser�optsrrr�_Fail2banRegex/s

rcGst|�\}}}|�|�S�N)r�start)rrZ
fail2banRegexrrr�
_test_exec7src@seZdZdd�ZdS)�
ExitExceptioncCs||_d||_dS)NzExit with code: %s)�code�msg)�selfrrrr�__init__<szExitException.__init__N)�__name__�
__module__�__qualname__r!rrrrr;src
Gs�d	dd�}tjtjtjd�}d}|t_ts6ttjd�att_t_z>ztt	|��Wn(t
k
r|}z
|j}W5d}~XYnXW5|dt_|dt_|dt_X|S)
NrcSst|��dSr)r)rrrr�_exitAsz&_test_exec_command_line.<locals>._exit)�exit�stdout�stderr�wr&r'r()r)�sysr&r'r(�DEV_NULL�open�os�devnullrrrr)rr%Z_orgZ
_exit_code�errr�_test_exec_command_line@s


r0zRDec 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 192.0.2.0z�(?:(?:Authentication failure|Failed [-/\w+]+) for(?: [iI](?:llegal|nvalid) user)?|[Ii](?:llegal|nvalid) user|ROOT LOGIN REFUSED) .*(?: from|FROM) <HOST>z8Authentication failure for <F-ID>.*?</F-ID> from <HOST>$z<Authentication failure for <F-USER>.*?</F-USER> from <HOST>$ztestcase01.logztestcase02.logztestcase-wrong-char.logZlogs�sshdzfilter.dz	sshd.confzzzz-sshd-obsolete-multiline.logz zzz-sshd-obsolete-multiline.confzzzz-generic-examplezzzz-generic-example.confc@seZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?S)@�Fail2banRegexTestcCst�|�t�dS)zCall before every test case.N)r�setUpr
�r rrrr3hs
zFail2banRegexTest.setUpcCst�|�t�dS)zCall after every test case.N)r�tearDownrr4rrrr5ms
zFail2banRegexTest.tearDowncCs|�tdd��|�d�dS)N�testz.** from <HOST>$�$Unable to compile regular expression��assertFalser�assertLoggedr4rrr�testWrongRErs
�zFail2banRegexTest.testWrongREcCs$|�tddddd��|�d�dS)N�
--datepatternz{^LN-BEG}EPOCHr6z.*? from <HOST>$z.**r7r8r4rrr�testWrongIngnoreRExs�z$Fail2banRegexTest.testWrongIngnoreREc	Cs&|�tddddtd��|�d�dS)Nr<�*^(?:%a )?%b %d %H:%M:%S(?:\.%f)?(?: %ExY)?�--print-all-matched�--print-no-missed�+Authentication failure for .*? from <HOST>$�.Lines: 1 lines, 0 ignored, 1 matched, 0 missed��
assertTruer�STR_00r:r4rrr�testDirectFounds�z!Fail2banRegexTest.testDirectFoundcCs |�tdtd��|�d�dS)N�--print-all-missedzXYZ from <HOST>$z.Lines: 1 lines, 0 ignored, 0 matched, 1 missedrCr4rrr�testDirectNotFound�s�z$Fail2banRegexTest.testDirectNotFoundcCs"|�tdtdd��|�d�dS)N�--print-all-ignoredrAzkevin from 192.0.2.0$z.Lines: 1 lines, 1 ignored, 0 matched, 0 missedrCr4rrr�testDirectIgnored�s�z#Fail2banRegexTest.testDirectIgnoredcCsL|�tdddtt��|�d�|�d�|�d�|�d�|�d�dS)	Nr<r>r?�0Lines: 19 lines, 0 ignored, 13 matched, 6 missed�Error decoding linez6Continuing to process line ignoring invalid characterszVDez 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128zVDec 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 87.142.124.10�rDr�FILENAME_01�RE_00r:r4rrr�testDirectRE_1�s�



z Fail2banRegexTest.testDirectRE_1c	Cs&|�tddddtt��|�d�dS)Nr<r>r?�--rawz0Lines: 19 lines, 0 ignored, 16 matched, 3 missedrMr4rrr�testDirectRE_1raw�s�z#Fail2banRegexTest.testDirectRE_1rawc
Cs\|�tdddddtt��|�d�|��|�tddd	d
��|jddd
�|�d�dS)Nr<r>r?rQz--usedns=norK�-d�^Epochz1490349000 test failed.dns.chz^\s*test <F-ID>\S+</F-ID>rBT��allz)Unable to find a corresponding IP address)rDrrNrOr:�pruneLog�assertNotLoggedr4rrr�testDirectRE_1raw_noDns�s&�
�z)Fail2banRegexTest.testDirectRE_1raw_noDnscCs$|�tdddtt��|�d�dS)Nr<r>r?�/Lines: 13 lines, 0 ignored, 5 matched, 8 missed�rDr�FILENAME_02rOr:r4rrr�testDirectRE_2�s�z Fail2banRegexTest.testDirectRE_2cCs@|�tdddddddtt�	�|�d�|�d	�|�d
�dS)Nr<r>z
--timezonezUTC+0200z	--verbose�--verbose-dater@rZz&141.3.81.106  Sun Aug 14 11:53:59 2005z&141.3.81.106  Sun Aug 14 11:54:59 2005r[r4rrr�testVerbose�s�

zFail2banRegexTest.testVerbosec
Csv|�tdddddddttd�
�|jd	d
dd�|��|�tddd
dtdd��|jdddd�|jdddd�dS)N�-lr�-vr^r?rI�-cr1�8[29116]: User root not allowed because account is lockedz)[29116]: Received disconnect from 1.2.3.4TrU�-vvzRDec 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 192.0.2.1zsshd[logtype=short]zReal  filter options :z'logtype': 'short'�'logtype': 'file'�'logtype': 'journal')rDrr�
FILENAME_SSHDr:rWrXr4rrr�testVerboseFullSshd�s8���z%Fail2banRegexTest.testVerboseFullSshdc
Cs0|�tddddttd��|jdddd	d
�dS)Nr`rr?rbzsshd.conf[mode=normal]z"[29116]: Connection from 192.0.2.4rc�+[29116]: Received disconnect from 192.0.2.4TrU)rDrr�FILENAME_ZZZ_SSHDr:r4rrr�testFastSshd�s��zFail2banRegexTest.testFastSshdc
Cs>|�tdddddtj�t�ttj�t���|jddd�dS)	Nr`rr?rGrbriTrU)	rDrr-�path�dirname�FILTER_ZZZ_SSHDrj�basenamer:r4rrr�testMultilineSshd�s

��z#Fail2banRegexTest.testMultilineSshdcCs|�tddttd��dS)Nr`rz[mode=test])rDr�FILENAME_ZZZ_GEN�FILTER_ZZZ_GENr4rrr�testFullGenerics�z!Fail2banRegexTest.testFullGenericc
CsldD]b}|�d|�|�tddddddd	d
|dd�	�|�d
|d|df�|jdddd�qdS)N)r�z[test-phase %s]�--usedns�norSrTr?�
--maxlines�5z1490349000 TEST-NL
�L1490349000 FAIL
1490349000 TEST1
1490349001 TEST2
1490349001 HOST 192.0.2.34�*^\s*FAIL\s*$<SKIPLINES>^\s*HOST <HOST>\s*$z0Lines: %s lines, 0 ignored, 2 matched, %s missed�rz|  1490349000 FAILz|  1490349001 HOST 192.0.2.34TrU)rWrDrr:)r ZpreLinesrrr�testDirectMultilineBuf	s"��z(Fail2banRegexTest.testDirectMultilineBufc
Cs:|�tddddddddd	d
�
�|�d�|�dd
�dS)NrurvrSrT�
--debuggexr?rwrxryrz�.Lines: 4 lines, 0 ignored, 2 matched, 2 missedz&flags=mz?flags=m�rDrr:r4rrr�testDirectMultilineBufDebuggexs�
z0Fail2banRegexTest.testDirectMultilineBufDebuggexc
Cs(|�tddddddd��|�d�dS)	NrurvrSrTr?z)1490349000 FAIL: failure
host: 192.0.2.35z^\s*FAIL:\s*.*\nhost:\s+<HOST>$rBrr4rrr�testSinglelineWithNLinContent"s�z/Fail2banRegexTest.testSinglelineWithNLinContentc
Cs(|�tddddddd��|�d�dS)	Nz-rrS�^\[{LEPOCH}\]\s+rwrxz�[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: failurez^<HOST> FAIL\b�.Lines: 4 lines, 0 ignored, 4 matched, 0 missedrr4rrr�testRegexEpochPatterns+s�z(Fail2banRegexTest.testRegexEpochPatternsc
Cs8|�tddddddd��|�d�|jd	d
dd�dS)
NrdrSr�rwrxz�[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
z^<SUBNET> FAIL\br�z192.0.2.0/24z2001:db8:ff:f0::/60TrUrr4rrr�testRegexSubnet6s�
z!Fail2banRegexTest.testRegexSubnetcCs�|�tddtt��|�d�|��|�tddtt��|jddddd	�|��|�tddtt��|jd
dddd	�|��|�tddtt��|�t�|��|�tdd
tt��|�d�|��dS)Nz-o�idZkevin�rowz['kevin'z'ip4': '192.0.2.0'z'fid': 'kevin'TrUz['192.0.2.0'z'user': 'kevin'r�user)rDrrE�RE_00_IDr:rW�
RE_00_USERr4rrr�testFrmtOutputBs


z Fail2banRegexTest.testFrmtOutputcCs|�ttt��dSr)r9rrqr4rrr�testWrongFilterFileXs�z%Fail2banRegexTest.testWrongFilterFilecCsddlm}|��dS)Nr)�_decode_line_warn)Z
server.filterr��clear)r r�rrr�_reset^szFail2banRegexTest._resetc	Csdtjjdd�|��|�tddddtt��|�d�|�d�|�d	�|�d
�|�d�dS)NT�Zstockr`rr<r>r~rLz7Continuing to process line ignoring invalid characters:zMNov  8 00:16:12 main sshd[32548]: input_userauth_request: invalid user llincozkNov  8 00:16:12 main sshd[32547]: pam_succeed_if(sshd:auth): error retrieving information about user llinco�	�unittestZF2BZSkipIfCfgMissingr�rDr�FILENAME_WRONGCHAR�FILTER_SSHDr:r4rrr�testWronCharcs�



zFail2banRegexTest.testWronCharcCsVtjjdd�|��|�tddddddttd	�	�|�d
�|�d�|�d�dS)
NTr�r`rr<r>r}r?zllinco[^\\]rLz.Lines: 4 lines, 1 ignored, 2 matched, 1 missedzhttps://r�r4rrr�testWronCharDebuggexss �

z&Fail2banRegexTest.testWronCharDebuggexcCsP|�t�d�|��|�td�d�|�t���|��|�td�d�dS)Nrz-Vz	--version)�assertNotEqualr0rW�assertEqualr:rZnormVersionr4rrr�testExecCmdLine_Usage�sz'Fail2banRegexTest.testExecCmdLine_UsagecCs$|�tddtd�d�|�d�dS)Nr`�inforArrB)r�r0rEr:r4rrr�testExecCmdLine_Direct�s��z(Fail2banRegexTest.testExecCmdLine_DirectcCs$|�tddtd�d�|�d�dS)Nr`r�zAuthentication failurerzNo failure-id group in )r�r0rEr:r4rrr�testExecCmdLine_MissFailID�s��z,Fail2banRegexTest.testExecCmdLine_MissFailIDc	CsR|�tdddddd�d�|�d�|��|�td	dddd�d�|�d
�dS)Nr`rrSz%:%.%-ZLOGZRErz ERROR: Failed to set datepatternrazFailed to set datepattern)r�r0r:rWr4rrr�testExecCmdLine_ErrorParam�s,��
��z,Fail2banRegexTest.testExecCmdLine_ErrorParamcCs�tjst�d��|�tdtdd��|�d�|�d�|�d�|�	�|�tdtdd	d��|�d�|�d�dS)
Nz.Skip test because no systemd backand availablezsystemd-journalz,[journalmatch="SYSLOG_IDENTIFIER=dummy",z; failregex="^dummy regex, never match <F-ID>xxx</F-ID>"]rfrez.Lines: 0 lines, 0 ignored, 0 matched, 0 missedz[logtype=file,z, journalmatch="SYSLOG_IDENTIFIER=dummy",)
rZ
FilterSystemdr�ZSkipTestrDrrrr:rXrWr4rrr�testLogtypeSystemdJournal�s4
���


����
z+Fail2banRegexTest.testLogtypeSystemdJournalN)"r"r#r$r3r5r;r=rFrHrJrPrRrYr]r_rhrkrprsr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr2fs>		

	
r2)/�
__author__Z
__copyright__Z__license__r-r*r�ZclientrZclient.fail2banregexrrrrrZutilsr
rrr
rrrl�joinrm�__file__ZTEST_CONFIG_DIRZTEST_FILES_DIRr+rr�	Exceptionrr0rErOr�r�rNr\r�rgr�rjrnrqrrr2rrrr�<module>sB