HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ns3133907 6.8.0-86-generic #87-Ubuntu SMP PREEMPT_DYNAMIC Mon Sep 22 18:03:36 UTC 2025 x86_64
User: cssnetorguk (1024)
PHP: 8.2.28
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/fail2ban/tests/__pycache__/fail2banregextestcase.cpython-312.pyc
�

�ogf�k����dZdZdZddlZddlZddlZddlZddlmZddl	m
Z
mZmZm
Z
mZdd	lmZmZmZmZdd
lmZee_d�Zee_
ej,j/ej,j1e�d�Zej,j/ej,j1e�d
�Zdad�Zd�ZGd�de�Z d�Z!d�Z"dZ#dZ$dZ%dZ&dZ'ej,j/ed�Z(ej,j/ed�Z)ej,j/ed�Z*dZ+dZ,dZ-ej,j/edd �Z.ej,j/ed!d"�Z/ej,j/ed#�Z0ej,j/ed!d$�Z1ej,j/edd%�Z2ej,j/ed!d&�Z3Gd'�d(e�Z4y))zSerg BresterzHCopyright (c) 2015 Serg G. Brester (sebres), 2008- Fail2Ban Contributors�GPL�N�)�
fail2banregex)�
Fail2banRegex�get_opt_parser�exec_command_line�output�str2LogLevel�)�setUpMyTime�tearDownMyTime�LogCaptureTestCase�logSys)�
CONFIG_DIRc�6�tjd|d�y)N�
output: %sr)r�notice)�argss �F/usr/lib/python3/dist-packages/fail2ban/tests/fail2banregextestcase.py�_test_outputr&s�����|�T�!�W�%��config�filesc���t�}|jt|��\}}|jdvr(t	j
t
|j��||t|�fS)N)r�warning)r�
parse_args�list�	log_levelr�setLevelr
r)r�parser�optss   r�_Fail2banRegexr"0sV��
�
���!�!�$�t�*�-��$���N�N�+�+��/�/�,�t�~�~�.�/�	
�t�]�4�(�)�)rc�<�t|�\}}}|j|�S�N)r"�start)rr!�
fail2banRegexs   r�
_test_execr'8s$��-�t�4��$��m����D�!�!rc��eZdZd�Zy)�
ExitExceptionc�&�||_d|z|_y)NzExit with code: %s)�code�msg)�selfr+s  r�__init__zExitException.__init__=s���$�)�
!�D�
(�$�(rN)�__name__�
__module__�__qualname__r.�rrr)r)<s��)rr)c��dd�}tjtjtjd�}d}|t_tsttjd�atxt_t_	tt|��|dt_|dt_|dt_|S#t$r}|j}Yd}~�Fd}~wwxYw#|dt_|dt_|dt_wxYw)	Nrc��t|��r$)r))r+s r�_exitz&_test_exec_command_line.<locals>._exitBs
���d��r)�exit�stdout�stderr�wr6r7r8)r)�sysr6r7r8�DEV_NULL�open�os�devnullrrr)r+)rr5�_org�
_exit_code�es     r�_test_exec_command_linerBAs�������S�Z�Z�3�:�:�F��������T�"�*�*�c�2�(�#�#���c�j���D��J���&�\�#�(��H�~�#�*��H�~�#�*����
	���v�v�*�����&�\�#�(��H�~�#�*��H�~�#�*�s*�=B=�=	C�C�C�C�C�,Dc�0�ddlm}|j�y)Nr��_decode_line_warn)�
server.filterrE�clearrDs r�_resetrHTs��.����rzRDec 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 192.0.2.0zB[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 <ADDR>$z<Authentication failure for <F-USER>.*?</F-USER> from <ADDR>$ztestcase01.logztestcase02.logztestcase-wrong-char.loga"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]z�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:...zINov 28 09:16:06 srv sshd[32307]: Connection closed by 192.0.2.1 [preauth]�logs�sshdzfilter.dz	sshd.confzzzz-sshd-obsolete-multiline.logz zzz-sshd-obsolete-multiline.confzzzz-generic-examplezzzz-generic-example.confc���eZdZd�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#d"�Z$d#�Z%d$�Z&d%�Z'y&)'�Fail2banRegexTestc�V�tj|�t�t�y)zCall before every test case.N)r�setUprrH�r-s rrNzFail2banRegexTest.setUps�����4� �
�-��(rc�B�tj|�t�y)zCall after every test case.N)r�tearDownr
rOs rrQzFail2banRegexTest.tearDown�s�����d�#��rc�$�|jtdd��|jd�|jddd��|j�|jtdd��|jd�|jd	d
d��y)N�testz.** from <HOST>$�$Unable to compile regular expression�multiple repeat�
at position 2F��allz,^(?:(?P<type>A)|B)? (?(typo)...) from <ADDR>zunknown group name: 'typo'zat position 23)�assertFalser'�assertLogged�pruneLogrOs r�testWrongREzFail2banRegexTest.testWrongRE�s������:�	�������:�;����%��E��B��-�-�/����:�	�:������:�;����0�2B���Nrc	��|jtddddd��|jd�|jddd	�
�y)N�
--datepattern�{^LN-BEG}EPOCHrSz.*? from <HOST>$z.**rTrUrVFrW�rYr'rZrOs r�testWrongIngnoreREz$Fail2banRegexTest.testWrongIngnoreRE�sL�����:��$�	��������:�;����%��E��Brc�b�|jtdd��|jddd��y)NrSzflt[a='x,y,z',b=z,y,x]zWrong filter name or optionszwrong syntax at 14: y,xTrWr`rOs r�testWrongFilterOptionsz(Fail2banRegexTest.testWrongFilterOptions�s7�����:�	�#������2�4M�SW��Xrc
�l�|jtddddtd��|jd�y)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_00rZrOs r�testDirectFoundz!Fail2banRegexTest.testDirectFound�s8���/�/�*��A��-�	�1�	�����D�Erc�f�|jtdtd��|jd�y)N�--print-all-missedzXYZ from <HOST>$z.Lines: 1 lines, 0 ignored, 0 matched, 1 missedrjrOs r�testDirectNotFoundz$Fail2banRegexTest.testDirectNotFound�s/���/�/�*��	����
���D�Erc�h�|jtdtdd��|jd�y)N�--print-all-ignoredrhzkevin from 192.0.2.0$z.Lines: 1 lines, 1 ignored, 0 matched, 0 missedrjrOs r�testDirectIgnoredz#Fail2banRegexTest.testDirectIgnored�s2���/�/�*��	�1��	�����D�Erc	��|jtdddtt��|j	d�|j	d�|j	d�|j	d�|j	d�y)	Nr^rerf�0Lines: 19 lines, 0 ignored, 16 matched, 3 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�rkr'�FILENAME_01�RE_00rZrOs r�testDirectRE_1z Fail2banRegexTest.testDirectRE_1�sp���/�/�*��A������
���F�G����)�*����L�M����l�m����l�mrc
�t�|jtddddtt��|j	d�y)Nr^rerf�--rawz0Lines: 19 lines, 0 ignored, 19 matched, 0 missedrwrOs r�testDirectRE_1rawz#Fail2banRegexTest.testDirectRE_1raw�s6���/�/�*��A��'�����
���F�Grc��|jtdddddtt��|j	d�|j�|jtddd	d
��|j	dd�
�|j
d�y)Nr^rerfr|z--usedns=noru�-d�^Epochz1490349000 test failed.dns.chz^\s*test <F-ID>\S+</F-ID>riTrWz)Unable to find a corresponding IP address)rkr'rxryrZr[�assertNotLoggedrOs r�testDirectRE_1raw_noDnsz)Fail2banRegexTest.testDirectRE_1raw_noDns�s����/�/�*��A��'�=�����
���F�G��-�-�/��/�/�*���"�$?������D�$��O����B�Crc	�r�|jtdddtt��|j	d�y)Nr^rerf�/Lines: 13 lines, 0 ignored, 5 matched, 8 missed�rkr'�FILENAME_02ryrZrOs r�testDirectRE_2z Fail2banRegexTest.testDirectRE_2�s4���/�/�*��A������
���E�Frc
��|jtdddddddtt�	�|j	d�|j	d	�|j	d
�y)Nr^rez
--timezonezUTC+0200z	--verbose�--verbose-datergr�z&141.3.81.106  Sun Aug 14 11:53:59 2005z&141.3.81.106  Sun Aug 14 11:54:59 2005r�rOs r�testVerbosezFail2banRegexTest.testVerbose�s]���/�/�*��A���� �"5���	�����E�F����<�=����<�=rc�:�|jtdddddddttd�
�|j	d	d
d��|j�|jtddd
dtdd��|j	ddd��|j
ddd��y)N�-lr�-vr�rfrr�-crJ�8[29116]: User root not allowed because account is lockedz)[29116]: Received disconnect from 1.2.3.4TrW�-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')rkr'r�
FILENAME_SSHDrZr[r�rOs r�testVerboseFullSshdz%Fail2banRegexTest.testVerboseFullSshd�s����/�/�*����	�0�2G����&�	�����N�.�D��:��-�-�/��/�/�*����$�
�W��	�����,�.B���M����*�,B���Mrc�~�|jtddddttd��|j	dddd	�
�y)Nr�rrfr�zsshd.conf[mode=normal]z"[29116]: Connection from 192.0.2.4r��+[29116]: Received disconnect from 192.0.2.4TrW)rkr'r�FILENAME_ZZZ_SSHDrZrOs r�testFastSshdzFail2banRegexTest.testFastSshdsH���/�/�*�������.�	�����'�=�0�d��<rc��|jtdddddtjj	t
�ttjjt
���|jdd��y)	Nr�rrfror�r�TrW)	rkr'r=�path�dirname�FILTER_ZZZ_SSHDr��basenamerZrOs r�testMultilineSshdz#Fail2banRegexTest.testMultilineSshds`���/�/�*����.��������	)��b�g�g�&�&��7�	�����0�d��<rc	�T�|jtddttdz��y)Nr�rz[mode=test])rkr'�FILENAME_ZZZ_GEN�FILTER_ZZZ_GENrOs r�testFullGenericz!Fail2banRegexTest.testFullGeneric(s$���/�/�*����^�M�1��rc���dD]p}|jd|z�|jtddddddd	d
|zdzd�	�|jd
|dz�d|dz�d��|jddd���ry)N)r�z[test-phase %s]�--usedns�norr�rf�
--maxlines�5z1490349000 TEST-NL
�L1490349000 FAIL
1490349000 TEST1
1490349001 TEST2
1490349001 HOST 192.0.2.34�*^\s*FAIL\s*$<SKIPLINES>^\s*HOST <HOST>\s*$zLines: �z lines, 0 ignored, 2 matched, rz missedz|  1490349000 FAILz|  1490349001 HOST 192.0.2.34TrW)r[rkr'rZ)r-�preLiness  r�testDirectMultilineBufz(Fail2banRegexTest.testDirectMultilineBuf/s����
V�h��=�=�"�X�-�.��?�?�:���d�H�&;�\�3��H�$�U�V�1�	�����8�TU�:�W_�`a�Wa�b�c����)�+J�PT��U�
Vrc��|jtddddddddd	d
�
�|jd�|jdd
�y)Nr�r�rr��
--debuggexrfr�r�r�r��.Lines: 4 lines, 0 ignored, 2 matched, 2 missedz&flags=mz?flags=m�rkr'rZrOs r�testDirectMultilineBufDebuggexz0Fail2banRegexTest.testDirectMultilineBufDebuggex>sO���/�/�*�
�t�T�8�\�3H�,�X[�T�0���
���D�E����J�
�+rc
�j�|jtddddddddd	�	�|jd
�y)Nr�r�rr�rfz-L�2z)1490349000 FAIL: failure
host: 192.0.2.35z^\s*FAIL:\s*.*\nhost:\s+<HOST>$�.Lines: 2 lines, 0 ignored, 2 matched, 0 missedr�rOs r�testSinglelineWithNLinContentz/Fail2banRegexTest.testSinglelineWithNLinContentHs=���/�/�*�
�t�T�8�%:���:�%���
���D�Erc�f�|jtddddddd��|jd�y)	Nz-rr�^\[{LEPOCH}\]\s+r�r�z�[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 missedr�rOs r�testRegexEpochPatternsz(Fail2banRegexTest.testRegexEpochPatternsQs<���/�/�*���"�L�#�1��
�����D�Erc��|jtddddddd��|jd�|jd	d
d��y)
Nr�rr�r�r�z�[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::/60TrWr�rOs r�testRegexSubnetz!Fail2banRegexTest.testRegexSubnet\sR���/�/�*��$�#�\�3�7��
�����D�E����N�$9�t��Drc
��|jtddtt��|j	ddz�|j�|jtdddddd��|j	dt
d	�z�|j�|jtddddd
d��|j	dt
d�z�|j�|jtddddd
d��|j	dt
d�z�|j�|jtddddd
d��|jdt
d�z�|j	ddz�|j�|jtddddd
d��|j	ddzt
d�zdz�|j�|jtddtt��|j	ddzddd��|j�|jtddtt��|j	ddzddd��|j�|jtddtt��|j	dtz�|j�|jtddtt��|j	ddz�|j�|jtddtt��|j	dd z�|j�y)!N�-o�idr�kevinrr_z"1591983743.667 192.0.2.1 192.0.2.2z(^\s*<F-ID/> <F-TUPLE_ID>\S+</F-TUPLE_ID>)z	192.0.2.1�	192.0.2.2z#1591983743.667 left 192.0.2.3 rightzM^\s*<F-TUPLE_ID_1>\S+</F-TUPLE_ID_1> <F-ID/> <F-TUPLE_ID_2>\S+</F-TUPLE_ID_2>)z	192.0.2.3�left�rightz+1591983743.667 left [192.0.2.4]:12345 rightzc^\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>)z[192.0.2.4]:12345r�r��ipz	192.0.2.4zID:<fid> | IP:<ip>zID:z | IP:192.0.2.4�rowz['kevin'z'ip4': '192.0.2.0'z'fid': 'kevin'TrWz['192.0.2.0'z'user': 'kevin'r,�userz<ip>, <F-USER>, <family>z192.0.2.0, kevin, inet4)	rkr'rl�RE_00_IDrZr[�strr��
RE_00_USERrOs r�testFrmtOutputz Fail2banRegexTest.testFrmtOutpuths����/�/�*�T�4���:�;����L�7�*�+��-�-�/��/�/�*�T�4��/?�'�.�0�1����L�3�'A�#B�B�C��-�-�/��/�/�*�T�4��/?�(�S�U�V����L�3�'E�#F�F�G��-�-�/��/�/�*�T�4��/?�0�i�k�l����L�3�'M�#N�N�O��-�-�/��/�/�*�T�4��/?�0�i�k�l����|�c�*P�&Q�Q�R����L�;�.�/��-�-�/��/�/�*�T�#7��?O�0�i�k�l����L�5�(��-S�)T�T�Uf�f�g��-�-�/��/�/�*�T�5�&�(�;�<����L�:�-�/C�EU�[_��`��-�-�/��/�/�*�T�5�&�*�=�>����L�>�1�3G�IZ�`d��e��-�-�/��/�/�*�T�5�&�*�=�>����L�6�)�*��-�-�/��/�/�*�T�6�6�:�>�?����L�7�*�+��-�-�/��/�/�*�T�#=�v�z�R�S����L�#<�<�=��-�-�/rc�������dtddf�d��fd���j�dd�d���jd	��j�d���fd
�	}|�|dd�
�y)Nr�rrez�May 27 00:16:33 host sshd[2364]: User root not allowed because account is locked
May 27 00:16:33 host sshd[2364]: Received disconnect from 192.0.2.76 port 58846:11: Bye Bye [preauth]c���t�|z�Sr$)r')rr!s �r�<lambda>zCFail2banRegexTest.testStalledIPByNoFailFrmtOutput.<locals>.<lambda>�s���
�T�D�[�2�rr�zIP:<ip>rJz
IP:192.0.2.76c	�.���j�dd�|dz|zdz|zdz���jd��j��j�dd�|dz|zdz|zdz���jd	��j�y)
Nr�z!ID:"<fid>" | IP:<ip> | U:<F-USER>z
[failregex="^z4<F-ID>User <F-USER>\S+</F-USER></F-ID> not allowed
^z!Received disconnect from <ADDR>"]z'ID:"User root" | IP:192.0.2.76 | U:rootz'User <F-USER>\S+</F-USER> not allowed
^z7Received disconnect from <F-ID><ADDR> port \d+</F-ID>"]z3ID:"192.0.2.76 port 58846" | IP:192.0.2.76 | U:root)rkrZr[)�flt�prefix�_test�logr-s  ���r�_test_variantszIFail2banRegexTest.testStalledIPByNoFailFrmtOutput.<locals>._test_variants�s�����?�?�5��B�C��	
�
�
��
�
�
��	�	�
��
���>�?��=�=�?��?�?�5��B�C��	
�
�
��
�
�
��	�	�
��
���J�K��=�=�?r�commonz)\s*\S+ sshd\[<F-MLFID>\d+</F-MLFID>\]:\s+)r�)rJ�)rrkrZr[)r-r�r�r�r!s` @@@r�testStalledIPByNoFailFrmtOutputz1Fail2banRegexTest.testStalledIPByNoFailFrmtOutput�sm������	6�
�$�
k��3�%��/�/�%��i��f�5�6����O�$��-�-�/��$����"M�Nrc
�8�|jtddddtt��|j	dddd�	�|j�|jtdd
ddtt��|j	dd�	�|j
ddd�	�y)Nrr_r�zFound-ID:<F-ID>z*Found a match but no valid date/time foundzMatch without a timestamp:zFound-ID:kevinTrW�{NONE})rkr'�STR_00_NODTr�rZr[r�rOs r�testNoDateTimez Fail2banRegexTest.testNoDateTime�s����/�/�*�T�#3�T�;L�k�[c�d�e����/�������-�-�/��/�/�*�T�8�T�3D�k�S[�\�]�����������/��T��+rc�h�|jtdddd��|jdddd�	�y)
Nr�zFound-ADDR:<ip>z�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:55z^<ADDR>zFound-ADDR:192.0.2.1zFound-ADDR:192.0.2.2zFound-ADDR:192.0.2.3TrWr�rOs r�testIncompleteDateTimez(Fail2banRegexTest.testIncompleteDateTime�sH���/�/�*��	�)�
�������1�3I�t��Urc��tjjd��|jt	dddt
ddtdztzd	��tjd�}|jd
|dvxrd
|dv�|jd
|dzd
|dzd��|jd�|jd�|jt	dddt
ddtdztzd��|jd
|dzd
|dzd
|dzd
|dzd��|jd�|jd�|jt	dddt
ddtdztzd��tjd�ddtjd�ddz}|jd|dzd|dzd|dzd��y)NT��stockr�z<ip>, <F-USER>, <msg>r�r�r��
z&sshd[logtype=short, publickey=invalid]r�������z192.0.2.2, git, rWz192.0.2.1, git, zA[test-phase 1] mode=aggressive & publickey=nofail + OK (accepted)z$sshd[logtype=short, mode=aggressive]������zL[test-phase 2] mode=aggressive & publickey=nofail + FAIL (closed on preauth)rr)
�unittest�F2B�SkipIfCfgMissingrkr'r�STR_ML_SSHD�STR_ML_SSHD_OK�splitrZr�r[�STR_ML_SSHD_FAIL)r-�liness  r�testFrmtOutputWrapMLz&Fail2banRegexTest.testFrmtOutputWrapML�s��
�,�,���d��+��/�/�*�T�#:���Z������&�(P�R�S��
�
�D�
!�%��/�/�+�U�2�Y�.�K�;�%��)�3K�L�����e�B�i���e�B�i����
�
���)�*��-�-�S�T��/�/�*�T�#:���Z������&�(N�P�Q�����e�B�i���e�B�i���e�B�i���e�B�i����
����)�*��-�-�^�_��/�/�*�T�#:���Z�����(�(�*P�R�S��
�
�D�
!�!�A�
&�)9�)?�)?��)E�b�c�)J�
J�%�����e�B�i���e�B�i���e�B�i���	�
rc���tjjd��|jt	dddt
dddd	��|j
d
�|jd�y)NTr�r�zfailure from == <ip> ==r�rr�z�svc[1] connect started 192.0.2.3
svc[1] connect finished 192.0.2.3
svc[2] connect started 192.0.2.4
svc[2] connect authorized 192.0.2.4
svc[2] connect finished 192.0.2.4
z�common[prefregex="^svc\[<F-MLFID>\d+</F-MLFID>\] connect <F-CONTENT>.+</F-CONTENT>$", failregex="^started
^<F-NOFAIL><F-MLFFORGET>finished</F-MLFFORGET></F-NOFAIL> <ADDR>
^<F-MLFGAINED>authorized</F-MLFGAINED> <ADDR>", maxlines=1]zfailure from == 192.0.2.3 ==zfailure from == 192.0.2.4 ==)r�r�r�rkr'rrZr�rOs r�&testOutputNoPendingFailuresAfterGainedz8Fail2banRegexTest.testOutputNoPendingFailuresAfterGained
sd��
�,�,���d��+��/�/�*�T�#<���T�8�)�
�
�
����2�3����5�6rc�J�|jttt��yr$)rYr'r�rOs r�testWrongFilterFilez%Fail2banRegexTest.testWrongFilterFile#s�����:��%��rc
�<�tjjd��|jt	ddddt
t��|jd�|jd�|jd	�|jd
�|jd�y)NTr�r�rr^rer�rvz7Continuing 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�r�r�r�rkr'�FILENAME_WRONGCHAR�FILTER_SSHDrZrOs r�testWronCharzFail2banRegexTest.testWronChar)s���
�,�,���d��+��/�/�*����A��{���
���D�E����)�*����M�N����c�d����B�Crc
��tjjd��|jt	ddddddt
td	�	�|jd
�|jd�|jd�y)
NTr�r�rr^rer�rfzllinco[^\\]rvz.Lines: 4 lines, 1 ignored, 2 matched, 1 missedzhttps://r�rOs r�testWronCharDebuggexz&Fail2banRegexTest.testWronCharDebuggex8sq��
�,�,���d��+��/�/�*����A��&��{�������)�*����D�E����J�rc
� �tjdd��}dD]�}|jd|z�	t|d�}dD]"}|j	|j|���$|j
�|jtdd	d
|dd|d
��|jd|zdd��|jd�|j
�tj|���y#j
�tj|�wxYw)N�tmp_fail2ban�uni)r��suffix)zutf-16bezutf-16lez[test-phase encoding=%s]�wb)u?1490349000 € Failed auth: invalid user TestȊ from 192.0.2.1
u>1490349000 € Failed auth: invalid user TestI from 192.0.2.2
r�rz
--encodingr^z^EPOCHzFailed .* from <HOST>z encoding : %sr�TrWzMissed line(s))
�tempfile�mktempr[r<�write�encode�closerkr'rZr�r=�unlink)r-�fname�enc�fout�ls     r�testNLCharAsPartOfUniCharz+Fail2banRegexTest.testNLCharAsPartOfUniCharFs���
�/�/���
>�%�
%��c��=�=�+�c�1�2����t��D����
�Z�Z�����
��	�
	�J�J�L��O�O�J��(��3��i�
�$�	��	���&��,�5�4��A����)�*��J�J�L��I�I�e��3��0	�J�J�L��I�I�e��s�BC&�&'D
c�*�|jt�d�|j�|jtd�d�|j	tj��|j�|jtd�d�y)Nrz-Vz	--version)�assertNotEqualrBr[�assertEqualrZr�normVersionrOs r�testExecCmdLine_Usagez'Fail2banRegexTest.testExecCmdLine_Usagedsk�����-�/��3��-�-�/����*�4�0�!�4����M�-�-�/�0��-�-�/����*�;�7��;rc�j�|jtddtd�d�|jd�y)Nr��inforhrri)rrBrlrZrOs r�testExecCmdLine_Directz(Fail2banRegexTest.testExecCmdLine_Directls9�����*���	�9�������D�Erc�j�|jtddtd�d�|jd�y)Nr�rzAuthentication failurerzNo failure-id group in )r
rBrlrZrOs r�testExecCmdLine_MissFailIDz,Fail2banRegexTest.testExecCmdLine_MissFailIDss9�����-���	�$�������-�.rc
���|jtdddddd�d�|jd�|j�|jtd	dddd�d�|jd
�y)Nr�rrz%:%.%-�LOG�RErz ERROR: Failed to set datepatternr�zFailed to set datepattern)r
rBrZr[rOs r�testExecCmdLine_ErrorParamz,Fail2banRegexTest.testExecCmdLine_ErrorParamzsw�����-���4��5�$�������6�7��-�-�/����-���x���������/�0rc��tjstjd��|j	tdtdzdz��|jd�|jd�|jd�|j�|j	tdtdzd	zdz��|jd�|jd�y)
Nz.Skip test because no systemd backend availablezsystemd-journalz,[journalmatch="SYSLOG_IDENTIFIER=dummy",z; failregex="^dummy regex, never match <F-ID>xxx</F-ID>"]r�r�z.Lines: 0 lines, 0 ignored, 0 matched, 0 missedz[logtype=file,z, journalmatch="SYSLOG_IDENTIFIER=dummy",)
r�
FilterSystemdr��SkipTestrkr'r�rZr�r[rOs r�testLogtypeSystemdJournalz+Fail2banRegexTest.testLogtypeSystemdJournal�s���	�	$�	$�	�	�	�K�	L�L��/�/�*��n�@�A�K�L���
���*�+����*�+����D�E��-�-�/��/�/�*��n���@�A�L�L������'�(����-�.rN)(r/r0r1rNrQr\rarcrmrprsrzr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr
rrrrr2rrrLrL}s�����
P�D�Y�F�F�F�n�H�D� G�
>�N�,<�
<��V�,�F�	F�
E�6�p#O�J+� 
U�*
�X7�,�
C� ��<<�F�/�1�/rrL)5�
__author__�
__copyright__�__license__r=r:r�r��clientr�client.fail2banregexrrrr	r
�utilsrr
rrrrr��joinr��__file__�TEST_CONFIG_DIR�TEST_FILES_DIRr;r"r'�	Exceptionr)rBrHrlr�ryr�r�rxr�r�r�r�r�r�r�r�r�r�r�rLr2rr�<module>r&s���,�
�Z�
���	�
���"�i�i�J�J���
��&�$�
���'�'�,�,�r�w�w���x�8�(�C�������b�g�g�o�o�h�7��A����*�"�)�I�)�
�&�

^��R��	d��F��
L�
��g�g�l�l�>�+;�<���g�g�l�l�>�+;�<���W�W�\�\�.�2K�L��M��Z��^�������^�V�V�<�
��g�g�l�l�:�z�;�?���G�G�L�L��1R�S���'�'�,�,��
�<^�_���7�7�<�<���8M�N�������o�z�;U�V��^/�*�^/r