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: //usr/lib/python3.6/site-packages/fail2ban/server/__pycache__/asyncserver.cpython-36.pyc
3

TB(d�'�@s�dZdZdZddlmZmZmZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZdd	lmZdd
lmZmZmZee�ZGdd�dej�Zddd�ZGdd�dej�ZGdd�de�Z dS)z
Cyril Jaquierz Copyright (c) 2004 Cyril JaquierZGPL�)�dumps�loads�HIGHEST_PROTOCOLN�)�Utils�)�CSPROTO)�logging�	getLogger�formatExceptionInfoc@sLeZdZdd�Zdd�Zdd�Zdd�ZGd	d
�d
e�Zdd�Z	d
d�Z
dS)�RequestHandlercCs0tjj||�||_||_g|_|jtj�dS)N)	�asynchat�
async_chat�__init__�_RequestHandler__conn�_RequestHandler__transmitter�_RequestHandler__bufferZset_terminatorr�END)�self�conn�transmitter�r�!/usr/lib/python3.6/asyncserver.pyr5s
zRequestHandler.__init__cCsF|jrB|j}d|_y|jtj�|j�Wntjk
r@YnXdS)N)r�shutdown�socket�	SHUT_RDWR�close�error)rrrrrZ__close=szRequestHandler.__closecCs|j�tjj|�dS)N)�_RequestHandler__closer
r�handle_close)rrrrrGszRequestHandler.handle_closecCs|jj|�dS)N)r�append)r�datarrr�collect_incoming_dataKsz$RequestHandler.collect_incoming_datac@seZdZdS)zRequestHandler.LoadErrorN)�__name__�
__module__�__qualname__rrrr�	LoadErrorPsr&cCs(y�|j}g|_tjj|�}|tjkr0|j�dSyt|�}WnFtk
r�}z*tj	d|tj
�tjkd�t
j|��WYdd}~XnX|jr�|jj|�}ndg}t|t�}|j|tj�Wnhtk
�r"}zJt|t
j�s�tj	d|tj
�tjkd�td|t�}|j|tj�WYdd}~XnXdS)Nz$PROTO-error: load message failed: %s)�exc_infoZSHUTDOWNzCaught unhandled exception: %rz	ERROR: %s)rrZEMPTY�joinZCLOSE�close_when_doner�	Exception�logSysrZgetEffectiveLevelr	�DEBUGrr&rZproceedrr�pushr�
isinstance)r�message�errr�found_terminatorXs0

zRequestHandler.found_terminatorcCs�yPt�\}}tjdt|��tjtj�j��td|t�}|j	|t
j�Wn"tk
rr}zWYdd}~XnX|j
�dS)Nz"Unexpected communication error: %sz	ERROR: %s)rr+r�str�	traceback�
format_exc�
splitlinesrrr-rrr*r))rZe1Ze2r/r0rrr�handle_error~s
zRequestHandler.handle_errorN)r#r$r%rrrr"r*r&r1r6rrrrr3s
&rFcCs�|si}d|d<|dkrtj}tj}t|�r2|}n2|rdtjrdttjd�rdtj	d�t
|�d}tj}�x|��r�y$||�|dr�|dd8<Wqhtk
�r|}z�|�s�P|dd7<|ddk�r|jdt
jt
jfkr�tjd	t|��ntjd	t|��nd|ddk�r,tj|�tjd
�n@|ddk�rl|jdt
jk�s^t|j��dk�rltjd|�PWYdd}~XqhXqhWdS)
z�Custom event loop implementation

	Uses poll instead of loop to respect `active` flag,
	to avoid loop timeout mistake: different in poll and poll2 (sec vs ms),
	and to prevent sporadic errors like EBADF 'Bad file descriptor' etc. (see gh-161)
	r�listenN�pollz"Server listener (select) uses polli�r�z Server connection was closed: %sz0Too many errors - stop logging connection errors�dz+Too many errors - critical count reached %r)rZDEFAULT_SLEEP_TIME�asyncorer8�callableZpoll2�hasattrZselectr+�debug�floatr*�args�errnoZENOTCONNZEBADF�infor2rZ	exception�EMFILE�sum�values�critical)Zactive�timeout�use_poll�	err_countr8r0rrr�loop�sB

rJc@sbeZdZdd�Zdd�Zdd�Zdd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zedd��Z
dS)�AsyncServercCs:tjj|�||_d|_d|_d|_ddd�|_d|_dS)Nz/var/run/fail2ban/fail2ban.sockFr)�acceptr7)	r;�
dispatcherr�_AsyncServer__transmitter�_AsyncServer__sock�_AsyncServer__init�_AsyncServer__active�_AsyncServer__errCount�onstart)rrrrrr�szAsyncServer.__init__cCsdS)NFr)rrrr�writable�szAsyncServer.writablecCsy|j�\}}Wn�tk
r�}z�|jdd7<|jddkr^tjd||jddkd�nl|jddkrxtjd�nR|jddkr�t|tj�r�|jdt	j
ks�t|jj��d	kr�tj
d
|j�|j�dSd}~XnX|jdr�|jdd8<tj|�t||j�dS)NrLrr9zAccept socket error: %s)r'z.Too many acceptor errors - stop logging errorsr:ri�z+Too many errors - critical count reached %r)rLr*rRr+�warningrr.rr@rArCrDrErF�stoprK�_AsyncServer__markCloseOnExecrrN)rrZaddrr0rrr�
handle_accept�s&

zAsyncServer.handle_acceptNFcs�tj��_|�_tjj|�rFtjd�|r>tj	d��j
�ntd���jt
jt
j��j�y�j|�Wn"tk
r�td�j��YnXtj�j
��jd�d�_�_�_�jrƈj�t�fdd�||�jd	�d
�_�j�dS)Nz$Fail2ban seems to be already runningzForcing execution of the serverzServer already runningzUnable to bind socket %srTcs�jS)N)�_AsyncServer__loopr)rrr�<lambda>sz#AsyncServer.start.<locals>.<lambda>)rGrHrIF)�	threading�current_thread�_AsyncServer__workerrO�os�path�existsr+rrU�_remove_sock�AsyncServerExceptionZ
create_socketrZAF_UNIXZSOCK_STREAMZset_reuse_addrZbindr*rKrWr7rPrYrQrSrJrRrV)r�sock�forcerGrHr)rr�start�s,




zAsyncServer.startcs�d}�jrrd�_�jr@y�jjtj�Wntjk
r>YnXtjj��t	j
��jkrntj
�fdd�d�d}�jr�tjj�j�r��j�tjd�j�|r�tjd�d�_dS)NFcs�jS)N)rQr)rrrrZsz#AsyncServer.close.<locals>.<lambda>rTzRemoved socket file zSocket shutdown)rQrYrrrrr;rMrr[r\r]rZwait_forrPr^r_r`rOrar+r>)rZstopflgr)rrrs$
zAsyncServer.closecCs|jrtjd�d|_dS)NzStop communication, shutdown)rNr+r>)rrrr�stop_communication,s
zAsyncServer.stop_communicationcCs|j�|j�dS)N)rfr)rrrrrV4szAsyncServer.stopcCs|jS)N)rQ)rrrr�isActive9szAsyncServer.isActivecCsFytj|j�Wn0tk
r@}z|jtjkr0�WYdd}~XnXdS)N)r^�removerO�OSErrorrA�ENOENT)rr0rrrra?s
zAsyncServer._remove_sockcCs0|j�}tj|tj�}tj|tj|tjB�dS)N)�fileno�fcntlZF_GETFDZF_SETFDZ
FD_CLOEXEC)rc�fd�flagsrrrZ__markCloseOnExecLszAsyncServer.__markCloseOnExec)NF)r#r$r%rrTrXrerrfrVrgra�staticmethodrWrrrrrK�s

rKc@seZdZdS)rbN)r#r$r%rrrrrbVsrb)NFN)!�
__author__Z
__copyright__Z__license__�picklerrrr
r;rArlr^r�sysr[r3ZutilsrZprotocolrZhelpersr	r
rr#r+rrrJrMrKr*rbrrrr�<module>s*X
6