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__/clientreadertestcase.cpython-311.pyc
�

�Bd����l�dZdZdZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZm
Z
mZddlmZddlmZmZmZdd	lmZdd
lmZddlmZmZddlmZdd
lmZddl m Z ddl!m"Z"m#Z#ej$�%ej$�&e'��d��Z(iZ)ddl!m*Z*e	j+j,Z-ej$�%ej$�&e'��d��Z.iZ/Gd�de	j0��Z1Gd�de"��Z2Gd�de"��Z3Gd�de"��Z4Gd�de"��Z5dS)z!Cyril Jaquier, Yaroslav Halchenkoz>Copyright (c) 2004 Cyril Jaquier, 2011-2013 Yaroslav Halchenko�GPL�N�)�ConfigReader�ConfigReaderUnshared�DefinitionInitConfigReader�NoSectionError)�configparserinc)�
JailReader�extractOptions�splitWithOptions)�FilterReader)�JailsReader)�ActionReader�
CommandAction)�Configurator)�MyTime)�version�)�LogCaptureTestCase�with_tmpdir�files)�
CONFIG_DIR�configc�d��eZdZ�fd�Zd�Zdd�Zd�Zdd�Zd�Zd	�Z	d
�Z
d�Zd�Zd
�Z
d�Z�xZS)�ConfigReaderTestc���tt|�����tjd���|_t
|j���|_dS)zCall before every test case.zf2b-temp)�prefix��basedirN)�superr�setUp�tempfile�mkdtemp�dr�c)�self�	__class__s ��E/usr/lib/python3/dist-packages/fail2ban/tests/clientreadertestcase.pyr!zConfigReaderTest.setUp7sM�����$���%�%�'�'�'���:�.�.�.�$�&����/�/�/�$�&�&�&�c�8�tj|j��dS)zCall after every test case.N)�shutil�rmtreer$�r&s r(�tearDownzConfigReaderTest.tearDown=s���-�������r)Nc���tjj|vrwtj�|��}tj�|j|��}tj�|��stj|��t|j�d|��d��}|�|�	d|z��|�|�	|��|�
��dS)N�/�wz
[section]
option = %s
	)�os�path�sep�dirname�joinr$�exists�makedirs�open�write�close)r&�fname�value�contentr$�d_�fs       r(�_writezConfigReaderTest._writeAs����W�[�E���	�w���u���1�
����T�V�Q���2�
�'�.�.��
�
���K��O�O�O�
�d�f�f�f�e�e�$�c�*�*�!�
���7�7��
�
����
���7�7�7�����'�'�)�)�)�)�)r)c��tj|j�d|����|�|j�d����dS)Nr0r%)r2�unlinkr$�
assertTruer%�read)r&r<s  r(�_removezConfigReaderTest._removeRsE���)�t�v�v�v�u�u�%�&�&�&��/�/�$�&�+�+�c�"�"�#�#�#�#�#r)r%c��|�|j�|����|j�ddg��dS)N�section)�int�optionrJ)rDr%rE�
getOptions)r&r@s  r(�
_getoptionzConfigReaderTest._getoptionVsA���/�/�$�&�+�+�a�.�.�!�!�!�	
��	�	�9�'8�&9�	:�	:�8�	D�Dr)c�(�|j�d��|j�ddd��|j�ddd��|j�ddd��|j�dd��}|�|dd	d
d���|j�dd��}|�|dd	dd���|j�dd
dd
d���}|�|dd	d
d���dS)N�
Definition�a�1�br%�test))rIrOr)�boolrQr)rIr%rrTr)rOrQr%))rIrO)rSrQ)rIr%)rIr)rSr)r%�add_section�setrK�assertSortedEqual)r&�optss  r(�testConvertzConfigReaderTest.testConvertZs$���&���\�"�"�"��&�*�*�\�3��$�$�$��&�*�*�\�3��$�$�$��&�*�*�\�3��'�'�'�	
��	�	�<�7�
9�
9�$�����Q�T��:�:�;�;�;�	
��	�	�<�.�
0�
0�$�����Q�T��=�=�>�>�>�	
��	�	�<�	�+�J�7�7�
9�
9�$�����Q�T��:�:�;�;�;�;�;r)c���tj�|jd��}|�dd��|�|�d��d��tj|d��tj|tj	��s/|�
|j�d����dSddl
}tjd|�
��z���)Nzd.confrr$z0Skipping on %s -- access rights are not enforced)r2r3r6r$rA�assertEqualrL�chmod�access�R_OK�assertFalser%rE�platform�unittest�SkipTest)r&r@r_s   r(�testInaccessibleFilez%ConfigReaderTest.testInaccessibleFileis����g�l�l�4�6�8�$�$�!��+�+�h��������4�?�?�3�'�'��+�+�+��(�1�a�.�.�.�
��1�b�g�	�	�e����D�F�K�K��$�$�%�%�%�%�%��?�?�?�	�	�M�PX�Pa�Pa�Pc�Pc�c�	d�	d�dr)c���|�|j�d����|�dd��|�|���d��|�dd��|�|���d��|�dd��|�|���d	��|�d
d��|�|���d	��|�dd
��|�|���d��|�dd��|�|���d��|�dd��|�|���d��|�d��|�d��|�|���d��|�d��|�|���d	��|�d��|�|���d��|�d
��|�|���d��dS)Nr%�c.confrPr�2rzc.d/98.conf�998i�zc.d/90.conf�990zc.d/99.conf�999i�zc.local�3�zc.d/1.local�4�i�)r^r%rErArZrLrFr-s r(�testOptionalDotDDirz$ConfigReaderTest.testOptionalDotDDirvsp�����4�6�;�;�s�#�#�$�$�$��+�+�h��������4�?�?�$�$�a�(�(�(��+�+�h��������4�?�?�$�$�a�(�(�(��+�+�m�U�#�#�#����4�?�?�$�$�c�*�*�*��+�+�m�U�#�#�#����4�?�?�$�$�c�*�*�*��+�+�m�U�#�#�#����4�?�?�$�$�c�*�*�*��+�+�i��������4�?�?�$�$�a�(�(�(��+�+�m�S�!�!�!����4�?�?�$�$�a�(�(�(��,�,�}�����,�,�y�������4�?�?�$�$�c�*�*�*��,�,�}�������4�?�?�$�$�c�*�*�*��,�,�}�������4�?�?�$�$�c�*�*�*��,�,�}�������4�?�?�$�$�a�(�(�(�(�(r)c�6�|�ddd���|�ddd���|�ddd���|�ddd	���|�d
dd���Gd�d
t��}|ddi��|_|j�|j��|�|j�����|j�id���|j���}|�	|�
d��d��|�	|�
d��d��|�	|�
d��d��dS)NrdzS
[INCLUDES]
before = ib.conf
after  = ia.conf
[Definition]
test = %(default/test)s
�r=r>zib.confz,
[DEFAULT]
test = A
[Definition]
option = 1
zib.localz,
[DEFAULT]
test = B
[Definition]
option = 2
zia.confz,
[DEFAULT]
test = C
[Definition]
oafter = 3
zia.localz,
[DEFAULT]
test = D
[Definition]
oafter = 4
c�&�eZdZddgddgddgd�ZdS)�?ConfigReaderTest.testLocalInIncludes.<locals>.TestDefConfReaderrIN�string)rJ�oafterrR)�__name__�
__module__�__qualname__�_configOpts�r)r(�TestDefConfReaderrq�s0�������t�}��t�}������;�;�;r)ryr%rJT)�allrrsrlrR�D)rArr%�
setBaseDirr$rDrErK�getCombinedrZ�get)r&ry�os   r(�testLocalInIncludesz$ConfigReaderTest.testLocalInIncludes�s����+�+�h�d�-�+�����+�+�i�t�.�+�����+�+�j��/�+�����+�+�i�t�.�+�����+�+�j��/�+���������4������S�(�B�/�/�$�&��&���D�F�����/�/�$�&�+�+�-�-� � � ��&���B�D��!�!�!�
�f�����!����1�5�5��?�?�A�&�&�&����1�5�5��?�?�A�&�&�&����1�5�5��=�=�#�&�&�&�&�&r)c��|�|j�d����|�ddd���|�|j�d����|�|j���ddg��|�|j�dd��d��|�|j�dd	��d
��|�|j�dd��d��|�|j�dd��d
��|�|j�dd��d��dS)N�izi.confzu
[DEFAULT]
b = a
zz = the%(__name__)s

[section]
y = 4%(b)s
e = 5${b}
z = %(__name__)s

[section2]
z = 3%(__name__)s
rorH�section2�y�4a�ez5${b}�z�zz�
thesection�	3section2)r^r%rErArDrZ�sectionsr~r-s r(�testInterpolationsz#ConfigReaderTest.testInterpolations�sR�����4�6�;�;�s�#�#�$�$�$��+�+�h�d�-�+�����/�/�$�&�+�+�c�"�"�#�#�#����4�6�?�?�$�$�y�*�&=�>�>�>����4�6�:�:�i��-�-�t�4�4�4����4�6�:�:�i��-�-�w�7�7�7����4�6�:�:�i��-�-�y�9�9�9����4�6�:�:�i��.�.��=�=�=����4�6�:�:�j�#�.�.��<�<�<�<�<r)c��|�|j�d����|�ddd���|�|j�d����|�|j�dd��d��|�|j�dd��d	��dS)
N�g�g.confz4
[DEFAULT]
# A comment
b = a
c = d ;in line comment
ro�DEFAULTrQrOr%r$)r^r%rErArDrZr~r-s r(�testCommentszConfigReaderTest.testComments�s������4�6�;�;�s�#�#�$�$�$��+�+�h�d�-�+�����/�/�$�&�+�+�c�"�"�#�#�#����4�6�:�:�i��-�-�s�3�3�3����4�6�:�:�i��-�-�s�3�3�3�3�3r)c�2�|�|j�d����|�ddd���|�|j�d����|�|j�dd��d��|�|j�dd��d	��|�|j�d
d��d��|�|j�d
d��d��|�|j�d
d
��d��|�|j�d
d��d��|�|j�dd
��d��|�|j�dd��d��|�|j�dd
��d��|�|j�dd��d��|�t|jjdd��|�t|jjd
d��dS)Nr�r�z�
[DEFAULT]
a = def-a
b = def-b,a:`%(a)s`
c = def-c,b:"%(b)s"
d = def-d-b:"%(known/b)s"

[jail]
a = jail-a-%(test/a)s
b = jail-b-%(test/b)s
y = %(test/y)s

[test]
a = test-a-%(default/a)s
b = test-b-%(known/b)s
x = %(test/x)s
y = %(jail/y)s
rorRrOztest-a-def-arQztest-b-def-b,a:`test-a-def-a`�jailzjail-a-test-a-def-az+jail-b-test-b-def-b,a:`jail-a-test-a-def-a`r%z5def-c,b:"jail-b-test-b-def-b,a:`jail-a-test-a-def-a`"r$z'def-d-b:"def-b,a:`jail-a-test-a-def-a`"z'def-c,b:"test-b-def-b,a:`test-a-def-a`"z def-d-b:"def-b,a:`test-a-def-a`"r�zdef-c,b:"def-b,a:`def-a`"zdef-d-b:"def-b,a:`def-a`"�xr�)	r^r%rErArDrZr~�assertRaises�	Exceptionr-s r(�testTargetedSectionOptionsz+ConfigReaderTest.testTargetedSectionOptions�s.�����4�6�;�;�s�#�#�$�$�$��+�+�h�d�-�+����$�/�/�$�&�+�+�c�"�"�#�#�#����4�6�:�:�f�c�*�*�N�;�;�;����4�6�:�:�f�c�*�*�,K�L�L�L����4�6�:�:�f�c�*�*�,A�B�B�B����4�6�:�:�f�c�*�*�,Y�Z�Z�Z����4�6�:�:�f�c�*�*�,c�d�d�d����4�6�:�:�f�c�*�*�,U�V�V�V����4�6�:�:�f�c�*�*�,U�V�V�V����4�6�:�:�f�c�*�*�,N�O�O�O����4�6�:�:�i��-�-�/J�K�K�K����4�6�:�:�i��-�-�/J�K�K�K����I�t�v�z�6�3�7�7�7����I�t�v�z�6�3�7�7�7�7�7r))NN)r%)rtrurvr!r.rArFrLrXrbrmr�r�r�r��
__classcell__�r's@r(rr5s��������0�0�0�0�0��������"$�$�$�E�E�E�E�
<�
<�
<�e�e�e�)�)�)�4.'�.'�.'�`=�=�=�.
4�
4�
4� 8� 8� 8� 8� 8� 8� 8r)rc���eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zed���Zd�Z�xZS)�JailReaderTestc�H��tt|��j|i|��dS�N)r r��__init__�r&�args�kwargsr's   �r(r�zJailReaderTest.__init__s+���&�%�����&��7��7�7�7�7�7r)c�R�dD�]"}|�td|�d���ddg��|�td|�d���ddg��|�td|�d���ddg��|�td|�d���ddg��|�td|�d���ddg��|�td|�d���ddg��|�td	|�d���d	dg����$dS)
N)�
�	� rOrQza[x=y]za[x=y][z=z]za[x="y][z"]z
a[x="y z"]z
a[x="y	z"]z
a[x="y
z"])rZr)r&r4s  r(�testSplitWithOptionsz#JailReaderTest.testSplitWithOptionssj��
�W�W�c����$�$�s�s�s�_�5�5�#�QT�AU�V�V�V����$�$�C�C�C�%9�:�:�(�QT�AU�V�V�V����$�$����%>�?�?�-�QT�AU�V�V�V����$�$����%>�?�?�-�QT�AU�V�V�V����$�$����%=�>�>�,�QT�AU�V�V�V����$�$����%>�?�?�-�QT�AU�V�V�V����$�$����%>�?�?�-�QT�AU�V�V�V�V�W�Wr)c�~�tdtt���}|�t|j��dS)N�XXXABSENTXXX�r�share_config)r
r�CONFIG_DIR_SHARE_CFGr��
ValueErrorrE�r&r�s  r(�testIncorrectJailz JailReaderTest.testIncorrectJails5��	�N�J�EY�	Z�	Z�	Z�$����J��	�*�*�*�*�*r)c�|�tdtt���}|�|�����|�|�����|�|�����|�d��|�d��dS)N�emptyactionr�z"No filter set for jail emptyactionz'No actions were defined for emptyaction)r
�IMPERFECT_CONFIG�IMPERFECT_CONFIG_SHARE_CFGrDrErK�	isEnabled�assertLoggedr�s  r(�testJailActionEmptyz"JailReaderTest.testJailActionEmptys���	�M�+;�Jd�	e�	e�	e�$��/�/�$�)�)�+�+�����/�/�$�/�/�#�#�$�$�$��/�/�$�.�.�"�"�#�#�#����8�9�9�9����=�>�>�>�>�>r)c��tdtt���}|�|�����|�|�����|�|�����|�dtz��|�d��dS)N�missingbitsjailr�zJFound no accessible config files for 'filter.d/catchallthebadies' under %szUnable to read the filter�	r
r�r�rDrEr^rKr�r�r�s  r(�testJailActionFilterMissingz*JailReaderTest.testJailActionFilterMissing"s���	�%�/?�Nh�	i�	i�	i�$��/�/�$�)�)�+�+�������4�?�?�$�$�%�%�%��/�/�$�.�.�"�"�#�#�#����`�cs�s�t�t�t����/�0�0�0�0�0r)c�R�tdtt���}|�|�����|�|�����|�|�����|�d��dS)N�brokenactiondefr�z$Invalid action definition 'joho[foo'r�r�s  r(�testJailActionBrokenDefz&JailReaderTest.testJailActionBrokenDef*���	�%�/?�*�
,�
,�
,�$��/�/�$�)�)�+�+�������4�?�?�$�$�%�%�%��/�/�$�.�.�"�"�#�#�#����:�;�;�;�;�;r)c�j�tdtt���}|�|�����|�|�����|�|�����|�|jdd��dS)N�
tz_correctr��logtimezone�UTC+0200)	r
r�r�rDrErKr�rZ�optionsr�s  r(�testJailLogTimeZonez"JailReaderTest.testJailLogTimeZone2s���	�L�*:�*�
,�
,�
,�$��/�/�$�)�)�+�+�����/�/�$�/�/�#�#�$�$�$��/�/�$�.�.�"�"�#�#�#����4�<�
�.�
�;�;�;�;�;r)c�R�tdtt���}|�|�����|�|�����|�|�����|�d��dS)N�brokenfilterdefr�z$Invalid filter definition 'flt[test'r�r�s  r(�testJailFilterBrokenDefz&JailReaderTest.testJailFilterBrokenDef:r�r)c�2�tj�d���tdtt
���}|�|�����|�|�����|�	|�
����|�|���d��|�
d��|�|���d��dS)NT��stock�sshdr�zssh-funky-blocker)r`�F2B�SkipIfCfgMissingr
rr�rDrErKr^r�rZ�getName�setNamer�s  r(�testStockSSHJailzJailReaderTest.testStockSSHJailBs���
�,���d��+�+�+�	�F�J�=Q�	R�	R�	R�$��/�/�$�)�)�+�+�����/�/�$�/�/�#�#�$�$�$����4�>�>�#�#�$�$�$����4�<�<�>�>�6�*�*�*��,�,�"�#�#�#����4�<�<�>�>�#6�7�7�7�7�7r)c�>�tj�d���tdtt
d���}|�|�����|�|�����|�|�	����|�
��}|�gd�gd�|D����|�gd�gd�|D����|�gd	�gd
�|D����|�gd���}d}|D]Q}|�
t|��d
ko|d
�d����|dz
}||krdS�RdS)NTr��sshd-override-flt-opts�rr��force_enable)rUr��	prefregexz^Testc�P�g|]#}t|��dk�|ddk�!|��$S)rr���len��.0rs  r(�
<listcomp>z>JailReaderTest.testOverrideFilterOptInJail.<locals>.<listcomp>Ws4��<�<�<�!��Q���!����!���(;�(;�A�(;�(;�(;r))rUr��addjournalmatchz
_COMM=testc�P�g|]#}t|��dk�|ddk�!|��$S)rr�r�r�s  r(r�z>JailReaderTest.testOverrideFilterOptInJail.<locals>.<listcomp>Zs5��B�B�B�!��Q���!����!��0A�(A�(A�A�(A�(A�(Ar))rUr��maxlinesrc�P�g|]#}t|��dk�|ddk�!|��$S)rr�r�r�s  r(r�z>JailReaderTest.testOverrideFilterOptInJail.<locals>.<listcomp>]s4��;�;�;�!��Q���!����!��
�(:�(:�A�(:�(:�(:r))rUr��usedns�norr�regexr)r`r�r�r
r�r�rDrErKr��convertrZ�indexr^r��endswith)r&r��stream�	usednsidxr�rs      r(�testOverrideFilterOptInJailz*JailReaderTest.testOverrideFilterOptInJailLs���
�,���d��+�+�+�	�,�6F�*��
?�
?�
?�$��/�/�$�)�)�+�+�����/�/�$�/�/�#�#�$�$�$��/�/�$�.�.�"�"�#�#�#��<�<�>�>�&����K�K�K�L�<�<�v�<�<�<�>�>�>����V�V�V�W�B�B�v�B�B�B�D�D�D����D�D�D�E�;�;�v�;�;�;�=�=�=��l�l�L�L�L�M�M�)��!����a����C��F�F�Q�J�9�1�Q�4�=�=��#9�#9�:�:�:���6�1��)�m�m�U�U�U�m��r)c	��tj�d���dD]�}dD]�}td|���zt
td���}|�|�����|�|�	����|�
��}|�d|���dd	|zggd
�|D�����ь�dS)NTr�)rr)�JRNL�FILE�TEST�INIT�
checklogtype_r�rU�addfailregexz^%s failure from <HOST>$c�P�g|]#}t|��dk�|ddk�!|��$S)rr�r�r�s  r(r�z=JailReaderTest.testLogTypeOfBackendInJail.<locals>.<listcomp>ss4��A�A�A�A�3�q�6�6�A�:�:�!�A�$�.�*@�*@�a�*@�*@�*@r))
r`r�r�r
�lowerr�r�rDrErKr�rZr�)r&r��prefliner�r�s     r(�testLogTypeOfBackendInJailz)JailReaderTest.testLogTypeOfBackendInJailfs��
�,���d��+�+�+��
C�
C�a�3�C�C�x��o�h�n�n�&6�&6�6�@P�,�4�A�A�A�D��O�O�D�I�I�K�K� � � ��O�O�D�O�O�%�%�&�&�&�
�\�\�^�^�F����u�d�l�l�n�n�n�>X�[c�>c�d�e�A�A��A�A�A�C�C�C�C�C�
C�
Cr)c
���d}dddif}t|��}|�||��|�diftd����|�dddd�ftd	����|�d
iftd
����|�ddd
iftd����|�dddiftd����|�ttd��|�ttd��|�ttd��|�ttd��|�ttd��d}dif}t|��}|�||��d}ddddddddd d!d"d"d#�f}t|��}|�||��t|�d
d$����}|d%td&�|d'���D����f}|�||��dS)(Nzmail-whois[name=SSH]z
mail-whois�name�SSHzmail.who_is�cat�dog)rOrQzmail.who_is[a=cat,b=dog]zmail--ho_is�mailrO�,zmail[a=',']rQzmail[a=b, ]z	mail-how[z-mail[a="test with interim (wrong) "" quotes"]z-mail[a='test with interim (wrong) '' quotes']zmail[a='x, y, z', b=x, y, z]z	mail['s']zabc[]�abcz�option[opt01=abc,opt02="123",opt03="with=okay?",opt04="andwith,okay...",opt05="how about spaces",opt06="single'in'double",opt07='double"in"single',  opt08= leave some space, opt09=one for luck, opt10=, opt11=]rJ�123z
with=okay?zandwith,okay...zhow about spaceszsingle'in'doublezdouble"in"singlezleave some spacezone for luck�)�opt01�opt02�opt03�opt04�opt05�opt06�opt07�opt08�opt09�opt10�opt11�][rc3�LK�|]\}}||�dd��fV�� dS)r�rN)�replace)r��k�vs   r(�	<genexpr>z1JailReaderTest.testSplitOption.<locals>.<genexpr>�s9����B�B�d�a���A�I�I�c�4� � �!�B�B�B�B�B�Br)r)rrZr�r�r
�dict�items)r&rJ�expected�result�	expected2s     r(�testSplitOptionzJailReaderTest.testSplitOptionus{��!�&��V�U�O�
,�(��&�!�!�&����8�V�$�$�$����M�2�&��}�(E�(E�F�F�F����M��5�#9�#9�:�N�Ke�<f�<f�g�g�g����M�2�&��}�(E�(E�F�F�F����F�S�#�J�'��
�)F�)F�G�G�G����F�S�#�J�'��
�)F�)F�G�G�G����J���<�<�<����J��0c�d�d�d����J��0c�d�d�d����J��0R�S�S�S����J���@�@�@��&��R�[�(��&�!�!�&����8�V�$�$�$�c�&�������� ��������(��&�!�!�&����8�V�$�$�$��&�.�.��d�3�3�4�4�&���{��B�B�h�q�k�.?�.?�.A�.A�B�B�B�B�B��)����9�f�%�%�%�%�%r)c�"�tddtt���}|�|�����|�|�����|�|jdd��|�|jdd��|�d�|j	D��gd	�d
ddddd
gddgddgggggd�d
dddddgddgddgddgggggd�d
dddddgddgddggggg��dS)N�	multi-logT)r�rr��logpathza.log
b.log
c.log�actionzeaction[actname='ban']
action[actname='log', logpath="a.log
b.log
c.log
d.log"]
action[actname='test']c�6�g|]}|�����Srx)r��r�rOs  r(r�z6JailReaderTest.testMultiLineOption.<locals>.<listcomp>�s ��I�I�I�!�!�)�)�+�+�I�I�Ir))rUr�	addaction�ban�	multi-setr�	actionbanz4echo "name: ban, ban: <ip>, logs: a.log
b.log
c.log"�actnamer�)rUrr�logrz:echo "name: log, ban: <ip>, logs: a.log
b.log
c.log
d.log"za.log
b.log
c.log
d.log)rUrrrRrRz5echo "name: test, ban: <ip>, logs: a.log
b.log
c.log")
r
r�r�rDrErKrZr�rV�_JailReader__actionsr�s  r(�testMultiLineOptionz"JailReaderTest.testMultiLineOption�s���	�K�d�<L�[u�	v�	v�	v�$��/�/�$�)�)�+�+�����/�/�$�/�/�#�#�$�$�$����4�<�	�*�,A�B�B�B����4�<��)�,^�_�_�_����I�I�t�/H�I�I�I�,�,�,�{�K��SX��J�K�����[��[�/��
-�,�,�{�K��SX��Q�R�����,�-���/D�[�/��
.�-�-��[�(�TZ��K�L�����[��]�0��L�����r)c	�F��tj�d���tddt���}tj|d��|j���}td��|d<|�
|�����|���}g}|D]w�t���dkr��dd	kr"�dd
kr|�����D�ddkr'|��fd��dD�����xd
t z}|�t|��d��|�|dd	dddd
|g��|�|dd	dddd
|g��dS)NTr��
blocklisttest)r�rr�))rtr#)�filterr�)�	failregexz
^test <HOST>$)�senderzf2b-test@example.com)�blocklist_de_apikeyztest-key)rzX%(action_blocklist_de)s
mynetwatchman[port=1234,protocol=udp,agent="%(fail2ban_agent)s"]rlrrU�agentrc�J��g|]}|ddk�dg�dd�z|z�� S)rr(rUrrlrx)r�r�cmds  �r(r�z3JailReaderTest.testVersionAgent.<locals>.<listcomp>�s6���J�J�J�1�!�A�$�'�/�/���#�a��c�(�"�Q�&�/�/�/r)zFail2Ban/%srr�blocklist_der�
mynetwatchman)r`r�r�r
rrrE�_cfg�get_sectionsrrDrKr�r��append�extendrrZ)r&r�r�r��act�	useragentr*s      @r(�testVersionAgentzJailReaderTest.testVersionAgent�s����
�,���d��+�+�+�	�O�$�
�	K�	K�	K�$���D�&�!�!�!�
�Y�
#�
#�
%�
%�(�"�$���(�?���/�/�$�/�/�#�#�$�$�$��<�<�>�>�&�
�#�
�L�L�c�	�#�h�h�!�m�m��	�!�f��o�o�#�a�&�G�+�+��J�J�s�O�O�O�O��A��+����J�J�J�J�J�J��A��J�J�J�K�K�K���g�%�)����3�s�8�8�Q�������3�q�6�E�?�H�n�g�W`�a�b�b�b����3�q�6�E�?�H�o�w�Xa�b�c�c�c�c�cr)c��tj�|d��}t|d�����tj�|d��}tjd|��|�tjtj�|d����|g��|�tj|��g��|�	d|z��|�tjtj�|d����g��dS)N�f1r1�f2�nonexisting�*z4File %s is a dangling link, thus cannot be monitored)
r2r3r6r9r;�symlinkrZr
�_globr�)r&r$r5r6s    r(�testGlobzJailReaderTest.testGlob�s��
�w�|�|�A�t���"��r�3�-�-������	�w�|�|�A�t���"��*�]�2�������:�#�B�G�L�L��C�$8�$8�9�9�B�4�@�@�@����:�#�B�'�'��,�,�,����J�R�O�P�P�P����:�#�B�G�L�L��M�$B�$B�C�C�R�H�H�H�H�Hr)c���ti���}|�|���g��|�|�d����|�t|jdi��|�t|jd��|�t|j	dd��|�t|j
di��dS)N�r�rR�any)rrZr�r^�has_sectionr�r�
merge_sectionr�r~rK)r&r%s  r(�testCommonFunctionz!JailReaderTest.testCommonFunction�s�����#�#�#�!����1�:�:�<�<��$�$�$����1�=�=��(�(�)�)�)����N�A�O�V�R�@�@�@����N�A�I�v�6�6�6����N�A�E�6�5�9�9�9����N�A�L�&�"�=�=�=�=�=r))rtrurvr�r�r�r�r�r�r�r�r�r�r�rr!r3rr;rAr�r�s@r(r�r�s3�������8�8�8�8�8�	W�	W�	W�+�+�+�?�?�?�1�1�1�<�<�<�<�<�<�<�<�<�8�8�8����4
C�
C�
C�3&�3&�3&�j���0d�d�d�B�I�I��+�I� >�>�>�>�>�>�>r)r�c�D�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�FilterReaderTestc�&�gd�dddgd�ggd�gd�gd�gd	�g}tddi��}|�t��|���|�d��|�|���|��tddd
ditt���}|���|�d��d
|dd<|�|���|��dS)N)rU�
testcase01r�rrrEr�)z�^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*(?:error: PAM: )?Authentication failure for .* from <HOST>\s*$z�^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*(?:error: PAM: )?User not known to the underlying authentication module for .* from <HOST>\s*$a^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*(?:error: PAM: )?User not known to the\nunderlying authentication.+$<SKIPLINES>^.+ module for .* from <HOST>\s*$)rUrE�addignoreregexz"^.+ john from host 192.168.1.1\s*$)rUrEr�z
_COMM=sshd�+z_SYSTEMD_UNIT=sshd.servicez_UID=0)rUrEr�zFIELD= with spaces rGzAFIELD= with + char and spaces)rUrE�datepatternz%Y %m %d %H:%M:%Sr��5�r�r�r���)r
r|�TEST_FILES_DIRrErKrVr��TEST_FILES_DIR_SHARE_CFG)r&�output�filterReaders   r(rXzFilterReaderTest.testConvertsY��'�'�'���~�06�06�06�7�*�*�*�?�?�?�B�B�B�<�<�<�/�&�2�l�L�"�=�=�,����.�)�)�)����������$��������-�-�/�/��8�8�8��l�L�:�s�:K�)�>�C�C�C�,����������$�����&��)�B�-�����-�-�/�/��8�8�8�8�8r)c�$�tddddd�tt���}|���|�d��|���}|�|dd��|�d��dS)NrEz<test>�X)r�rRrJr�z6Wrong int value 'X' for 'maxlines'. Using default one:)r
rNrMrErKr}�assertNotEqualr��r&rPrWs   r(�testConvertOptionsz#FilterReaderTest.testConvertOptions-s����l�L�x�Y\�:]�:]�)�>�C�C�C�,����������$����	�	!�	!�	#�	#�$����d�:�&��,�,�,����L�M�M�M�M�Mr)c���gd�g}tdditt���}|���|�d��|���}|�||��dS)N)rU�jailnamer�z to=sweet@example.com fromip=<IP>�
substitionrWrJ�r
rNrMrErKr�rV�r&rOrPr%s    r(�!testFilterReaderSubstitionDefaultz2FilterReaderTest.testFilterReaderSubstitionDefault6s���S�S�S�T�&��l�J��)�>�C�C�C�,����������$���������!�����F�#�#�#�#�#r)c��tdditt���}|���|�d��|���}|�d|dv��dS)N�
testcase02rWrJr�r%)r
rNrMrErKr}rDrTs   r(�testFilterReaderSubstKnownz+FilterReaderTest.testFilterReaderSubstKnown?s���l�J��)�>�C�C�C�,����������$����	�	!�	!�	#�	#�$��/�/�&�D��-�-�.�.�.�.�.r)c��gd�g}tdddditt���}|���|�d��|���}|�||��dS)N)rUrWr�zto=sour@example.com fromip=<IP>rXrW�honeypotzsour@example.comrJrYrZs    r(�testFilterReaderSubstitionSetz.FilterReaderTest.testFilterReaderSubstitionSetJs���R�R�R�S�&��l�J��EW�8X�)�>�C�C�C�,����������$���������!�����F�#�#�#�#�#r)c��gd�g}td��\}}tdd|tt���}|���|�d��|���}|�||��dS)N)rUrWr�z?^to=test,sweet@example.com,test2,sweet@example.com fromip=<IP>$zusubstition[failregex="^<known/failregex>$", honeypot="<sweet>,<known/honeypot>", sweet="test,<known/honeypot>,test2"]rXrWrJ�rr
rNrMrErKr�rV�r&rO�
filterName�	filterOptrPr%s      r(�testFilterReaderSubstitionKnownz0FilterReaderTest.testFilterReaderSubstitionKnownSs���r�r�r�s�&�(�z�|�|��*�i��l�J�	�)�>�C�C�C�,����������$���������!�����F�#�#�#�#�#r)c��gd�g}td��\}}tdd|tt���}|���|�d��|���}|�||��dS)N)rUrWr�z)^\s*to=fail2ban@localhost fromip=<IP>\s*$zUsubstition[failregex="^\s*<Definition/failregex>\s*$", honeypot="<default/honeypot>"]rXrWrJrcrds      r(�!testFilterReaderSubstitionSectionz2FilterReaderTest.testFilterReaderSubstitionSection^s���^�^�^�_�&�(�\�^�^��*�i��l�J�	�)�>�C�C�C�,����������$���������!�����F�#�#�#�#�#r)c���tdddditt���}|���|�d��|�ttj|��tddddd�tt���}|���|�d��|�ttj|��dS)NrXrWr`z
<honeypot>rJz<sweet>)r`�sweet)r
rNrMrErKr�r�r�)r&rPs  r(�testFilterReaderSubstitionFailz/FilterReaderTest.testFilterReaderSubstitionFailis����l�J��\�8R�)�>�C�C�C�,����������$�������J�� 4�l�C�C�C��l�J�Y�Ye�8f�8f�)�>�C�C�C�,����������$�������J�� 4�l�C�C�C�C�Cr)c���tj�tj�td����}ttj�|d��di��}|�|���tj�|d��tj�|d��g��	|�d��|�	dd��|�	dd��|�	dd��dS#t$r#}|�d	|z��Yd}~dSd}~wwxYw)
N�filter.dztestcase01.confrEztestcase-common.confrN�
__prefix_liner%�ignoreregexz)unexpected options after readexplicit: %s)r2r3�abspathr6rMr
rZ�readexplicitrKr~r��fail)r&�path_rPr�s    r(�testFilterReaderExplicitz)FilterReaderTest.testFilterReaderExplicitwsG��
�'�/�/�"�'�,�,�~�z�B�B�
C�
C�%��b�g�l�l�5�2C�D�D�l�TV�W�W�,����<�,�,�.�.��G�L�L��.�/�/�����e�EV�1W�1W�X����@����4� � � ����L�/�2�2�2����L�+�.�.�.����L�-�0�0�0�0�0��	�@�@�@��9�9�
8�A�
>�?�?�?�?�?�?�?�?�?�����@���s�AD2�2
E�<E�EN)rtrurvrXrUr[r^rargrirlrurxr)r(rCrC�s�������*9�*9�*9�XN�N�N�$�$�$�	/�	/�	/�$�$�$�	$�	$�	$�	$�	$�	$�D�D�D�@�@�@�@�@r)rCc�2�eZdZdd�Zd�Zed���ZdS)�JailsReaderTestCacheFNc��t||���}|�|��|���|���|���|�|�d����dS)N�r�r�)rr|�	readEarly�getEarlyOptions�readAllrDrK)r&rr�r��configurators     r(�_readWholeConfz#JailsReaderTestCache._readWholeConf�s����<�l�S�S�S�,����'�"�"�"���������� � � ��������/�/�,�)�)�$�/�/�0�0�0�0�0r)c��d}|����d��D]}tjd|z|��r|dz
}� |S)Nrr�z^\s*Reading files?: .*/r)�getLog�rsplit�re�match)r&�	filematch�cnt�ss    r(�_getLoggedReadCountz(JailsReaderTestCache._getLoggedReadCount�sU��	�#��;�;�=�=����%�%�
�
�a��h�)�)�3�Q�7�7�
��1�H�C��	�*r)c��tj���tj}t
jt_	tj|��tj	t|��tjtdz|dz��tjtdz|dz��t��}|�
||���|�d��}|�|dkd|z��|�
|d	|�
��|�d��}|�|dkd|z��|�d
��}|�|dkd|z��|�d��}|�|dkd|z��|t_dS#|t_wxYw)Nz
/jail.confz/jail.localz/fail2ban.confz/fail2ban.localr=z
jail.localrz3Unexpected count by reading of jail files, cnt = %sTryzjail\.localz:Unexpected count by second reading of jail files, cnt = %szfilter\.d/common\.confz5Unexpected count by reading of filter files, cnt = %szaction\.d/iptables\.confz5Unexpected count by reading of action files, cnt = %s)r`r��
SkipIfFastr	�logLevel�logging�DEBUGr+r,�copytreer�copyrr~r�rD)r&r�saved_ll�	share_cfgr�s     r(�testTestJailConfCachez*JailsReaderTestCache.testTestJailConfCache�s���
�,������
�
%�(�$�]�/��'�	�=�����	�?�:�w�'�'�'�	�;�z�L�(�'�M�*A�B�B�B�	�;�z�,�,�g�8I�.I�J�J�J��v�v�9����w�Y��7�7�7�	
�	!�	!�,�	/�	/�3��?�?�3�!�8�R�UX�X�Y�Y�Y����w�T�	��J�J�J�	
�	!�	!�.�	1�	1�3��?�?�3�!�8�Y�\_�_�`�`�`�
�	!�	!�";�	<�	<�3��?�?�3�!�8�T�WZ�Z�[�[�[�	
�	!�	!�"=�	>�	>�3��?�?�3�!�8�T�WZ�Z�[�[�[�&�?�����h�?��&�&�&�&s
�E3G�G)FN)rtrurvr~r�rr�rxr)r(rwrw�sR������1�1�1�1�
�
�
��#'�#'��+�#'�#'�#'r)rwc���eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
ed	���Zd
�Z
d�Zed���Z�xZS)
�JailsReaderTestc�H��tt|��j|i|��dSr�)r r�r�r�s   �r(r�zJailsReaderTest.__init__�s+���'�%�����'��8��8�8�8�8�8r)c��tj�d��s2td���}|�t
|j��dSdS)Nz/XXXr)r2r3r7rr�r�rE)r&�readers  r(�testProvidingBadBasedirz'JailsReaderTest.testProvidingBadBasedir�sP��	�����	�	�.���'�'�'�6����Z���-�-�-�-�-�.�.r)c��ttt���}|�|�����|�|�d�����|�t|j	��|�	d���}d|_
|�|gd�gd�dd	d
gd�gdd	ggd
�gd�gd�gd�gd�ddddddgddgddggggd�gd�gd�gd�ddgddgddgddggd�dd gd!d"gd!d#gd!d$gd!d%gg��|�d&��|�
d'��|�d(��dS))Nr�F)�ignoreWrongT��allow_no_files)�addr��auto)r��test-known-interpr�rr�r�)z*failure test 1 (filter.d/test.conf) <HOST>z+failure test 2 (filter.d/test.local) <HOST>z"failure test 3 (jail.local) <HOST>�start)r��missinglogfilesr�)rUr�r��<IP>)r��brokenactionr�)rUr�r�r�)rUr�rr�r�rrzhit with big stick <ip>rr�)r��parse_to_end_of_jail.confr�)rUr�r�r�)rUr�r�r�)rUr�r�r�r�r�r�)r�r�r�r�zconfig-errorz~Jail 'brokenactiondef' skipped, because of wrong configuration: Invalid action definition 'joho[foo': unexpected option syntaxz~Jail 'brokenfilterdef' skipped, because of wrong configuration: Invalid filter definition 'flt[test': unexpected option syntaxzoJail 'missingaction' skipped, because of wrong configuration: Unable to read action 'noactionfileforthisaction'zmJail 'missingbitsjail' skipped, because of wrong configuration: Unable to read the filter 'catchallthebadies'z!Errors in jail 'missingbitsjail'.zSkipping...z6No file(s) found for glob /weapons/of/mass/destruction)rr�r�rDrEr^rKr�r�r��maxDiffrVr��assertNotLogged)r&�jails�
comm_commandss   r(�testReadTestJailConfz$JailsReaderTest.testReadTestJailConf�s��
�.�=W�
X�
X�
X�%��/�/�%�*�*�,�,�������5�#�#��#�6�6�7�7�7����J��
�.�.�.��-�-�t�-�4�4�-��$�,�����"�"�"�(�(�(��%�~�8�8�8��

�!�"�&�&�&�6�6�6�#�#�#�3�3�3�8�8�8��.�(�N��,�-��� ��n��=��
1�0�0�@�@�@�1�1�1�4�4�4��m���� ��n���)�*�(�(�(��l���E�F��E�F��u�w��s�u�E$�%�%�%�L���7�8�8�8����}�%�%�%����L�M�M�M�M�Mr)c
��tj�d���tjtj�tdd����D�]�}tj�|���	dd��}t|dit���}|�|�����	|�
i��nG#t$r:}|�d	|�d
t!|��j�d|����Yd}~nd}~wwxYw|�d���s|�d
|���d|z���|�|j�dd�����d|z���|�t2jt7d��z���}|�|�d��dd|z���|dvr/|�d|�dd��d|z������dS)NTr��action.d�*.confz.confr�r�rzaction r�z: z-commonrNz.Action file %r is lacking [Definition] section��msgrz#Action file %r is lacking actionban)�timeout�bantime)�ignorer�z5Action file %r does not contains jail-name 'f2b-TEST')�pfziptables-allports�iptables-multiportzf2b-TEST�actionstartzSAction file %r: interpolation of actionstart does not contains jail-name 'f2b-TEST')r`r�r��globr2r3r6r�basenamer
rrDrErKr�rs�typertr��assertInr��_optsr~�stripr}r�_escapedTagsrUrZ)r&�actionConfig�
actionName�actionReaderr�rWs      r(�testReadStockActionConfz'JailsReaderTest.testReadStockActionConf�sq��
�,���d��+�+�+��i�����Z��X� N� N�O�O�p�p�l��� � ��.�.�6�6�w��C�C�:��z�6�2�z�J�J�J�<��?�?�<�$�$�&�&�'�'�'�G����B������
�G�G�G��I�I�I�Z�Z�Z��a���1A�1A�1A�1�1�E�F�F�F�F�F�F�F�F�����G����
�
�
�i�
(�
(�p��M�M�,�� 5� 5� 7� 7�	9�L�	H��J�J�J�	�O�O�L�&�*�*�;��;�;�A�A�C�C�	.��	=��?�?�?��#�#��&��-C�)D�)D�D�$�F�F�D����T�X�X�f�%�%�v�	@�<�	O��Q�Q�Q��F�F�F�	�]�]�:�t�x�x�
�r�:�:�
_�bn�
n��p�p�p��-p�ps�C%�%
D)�/0D$�$D)c	��tj�d���ttt
���}|�|�����|�|�����|�	��}|�
|g��t��}|���D�]�}|dkr�
|�
|d��}t|��\}}|�|��|�t!|����t#|||t
t���}|�|���d|z��|�i��|�|j�
dd	�������|�
|d
��}|�t!|�������t)|��D�]K}	t|	��\}
}|�t!|
����|�t+|t,����|
dkr|�d|��t1|
|it
t���}|�|�����|�i��|�	��}
|�t!|
����|�|j�
d
d	���������M���dS)NTr�r��INCLUDESr$rJzFailed to read filter:r%r�rr��portr)r`r�r�rrr�rDrErKr�rZrUr�r~rr�r�r
r�r�r�
isinstancerr�r)r&r�r��
allFiltersr�rerfrP�actionsr1�actName�actOptr��cmdss              r(�testReadStockJailConfz%JailsReaderTest.testReadStockJailConfs��
�,���d��+�+�+�
�j�7K�
L�
L�
L�%��/�/�%�*�*�,�,�����/�/�%�"�"�$�$�%�%�%��-�-�/�/�-����=�"�%�%�%��u�u�*��n�n���%E�%E�d�
�j�����	�	�$��)�)�:�)�*�5�5��:�y�
�>�>�*�����?�?�3�z�?�?�#�#�#��z�4��%�z�;�;�;�<��?�?�<�$�$�&�&�'?�*�'L�M�M�M����2�����?�?�<�%�)�)�+�r�:�:�@�@�B�B�C�C�C�
�Y�Y�t�X�
&�
&�7��?�?�3�w�}�}���'�'�(�(�(��w�'�'�E�E�s�$�S�)�)�O�G�V��O�O�C��L�L�!�!�!��O�O�J�v�t�,�,�-�-�-��&�&�&�	�]�]�6�6�"�"�"����r�&�
�<�<�<�L��O�O�L�%�%�'�'�(�(�(����B�������!�!�D��O�O�C��I�I����	�O�O�L�&�*�*�;��;�;�A�A�C�C�D�D�D�D�E�-%E�%Er)c
���tj�d���ttdt
���}|�|�����|�|�����td�tj
tj�
ddd����D����}td�|jD����}d|_|�|�|��d	|�|��z��|�|�|��d
|�|��z��dS)NTr��rr�r�c3�K�|]v}|�d���|�d���,tj�tj�|��d��dV��wdS)zcommon.confz-aggressive.confrrN)r�r2r3�splitext�splitrs  r(r
zBJailsReaderTest.testReadStockJailFilterComplete.<locals>.<genexpr>^s�����J�J��
�J�J�}�%�%�J�)*���4F�)G�)G�J��� � �����q�!1�!1�!�!4�5�5�a�8�J�J�J�J�J�Jr)rrnr�c3�VK�|]$}t|jd��dV��%dS)r$rN)rr�)r�r�s  r(r
zBJailsReaderTest.testReadStockJailFilterComplete.<locals>.<genexpr>bsG������15�>�$�,�x�(�)�)�!�,������r)z=More filters exists than are referenced in stock jail.conf %rz2Stock jail.conf references non-existent filters %r)r`r�r�rrr�rDrErKrUr�r2r3r6r�r��issubset�
difference)r&r��filters�filters_jails    r(�testReadStockJailFilterCompletez/JailsReaderTest.testReadStockJailFilterCompleteXsz��
�,���d��+�+�+�
�j�t�J^�
_�
_�
_�%��/�/�%�*�*�,�,�����/�/�%�"�"�$�$�%�%�%��J�J��I�b�g�l�l�8�Z��B�B�C�C�J�J�J�
J�
J�'����9>�������,��$�,��/�/�'�"�"�<�0�0�C�g�FX�FX�Ye�Ff�Ff�f�h�h�h��/�/�,�'�'��0�0�8�<�;R�;R�SZ�;[�;[�[�]�]�]�]�]r)c��tj�d���ttdt
���}|�|�����|�|�����|�	d���}|�t|����|D]\}t|��dkrG|d|dgdd	gkr1|�tj|d��dk���]d
D]V}|�
d|gd�|D����|�
d|d
dg|��|�
d|g|���W|�|ddd��|jD�]W}|j}|���}|�t|��d|z���|D�]}|�	��}|���}	dt%|��vr�|�
d|j��d}
|d|	g}|D]�}t|��dkr/|ddkr#|dd�|krdd�|dD��v}
n;t|��dkr(|ddkr|dd�|kr|ddkrd}
|
rn��|�|
d|�dt%|�����������YdS)NTr�r�r�rjrrrUr�)r��recidiver�c3�hK�|]-}t|��dk�|ddk�!|dd�V��.dS)rjrr�Nrr��r�r*s  r(r
zDJailsReaderTest.testReadStockJailConfForceEnabled.<locals>.<genexpr>�s@����K�K���S���Q���3�q�6�U�?�?�S��!��W�?�?�?�?�K�Kr)r��warnr�rLzNo actions found for jail %sr�z<blocktype>�	blocktypeFrrlrrc��g|]
}|d��S)rrxr�s  r(r�zEJailsReaderTest.testReadStockJailConfForceEnabled.<locals>.<listcomp>�s��,J�,J�,J��S��V�,J�,J�,Jr)rKz	Found no z command among )r`r�r�rrr�rDrErKr�r�r�str2secondsr�rZ�_JailsReader__jailsr r��str�	_initOpts)r&r�r��command�jr��	jail_namer�commands�action_name�blocktype_present�target_commands            r(�!testReadStockJailConfForceEnabledz1JailsReaderTest.testReadStockJailConfForceEnabledks[��
�,���d��+�+�+��j�t�J^�
_�
_�
_�%��/�/�%�*�*�,�,�����/�/�%�"�"�$�$�%�%�%��-�-�t�-�4�4�-��/�/�#�m�$�$�%�%�%��8�8�g�	�'�l�l�a���W�Q�Z����4��	�8J�J�J��O�O�F�&�w�q�z�2�2�Q�6�7�7�7�� �.�.�a��=�=�%���K�K�
�K�K�K�M�M�M��=�=�%��H�f�-�}�=�=�=��=�=�'�1��}�-�-�-�-����=��$�Q�'��1�1�1��%�+�+�a�
�
#�7��y�y�{�{�9��?�?�3�w�<�<�)�I�5��7�7�7��+�+�v��~�~���H��.�.�"�"�K���H�
�
�%�%�	�]�]�;�� 0�1�1�1��� �(�K�8�^��
�
��

�g�,�,��
�
�w�q�z�[�8�8��q��s�|�~�%�%�(�,J�,J�w�q�z�,J�,J�,J�J�����L�L�1������u�!4�!4��q��s�|�~�%�%�'�!�*��*C�*C� ��	�
��u�
�	�_�_���
�.�.�#�h�-�-�-�)��+�+�+��%+�+�+r)c����tj�d���t��}|�t
��|�|���t
��|���|�	��}|�|dd��|�|dd��|�
��|���|���|�
����fd�}|�|d��|d	��cxko|d
��knc��|�|d��|d��k��|�|d
��|d��k��|��gd�gd�gd�gd�gd�gd�gd�g��|j�d��|�|j���d��|�|���t
��dS)NTr��socketz/var/run/fail2ban/fail2ban.sock�pidfilez/var/run/fail2ban/fail2ban.pidc���t���D]!\}}|ddkr|d|kr|cS�"td|�d������)NrrUrzDid not find command 'set z' among commands )�	enumerater�)rJr�r�r�s   �r(�find_setz7JailsReaderTest.testStockConfigurator.<locals>.find_set�se�����"�"���t�q�!���t�u�}�}��1�����
�X�X�X��	���6�6�8�8��
�
�r)�syslogsocket�loglevel�	logtarget�
dbpurgeage�dbfile�dbmaxmatches)rUr�r�)rUr��INFO)rUr�z/var/log/fail2ban.log)rU�	allowipv6r�)rUr�z"/var/lib/fail2ban/fail2ban.sqlite3)rUr��
)rUr��1dz/tmp)r`r�r�rr|rrZ�
getBaseDirrzr{r|rK�convertToProtocol�getConfigStreamrDrV�_Configurator__jails)r&r}rWr�r�s    @r(�testStockConfiguratorz%JailsReaderTest.testStockConfigurator�s����
�,���d��+�+�+����,����*�%�%�%����<�*�*�,�,�j�9�9�9�������	�	%�	%�	'�	'�$����4��>�#D�E�E�E����4�	�?�$D�E�E�E�������������� � �"�"�"�
�
)�
)�
+�
+�(�������/�/��8�N���h�h�z�2�2�J�J�J�J�X�X�k�5J�5J�J�J�J�J�����/�/�(�(�<�(�(�8�8�H�+=�+=�=�>�>�>��/�/�(�(�>�*�*�X�X�h�-?�-?�?�@�@�@�����#�#�#����1�1�1� � � �;�;�;�������#�����#�.�.�v�6�6�6����<�4�?�?�A�A�6�J�J�J����<�*�*�,�,�j�9�9�9�9�9r)c�:�tjtj�|d����tjtj�|d����t	tj�|dd��d�����t	tj�|dd��d�����t	tj�|d��d��}|�d��|���t|i���}|�|�	����|�|�
����|�d	�
��}d�|D��}|�ttd�|D������d
��|�|ddd��dS)Nrnr�ztestaction1.confr1ztestfilter1.conf�	jail.confz�
[testjail1]
enabled = true
action = testaction1[actname=test1]
         testaction1[actname=test2]
         testaction.py
         testaction.py[actname=test3]
filter = testfilter1
r�Tr�c�B�g|]}|dd�gd�k�|dd���S)Nrj)rU�	testjail1rrx)r��comms  r(r�z:JailsReaderTest.testMultipleSameAction.<locals>.<listcomp>�sC��5�5�5�d�
�2�A�2�h�3�3�3�3�3��a�b�b��3�3�3r)c3�&K�|]}|dV��
dS)rNrx)r�rs  r(r
z9JailsReaderTest.testMultipleSameAction.<locals>.<genexpr>�s&����?�?��6�!�9�?�?�?�?�?�?r)rlrLz{})r2�mkdirr3r6r9r;r:rrDrErKr�rZr�rU)r&r�jailfdr�r��add_actionss      r(�testMultipleSameActionz&JailsReaderTest.testMultipleSameAction�s����(�2�7�<�<���,�,�-�-�-��(�2�7�<�<���,�,�-�-�-��r�w�|�|�G�Z�);�<�<�c�B�B�H�H�J�J�J��r�w�|�|�G�Z�);�<�<�c�B�B�H�H�J�J�J������W�k�2�2�C�8�8�&��,�,�����	�,�,�.�.�.�
�g�B�
7�
7�
7�%��/�/�%�*�*�,�,�����/�/�%�"�"�$�$�%�%�%��-�-�t�-�4�4�-�5�5�m�5�5�5�+����3�s�?�?�;�?�?�?�?�?�@�@�!�D�D�D����;�r�?�2�&��-�-�-�-�-r)c�L�|�td|jd���dS)Nz'Have not found any log file for .* jail�polling��backend)�assertRaisesRegexr��_testLogPathr-s r(�testLogPathFileFilterBackendz,JailsReaderTest.testLogPathFileFilterBackend�s6������%O���i��)�)�)�)�)r)c��	ddlm}n&#t$r}tjd���d}~wwxYw|�d���|�d���dS)Nr)�
FilterSystemdz&systemd python interface not available�systemdrzsystemd[journalflags=2])�server.filtersystemdrr�r`rar)r&rr�s   r(�testLogPathSystemdBackendz)JailsReaderTest.testLogPathSystemdBackends���E�3�3�3�3�3�3�3��	�E�E�E�	�	�C�	D�	D�D�����E�������I��&�&�&����5��6�6�6�6�6s�	�
,�'�,c��ttj�|d��d��}|�d|�d|�d���|���t
|���}|�|�����|�|�	����|�
��dS)Nr�r1z&
[testjail1]
enabled = true
backend = z
logpath = ze/not/exist.log
          /this/path/should/not/exist.log
action = 
filter = 
failregex = test <HOST>
r)r9r2r3r6r:r;rrDrErKr�)r&rr	rr�s     r(rzJailsReaderTest._testLogPaths��������W�k�2�2�C�8�8�&��,�,�,��w�w����	�	�	�	�	�,�,�.�.�.�
�g�
&�
&�
&�%��/�/�%�*�*�,�,�����/�/�%�"�"�$�$�%�%�%��-�-�/�/�/�/�/r))rtrurvr�r�r�r�r�r�r�r�rrrrrr�r�s@r(r�r��s�������9�9�9�9�9�.�.�.�
/N�/N�/N�bp�p�p�6<E�<E�<E�~]�]�]�&=+�=+�=+�~2:�2:�2:�h�.�.��+�.�:)�)�)�7�7�7�����+�����r)r�)6�
__author__�
__copyright__�__license__r�r�r2r�r+r"r`�client.configreaderrrrr�clientr	�client.jailreaderr
rr�client.filterreaderr
�client.jailsreaderr�client.actionreaderrr�client.configuratorr�
server.mytimerr�utilsrrr3r6r5�__file__rMrNrr�r�r�r�r��TestCaserr�rCrwr�rxr)r(�<module>r!s���(1�
�P�
�����������	�	�	�	�	�	�	�	�
�
�
�
���������,�,�,�,�,�,�,�,�,�,�,�,�$�$�$�$�$�$�L�L�L�L�L�L�L�L�L�L�.�.�.�.�.�.�,�,�,�,�,�,�=�=�=�=�=�=�=�=�.�.�.�.�.�.�"�"�"�"�"�"�������2�2�2�2�2�2�2�2�����b�g�o�o�h�7�7��A�A�����������|�0���7�<�<������ 9� 9�8�D�D����N8�N8�N8�N8�N8�x�(�N8�N8�N8�bv>�v>�v>�v>�v>�'�v>�v>�v>�rG@�G@�G@�G@�G@�)�G@�G@�G@�T7'�7'�7'�7'�7'�-�7'�7'�7'�tV�V�V�V�V�(�V�V�V�V�Vr)