HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //lib/python3.6/site-packages/fail2ban/client/__pycache__/fail2banclient.cpython-36.opt-1.pyc
3

TB(d:=�@s�dZdZdZddlZddlZddlZddlZddlZddlZddl	Z	ddl	m
Z
ddlmZdd	lm
Z
dd
lmZddlmZmZmZmZmZmZddlmZd
Zdd�Zdd�ZGdd�dee
�ZGdd�d�ZGdd�d�Zdd�Zdd�Z dS)zFail2Ban Developersz^Copyright (c) 2004-2008 Cyril Jaquier, 2012-2014 Yaroslav Halchenko, 2014-2016 Serg G. BresterZGPL�N)�Thread�)�version�)�CSocket)�
Beautifier)�Fail2banCmdLine�ServerExecutionException�
ExitException�logSys�exit�output)�Utilsz
fail2ban> cCstj�jjS)N)�	threadingZcurrent_thread�	__class__�__name__�rr�$/usr/lib/python3.6/fail2banclient.py�_thread_name,srcCstt�S)N)�input�PROMPTrrrr�
input_command/src@s�eZdZdd�Zdd�Zdd�Zd%dd	�Zed
d��Zd'dd�Z	d(dd�Z
dd�Zdd�Zd)dd�Z
d*dd�Zdd�Zdd �Zd+d!d"�Zd#d$�ZdS),�Fail2banClientcCs*tj|�tj|�d|_d|_d|_dS)NT)r�__init__r�_alive�_server�_beautifier)�selfrrrr8s


zFail2banClient.__init__cCs$tdtd�td�td�dS)Nz
Fail2Ban vz5 reads log file that contains password failure reportz=and bans the corresponding IP addresses using firewall rules.�)r
r)rrrr�dispInteractive?szFail2banClient.dispInteractivecCs"td�tjd|�td�dS)NrzCaught signal %d. Exiting�)r
rZwarningr)rZsignum�framerrrZ__sigTERMhandlerDszFail2banClient.__sigTERMhandler皙�����?cCs&|jdg|dkr|gnggd|d�S)N�pingrF)�timeout���)�_Fail2banClient__processCmd)rr$rrrZ__pingJszFail2banClient.__pingcCs|jr|jSt�|_|jS)N)rr)rrrr�
beautifierNszFail2banClient.beautifierTrc
CsBd}�z�|j}d}�x�|D�]�}|j|�y�|sDt|jd|d�}n|dkrV|j|�|jddkrrtjdd|�|j|�}|d	d	kr�tjdd
|d�|s�|d	dkr�t|j	|d��n,tj
d
|dj�|r�t|j|d��d}Wqt
j
k
�r`}	zT|�s|jddk�rR|�s,|d	dk�rB|j|	|d	dk�ntjdd||	�dSd}	~	Xqtk
�r�}	z@|�s�|jddk�r�|jddk�r�tj|	�n
tj
|	�dSd}	~	XqXqWWd|�ry|j�WnDtk
�r}	z&|�s|jddk�rtj|	�WYdd}	~	XnX|�s2|d	dk�r<tjj�X|S)NT�socket)r$r�verboser�zCMD: %rrzOK : %r�echo�
server-statuszNOK: %rFr#z -- %s failed -- %rr%)r+r,)r+r,)r'ZsetInputCmdr�_confZ
settimeoutr�log�sendr
Zbeautify�error�argsZ
beautifyErrorr(�_Fail2banClient__logSocketError�	Exception�	exception�close�debug�sys�stdout�flush)
r�cmdZshowRetr$�clientr'Z	streamRet�c�ret�errrZ__processCmdUsV



zFail2banClient.__processCmdrFcCs�y|tj|jdtj�rhtj|jdtj�rT|r:tj|�qftjd|rLd|nd�qztjd|jd�ntjd|jd�Wn>tk
r�}z"tjd|jd�tj|�WYdd}~XnXdS)Nr(z*%sUnable to contact server. Is it running?z[%s] rz3Permission 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�accessr-�F_OK�W_OKrr0r3)rZ	prevErrorZ	errorOnlyr>rrrZ__logSocketError�szFail2banClient.__logSocketErrorcCsd|j�rtjd�dS|j�\}}|s*dS|jdrVtjj|jd�rVtjd�dSd|gdggS)NzServer already running�forcer(zLFail2ban seems to be in unexpected state (not running but the socket exists)z
server-streamz
server-status)�_Fail2banClient__pingrr0�
readConfigr-r?�path�exists)rr=�streamrrrZ__prepareStartServer�s

z#Fail2banClient.__prepareStartServercCs
||_dS)N)r)r�srrr�_set_server�szFail2banClient._set_servercCs ddlm}|j�}d|_|s"dSy~|rF|j|j�|j|d�s�dSnXt�}|j||d�d|_	|j
|jd|j�|_|j
dd�s�|jr�|jj�d|_td�Wnztk
r��Ynftk
�r}zHtd�tjd	|r�d
nd�|jddk�rtj|�n
tj|�dSd}~XnXdS)
Nr)�Fail2banServerTF)�phaserH�doner rz Exception while starting server �
backgroundZ
foregroundr))Zfail2banserverrK�#_Fail2banClient__prepareStartServerrZstartServerAsyncr-�,_Fail2banClient__processStartStreamAfterWait�dict�configureServer�daemonZstartServerDirectrJr�get�quitrr
r3r
rr0r4)rrNrKrHrLr>rrrZ
__startServer�s:

zFail2banClient.__startServerNcs`|r��dk	r"�fdd�}||jd<ttj|d�|fd�}d|_|j�|dkr��dk	r�tj�fdd�|jd	d
�tj	dd���j
d
d�s�td��dS�dk	r�d�d
<tj	dd��|dkr�|j�}�dk	r�|r�dnd�d<�d
<tj	dd��|�s�dS�dk	�r>tj�fdd�dd
�|�r(dnd�d<tj	dd��|j
|d�}�dk	�r\|�d<|S)Ncsd�d<tjdd��dS)NTzstart-readyr*z  server phase %s)rr.r)rLrr�
_server_ready�sz5Fail2banClient.configureServer.<locals>._server_readyZonstartF)�targetr1Tcs�jdd�dk	S)N�ready)rTr)rLrr�<lambda>�sz0Fail2banClient.configureServer.<locals>.<lambda>r$g����MbP?r*z  server phase %s�startz$Async configuration of server failedz  client phase %srXcs�jdd�dk	S)Nzstart-ready)rTr)rLrrrYsg�?Z	configurerM)r-rrrRrSrZrZwait_forrr.rTr	rOrP)rZnonsyncrLrHrVZthr=r)rLrrR�s>


zFail2banClient.configureServercCs~t|t�st|�}t|�dkrF|ddkrF|j|jd�}|sBdS|St|�dko\|ddk�rt|�dkr�ddg|dd�<|j|�S|jjd	d�r�td
�|jdg�|jd�s�t	j
d�dS|jjd	d��r�td
�|j�|j|j
�}|dk	�r�|S|jjd	d��rtd�|jdg�St|�dk�r:|ddk�r:g}x`t|�dk�r�|ddk�rr|j|d�|d=n(t|�dk�r�t	j
d|dd��dSP�q@W|jdd��r*t|�dk�s�|ddk�r�d}|j�\}}n|d}|j|�\}}|�s�dS|jjd	d��rtd�|jd|||ggd�St	j
d�dSn@t|�dk�rn|ddk�rn|j|gt|d�d�S|j|g�SdS)NrrrZrNFZrestart�reload�	--restart�interactivez  ## stop ... �stopzCould not stop serverz  ## load configuration ... z  ## start ... r�--unban�--if-existsz%Unexpected argument(s) for reload: %r)r$z--allz  ## reload ... TzCould not find serverr#)r\r_r`r%)�
isinstance�list�len�_Fail2banClient__startServerr-�_Fail2banClient__processCommandrTr
�_Fail2banClient__waitOnServerrr0Z	resetConf�initCmdLine�_argv�appendrDrEr&�float)rr:r=ZoptsZjailrHrrrZ__processCommandsh





zFail2banClient.__processCommandcGs�d}y$|j�stjd�dS|j|�}WnRtk
rz}z6|jddkrRtj|�tjd|jdd�WYdd}~XnX|r�|jr�|jj�d|_|S)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)	rfrr0r&r	r-r4rrU)rr1r=r>rrrZ__processStartStreamAfterWaitZs

&
z,Fail2banClient.__processStartStreamAfterWaitcs�|dkr�jd}tj�}tjdd||f�d���fdd�}t�jd���}xz�jr�|�}||krhd	Stj�|}tjdd
|�|dkr�|j�||kr�td��t�d|d
kr�dnd��tj	��qPWWdQRXdS)Nr$r*z__waitOnServer: %rg�������?rcstjj�jd�o�j�d�S)Nr()r$)r?rFrGr-rDr)r�sltimerrrYxsz/Fail2banClient.__waitOnServer.<locals>.<lambda>r)Tz  wait-time: %srzFailed to start serverg�������?g�?g�������?Fg������y?)
r-�timerr.�
VisualWaitr�	heartbeatr	�minZsleep)r�aliveZmaxtimeZ	starttimeZtestZvisZrunfZwaittimer)rrkrZ__waitOnServerqs(
zFail2banClient.__waitOnServerc
*CsTi}t�dkr@x0tjtjfD] }tj|�||<tj||j�qW�z�y�|jdkrt|j|�}|dk	rt|rldStd��|j	}|j
jdd��r�yddl}Wnt
k
r�td��YnXy�d}t|�dkr�|j|�}|�r�|jd�|j�x�t�}|d	kp�|d
k�rdS|dk�r|j�q�|dks�y|jtj|��Wq�tk
�r�}z,|j
d
dk�rftj|�n
tj|�WYdd}~Xq�Xq�WWn$ttfk
�r�td��YnXn$t|�dk�r�|j�dS|j|�SWnHtk
�r}z*|j
d
dk�rtj|�n
tj|�dSd}~XnXWdd|_x"|j�D]\}}	tj||	��q4WXdS)NZ_MainThreadTzInit of command line failedr]FrzReadline not availablez
tab: completerrU�helprr)r)r�signal�SIGTERM�SIGINT�	getsignal�_Fail2banClient__sigTERMhandlerrhrgr	Z_argsr-rT�readline�ImportErrorrcre�parse_and_bindrrZ	dispUsage�shlex�splitr3rr4r0�EOFError�KeyboardInterruptr
r�items)
r�argvZ
_prev_signalsrIr=r1rwr:r>ZshrrrrZ�sj






$

zFail2banClient.start)r"r%)Tr%)rF)T)TNN)TN)r�
__module__�__qualname__rrrvrD�propertyr'r&r2rOrJrdrRrerPrfrZrrrrr6s

2

*
1I
rc@s:eZdZdZdZdZddd�Zdd�Zd	d
�Zdd�Z	d
S)�_VisualWaitzJSmall progress indication (as "wonderful visual") during waiting process
	rr�
cCs
||_dS)N)�maxpos)rr�rrrr�sz_VisualWait.__init__cCs|S)Nr)rrrr�	__enter__�sz_VisualWait.__enter__cGs2|jr.tjjddd|jd�tjj�dS)N�
� �#)�posr7r8�writer�r9)rr1rrr�__exit__�sz_VisualWait.__exit__cCs�|js tjjdd|jd�|j|j7_|jdkrN|jdkrHdnd}nd}tjj|�tjj�|j|jkr|d|_n|jd	kr�d|_d
S)z&Show or step for progress indicator
		z

INFO   [#r�z] Waiting on the server...
rrz #z# z
# rNr%)r�r7r8r�r��deltar9)rrIrrrrn�s


z_VisualWait.heartbeatN)r�)
rr�r��__doc__r�r�rr�r�rnrrrrr��s
r�c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�_NotVisualWaitz8Mockup for invisible progress indication (not verbose)
	cCs|S)Nr)rrrrr��sz_NotVisualWait.__enter__cGsdS)Nr)rr1rrrr��sz_NotVisualWait.__exit__cCsdS)Nr)rrrrrn�sz_NotVisualWait.heartbeatN)rr�r�r�r�r�rnrrrrr��sr�cOs|dkrt||�St�S)z3Wonderful visual progress indication (if verbose)
	r)r�r�)r)r1�kwargsrrrrm�srmcCs&t�}|j|�rtd�ntd�dS)Nrr )rrZr)rr;rrr�exec_command_line�s

r�)!�
__author__Z
__copyright__Z__license__r?rzrrr(r7rlrrrZcsocketrr'rZfail2bancmdlinerr	r
rrr
Zserver.utilsrrrrrr�r�rmr�rrrr�<module>s4