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/client/__pycache__/fail2banclient.cpython-312.pyc
�

�ogf:=���dZdZdZddlZddlZddlZddlZddlZddlZddl	Z	ddl	m
Z
ddlmZdd	lm
Z
dd
lmZddlmZmZmZmZmZmZddlmZd
Zd�Zd�ZGd�dee
�ZGd�d�ZGd�d�Zd�Zd�Z y)zFail2Ban Developersz^Copyright (c) 2004-2008 Cyril Jaquier, 2012-2014 Yaroslav Halchenko, 2014-2016 Serg G. Brester�GPL�N)�Thread�)�version�)�CSocket)�
Beautifier)�Fail2banCmdLine�ServerExecutionException�
ExitException�logSys�exit�output)�Utilsz
fail2ban> c�R�tj�jjS�N)�	threading�current_thread�	__class__�__name__���@/usr/lib/python3/dist-packages/fail2ban/client/fail2banclient.py�_thread_namer,s��� � �"�,�,�5�5�5rc� �tt�Sr)�input�PROMPTrrr�
input_commandr/s��
�f�
�rc�|�eZdZd�Zd�Zd�Zdd�Zed��Zdd�Z	dd�Z
d�Zd	�Zdd
�Z
dd�Zd
�Zd�Zdd�Zd�Zy)�Fail2banClientc��tj|�tj|�d|_d|_d|_y)NT)r
�__init__r�_alive�_server�_beautifier��selfs rr"zFail2banClient.__init__8s2�����4� ��/�/�$���$�+��$�,��$�rc�Z�tdtzdz�td�td�y)Nz
Fail2Ban vz5 reads log file that contains password failure reportz=and bans the corresponding IP addresses using firewall rules.�)rrr&s r�dispInteractivezFail2banClient.dispInteractive?s%�����	�"Y�	Y�Z��	H�I���*rc�`�td�tjd|z�td�y)Nr)zCaught signal %d. Exiting�)rr
�warningr)r'�signum�frames   r�__sigTERMhandlerzFail2banClient.__sigTERMhandlerDs"����*��.�.�,�v�5�6��s�)rc�D�|jdg|dk7r|gngzgd|��S)N�ping���F��timeout)�_Fail2banClient__processCmd)r'r5s  r�__pingzFail2banClient.__pingJs5��	
�	�	�V�H�W��]��	��K�L��'�
�
�rc�h�|jr|jSt�|_|jSr)r%r	r&s r�
beautifierzFail2banClient.beautifierNs-��	���
�
�
���\�$��	
�	�	�rc���d}	|j}d}|D�]}|j|�	|st|jd|��}n|dk7r|j	|�|jddkDrtjdd|�|j|�}|d	d	k(rAtjdd
|d�|s|d	dvrbt|j|d��nDtjd
|dj�|rt|j|d��d}��	|r	|j�|sd	dvrt$j&j)�|S#tj$r�}	|s|jddkDr;|s|d	dk7r|j|	|d	dk(�ntjdd||	�Yd}	~	|rQ	|j�n?#t $r3}	|s|jddkDrtj"|	�Yd}	~	nd}	~	wwxYw|s|d	dvrt$j&j)�yyd}	~	wt $r�}	|s|jddkDr=|jddkDrtj*|	�ntj|	�Yd}	~	|rQ	|j�n?#t $r3}	|s|jddkDrtj"|	�Yd}	~	nd}	~	wwxYw|s|d	dvrt$j&j)�yyd}	~	wwxYw#t $r4}	|s|jddkDrtj"|	�Yd}	~	��*d}	~	wwxYw#|rQ	|j�n?#t $r3}	|s|jddkDrtj"|	�Yd}	~	nd}	~	wwxYw|sd	dvrt$j&j)�wwxYw)NT�socketr4r3�verboser�zCMD: %rrzOK : %rr)�echo�
server-statuszNOK: %rFr2z -- %s failed -- %r)r9�setInputCmdr�_conf�
settimeoutr
�log�sendr�beautify�error�args�
beautifyErrorr;�_Fail2banClient__logSocketError�close�	Exception�debug�sys�stdout�flush�	exception)
r'�cmd�showRetr5�clientr9�	streamRet�c�ret�es
          r�__processCmdzFail2banClient.__processCmdUse���&�-����:��9�� �q����1�����t�z�z�(�+�W�=�f�
�R�-����� ��
�
�9���!��j�j��I�q�!��;�;�q�>�S��A��!���j�j��I�s�1�v�&�	�A�a�D�5�5�
�j�!�!�#�a�&�)�*��l�l�9�c�!�f�k�k�*�	�
�j�&�&�s�1�v�.�/��i��% �F
���\�\�^���1��2�2��J�J����	���1�<�<���4�:�:�i�(�1�,�	�A�a�D�F�N����Q��!����/�
�z�z�!�*�A�q�1��
���\�\�^�����4�:�:�i�(�1�,��l�l�1�o�������1��2�2��J�J����3�����4�:�:�i�(�1�,�	
���I�	��	"�
�����
�|�|�A���
���\�\�^�����4�:�:�i�(�1�,��l�l�1�o�������1��2�2��J�J����3�������4�:�:�i�(�1�,��l�l�1�o�����
���\�\�^�����4�:�:�i�(�1�,��l�l�1�o�������1��2�2��J�J����3�s��%M-�C:E$�$M-�+L-�$L*�7AI�M-�G�	H�()H�H�L*�AL%�$M-�,J=�=	K9�)K4�4K9�%L*�*M-�-	M*�6)M%�%M*�-O*�1N�O*�	N>�)N9�4O*�9N>�>,O*c�`�	tj|jdtj�r�tj|jdtj�r6|rtj|�ytjd|rd|znd�ytjd|jd�ytjd|jd�y#t$rB}tjd|jd�tj|�Yd}~yd}~wwxYw)Nr;z*%sUnable to contact server. Is it running?z[%s] r)z3Permission denied to socket: %s, (you must be root)z6Failed to access socket path: %s. Is fail2ban running?z*Exception while checking socket access: %s)�os�accessrA�F_OK�W_OKr
rFrK)r'�	prevError�	errorOnlyrWs    r�__logSocketErrorzFail2banClient.__logSocketError�s�����i�i��
�
�8�$�b�g�g�.�
�y�y����H�%�r�w�w�/���l�l�9���l�l�?� )��)��r�3��\�\�� $�
�
�8� 4�6��L�L� ��
�
�8����
��	�<�<�<��z�z�(���	�<�<��?�?���s*�A9C"�<C"�#C"�>#C"�"	D-�+8D(�(D-c�*�|j�rtjd�y|j�\}}|sy|jdsBt
jj|jd�rtjd�yd|gdggS)NzServer already running�forcer;zLFail2ban seems to be in unexpected state (not running but the socket exists)z
server-streamr?)�_Fail2banClient__pingr
rF�
readConfigrArZ�path�exists)r'rV�streams   r�__prepareStartServerz#Fail2banClient.__prepareStartServer�s|��	�[�[�]�	�<�<�(�)�
����!�+�#�v�	�
�
���G�	�������
�
�8�0D�!E�	�<�<�^�_�
��F�
#�o�%6�	7�7rc��||_yr)r$�r'�ss  r�_set_serverzFail2banClient._set_server�s	���$�,rc���ddlm}|j�}d|_|sy	|r.|j	|j
�|j
|d�s�yt�}|j||��d|_	|j|j
d|j�|_|jdd�s8|jr!|jj�d|_td�y#t $r�t"$rn}t%d�t'j(d	|rd
ndz�|j
ddkDrt'j*|�nt'j(|�Yd}~yd}~wwxYw)
Nr)�Fail2banServerTF)�phaserg�doner,r)z Exception while starting server �
background�
foregroundr<)�fail2banserverrn�#_Fail2banClient__prepareStartServerr#�startServerAsyncrA�,_Fail2banClient__processStartStreamAfterWait�dict�configureServer�daemon�startServerDirectrlr$�get�quitrrrKrr
rFrP)r'rqrnrgrorWs      r�
__startServerzFail2banClient.__startServer�s0��,��$�$�&�&��$�+�	�
����#�#�D�J�J�/��-�-�f�e�<��
�F�E����u�V��4��D�K�!�3�3�D�J�J��t�GW�GW�X�D�L��9�9�V�U�#����
�l�l�����d�l�	�#�Y�
��
�	��	��	�"�:�	�<�<�2�j�l�Vb�c�d�
�j�j���a��
���Q��
�L�L��O�
���s�/C-�BC-�-E-�?A$E(�(E-Nc����|r����fd�}||jd<ttj|d�|f��}d|_|j�|�]��[t
j�fd�|jdd�tjd	d
���jdd�std��y��d�d<tjd	d
��|�|j�}��%|rdndx�d<�d<tjd	d
��|sy��:t
j�fd�dd�|rdnd�d<tjd	d
��|j|d�}��|�d<|S)Nc�>��d�d<tjdd��y)NT�start-readyr=�  server phase %s)r
rC�ros�r�
_server_readyz5Fail2banClient.configureServer.<locals>._server_ready�s��� �U�=���Z�Z��&��.r�onstartF)�targetrGTc�,���jdd�duS)N�ready�r{r�s�r�<lambda>z0Fail2banClient.configureServer.<locals>.<lambda>�s���5�9�9�W�d�3�4�?�rr5g����MbP?r=r��startz$Async configuration of server failedz  client phase %sr�c�,���jdd�duS)Nr�r�r�s�rr�z0Fail2banClient.configureServer.<locals>.<lambda>s���%�)�)�M�4�8��D�r��?�	configurerp)rArr rxryr�r�wait_forr
rCr{rrtrv)r'�nonsyncrorgr��thrVs  `    rrxzFail2banClient.configureServer�sb������/�*�D�J�J�y���n�4�4�D�%��PV�;W�X�2��2�9��8�8�:��n��*�	�N�N�?����I�AV�X]�^�
�J�J�q�%�u�-��9�9�W�e�$�#�$J�K�K�
�
���5��>�	�:�:�a�$�e�,��^��%�%�'�6�
��.4�d�%�@�5��>�E�'�N�	�:�:�a�$�e�,�	�
�
���>�>�D�c�5�Q�!'��U�5���	�:�:�a�$�e�,��*�*�6�5�9�#�
���5��=�	�*rc���t|t�st|�}t|�dk(r+|ddk(r#|j|jd�}|sy|St|�dk\�r|ddk(�rt|�dkDrddg|dd|j|�S|jj
d	d�rtd
�|jdg�|jd�stjd�y|jj
d	d�r:td
�|j�|j|j�}|�|S|jj
d	d�rtd�|jdg�St|�dk\�r|ddk(�rg}t|�dk\rW|ddvr|j|d�|d=n)t|�dkDrtjd|dd�ynt|�dk\r�W|jd��r�t|�dk(s|ddk(rd}|j!�\}}n|d}|j!|�\}}|sy|jj
d	d�rtd�|j#d|||ggd�Stjd�yt|�dkDr(|ddk(r |j#|gt%|d���S|j#|g�S)Nrrr�rqF�restart�reload�	--restart�interactivez  ## stop ... �stopzCould not stop serverz  ## load configuration ... z  ## start ... r)r�z--unbanz--if-existsz%Unexpected argument(s) for reload: %rr3r4z--allz  ## reload ... TzCould not find serverr2)�
isinstance�list�len�_Fail2banClient__startServerrA�_Fail2banClient__processCommandr{r�_Fail2banClient__waitOnServerr
rF�	resetConf�initCmdLine�_argv�appendrcrdr6�float)r'rQrV�opts�jailrgs      r�__processCommandzFail2banClient.__processCommands���	�C��	�	
�c��3���X��]�s�1�v��(�	
�	�	�D�J�J�|�4�	5�3�

��

�:�
�3�x�1�}��Q��9�,�	�#�h��l��+�&�C��!�H�� � ��%�%�
�j�j�n�n�]�E�*�
������&��"�
�
�
�e�
$�
�L�L�(�)��
�j�j�n�n�]�E�*�
�)�*��N�N��
�
�
�4�:�:�
&�C�
���Z�
�j�j�n�n�]�E�*�
���
�
�
��	�
*�*�
�3�x�1�}��Q��8�+�
�4�	�S��Q��
�1�v�8�8�	�[�[��Q���	�Q���C��1���l�l�:�C���G�D�
�
�

�S��Q���k�k�"�k��
�3�x�1�}��A��'�)��T��?�?�$�[�S�&���F�T��?�?�4�(�[�S�&����z�z�~�~�m�U�+�������x��t�V�<�=�t�D�D�
�L�L�(�)��
�3�x�!�|��A��&�(�
�
�
�S�E�5��Q��=�
�
9�9��
�
�S�E�
"�"rc��d}	|j�stjd�y|j|�}|s-|jr!|jj�d|_|S#t$rY}|j
ddkDrtj|�tjd|j
dzdz�Yd}~��d}~wwxYw)NFz%Could not find server, waiting failedr<rzQCould not start server. Maybe an old socket file is still present. Try to remove r;zR. If you used fail2ban-client to start the server, adding the -x option will do it)	r�r
rFr6rrArPr$r|)r'rGrVrWs    r�__processStartStreamAfterWaitz,Fail2banClient.__processStartStreamAfterWaitZs���
�#�2�
�
�
�
�
�L�L�8�9��	��	�	�D�	!�3�

�����<�<�����4�<�	�*��
"�2�
�j�j���a��
���Q��	�<�<���:�:�h�'�(�+1�1�2�2��2�s�%A*�A*�*	C�3AC�Cc�H���|��jd}tj�}tjdd||f�d���fd�}t	�jd�5}�j
r�|�}||k(r
	ddd�ytj�|z
}tjdd|�|d	kDr|j
�||k\rtd
��t�dz|dkDrd
nd��tj���j
r��ddd�y#1swYyxYw)Nr5r=z__waitOnServer: %rg������y?c���tjj�jd�xr�j	���S)Nr;r4)rZrerfrArc)r'�sltimes��rr�z/Fail2banClient.__waitOnServer.<locals>.<lambda>xs-���������
�
�8� 4�5�U�$�+�+�f�+�:U�rr<Tz  wait-time: %srzFailed to start serverrg�������?r�皙�����?F)
rA�timer
rC�
VisualWaitr#�	heartbeatr�min�sleep)	r'�alive�maxtime�	starttime�test�vis�runf�waittimer�s	`       @r�__waitOnServerzFail2banClient.__waitOnServerqs����_�
�Z�Z�	�
"�7��i�i�k�)��*�*�Q�$�u�g�&6�7��&�	U�$��$�*�*�Y�'�(��C�	
����6�D��u�}��	��
�y�y�{�Y�&�H�
�J�J�q�#�X�.��!�|��]�]�_��7��#�$<�=�=�
��!��H�s�N�S��
<�F��J�J�v��
���� 
�!� 
�s�!D�B
D�D!c���i}t�dk(r]tjtjfD]:}tj|�||<tj||j
��<	|j�W|j|�}|�D|r7	d|_|j�D]\}}tj||��ytd��|j}|jjdd�r�	ddl}	d}t!|�dkDr|j#|�}|r�|j%d�|j'�	t)�}|d	k(s|d
k(r7	d|_|j�D]\}}tj||��y|dk(r|j+�n*|dk(s%	|j#t-j.|����n�t!|�dkrG|j+�	d|_|j�D]\}}tj||��y|j#|�d|_|j�D]\}}tj||��S	d|_|j�D]\}}tj||��y#t$rtd��wxYw#t0$rH}	|jd
dkDrt3j4|	�nt3j6|	�Yd}	~	��8d}	~	wwxYw#t8t:f$r
t=d��wxYw#t0$r|}	|jd
dkDrt3j4|	�nt3j6|	�Yd}	~	d|_|j�D]\}}tj||��yd}	~	wwxYw#d|_|j�D]\}}tj||��wxYw)N�_MainThreadFTzInit of command line failedr�rzReadline not availablez
tab: completerr|�helpr)r<r)r�signal�SIGTERM�SIGINT�	getsignal�_Fail2banClient__sigTERMhandlerr�r�r#�itemsr�_argsrAr{�readline�ImportErrorr�r��parse_and_bindr*r�	dispUsage�shlex�splitrKr
rPrF�EOFError�KeyboardInterruptr)
r'�argv�
_prev_signalsrkrV�shrGr�rQrWs
          rr�zFail2banClient.start�s����-��^�}�$�
�^�^�V�]�]�+�,�q��'�'��*�M�!��
�M�M�!�T�*�*�+�,�:�
�j�j��
�
�
�4�
 �C�
���
�d�4�;��#�#�%��u�q�"�
�M�M�!�R���e$�$A�B�B��*�*�4��j�j�n�n�]�E�*�>����S��D�	�A�
��!�!�$�'�c�����o�.�
�����
�_�s�

��-�3�&�=��6�4�;��#�#�%��u�q�"�
�M�M�!�R���7��-������r�	�	�	
�	�	�u�{�{�3�/�	0�
�	�.�4�y�1�}�	�^�^����4�;��#�#�%��u�q�"�
�M�M�!�R���� � ��&��4�;��#�#�%��u�q�"�
�M�M�!�R���G	�D�4�;��#�#�%��u�q�"�
�M�M�!�R����S�>�#�$<�=�=�>��&�	��J�J�y�!�A�%�
�
�
�1�
�
�,�,�q�/���		��

�'�(���B�Z�
���
��
�j�j���a��
���Q��
�L�L��O�
��4�;��#�#�%��u�q�"�
�M�M�!�R�������4�;��#�#�%��u�q�"�
�M�M�!�R���s��.!L.�3L.�:J#�?AL�L�+$J;�L�L.�&L.�#J8�8L.�;	L�=L�L�L�L�L+�+L.�.	N3�7=N.�4N6�.N3�3N6�67O-)r�)Tr3)r)F)T)TNN)TN)r�
__module__�__qualname__r"r*r�rc�propertyr9r6rIrtrlr�rxr�rvr�r�rrrr r 6sb���
�
������0�d�28�$�'�T)
�bF#�R
�.�4Arr c�2�eZdZdZdZdZd	d�Zd�Zd�Zd�Z	y)
�_VisualWaitzJSmall progress indication (as "wonderful visual") during waiting process
	rrc��||_yr)�maxpos)r'r�s  rr"z_VisualWait.__init__�s	���$�+rc��|Srrr&s r�	__enter__z_VisualWait.__enter__����	
�+rc���|jrTtjjddd|jzzzdz�tjj�yy)N�
� �#)�posrMrN�writer�rO�r'rGs  r�__exit__z_VisualWait.__exit__�sG��	�X�X��:�:���D�#�r�$�+�+�~�.�/��4�5��:�:����rc���|js2tjjdd|jzzdz�|xj|j
z
c_|j
dkDr|jdkDrdnd}nd}tjj|�tjj
�|j|jkDrd	|_y|jd
krd|_yy)z&Show or step for progress indicator
		z

INFO   [#r�z] Waiting on the server...
rrz #z# z
# r3rN)r�rMrNr�r��deltarOrjs  rr�z_VisualWait.heartbeat�s���
����:�:���M�S����_�5�8]�]�^��(�(�d�j�j��(�	�Z�Z�!�^��h�h��l�{��1��1��*�*���1���*�*����	�X�X������4�:��x�x�!�|��4�:�rN)�
)
rr�r��__doc__r�r�r"r�r�r�rrrr�r��s%�����	
�����rr�c�"�eZdZdZd�Zd�Zd�Zy)�_NotVisualWaitz8Mockup for invisible progress indication (not verbose)
	c��|Srrr&s rr�z_NotVisualWait.__enter__�r�rc��yrrr�s  rr�z_NotVisualWait.__exit__����rc��yrrr&s rr�z_NotVisualWait.heartbeat�r�rN)rr�r�r�r�r�r�rrrr�r��s�����rr�c�6�|dkDrt|i|��St�S)z3Wonderful visual progress indication (if verbose)
	r)r�r�)r<rG�kwargss   rr�r��s"��)0�!���T�$�V�$�I��9I�Irc�h�t�}|j|�rtd�ytd�y)Nrr,)r r�r)r�rSs  r�exec_command_liner��s$��
�
��
�L�L����q�'��s�)r)!�
__author__�
__copyright__�__license__rZr�r�r;rMr�rrr�csocketrr9r	�fail2bancmdliner
rrr
rr�server.utilsrrrrr r�r�r�r�rrr�<module>r�s���&#�
�p�
���	��
�
�
������"���!�	��6��V�_�f�V�r��:��J�r