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.opt-2.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 JaquierZGPL�)�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
ZEMPTY�joinZCLOSE�close_when_doner�	Exception�logSysrZgetEffectiveLevelr�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-)r
r1r�str�	traceback�
format_exc�
splitlinesrrr3r
rr0r/)rZe1Ze2r5r6rrr�handle_error�s
zRequestHandler.handle_errorN)r'r(r)rr r!r%r0r*r7r<rrrrr9s
&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_TIMErr>�callableZpoll2�hasattr�selectr1�debug�floatr0�args�errnoZENOTCONNZEBADF�infor8rZ	exception�EMFILE�sum�values�critical)Zactive�timeout�use_poll�	err_countr>r6rrr�loop�sD

��rRc@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)�acceptr=)	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)NrTrr@zAccept socket error: %sr+z.Too many acceptor errors - stop logging errorsrArr?rB)rTr0rZr1�warningrr4rrHrIrKrLrMrN�stoprS�_AsyncServer__markCloseOnExecrrV)rrZaddrr6rrr�
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 %srTcs�jSr)�_AsyncServer__looprr"rr�<lambda>�z#AsyncServer.start.<locals>.<lambda>)rOrPrQF)�	threading�current_thread�_AsyncServer__workerrW�os�path�existsr1rr]�_remove_sock�AsyncServerExceptionZ
create_socketrZAF_UNIXZSOCK_STREAMZset_reuse_addrZbindr0rSr_r=rXrarYr[rRrZr^)r�sock�forcerOrPrr"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�rYrr"rrrb%rcz#AsyncServer.close.<locals>.<lambda>rTzRemoved socket file zSocket shutdown)rYrarrrrrrUrrdrerfr	�wait_forrXrgrhrirWrjr1rF)rZstopflgrr"rrs$
zAsyncServer.closecCs|jrt�d�d|_dS)NzStop communication, shutdown)rVr1rFr"rrr�stop_communication2s
zAsyncServer.stop_communicationcCs|��|��dSr)rqrr"rrrr^:szAsyncServer.stopcCs|jSrror"rrr�isActive?szAsyncServer.isActivec
CsHzt�|j�Wn2tyB}z|jtjkr.�WYd}~n
d}~00dSr)rg�removerW�OSErrorrIZENOENT)rr6rrrrjEs
zAsyncServer._remove_sockcCs0|��}t�|tj�}t�|tj|tjB�dSr)�fileno�fcntlZF_GETFDZF_SETFDZ
FD_CLOEXEC)rl�fd�flagsrrrZ__markCloseOnExecRszAsyncServer.__markCloseOnExec)NF)r'r(r)rr\r`rnrrqr^rrrj�staticmethodr_rrrrrS�s

rSc@seZdZdS)rkNr&rrrrrk\srk)NFN)#�
__author__Z
__copyright__Z__license__�picklerrrr�ImportError�compatrrIrvrgr�sysrdr9Zutilsr	Zprotocolr
Zhelpersrrr
r'r1rrrRrUrSr0rkrrrr�<module>s6X
6