HOME


Mini Shell 1.0
Redirecting to https://devs.lapieza.net/iniciar-sesion Redirecting to https://devs.lapieza.net/iniciar-sesion.
DIR: /lib/python3/dist-packages/fail2ban/tests/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/fail2ban/tests/__pycache__/fail2banregextestcase.cpython-311.pyc
�

�Bd�k����dZdZdZddlZddlZddlZddlZddlmZddl	m
Z
mZmZm
Z
mZdd	lmZmZmZmZdd
lmZee_d�Zee_
ej�ej�e��d��Zej�ej�e��d
��Zdad�Zd�ZGd�de��Z d�Z!d�Z"dZ#dZ$dZ%dZ&dZ'ej�ed��Z(ej�ed��Z)ej�ed��Z*dZ+dZ,dZ-ej�edd ��Z.ej�ed!d"��Z/ej�ed#��Z0ej�ed!d$��Z1ej�edd%��Z2ej�ed!d&��Z3Gd'�d(e��Z4dS))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�<�tjd|d��dS)N�
output: %sr)r�notice)�argss �F/usr/lib/python3/dist-packages/fail2ban/tests/fail2banregextestcase.py�_test_outputr&s����|�T�!�W�%�%�%�%�%��config�filesc���t��}|�t|����\}}|jdvr&t	jt
|j����||t|��fS)N)r�warning)r�
parse_args�list�	log_levelr�setLevelr
r)r�parser�optss   r�_Fail2banRegexr"0sg��
�
�
���!�!�$�t�*�*�-�-��$���N�+�+�+��/�,�t�~�.�.�/�/�/�	
�t�]�4�(�(�)�)rc�F�t|�\}}}|�|��S�N)r"�start)rr!�
fail2banRegexs   r�
_test_execr'8s'��-�t�4��$��m����D�!�!�!rc��eZdZd�ZdS)�
ExitExceptionc�(�||_d|z|_dS)NzExit with code: %s)�code�msg)�selfr+s  r�__init__zExitException.__init__=s���$�)�
!�D�
(�$�(�(�(rN)�__name__�
__module__�__qualname__r.�rrr)r)<s#������)�)�)�)�)rr)c�J�dd�}tjtjtjd�}d}|t_tsttjd��atxt_t_	tt|����n#t$r}|j}Yd}~nd}~wwxYw|dt_|dt_|dt_n;#|dt_|dt_|dt_wxYw|S)	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�3�:�F�F��������2�T�"�*�c�2�2�(�#�#���c�j���D��J�J�����������v�*�*�*�*�*�*����������&�\�#�(��H�~�#�*��H�~�#�*�*���&�\�#�(��H�~�#�*��H�~�#�*������s0�6B�C(�
B.�B)�$C(�)B.�.C(�(8D c�:�ddlm}|���dS)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'd&S)'�Fail2banRegexTestc�f�tj|��t��t��dS)zCall before every test case.N)r�setUprrH�r-s rrNzFail2banRegexTest.setUps)����4� � � �
�-�-�-��(�(�(�(�(rc�J�tj|��t��dS)zCall after every test case.N)r�tearDownr
rOs rrQzFail2banRegexTest.tearDown�s%����d�#�#�#������rc�n�|�tdd����|�d��|�ddd���|���|�tdd����|�d��|�d	d
d���dS)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�B�B��-�-�/�/�/����:�	�:���������:�;�;�;����0�2B���N�N�N�N�Nrc	��|�tddddd����|�d��|�ddd	�
��dS)N�
--datepattern�{^LN-BEG}EPOCHrSz.*? from <HOST>$z.**rTrUrVFrW�rYr'rZrOs r�testWrongIngnoreREz$Fail2banRegexTest.testWrongIngnoreRE�sm�����:��$�	�����������:�;�;�;����%��E��B�B�B�B�Brc�|�|�tdd����|�ddd���dS)NrSzflt[a='x,y,z',b=z,y,x]zWrong filter name or optionszwrong syntax at 14: y,xTrWr`rOs r�testWrongFilterOptionsz(Fail2banRegexTest.testWrongFilterOptions�sR�����:�	�#���������2�4M�SW��X�X�X�X�Xrc
��|�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_00rZrOs r�testDirectFoundz!Fail2banRegexTest.testDirectFound�sS���/�/�*��A��-�	�1�	��������D�E�E�E�E�Erc��|�tdtd����|�d��dS)N�--print-all-missedzXYZ from <HOST>$z.Lines: 1 lines, 0 ignored, 0 matched, 1 missedrjrOs r�testDirectNotFoundz$Fail2banRegexTest.testDirectNotFound�sJ���/�/�*��	�������
���D�E�E�E�E�Erc��|�tdtdd����|�d��dS)N�--print-all-ignoredrhzkevin from 192.0.2.0$z.Lines: 1 lines, 1 ignored, 0 matched, 0 missedrjrOs r�testDirectIgnoredz#Fail2banRegexTest.testDirectIgnored�sM���/�/�*��	�1��	��������D�E�E�E�E�Erc	�8�|�tdddtt����|�d��|�d��|�d��|�d��|�d��dS)	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�s����/�/�*��A���������
���F�G�G�G����)�*�*�*����L�M�M�M����l�m�m�m����l�m�m�m�m�mrc
��|�tddddtt����|�d��dS)Nr^rerf�--rawz0Lines: 19 lines, 0 ignored, 19 matched, 0 missedrwrOs r�testDirectRE_1rawz#Fail2banRegexTest.testDirectRE_1raw�sQ���/�/�*��A��'��������
���F�G�G�G�G�Grc�^�|�tdddddtt����|�d��|���|�tddd	d
����|�dd�
��|�d��dS)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�G�G��-�-�/�/�/��/�/�*���"�$?���������D�$��O�O�O����B�C�C�C�C�Crc	��|�tdddtt����|�d��dS)Nr^rerf�/Lines: 13 lines, 0 ignored, 5 matched, 8 missed�rkr'�FILENAME_02ryrZrOs r�testDirectRE_2z Fail2banRegexTest.testDirectRE_2�sO���/�/�*��A���������
���E�F�F�F�F�Frc
���|�tdddddddtt�	�	��|�d��|�d	��|�d
��dS)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�F�F����<�=�=�=����<�=�=�=�=�=rc��|�tdddddddttd�
�
��|�d	d
d���|���|�tddd
dtdd����|�ddd���|�ddd���dS)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�M�M����*�,B���M�M�M�M�Mrc��|�tddddttd����|�dddd	�
��dS)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.testFastSshdsk���/�/�*�������.�	��������'�=�0�d��<�<�<�<�<rc��|�tdddddtj�t
��ttj�t
������|�dd���dS)	Nr�rrfror�r�TrW)	rkr'r=�path�dirname�FILTER_ZZZ_SSHDr��basenamerZrOs r�testMultilineSshdz#Fail2banRegexTest.testMultilineSshds����/�/�*����.�������	)�	)��b�g�&�&��7�7�	��������0�d��<�<�<�<�<rc	�j�|�tddttdz����dS)Nr�rz[mode=test])rkr'�FILENAME_ZZZ_GEN�FILTER_ZZZ_GENrOs r�testFullGenericz!Fail2banRegexTest.testFullGeneric(s=���/�/�*����^�M�1�������rc��dD]�}|�d|z��|�tddddddd	d
|zdzd�	�	��|�d
|dz�d|dz�d���|�ddd�����dS)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�
V�h��=�=�"�X�-�.�.�.��?�?�:���d�H�&;�\�3��H�$�U�V�1�	���������8�TU�:�:�:�W_�`a�Wa�Wa�Wa�b�c�c�c����)�+J�PT��U�U�U�U�
V�
Vrc��|�tddddddddd	d
�
�
��|�d��|�dd
��dS)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>sp���/�/�*�
�t�T�8�\�3H�,�X[�T�0������
���D�E�E�E����J�
�+�+�+�+�+rc
��|�tddddddddd	�	�	��|�d
��dS)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.testSinglelineWithNLinContentHsX���/�/�*�
�t�T�8�%:���:�%������
���D�E�E�E�E�Erc��|�tddddddd����|�d��dS)	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.testRegexEpochPatternsQsW���/�/�*���"�L�#�1��
��������D�E�E�E�E�Erc��|�tddddddd����|�d��|�d	d
d���dS)
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\ss���/�/�*��$�#�\�3�7��
��������D�E�E�E����N�$9�t��D�D�D�D�Drc
�`�|�tddtt����|�ddz��|���|�tdddddd����|�dt
d	��z��|���|�tddddd
d����|�dt
d��z��|���|�tddddd
d����|�dt
d��z��|���|�tddddd
d����|�dt
d��z��|�ddz��|���|�tddddd
d����|�ddzt
d��zdz��|���|�tddtt����|�ddzddd���|���|�tddtt����|�ddzddd���|���|�tddtt����|�dtz��|���|�tddtt����|�ddz��|���|�tddtt����|�dd z��|���dS)!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�0�1�1�1����L�3�'A�#B�#B�B�C�C�C��-�-�/�/�/��/�/�*�T�4��/?�(�S�U�U�V�V�V����L�3�'E�#F�#F�F�G�G�G��-�-�/�/�/��/�/�*�T�4��/?�0�i�k�k�l�l�l����L�3�'M�#N�#N�N�O�O�O��-�-�/�/�/��/�/�*�T�4��/?�0�i�k�k�l�l�l����|�c�*P�&Q�&Q�Q�R�R�R����L�;�.�/�/�/��-�-�/�/�/��/�/�*�T�#7��?O�0�i�k�k�l�l�l����L�5�(��-S�)T�)T�T�Uf�f�g�g�g��-�-�/�/�/��/�/�*�T�5�&�(�;�;�<�<�<����L�:�-�/C�EU�[_��`�`�`��-�-�/�/�/��/�/�*�T�5�&�*�=�=�>�>�>����L�>�1�3G�IZ�`d��e�e�e��-�-�/�/�/��/�/�*�T�5�&�*�=�=�>�>�>����L�6�)�*�*�*��-�-�/�/�/��/�/�*�T�6�6�:�>�>�?�?�?����L�7�*�+�+�+��-�-�/�/�/��/�/�*�T�#=�v�z�R�R�S�S�S����L�#<�<�=�=�=��-�-�/�/�/�/�/rc������dtddf�d��fd�����dd�d������d	������d���fd�	}|��|dd
���dS)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.76�c	�l�����dd�|dz|zdz|zdz������d���������dd�|dz|zdz|zdz������d	������dS)
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�5��B�C��	
�
�
��
�
�
��	�	�
�
����
���>�?�?�?��=�=�?�?�?��?�?�5�5��B�C��	
�
�
��
�
�
��	�	�
�
����
���J�K�K�K��=�=�?�?�?�?�?r�commonz)\s*\S+ sshd\[<F-MLFID>\d+</F-MLFID>\]:\s+)r�)rJr�)rrkrZr[)r-r�r�r�r!s` @@@r�testStalledIPByNoFailFrmtOutputz1Fail2banRegexTest.testStalledIPByNoFailFrmtOutput�s����������	6�
�$�
k��3�
2�
2�
2�%��/�/�%�%��i��f�5�5�6�6�6����O�$�$�$��-�-�/�/�/���������$�.�����.��"M�N�N�N�N�N�Nrc
��|�tddddtt����|�dddd�	��|���|�tdd
ddtt����|�dd�	��|�ddd�	��dS)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�d�e�e�e����/���������-�-�/�/�/��/�/�*�T�8�T�3D�k�S[�\�\�]�]�]�������������/��T��+�+�+�+�+rc��|�tdddd����|�dddd�	��dS)
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�so���/�/�*��	�)�
����������1�3I�t��U�U�U�U�Urc��tj�d���|�t	dddt
ddtdztzd	����t�d��}|�d
|dvo	d
|dv��|�	d
|dzd
|dzd���|�
d��|�d��|�t	dddt
ddtdztzd����|�	d
|dzd
|dzd
|dzd
|dzd���|�
d��|�d��|�t	dddt
ddtdztzd����t�d��dd�t�d��dd�z}|�	d|dzd|dzd|dzd���dS)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�R�S�S�S��
�
�D�
!�
!�%��/�/�+�U�2�Y�.�K�;�%��)�3K�L�L�L�����e�B�i���e�B�i����
�
�
�
���)�*�*�*��-�-�S�T�T�T��/�/�*�T�#:���Z������&�(N�P�P�Q�Q�Q�����e�B�i���e�B�i���e�B�i���e�B�i����
�
�
����)�*�*�*��-�-�^�_�_�_��/�/�*�T�#:���Z�����(�(�*P�R�R�S�S�S��
�
�D�
!�
!�!�A�#�
&�)9�)?�)?��)E�)E�b�c�c�)J�
J�%�����e�B�i���e�B�i���e�B�i���	�
�
�
�
�
rc��tj�d���|�t	dddt
dddd	����|�d
��|�d��dS)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
s���
�,���d��+�+�+��/�/�*�T�#<���T�8�)�
�
�
�
�
�
����2�3�3�3����5�6�6�6�6�6rc�`�|�ttt����dSr$)rYr'r�rOs r�testWrongFilterFilez%Fail2banRegexTest.testWrongFilterFile#s6�����:��%�������rc
�z�tj�d���|�t	ddddt
t����|�d��|�d��|�d	��|�d
��|�d��dS)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�E�E����)�*�*�*����M�N�N�N����c�d�d�d����B�C�C�C�C�Crc
�,�tj�d���|�t	ddddddt
td	�	�	��|�d
��|�d��|�d��dS)
NTr�r�rr^rer�rfzllinco[^\\]rvz.Lines: 4 lines, 1 ignored, 2 matched, 1 missedzhttps://r�rOs r�testWronCharDebuggexz&Fail2banRegexTest.testWronCharDebuggex8s���
�,���d��+�+�+��/�/�*����A��&��{����������)�*�*�*����D�E�E�E����J�����rc
�n�tjdd���}dD�]}|�d|z��	t|d��}dD]*}|�|�|�����+|���|�tdd	d
|dd|d
����|�	d|zdd���|�
d��|���tj|����#|���tj|��wxYwdS)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�2�2����t���D�����
�Z�Z�����
�
������J�J�L�L�L��O�O�J��(��3��i�
�$�	�����	���&��,�5�4��A�A�A����)�*�*�*��J�J�L�L�L��I�e������	�J�J�L�L�L��I�e��������3�s�B*D�*D2c�r�|�t��d��|���|�td��d��|�tj����|���|�td��d��dS)Nrz-Vz	--version)�assertNotEqualrBr[�assertEqualrZr�normVersionrOs r�testExecCmdLine_Usagez'Fail2banRegexTest.testExecCmdLine_Usageds������-�/�/��3�3�3��-�-�/�/�/����*�4�0�0�!�4�4�4����M�-�/�/�0�0�0��-�-�/�/�/����*�;�7�7��;�;�;�;�;rc��|�tddtd��d��|�d��dS)Nr��inforhrri)rrBrlrZrOs r�testExecCmdLine_Directz(Fail2banRegexTest.testExecCmdLine_DirectlsT�����*���	�9����������D�E�E�E�E�Erc��|�tddtd��d��|�d��dS)Nr�rzAuthentication failurerzNo failure-id group in )r
rBrlrZrOs r�testExecCmdLine_MissFailIDz,Fail2banRegexTest.testExecCmdLine_MissFailIDssT�����-���	�$����������-�.�.�.�.�.rc
� �|�tdddddd��d��|�d��|���|�td	dddd��d��|�d
��dS)Nr�rrz%:%.%-�LOG�RErz ERROR: Failed to set datepatternr�zFailed to set datepattern)r
rBrZr[rOs r�testExecCmdLine_ErrorParamz,Fail2banRegexTest.testExecCmdLine_ErrorParamzs������-���4��5�$����������6�7�7�7��-�-�/�/�/����-���x������������/�0�0�0�0�0rc��tjstjd���|�tdtdzdz����|�d��|�d��|�d��|�	��|�tdtdzd	zdz����|�d��|�d��dS)
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��	�	$�M�	�	�K�	L�	L�L��/�/�*��n�@�A�K�L������
���*�+�+�+����*�+�+�+����D�E�E�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�P�P�D�D�D�Y�Y�Y�F�F�F�F�F�F�F�F�F�n�n�n�H�H�H�D�D�D� G�G�G�
>�
>�
>�N�N�N�,<�<�<�
<�
<�
<����V�V�V�,�,�,�F�F�F�	F�	F�	F�
E�
E�
E�6�6�6�p#O�#O�#O�J+�+�+� 
U�
U�
U�*
�*
�*
�X7�7�7�,���
C�
C�
C� � � ����<<�<�<�F�F�F�/�/�/�1�1�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�i�i�i�i�i�i�i�i�i�i�i�i�J�J�J�J�J�J�J�J�J�J�J�J��������
��&�&�&�$�
���'�,�,�r�w���x�8�8�(�C�C������b�g�o�o�h�7�7��A�A����*�*�*�"�"�"�)�)�)�)�)�I�)�)�)�
���&���

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