HEX
Server: LiteSpeed
System: Linux 112.webhostingindonesia.co.id 5.14.0-570.62.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 10:10:59 EST 2025 x86_64
User: iyfwylsv (10313)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //usr/lib/python3.9/site-packages/fail2ban/server/__pycache__/asyncserver.cpython-39.pyc
a

�8D)�@s&dZdZdZddlmZmZmZzddlZWneyJddl	mZYn0zddl
Z
Wneyvddl	m
Z
Yn0ddlZddlZddl
Z
ddlZddlZddlZddlZd	d
lmZddlmZddlmZmZmZee�ZGd
d�dej�Zddd�ZGdd�de
j�Z Gdd�de!�Z"dS)z
Cyril Jaquierz Copyright (c) 2004 Cyril Jaquier�GPL�)�dumps�loads�HIGHEST_PROTOCOLN�)�asynchat)�asyncore�)�Utils)�CSPROTO)�logging�	getLogger�formatExceptionInfoc@sLeZdZdd�Zdd�Zdd�Zdd�ZGd	d
�d
e�Zdd�Z	d
d�Z
dS)�RequestHandlercCs0tj�||�||_||_g|_|�tj�dS�N)	r�
async_chat�__init__�_RequestHandler__conn�_RequestHandler__transmitter�_RequestHandler__bufferZset_terminatorr�END)�self�conn�transmitter�r�?/usr/lib/python3.9/site-packages/fail2ban/server/asyncserver.pyr;s
zRequestHandler.__init__cCsD|jr@|j}d|_z|�tj�|��Wntjy>Yn0dSr)r�shutdown�socket�	SHUT_RDWR�close�error)rrrrrZ__closeCszRequestHandler.__closecCs|��tj�|�dSr)�_RequestHandler__closerr�handle_close�rrrrr"MszRequestHandler.handle_closecCs|j�|�dSr)r�append)r�datarrr�collect_incoming_dataQsz$RequestHandler.collect_incoming_datac@seZdZdS)zRequestHandler.LoadErrorN��__name__�
__module__�__qualname__rrrr�	LoadErrorVsr+c
Cs.z�|j}g|_tj�|�}|tjkr2|��WdSzt|�}WnHty�}z0tj	d|t�
�tjkd�t
�|��WYd}~n
d}~00|jr�|j�|�}ndg}t|t�}|�|tj�Wnjt�y(}zPt|t
j�s�tj	d|t�
�tjkd�td|t�}|�|tj�WYd}~n
d}~00dS)Nz$PROTO-error: load message failed: %s��exc_infoZSHUTDOWNzCaught unhandled exception: %r�	ERROR: %s)rr�EMPTY�joinZCLOSE�close_when_doner�	Exception�logSysr �getEffectiveLevelr�DEBUGrr+rZproceedrr�pushr�
isinstance)r�message�errr�found_terminator^s4
� 
�zRequestHandler.found_terminatorc
Cs�zPt�\}}t�dt|��t�t�����td|t�}|�	|t
j�Wn$tyt}zWYd}~n
d}~00|�
�dS)Nz"Unexpected communication error: %sr.)rr3r �str�	traceback�
format_exc�
splitlinesrrr6rrr2r1)r�e1�e2r8r9rrr�handle_error�s
zRequestHandler.handle_errorN)r(r)r*rr!r"r&r2r+r:rArrrrr9s
&rFc
Cs�|si}d|d<|durtj}tj}t|�r2|}n2|rdtjrdttjd�rdt�	d�t
|�d}tj}|��r�z$||�|dr�|dd8<Wqdt�y�}z�|�s�WYd}~�q�|dd7<|ddk�r|jdt
jt
jfvr�t�d	t|��nt�d	t|��np|ddk�r2t�|�t�d
�nL|ddk�r~|jdt
jk�sdt|���dk�r~t�d|�WYd}~�q�WYd}~qdd}~00qddS)
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 poll��r	�z Server connection was closed: %sz0Too many errors - stop logging connection errors�d�+Too many errors - critical count reached %r)r
ZDEFAULT_SLEEP_TIMErrC�callableZpoll2�hasattr�selectr3�debug�floatr2�args�errnoZENOTCONN�EBADF�infor;r �	exception�EMFILE�sum�values�critical)Zactive�timeout�use_poll�	err_countrCr9rrr�loop�sD

��rYc@sbeZdZdd�Zdd�Zdd�Zdd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zedd��Z
dS)�AsyncServercCs:tj�|�||_d|_d|_d|_ddd�|_d|_dS)Nz/var/run/fail2ban/fail2ban.sockFr)�acceptrB)	r�
dispatcherr�_AsyncServer__transmitter�_AsyncServer__sock�_AsyncServer__init�_AsyncServer__active�_AsyncServer__errCount�onstart)rrrrrr�szAsyncServer.__init__cCsdS)NFrr#rrr�writable�szAsyncServer.writablec
Csz|��\}}Wn�ty�}z�|jdd7<|jddkr\tjd||jddkd�nl|jddkrvt�d�nR|jddkr�t|tj�r�|jdt	j
ks�t|j���d	kr�t�
d
|j�|��WYd}~dSd}~00|jd�r�|jdd8<t�|�t||j�dS)Nr[r	rEzAccept socket error: %sr,z.Too many acceptor errors - stop logging errorsrFrrDrG)r[r2rar3�warningr r7rrMrNrRrSrTrU�stoprZ�_AsyncServer__markCloseOnExecrr])rr�addrr9rrr�
handle_accept�s0�
���
zAsyncServer.handle_acceptNFcs�t���_|�_tj�|�rFt�d�|r>t�	d���
�ntd����t
jt
j����z��|�Wn ty�td�j��Yn0t��j
���d�d�_�_�_�jrĈ��t�fdd�||�jd	�d
�_���dS)Nz$Fail2ban seems to be already runningzForcing execution of the serverzServer already runningzUnable to bind socket %sr	Tcs�jSr)�_AsyncServer__looprr#rr�<lambda>�z#AsyncServer.start.<locals>.<lambda>)rVrWrXF)�	threading�current_thread�_AsyncServer__workerr^�os�path�existsr3r rd�_remove_sock�AsyncServerExceptionZ
create_socketr�AF_UNIX�SOCK_STREAMZset_reuse_addr�bindr2rZrfrBr_rir`rbrYrare)r�sock�forcerVrWrr#r�start�s,




zAsyncServer.startcs�d}�jrpd�_�jr>z�j�tj�Wntjy<Yn0tj���t	�
��jkrlt�
�fdd�d�d}�jr�tj��j�r����t�d�j�|r�t�d�d�_dS)NFcs�jSr�r`rr#rrrj%rkz#AsyncServer.close.<locals>.<lambda>r	TzRemoved socket file zSocket shutdown)r`rirrrr rr\rrlrmrnr
�wait_forr_rorprqr^rrr3rK)rZstopflgrr#rrs$
zAsyncServer.closecCs|jrt�d�d|_dS)NzStop communication, shutdown)r]r3rKr#rrr�stop_communication2s
zAsyncServer.stop_communicationcCs|��|��dSr)r|rr#rrrre:szAsyncServer.stopcCs|jSrrzr#rrr�isActive?szAsyncServer.isActivec
CsHzt�|j�Wn2tyB}z|jtjkr.�WYd}~n
d}~00dSr)ro�remover^�OSErrorrN�ENOENT)rr9rrrrrEs
zAsyncServer._remove_sockcCs0|��}t�|tj�}t�|tj|tjB�dSr)�fileno�fcntlZF_GETFDZF_SETFDZ
FD_CLOEXEC)rw�fd�flagsrrrZ__markCloseOnExecRszAsyncServer.__markCloseOnExec)NF)r(r)r*rrcrhryrr|rer}rr�staticmethodrfrrrrrZ�s

rZc@seZdZdS)rsNr'rrrrrs\srs)NFN)#�
__author__�
__copyright__�__license__�picklerrrr�ImportError�compatrrNr�ror�sysrlr<�utilsr
�protocolrZhelpersrr
rr(r3rrrYr\rZr2rsrrrr�<module>s6X
6