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

�ogf�d���dZdZdZddlZddlZddlZddlZddlmZm	Z	m
Z
ddlmZm
Z
ddlmZd	d
lmZd	dlmZmZmZGd�d
e�Zy)z
Cyril Jaquierz Copyright (c) 2004 Cyril Jaquier�GPL�N�)�
CommandAction�
CallingMap�substituteRecursiveTags)�OrderedDict�Actions)�Utils�)�	DummyJail)�
pid_exists�with_tmpdir�LogCaptureTestCasec���eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
ed	��Zd
�Z
ed��Zed��Zed
��Zed��Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�CommandActionTestc����tj��tdd��_d�_�jj
���fd�}|�j_y)zCall before every test case.N�TestFc� ��d�_��S)NT)�"_CommandActionTest__action_started)�orgstart�selfs���?/usr/lib/python3/dist-packages/fail2ban/tests/actiontestcase.py�
_action_startz.CommandActionTest.setUp.<locals>._action_start1s����4��
�*��)r�setUpr�_CommandActionTest__actionr�start)rrrs` @rrzCommandActionTest.setUp*sI������4� ���f�-�$�-��$��
�]�]�
 �
 �(��&�$�-�-�rc�z�|jr|jj�tj|�y)zCall after every test case.N)rr�stopr�tearDown�rs rr zCommandActionTest.tearDown6s)��	����=�=�������d�#rc
��dddd�}|jtd��|jtd��|jtd��|jtd��|jtd	��|jtt	d
��ddd
dd��|jtt	d��dddddd
d��|jtt	d��t	d��|jtd��|jtd��|jtddi�ddi�|jtddd��ddd��|jtd d!d"��d#d!d"��|jtd$d!d"��d%d!d"��|jtd&d'd(d)��d*d'd(d)��|jt|�dd+d,d��|jtd-d.d/��d0d.d/��|jtd-d.d1d2��d1d.d1d2��|jtd3d4d1d2��d5d4d1d2��y)6N�	192.0.2.0z
123 <HOST>z	890 <ABC>��HOST�ABC�xyzc��tddi�S)N�A�<A>�r�rr�<lambda>z?CommandActionTest.testSubstituteRecursiveTags.<locals>.<lambda>Ds��"�C��<�0�rc��tddd��S)N�<B>r*�r)�Br+r,rrr-z?CommandActionTest.testSubstituteRecursiveTags.<locals>.<lambda>Fs��"��U�#;�<�rc� �tdddd��S)Nr/�<C>r*)r)r1�Cr+r,rrr-z?CommandActionTest.testSubstituteRecursiveTags.<locals>.<lambda>Hs��"��U��#G�H�rc�"�tddddd��S)Nzto=<B> fromip=<IP>r/r3�)r)r4r1�Dr+r,rrr-z?CommandActionTest.testSubstituteRecursiveTags.<locals>.<lambda>Ks��"�)=�E�PU�\^�#_�`�rc�"�tddddd��S)Nzto=<honeypot> fromip=<IP>z
<honeypot>z<sweet>r6)�	failregex�sweet�honeypot�ignoreregexr+r,rrr-z?CommandActionTest.testSubstituteRecursiveTags.<locals>.<lambda>Ms#��"�1L�Wc�qz�LN�$O�P�r))�Xzx=x<T>��T�1)�Zz<X> <T> <Y>��Yzy=y<T>zx=x1r@zy=y1zx=x1 1 y=y1)r=r?rCrA))r=zx=x<T> <Z> <<R1>> <<R2>>)�R1rA)�R2rCr>)rAz<T> <Y>rBzx=x1 1 y=y1 1 y=y1 y=y1rArCz1 y=y1)r=rDrEr?rArC)
)�actionstartzgipset create <ipmset> hash:ip timeout <bantime> family <ipsetfamily>
<iptables> -I <chain> <actiontype>)�ipmsetz
f2b-<name>��name�any��bantime�600��ipsetfamily�inet)�iptablesziptables <lockingopt>��
lockingoptz-w��chain�INPUT)�
actiontypez<multiport>)�	multiportzY-p <protocol> -m multiport --dports <port> -m set --match-set <ipmset> src -j <blocktype>��protocol�tcp��port�ssh��	blocktype�REJECT)
)rFz�ipset create f2b-any hash:ip timeout 600 family inet
iptables -w -I INPUT -p tcp -m multiport --dports ssh -m set --match-set f2b-any src -j REJECT)rGzf2b-anyrHrKrN)rQziptables -wrRrT)rW�I-p tcp -m multiport --dports ssh -m set --match-set f2b-any src -j REJECT)rXrbrYr\r_c�*�ttd��S)N)�r)z<<B><C>>�r1r7�r4�E��DEz	cycle <A>�rrr,rrr-z?CommandActionTest.testSubstituteRecursiveTags.<locals>.<lambda>y���(?��N�B�)�rc�*�ttd��S)N)rhrdrerfrjr,rrr-z?CommandActionTest.testSubstituteRecursiveTags.<locals>.<lambda>~rkrr)r3z<C> <D> <X>�fun)r)r=z<C> <D> funz<C> <B>�coolr0z<C> coolz
<matches> <B>z<matches> coolz/to=<honeypot> fromip=<IP> evilperson=<honeypot>�pokier6)r9r;r<z%to=pokie fromip=<IP> evilperson=pokiez
123 192.0.2.0z890 123 192.0.2.0z<<PREF>HOST>�IPV4)r)�PREFz
<IPV4HOST>z1.2.3.4)r)rq�IPV4HOSTzA <IP<PREF>HOST> B IP<PREF> C�V4zA 1.2.3.4 B IPV4 C)�assertRaises�
ValueError�assertEqualrr�r�aInfos  r�testSubstituteRecursiveTagsz-CommandActionTest.testSubstituteRecursiveTags<s����
�
��%����J�0�2����J�<�>����J�H�J����J�`�b����J�P�Q����*�K�H�-J����6�
�>��
���*�K�q�-s��%�S��#�H�[a�b��
���*�K�9�-������@���J�!��
���J�!�����*�C��<�8�3��,�G����*��5�+I�J�R_�ej�Lk�l����*���+H�I�Q[�bh�Ki�j����*��v�+N�O�Wg�nt�Qu�v����*�9j�x�QS�,T�U�>���	
�����*�5�1���#�	
�����*���+P�Q�
�6�*�,����*���]f�+g�h�
��I�>�@����*�1P�Z^�lu�+v�w�
!�4�Y�G�Irc����tdd�ddd���t��dd��d<�jt�fd��t��d�d	<�jt�fd
���j	�j
j
d��d��j	�j
j
d
��d��jt��fd���j	�j
j
d��d�y)Nrc��y)Nz<A><A>r,r!s rr-zHCommandActionTest.testSubstRec_DontTouchUnusedCallable.<locals>.<lambda>���rr6)r)r1r4r7c�$�dt|d�zS)N�r)��int)r�is  rr-zHCommandActionTest.testSubstRec_DontTouchUnusedCallable.<locals>.<lambda>�s��Q�#�d�3�i�.�0�rr4c����dS)Nr4r,��cms�rr-zHCommandActionTest.testSubstRec_DontTouchUnusedCallable.<locals>.<lambda>�s���r�#�w�r�test=<C>r7c���t��S�Nr+r�s�rr-zHCommandActionTest.testSubstRec_DontTouchUnusedCallable.<locals>.<lambda>�s
���/F�r�/J�rztest=<A>ztest=0ztest=<A>--<B>--<A>ztest=0--<A><A>--0c�<���jjd��S)Nr�)r�
replaceTag)r�rs��rr-zHCommandActionTest.testSubstRec_DontTouchUnusedCallable.<locals>.<lambda>�s���t�}�}�/G�/G�
�TV�/W�rz<D>)r)rrrt�ZeroDivisionErrorrvrr�)rr�s`@r�$testSubstRec_DontTouchUnusedCallablez6CommandActionTest.testSubstRec_DontTouchUnusedCallable�s�������	�	�	��"��"��0�"�S�'����%��7��"���"�S�'����%�'J�K����4�=�=�+�+�J��;�X�F����4�=�=�+�+�,@�"�E�GZ�[����%�'W�X����4�=�=�+�+�E�2�6�
�Crc��dddd�}|j|jjd|�d�|j|jjd|�d�|j|jjd	|�d
�|j|jjddd
i�d�|j|jjddd
i�d�|j|jjdddi�d�d|d<|j|jjd	|�d�|j|jjdtd����d�y)Nr#�123�890r$zText<br>textz	Text
textzText <HOST> textzText 192.0.2.0 textzText <xyz> text <ABC> ABCzText 890 text 123 ABCz	<matches>�matchesz$some >char< should \< be[ escap}ed&
z,some \>char\< should \\\< be\[ escap\}ed\&\nz<ipmatches>�	ipmatchesz<ipjailmatches>�
ipjailmatchesz%some >char< should \< be[ escap}ed&
z.some \>char\< should \\\< be\[ escap\}ed\&\r\nz<xyz>r&zText 890 text 890 ABCz09 <matches> 11c��td�S�N�
��strr!s rr-z2CommandActionTest.testReplaceTag.<locals>.<lambda>�s
��C��G�r�r�z09 10 11�rvrr�rrws  r�testReplaceTagz CommandActionTest.testReplaceTag�s}���
�
��%�
����=�=���N�E�2�������=�=���.��6�������=�=���7��?�������=�=���K��8�9�;�:�<�����=�=���M��:�;�=�:�<�����=�=���-��@�A�C�=�?��%��,�����=�=���7��?���
����=�=���-��+�,�.�
�rc�r�|j|jjdtd����d�y)N�abcc��td�S�N�arr!s rr-z4CommandActionTest.testReplaceNoTag.<locals>.<lambda>�s
��C��H�rr�r�r!s r�testReplaceNoTagz"CommandActionTest.testReplaceNoTag�s2������=�=���E��,�-�/�05�7rc���t�jdd�t�jdd�t�jdd�t�jdd�t�jd	d
�t�jdd��jtd
�fd��t	�jd��jtd�fd��y)Nr�z<a�bzc>zb?family=inet6zb>�ac�<a><b>�abz<ac>zx?family=inet6r6z/properties contain self referencing definitionsc�h���jjd�jjd��S)Nr��family=inet4��conditional�rr��_propertiesr!s�rr-z?CommandActionTest.testReplaceTagSelfRecursion.<locals>.<lambda>�s,���4�=�=�#�#�H��M�M���>�$�;�rz.possible self referencing definitions in queryc�h���jjd�jjd��S)NzZ<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>�family=inet6r�r�r!s�rr-z?CommandActionTest.testReplaceTagSelfRecursion.<locals>.<lambda>�s,���4�=�=�#�#�N��M�M���>�$�;�r)�setattrr�assertRaisesRegexru�delattrr!s`r�testReplaceTagSelfRecursionz-CommandActionTest.testReplaceTagSelfRecursion�s����	�$�-�-��d�#�	�$�-�-��d�#�	�$�-�-�)�4�0�	�$�-�-��x�(�	�$�-�-��v�&�	�$�-�-�)�2�.�����%W�;��

�$�-�-�������%V�;�rc	�R�t|jdd�t|jdd�t|jdd�t|jdd�t|jd	d
�|jj}td�D]�}|j	|jjd|jjd
|��d�|j	|jjd|jjd|��d�|j	|jjd|jjd|��d���|jt|�dk\�t|jdd�|j	t|�d�td�D]�}|j	|jjd|jjd
|��d�|j	|jjd|jjd|��d�|j	|jjd|jjd|��d���|jt|�dk\�y)Nr�r�zabc?family=inet4�345zabc?family=inet6�567r'z	890-<abc>�	banactionzText <xyz> text <abc>rz<banaction> '<abc>'r6)r��cachezText 890-123 text 123 '123'r�zText 890-345 text 345 '345'r�zText 890-567 text 567 '567'�z	000-<abc>rzText 000-123 text 123 '123'zText 000-345 text 345 '345'zText 000-567 text 567 '567')	r�r�_substCache�rangervr�r��
assertTrue�len)rr�r�s   r�testReplaceTagConditionalCachedz1CommandActionTest.testReplaceTagConditionalCachedsJ��	�$�-�-���&�	�$�-�-�+�U�3�	�$�-�-�+�U�3�	�$�-�-���,�	�$�-�-��&=�>�
�-�-�
#�
#�%���8�#�a�����M�M���2�D�M�M�4M�4M��5��"�!�#�����M�M���2�D�M�M�4M�4M��u��.�!�#�����M�M���2�D�M�M�4M�4M��u��.�!�#�#��/�/�#�e�*��/�"�	�$�-�-���,����3�u�:�q�!���8�#�a�����M�M���2�D�M�M�4M�4M��5��"�!�#�����M�M���2�D�M�M�4M�4M��u��.�!�#�����M�M���2�D�M�M�4M�4M��u��.�!�#�#��/�/�#�e�*��/�"rc���|dz
}d|z|j_|jj|j_|j|jjd|z�d|z|j_|j|jjd|z�d|j_|j|jj
d�d|z|j_|j|jjd|z�d|j_|j|jjd�|j�|jd�|jjddi�|jd	�|jd
�|jj�|j|jj�y)N�/fail2ban.test�
touch '%s'�
rm -f '%s'z<actioncheck> && echo -n�[ -e '%s' ]�true�returned�ip�Invariant check failedzreturned successfully)
rrF�actionrepairrv�
actionstop�	actionban�actioncheck�actionunban�pruneLog�assertNotLogged�ban�assertLoggedr�r�tmps  r�testExecuteActionBanz&CommandActionTest.testExecuteActionBan*su���	��#�*�S�0�$�-�-��#�}�}�8�8�$�-�-�����4�=�=�,�,�l�S�.@�A�)�C�/�$�-�-�����4�=�=�+�+�\�C�-?�@�6�$�-�-�����4�=�=�*�*�,F�G�+�c�1�$�-�-�����4�=�=�,�,�m�c�.A�B�$�$�-�-�����4�=�=�,�,�f�5��-�-�/����z�"��-�-���T�4�L�!����,�-����+�,��-�-�������D�M�M�,�,�-rc��d|j_d|j_d|j_d|j_|jj�|jj
i�|j�|jji�|jdd��|jj
i�|jd�|jj�|jji�|jj�|jdd��|jd�y)	Nr6zecho -n 'flush'zecho -n 'stop'�
Nothing to doT��wait�	[phase 2]r)
rr�r��actionflushr�rr�r��unbanr��flushrr�r!s r�testExecuteActionEmptyUnbanz-CommandActionTest.testExecuteActionEmptyUnbanDs����$�-�-�� �$�-�-��/�$�-�-��-�$�-�-���-�-�����-�-���B���-�-�/��-�-���b�����O�$��/��-�-���B���-�-����-�-�����-�-���b���-�-�������F���&�����'rc��|dz
}d|j_d|z|j_d|z|j_d|z|j_|jj�|jj
�y)Nr�r#ztouch '%s.<HOST>'zrm -f '%s.<HOST>'z[ -e '%s.192.0.2.0' ])rr%rFr�r�r�consistencyCheckr�s  r�testExecuteActionStartCtagsz-CommandActionTest.testExecuteActionStartCtagsXsl���	��#�"�$�-�-��1�C�7�$�-�-��0�3�6�$�-�-��5��;�$�-�-���-�-�����-�-� � �"rc�j�|dz
}d|j_d|z|j_d|z|j_d|z|j_|jt|jjddi�|jddd	�
�|jd�d|z|j_d|z|j_d
|z|j_d|z|j_|jjddi�|jd�|jd�y)Nr�r6r��rm '%s'r�r�r��Unable to restore environmentT��allr�r�z-<actioncheck> && printf "%%%%b
" <ip> >> '%s')rrFr�r�r�rt�RuntimeErrorr�r�r�r�r�s  r�(testExecuteActionCheckRestoreEnvironmentz:CommandActionTest.testExecuteActionCheckRestoreEnvironmentbs���	��#� �$�-�-��)�C�/�$�-�-��%��O�$�-�-��+�c�1�$�-�-�����L�$�-�-�"3�"3�d�D�\�B����,�.M�SW��X��-�-���*�S�0�$�-�-��&��_�$�-�-��P�SV�V�$�-�-��+�c�1�$�-�-���-�-���T�4�L�!����,�-����6�7rc	���|dz
}d|z|j_d|z|j_d|z|j_d|z|j_d|z|j_d|j_|jj�dD�]P}|jd	|z�|jjd
di�|jdd
zd��|jdddzd|jj
rdndzddzd��tj|�|j�|jjd
di�|jdddzd|jj
rdndzddzddzd��|jj
rd|j_��(|jjr��@d|j_��Sy)Nr�ztouch '%s'; echo 'started ...'r�z![ -e '%s' ] && echo 'banned '<ip>zB[ -e '%s' ] && echo 'check ok' || { echo 'check failed'; exit 1; }�echo 'repair ...'; touch '%s'F)rrr�z
[phase %s]r��	192.0.2.1z
stdout: %rzbanned 192.0.2.1Tr��Invariant check failed. Tryingzcheck failedz
repair ...zstarted ...zcheck okz	192.0.2.2zbanned 192.0.2.2r6)rrFr�r�r�r��actionstart_on_demandrr�r�r�r��os�remove)rr�r�s   r�"testExecuteActionCheckOnBanFailurez4CommandActionTest.testExecuteActionCheckOnBanFailureus����	��#�>��D�$�-�-��)�C�/�$�-�-��?�#�E�$�-�-��b�eh�h�$�-�-��>��D�$�-�-��(-�$�-�-�%��-�-�����/�a��=�=���!�"��=�=���d�K�(�)�����%�%�4��1����8��>�!��D�M�M�$>�$>�L�M�R��:��4��)�
�9�9�S�>��=�=�?��=�=���d�K�(�)����5��>�!��D�M�M�$>�$>�L�M�R��:���%�%�4�	�1��m�m� � �!#�D�M�M���M�M�/�/�*.�D�M�M�'�1/rc���|dz
}d|j_d|j_d|z|j_d|z|j_d|z|j_|jj
ddi�|jddd	�
�|j�d|j_|jt|jjddi�|jdddd	�
�y)Nr�r6r�r�r�r�r�zecho 'repair ...'Tr�r�)rrFr�r�r�r�r�r�r�rtr�r�s  r�'testExecuteActionCheckRepairEnvironmentz9CommandActionTest.testExecuteActionCheckRepairEnvironment�s����	��#� �$�-�-���$�-�-��%��O�$�-�-��+�c�1�$�-�-��>��D�$�-�-���-�-���T�4�L�!����4�6I�t��T��-�-�/�2�$�-�-�����L�$�-�-�"3�"3�d�D�\�B����#��"���.rc��|jtt|jd�d|j_|j|jjd�y)N�ROSTr#)rt�AttributeError�getattrrr�rvr!s r�testExecuteActionChangeCtagsz.CommandActionTest.testExecuteActionChangeCtags�s@�����N�G�T�]�]�F�C�"�$�-�-�����4�=�=�%�%�k�2rc��tddd�d��}d|j_d|j_|jj	|�|jj|�|j
ddd	�
�y)Nr�r�c��dddd�S)N�o���tester)�fid�fport�userr,r!s rr-z?CommandActionTest.testExecuteActionUnbanAinfo.<locals>.<lambda>�s������r)r&r�zF-*zFecho '<ABC>, failure <F-ID> of <F-USER> -<F-TEST>- from <ip>:<F-PORT>'z$echo '<ABC>, user <F-USER> unbanned'z> -- stdout: '123, failure 111 of tester -- from 192.0.2.1:222'z' -- stdout: '123, user tester unbanned'Tr�)rrr�r�r�r�r�rws  r�testExecuteActionUnbanAinfoz-CommandActionTest.testExecuteActionUnbanAinfo�sw��
�
�	����%�e�$�-�-��D�$�-�-���-�-���E���-�-���e�����C�,���rc��d|j_|jj�|j|jj	d��|jd�|j
�|j|jjd��|jd�|j
�y)Nr6r�)rrFrr��
executeCmdr�r��_processCmdr!s r�testExecuteActionStartEmptyz-CommandActionTest.testExecuteActionStartEmpty�s��� �$�-�-���-�-�����/�/�$�-�-�*�*�2�.�/����O�$��-�-�/��/�/�$�-�-�+�+�B�/�0����O�$��-�-�/rc	��|j|jjddddd����|jddd	d
d��y)
NzUprintf %b "foreign input:\n -- $f2bV_A --\n -- $f2bV_B --\n -- $(echo -n $f2bV_C) --"z I'm a hacker; && $(echo $f2bV_B)zI"m very bad hackerz#`Very | very
$(bad & worst hacker)`)�f2bV_A�f2bV_B�f2bV_C)�varsDictzforeign input:z' -- I'm a hacker; && $(echo $f2bV_B) --z -- I"m very bad hacker --z* -- `Very | very $(bad & worst hacker)` --Tr�)r�rr�r�r!s r�testExecuteWithVarsz%CommandActionTest.testExecuteWithVars�s\���/�/�$�-�-�*�*��1�
"�
3�
�
+�
�
����)�-��/�T��;rc�$�d|j_d|j_d|j_gd�}dddj	|�d�}|j�|jj
|�|jd	|d
z|dg|��dd
i�|jd|d
zdd
��|j�|jj|�|jj�|jd|d
zdd
��y)Nz3echo "** ban <ip>, reason: <reason> ...\n<matches>"zecho "** unban <ip>"zecho "** stop monitoring")z
<actionunban>z" Hooray! #z`I'm cool script kiddyz7`I`m very cool > /here-is-the-path/to/bin/.x-attempt.shz<actionstop>r�zAhacking attempt ( he thought he knows how f2b internally works ;)�
)r��reasonr�z	** ban %sr�rr�Tz** unban %sz** stop monitoringr�)rr�r�r��joinr�r�r�r�r�r)rr�rxs   r� testExecuteReplaceEscapeWithVarsz2CommandActionTest.testExecuteReplaceEscapeWithVars�s��R�$�-�-��4�$�-�-��8�$�-�-��
�'�
�
P��i�i�� ��%�
�-�-�/��-�-���E���$�����t���e�H�o�C�07�C�=A�C�����5��;�� 4�$��@��-�-�/��-�-���e���-�-��������5��;�� 4�$��@rc�P�tjd�|jd�y)Nz+/bin/ls >/dev/null
bogusXXX now 2>/dev/nullz HINT on 127: "Command not found"�rr�r�r!s r�testExecuteIncorrectCmdz)CommandActionTest.testExecuteIncorrectCmds �����I�J����6�7rc��tj�}tjjsdnd}|j	tjd|���|jtj�||zk\xrtj�||zdzk�|jddd��|jdd	�y)
Nrg{�G�z�?zsleep 30��timeoutz -- timed out afterTr�� -- killed with SIGTERM� -- killed with SIGKILL)	�time�unittest�F2B�fast�assertFalserr�r�r�)r�stimers   r�testExecuteTimeoutz$CommandActionTest.testExecuteTimeouts���
�)�)�+�%��\�\�&�&�A�D�'����=�+�+�J��H�I��/�/�$�)�)�+����0�W�T�Y�Y�[�E�G�O�VW�DW�5W�X����J� 5�4��@����-�-�/rc�������tjdd��t�d�5}|jd�z�ddd�d���fd�}�fd��t	j��|jt
jd�z|�	�����|jtj�fd
�d��|jdd
�|jd�|jdd�tj�dz�t	j��|jt
jd�z|�	�����|jtj�fd�d��|jdd
�|jd�|jdd�tj��tj�dz�y#1swY���xYw)Nz.sh�	fail2ban_�wzo#!/bin/bash
		trap : HUP EXIT TERM

		echo "$$" > %s.pid
		echo "my pid $$ . sleeping lo-o-o-ong"
		sleep 30
		rc�N����duxstj��z
dkDS�Nr~)r)�getnastypidrs��r�
getnasty_toutzLCommandActionTest.testExecuteTimeoutWithNastyChildren.<locals>.getnasty_touts*����M�����y�y�{�U��Q��rc����d}tjj�dz�r3t�dz�5}	t	|j��}ddd�|S|S#t$rY�wxYw#1swY|SxYw)N�.pid)r��path�isfile�openr��readru)�cpid�f�tmpFilenames  �rrzJCommandActionTest.testExecuteTimeoutWithNastyChildren.<locals>.getnastypid$sv���
�4��g�g�n�n�[�6�)�*�	
�k�F�"�	#��q��
�����]�d��
�;�$�;��
��
����
�;�s(�A*�A�	A'�$A*�&A'�'A*�*A4zbash %src���t��Sr��r
�r's�rr-zGCommandActionTest.testExecuteTimeoutWithNastyChildren.<locals>.<lambda>5����Z��-=�)=�rr�zmy pid z Resource temporarily unavailablez	timed outzkilled with SIGTERMzkilled with SIGKILLr"zout=`bash %s`; echo ALRIGHTc���t��Sr�r+r,s�rr-zGCommandActionTest.testExecuteTimeoutWithNastyChildren.<locals>.<lambda>Cr-rz
 -- timed outrr)�tempfile�mktempr%�writerrrr�r�r
�wait_forr�r��unlink)rr(r r'rrr)s   @@@@r�#testExecuteTimeoutWithNastyChildrenz5CommandActionTest.testExecuteTimeoutWithNastyChildrens��������{�3�+��K������7�7��	�
����%����)�)�+�%����=�+�+��{��M�3�4�
��$��/�/�%�.�.�!=�q�A�B����I�A�B����K� ����)�)�+��)�)�K�&� �!��)�)�+�%����=�+�+� �;�.�
�G�H�
��$��/�/�%�.�.�!=�q�A�B����I�A�B����O�$����-�-�/��)�)�K���)�)�K�&� �!�m��s�G�G#c��tjd�|jd�tjd�|jd�y)Nzecho "How now brown cow"zstdout: 'How now brown cow'
z7echo "The rain in Spain stays mainly in the plain" 1>&2z6stderr: 'The rain in Spain stays mainly in the plain'
rr!s r�testCaptureStdOutErrz&CommandActionTest.testCaptureStdOutErrLsB�����5�6����3�4����<�>����<�>rc��td�d�dd��}|jd|zd�|jtd�|�y)	Nc��td�Sr�r�r!s rr-z2CommandActionTest.testCallingMap.<locals>.<lambda>Us
���R��rc��td�Sr�rr!s rr-z2CommandActionTest.testCallingMap.<locals>.<lambda>Us
��S��X�r�string�)�callme�error�
dontcallme�numberz)%(callme)s okay %(dontcallme)s %(number)iz10 okay string 17c��d|zS)Nz	%(error)ir,)�xs rr-z2CommandActionTest.testCallingMap.<locals>.<lambda>]s
��+��/�r)rrvrtru)r�mymaps  r�testCallingMapz CommandActionTest.testCallingMapTsG��
�0�8M���$�%����.��6������J� 9�5�Arc��td�d�dd��}|j�d|d<|d=|jt|�d�|j	d|�|j|d|d	fd
�|j�t|�}|jt|�d�|j
d|�|j|d|d	|dfd�d
|d<|j�}d�|d<d|d<|d	=|d=|jd	|v�|jd|v�|jd	|v�|jd|v�|j|d|d	|d|dfd�|j|d|dfd�y)Nc��yrr,r!s rr-z8CommandActionTest.testCallingMapModify.<locals>.<lambda>ar|rc��|ddzS�Nr��r,r!s rr-z8CommandActionTest.testCallingMapModify.<locals>.<lambda>b���T�#�Y��]�r�test�r�r��c�r�rLrr�)rMr�r�)r~�rJ�dddd�dc��|ddzS)Nr��r,r!s rr-z8CommandActionTest.testCallingMapModify.<locals>.<lambda>ws���c��Q��rr)r~rNrJrO)r�)
r�resetrvr��assertNotIn�repr�assertIn�copyr�r)r�m�s�m2s    r�testCallingMapModifyz&CommandActionTest.testCallingMapModify_s�����"����!��'�'�)��!�C�&���f����3�q�6�1�����3������A�c�F�A�c�F�#�W�-��'�'�)�
�1�g�!����3�q�6�1���-�-��Q�����A�c�F�A�c�F�A�c�F�+�_�=��!�C�&��v�v�x�"�&�"�S�'�
�"�S�'���g���g��/�/�#��(���/�/�#��(�����3�"�9�����3�"�9�����A�c�F�A�c�F�A�c�F�A�c�F�3�5L�M����B�s�G�R��W�%�v�.rc���td�d�dd��}t|�}|jd|�|jd|�|jd|�|j	d�}|jd	|�|jd
|�|jd|�d�|d<|j	d�}|jd	|�|jd
|�|jd
|�|jd|�y)Nc��yrr,r!s rr-z5CommandActionTest.testCallingMapRep.<locals>.<lambda>�r|rc��|ddzSrGr,r!s rr-z5CommandActionTest.testCallingMapRep.<locals>.<lambda>�rIrr6rKz'a': z'b': z'c': ''Tz'a': 5z'b': 11c��|ddzS)N�xxxrRr,r!s rr-z5CommandActionTest.testCallingMapRep.<locals>.<lambda>�s���U��a��rrLz'c': )rrVrUrW�_asrepr)rrYrZs   r�testCallingMapRepz#CommandActionTest.testCallingMapRep�s�����"�
���!�
�1�g�!����7�A�����7�A���-�-�	�1���i�i��o�!��-�-��!���-�-�	�1���-�-�	�1��'�!�C�&��i�i��o�!��-�-��!���-�-�	�1���-�-�������9�a� rc���tt��}d|_d|_|j	�|jdd��d|_|jdd��d|_|j�y)Ng-C��6?TzActions: enter idle moder�r�FzActions: leave idle mode)r	r�	sleeptime�idlerr��activer	)rr�s  r�testActionsIdleModez%CommandActionTest.testActionsIdleMode�sd��
�i�k��!��!�+��!�&��'�'�)����.�R��8��!�&����.�R��8�
�!�(��&�&�(rN)�__name__�
__module__�__qualname__rr ryr�r�r�r�r�rr�r�r�r�r�r�r�r�r�rr
r
rr4r6rCr\rcrhr,rrrr(s���
&�$�aI�FD�>&�P7��('#�R�.��.�2(�(�#��#��8��8�$�$/��$/�L�.��.�&3�
�(�;�"@�88�	/�:"�z>�	B�!/�F!�.rr)�
__author__�
__copyright__�__license__r�r/rr�
server.actionrrr�server.actionsrr	�server.utilsr
�	dummyjailr�utilsr
rrrr,rr�<module>rtsF��.�
�2�
���	����N�N�1� � �>�>�	�*�	r