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__/samplestestcase.cpython-312.pyc
�

�ogf�0�
�z�dZdZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
mZddlmZdd	lmZmZmZmZejj-e�j/�Zej2j5ej2j7e�d
�Zej2j5ej2j7e�d�Zej>d�Z ejBd
ejDe �zdz�Z#Gd�de	jH�Z%d�Z&ed�fed�ffD]�\Z'Z(e)e(ejTej2j5e'd���D]JZ(e(jWd�dZ,e,j[d�r�)e.e%de,j_�ze&e,e'���L��y)z"Copyright (c) 2013 Steven Hiscocks�GPL�N�)�Regex)�Filter�
FileContainer)�FilterReader�)�setUpMyTime�tearDownMyTime�TEST_NOW�
CONFIG_DIR�config�files�<HOST>z\.[+\*](?!\?)[^\$\^]*z.*(?:\.[+\*].*|[^\$])$c�L��eZdZ�fd�Z�fd�Zd�Zd�Zdd�Zed��Z	�xZ
S)�FilterSamplesRegexc�j��tt|��t�|_d|_t
�y)zCall before every test case.N)�superr�setUp�dict�_filters�_filterTestsr
��self�	__class__s ��@/usr/lib/python3/dist-packages/fail2ban/tests/samplestestcase.pyrzFilterSamplesRegex.setUp3s'�����D�'�)��&�$�-��$��
�-�c�>��tt|��t�y)zCall after every test case.N)rr�tearDownrrs �rrzFilterSamplesRegex.tearDown:s�����D�*�,��rc
��|jttj|�D�cgc]}|dj	d�r|��c}�dk\d�ycc}w)z Check to ensure some tests existr�testSampleRegexs�
z&Expected more FilterSampleRegexs testsN)�
assertTrue�len�inspect�
getmembers�
startswith)r�tests  r�testFiltersPresentz%FilterSamplesRegex.testFiltersPresent?sZ���/�/���+�+�D�1�/���A�w���,�-�	
�/�0��	�,�	-��/s�Ac���|jtjdtzdz��|jtjdtzdz��|j	tjdtzdz��|j	tjdtzdz��|j	tjdtzdz��y	)
z9Tests regexp RE_WRONG_GREED is intact (positive/negative)zgreedy .* testz test not hard-anchoredzgreedy .+ testz test vary .* anchored$z" test no catch-all, hard-anchored$znon-greedy .*? testznon-greedy .+? testz! test vary catch-all .* anchored$N)r#�RE_WRONG_GREED�search�RE_HOST�assertFalse)rs r�testReWrongGreedyCatchAllz,FilterSamplesRegex.testReWrongGreedyCatchAllGs����/�/����)�G�3�6O�O�P�R��/�/����)�G�3�6O�O�P�R�������)�G�3�6Z�Z�[�]�������.��8�;T�T�U�W�������.��8�;^�^�_�arc
�R�|jj|�}|r|Std�}d|_d|_d|_d|_|�
t�}|j�}t|d||tjj��}|j|j�|�|j|j�d�|j!�|j#i�|j%�D]�}|ddk(r|d}n$|ddk(r|dg}n|j'd	|�d
��D]z}|ddk(r||_�|dd
k(r|j+|��-|ddk(r|j-|��G|ddk(r|j/|��a|ddk(s�j|j1|��|��|j3�}	|	D]E}
t4j7|
�s�t9d|�dt;|
�j=t>d�����|tA�g}||j|<|S)NTF�jail)�basedir�share_configrz	multi-set��setzUnexpected config-token z
 in streamr�	prefregex�addfailregex�addignoreregex�maxlines�datepatternzFollowing regexp of "z|" contains greedy catch-all before <HOST>, that is not hard-anchored at end or has not precise sub expression after <HOST>:
r)!r�getr�
returnRawHost�
checkAllRegex�
checkFindTime�activer�copyr�unittest�F2Br3�assertEqual�getFile�getJailName�read�
getOptions�convert�fail�	prefRegex�addFailRegex�addIgnoreRegex�setMaxLines�setDatePattern�getFailRegexr+r,�AssertionError�str�replacer-r5)r�fltName�namer2�opts�flt�
filterConf�opt�optval�	regexList�frs           r�_readFilterzFilterSamplesRegex._readFilterUs���
�
���'�"�#��

�:��t��#��#���#���#���#�*�	�\�$�&�4�	
����$��D�&�$�����!:�!:�<�*����:�%�%�'��.����:�)�)�+�V�4��/�/�������
�
�
�
!� �c�	�!�f���
��V�F��A��%���!�f�X�F��I�I��=�>��
 �v�
�1�v����S�]�	�Q��>�	!����f��	�Q��#�	#������	�Q��:�	��_�_�V��	�Q��=�	 ������
 � �*��� �)��4�b����B��
�
�s�2�w���w��1�3�4�4�4�

�c�e��#��$�-�-���	�*rc�B�td�|j�D��S)Nc3�NK�|]\}}|jd�r�||f���y�w)ztest.N)r')�.0�k�vs   r�	<genexpr>z4FilterSamplesRegex._filterOptions.<locals>.<genexpr>�s#����M�4�1�a�q�|�|�G�7L��A��M�s�%�	%)r�items�rUs r�_filterOptionsz!FilterSamplesRegex._filterOptions�s���M�4�:�:�<�M�M�Mr)N)�__name__�
__module__�__qualname__rrr)r/r\�staticmethodre�
__classcell__)rs@rrr1s4�����
-�a�3
�j�N��Nrrc������fd�}|S)Nc���|jtjjtjj	t
d�$��d�$z��$g}t
�}i}i}d}|t|�k�r�||}|dz
}ttjj	t
d|�dd��}d|_	d}d}	|D�]F}
|	dz
}	tjd	|
�}|�r�	tj|jd
��}|jd�dk(r|}�^|jd�dk(�rg|_d}t!|t"�r|n|gD]�}|r"|j%�}|j'|�n|}|jt!|t(��|j+d
�rt-|j+d
��}|r�w|j/|�}
|j+d�}|s|
rt1|
�nd}�$|z}|j3|�$�#|
��}|jj5|||f�����w|jd�dk(r|j5|����	t;|�}
n'|s!|
j=d�s|
j?�s���i}|r���|js"�$}|j3|�$�#d��}||ifg|_|
jAd�}
|jD�]"\}}}|j+d�rt-|d�s�(|\}}|jC�}d}	i}|j+d�dk7r|jE|
�}nB|j+d�r|j+d�|
z}
|jEdtF|
ftH�}|r\g}|D]S}|\}}}}|�|j+d�r&|jK|�|jK||��C|j5|��U|}|s$|jM|j+dd�d���.|j|j+dd�d�|jOt|�dd|D�cgc]}|d��	c}z�|D�]�}|\}}}}|jQ�D]�\}}|dvs�|j+|d�}|�'|d k(r|}|d!k(rt|j+d"i��}t!|tt"t(f�r|jS||��t|jO||���|j+d#d�}|��	tTjTjW|d$�}tYjZ|j]��}||j^d&zz
}|jO||d'|tYj`d$tYjb|��|tYj`d$tYjb|��||z
fz�|jK|�|jK||������%��I|t|�kr���|jljQ�D]M\}}|\}}|jC�}to|�D]%\}!}"|j|!|vxs|"|vd*||!|"fz��'�Oy#t6$r$}t7d||j9�|	fz��d}~wwxYwcc}w#t6$r$tTjTjW|d%�}Y���wxYw#td$r�}ddl3} ted(|||j9�|	|
||dk7r||ndd)j	| ji|�jk��d)j	| ji�jk��f	z��d}~wwxYw)+N�logsz,No sample log file available for '%s' filterrr	zUTF-8T)�doOpenFz4^#+ ?(failJSON|(?:file|filter)Options|addFILE):(.+)$r�fileOptions�
filterOptionsztest.conditionztest.filter-name�rd�addFILEz	%s: %s:%i�#z
�
constraint����logtype�journalztest.prefix-line�nofail�matchz!Line not matched when should havez Line matched when shouldn't havezMultiple regexs matched %r)�timery�descrt�host�attempts�matchesrzz%Y-%m-%dT%H:%M:%Sz%Y-%m-%dT%H:%M:%S.%fg��.Az:UTC Time  mismatch %s (%s) != %s (%s)  (diff %.3f seconds)zC%s: %s on: %s:%i, line:
  %s
regex (%s):
  %s
faildata: %s
fail: %s�
z %s: Regex has no samples: %i: %r)8r#�os�path�isfile�join�TEST_FILES_DIRr5r$r�waitForLineEnd�rery�json�loads�groupr�
isinstance�listr@�updaterr;�evalrerQr\�append�
ValueError�getFileName�nextr'�strip�rstriprO�processLine�TEST_NOW_STRr�addr.rCrc�assertSortedEqual�datetime�strptimerz�mktime�	timetuple�microsecond�strftime�gmtimerP�pprint�pformat�
splitlinesr�	enumerate)%r�	filenames�regexsUsedRe�
commonOpts�faildata�i�filename�logFile�ignoreBlock�lnnum�line�jsonREMatchrU�fltOptsrSrV�e�
regexsUsedIdxrZ�	failregexrI�ret�found�fid�fail2banTime�xr`ra�fv�t�
jsonTimeLocal�jsonTimer��failRegexIndex�	failRegexr2rTs%                                   ��r�
testFilterz+testSampleRegexsFactory.<locals>.testFilter�sw����/�/��7�7�>�>�"�'�'�,�,�~�v�t�<�=�1�D�8�:��f�)���,��*�
�(��!�	�C�	�N����l�8�A��F�A�
�2�7�7�<�<������t�%�7�"�7���;��5��L7�t�	�Q�J�E��(�(�Q�SW�X�K��%*����K�-�-�a�0�1�h�	�	�	�1�	��	.��z��	�	�	�1�	��	0��t���{�$.�x��$>��X�J�8�8�����!��	
���X�	������
�4��.�/��8�8�$�%�����)9� :�;�;����&�&�t�,���8�8�.�/���7�3�w�<����'�>�������w�W��E��	
�	�	�	!�	!�7�C��"6�	7�#8�$�	�	�	�1�	��	*�����!��
+�
��M�T�	�����,�D�J�J�L�
��X��H�����W����G�T�7���>�S�"�C��,�-�T���;�;�v��D�"�/�/�S7����d����\�"�4���0F�+G����S�-��!�!�#�Y��Y�L7�
�d�	
���)�	�	�	)�
�_�_�T�
"�s�
�(�(�%�
&��x�x�*�+�d�2��
�_�_�b�,��5�x�
@�s�	��u���3�-0�*�	�3��d��;�$�(�(�8�,�	�	�	�9�	%�	�	�	�)�I�.�	/�	�
���S����s�
�������W�e�4�+�-���o�o�h�l�l�7�E�2�)�+�
���s�3�x��#�c�':���!��':�;�=��".�#�,/�)�y�#�|�T��>�>�#�!�4�1�a��;�;��h�h�q�$����J�
�&�[��2�
�*�_��D�H�H�Y��+�,�2��r�C��t�,�-�
�
 �
 ��Q�
'�
�	
�	�	�"�a�	 �!� �<�<���%�q�
�-�	O�!�*�*�3�3�A�7J�K���;�;�}�6�6�8�9���M�-�-�	�9�9������x�	E�
��
�
�&9�4�;�;�|�;T�U�	�4�=�=�!4�d�k�k�(�6K�L�	��	 �
"�
"�	$�����#����	�)�,�-�E".�SS7�sL7�	
�C�	�N��p�m�m�)�)�+�,�l�g�s���3�
����!�9�$-�i�$8�,� �~�y��O�O��}�$�A�	�\�(A�'���	�*�+�,�,�,��Q
�*��{�	�7��� �%�(�)�
*�*��*��r(;��2�	O�!�*�*�3�3�A�7M�N��	O��
�7��� ���G�'�'�)�5��i��b���9�-�d��	�	�&�.�.��*�5�5�7�8��	�	�&�.�.��&�1�1�3�4�	#6�6�
7�7��7�s��$:Z�B)Z�	A-Z�8%Z�"C,[+�=[+�
Z6�0[+�
B[+� Z;�<C	[+�	Z3�Z.�.Z3�6[+�;)[(	�$[+�'[(	�([+�+	^�4B]?�?^�)rTr2r�s`` r�testSampleRegexsFactoryr��s���l,�\	�rc�L�|jd�xr|jd�S)Nzcommon.conf�.conf)�endswith�r�s r�<lambda>r�@s ��A�J�J�}�5�5�M�!�*�*�W�:M�rc�J�|jd�xr|jd�S)Nzzzz-r�)r'r�r�s rr�r�As��Q�\�\�&�1�I�a�j�j��6I�rzfilter.d�.ztestSampleRegexs%s)0�
__copyright__�__license__r�r%r�r�r��sysrzrA�server.failregexr�
server.filterrr�client.filterreaderr�utilsr
rrr
�utcfromtimestamp�	isoformatr�r�r��dirname�__file__�TEST_CONFIG_DIRr��_resolveHostTagr-�compile�escaper+�TestCaserr��basedir_�filter_�filter�listdir�
rpartition�
filterNamer'�setattr�upperr�rr�<module>r�s���,5�
������	�	�
���$�1�.�D�D�� � �1�1�(�;�E�E�G���'�'�,�,�r�w�w���x�8�(�C�������b�g�g�o�o�h�7��A�� �%�
�
��
)������4�y�r�y�y��7I�I�Le�e�f��[N��*�*�[N�zo�d
�M�N��I�J��3��H�g��w���
�
�2�7�7�<�<��*�5�6�8�3�W��!�!�#�&�q�)�*�	�	�	�s�	#�
���:�+�+�-�-��J��1�3�	3�	3r