HEX
Server: LiteSpeed
System: Linux spg20.cloudpowerdns.com 5.14.0-611.35.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Feb 25 03:46:09 EST 2026 x86_64
User: carrerup (3153)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //lib/python3.9/site-packages/fail2ban/compat/__pycache__/asyncore.cpython-39.pyc
a

=�*fvN�@sfdZddlZddlZddlZddlZddlZddlZddlmZm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZmZeee
eeeeh�ZzeWney�iZYn0dd�ZGdd�de�ZeeefZdd	�Zd
d�Z dd
�Z!dd�Z"d&dd�Z#d'dd�Z$e$Z%d(dd�Z&Gdd�d�Z'Gdd�de'�Z(dd�Z)d)dd �Z*ej+d!k�rbGd"d#�d#�Z,Gd$d%�d%e'�Z-dS)*a�Basic infrastructure for asynchronous socket service clients and servers.

There are only two ways to have a program on a single processor do "more
than one thing at a time".  Multi-threaded programming is the simplest and
most popular way to do it, but there is another very different technique,
that lets you have nearly all the advantages of multi-threading, without
actually using multiple threads. it's really only practical if your program
is largely I/O bound. If your program is CPU bound, then pre-emptive
scheduled threads are probably what you really need. Network servers are
rarely CPU-bound, however.

If your operating system supports the select() system call in its I/O
library (and nearly all do), then you can use it to juggle multiple
communication channels at once; doing other work while your I/O is taking
place in the "background."  Although this strategy can seem strange and
complex, especially at first, it is in many ways easier to understand and
control than multi-threaded programming. The module documented here solves
many of the difficult problems for you, making the task of building
sophisticated high-performance network servers and clients a snap.
�N)
�EALREADY�EINPROGRESS�EWOULDBLOCK�
ECONNRESET�EINVAL�ENOTCONN�	ESHUTDOWN�EISCONN�EBADF�ECONNABORTED�EPIPE�EAGAIN�	errorcodec
CsFzt�|�WStttfy@|tvr4t|YSd|YS0dS)NzUnknown error %s)�os�strerror�
ValueError�
OverflowError�	NameErrorr)�err�r�</usr/lib/python3.9/site-packages/fail2ban/compat/asyncore.py�	_strerrorDsrc@seZdZdS)�ExitNowN)�__name__�
__module__�__qualname__rrrrrLsrcCs8z|��Wn&ty �Yn|��Yn0dS�N)�handle_read_event�_reraised_exceptions�handle_error��objrrr�readQsr"cCs8z|��Wn&ty �Yn|��Yn0dSr)�handle_write_eventrrr rrr�writeYsr$cCs8z|��Wn&ty �Yn|��Yn0dSr)�handle_expt_eventrrr rrr�
_exceptionasr&c
Cs�zX|tj@r|��|tj@r&|��|tj@r8|��|tjtjBtj	B@rV|�
�Wndty�}z(|jt
vr||��n|�
�WYd}~n.d}~0ty��Yn|��Yn0dSr)�select�POLLINr�POLLOUTr#�POLLPRIr%ZPOLLHUPZPOLLERRZPOLLNVAL�handle_close�OSError�errno�
_DISCONNECTEDrr)r!�flags�errr�	readwriteis"




r1�c	Cs<|durt}|�r8g}g}g}t|���D]L\}}|��}|��}|rP|�|�|rd|jsd|�|�|sl|r*|�|�q*g|kr�|kr�|kr�nnt�|�dSt	�	||||�\}}}|D] }|�
|�}|dur�q�t|�q�|D]"}|�
|�}|du�rq�t|�q�|D]&}|�
|�}|du�r,�qt
|��qdSr)�
socket_map�list�items�readable�writable�append�	accepting�time�sleepr'�getr"r$r&)	�timeout�map�r�wr0�fdr!Zis_rZis_wrrr�poll}s@


"







rBcCs�|durt}|dur t|d�}t��}|r�t|���D]L\}}d}|��r\|tjtjBO}|�	�rt|j
st|tjO}|r8|�||�q8|�|�}|D]&\}}|�
|�}|dur�q�t||�q�dS)Ni�r)r3�intr'rBr4r5r6r(r*r7r9r)�registerr<r1)r=r>ZpollsterrAr!r/r?rrr�poll2�s(


rE�>@FcCsb|durt}|r ttd�r t}nt}|dur>|r^|||�q,n |r^|dkr^|||�|d}q>dS)NrBr�)r3�hasattrr'rErB)r=Zuse_pollr>�countZpoll_funrrr�loop�s
rJc@s2eZdZdZdZdZdZdZdZe	dh�Z
dAdd�Zdd�ZdBdd	�Z
dCd
d�Zejejfdd
�ZdDdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�ZdEd'd(�Zd)d*�Z d+d,�Z!d-d.�Z"d/d0�Z#d1d2�Z$d3d4�Z%d5d6�Z&d7d8�Z'd9d:�Z(d;d<�Z)d=d>�Z*d?d@�Z+dS)F�
dispatcherFN�warningc
Cs�|durt|_n||_d|_|r�|�d�|�||�d|_z|��|_Wq�ty�}z.|j	t
tfvrpd|_n|�|��WYd}~q�d}~00nd|_
dS)NFT)r3�_map�_fileno�setblocking�
set_socket�	connectedZgetpeername�addrr,r-rr�del_channel�socket)�self�sockr>rrrr�__init__�s 

zdispatcher.__init__cCs�|jjd|jjg}|jr.|jr.|�d�n|jr>|�d�|jdur�z|�d|j�Wn"ty~|�t|j��Yn0dd�	|�t
|�fS)N�.Z	listeningrQz%s:%dz<%s at %#x>� )�	__class__rrr9rRr8rQ�	TypeError�repr�join�id)rU�statusrrr�__repr__�s

zdispatcher.__repr__cCs|dur|j}|||j<dSr)rMrN)rUr>rrr�add_channel	szdispatcher.add_channelcCs,|j}|dur|j}||vr"||=d|_dSr)rNrM)rUr>rArrrrSszdispatcher.del_channelcCs.||f|_t�||�}|�d�|�|�dS�NF)Zfamily_and_typerTrOrP)rUZfamily�typerVrrr�
create_sockets

zdispatcher.create_socketcCs||_|��|_|�|�dSr)rT�filenorNra�rUrVr>rrrrPs
zdispatcher.set_socketcCsBz*|j�tjtj|j�tjtj�dB�Wnty<Yn0dS)NrG)rTZ
setsockopt�
SOL_SOCKETZSO_REUSEADDR�
getsockoptr,�rUrrr�set_reuse_addr#s
���zdispatcher.set_reuse_addrcCsdS�NTrrirrrr64szdispatcher.readablecCsdSrkrrirrrr77szdispatcher.writablecCs(d|_tjdkr|dkrd}|j�|�S)NT�nt�)r9r�namerT�listen)rUZnumrrrro>szdispatcher.listencCs||_|j�|�Sr)rRrT�bind)rUrRrrrrpDszdispatcher.bindcCspd|_d|_|j�|�}|tttfvs8|tkrBtj	dkrB||_
dS|dtfvr^||_
|��nt
|t|��dS)NFTrlr)rQ�
connectingrTZ
connect_exrrrrrrnrRr	�handle_connect_eventr,r)rU�addressrrrr�connectHs��
zdispatcher.connectc
Csvz|j��\}}WnVty&YdStyh}z,|jtttfvrRWYd}~dS�WYd}~nd}~00||fSdSr)rT�acceptr[r,r-rrr
)rUZconnrR�whyrrrruVszdispatcher.acceptc
Csvz|j�|�}|WStyp}zF|jtkr:WYd}~dS|jtvrZ|��WYd}~dS�WYd}~n
d}~00dS�Nr)rT�sendr,r-rr.r+)rU�data�resultrvrrrrxds

zdispatcher.sendc
Cstz(|j�|�}|s |��WdS|WSWnFtyn}z.|jtvrX|��WYd}~dS�WYd}~n
d}~00dS�N�)rT�recvr+r,r-r.)rUZbuffer_sizeryrvrrrr}qs

zdispatcher.recvc
Csld|_d|_d|_|��|jdurhz|j��Wn4tyf}z|jtt	fvrR�WYd}~n
d}~00dSrb)
rQr9rqrSrT�closer,r-rr
)rUrvrrrr~�s
zdispatcher.closecCstj�dt|��dS)Nzlog: %s
)�sys�stderrr$�str)rU�messagerrr�log�szdispatcher.log�infocCs||jvrtd||f�dS)Nz%s: %s)�ignore_log_types�print)rUr�rcrrr�log_info�s
zdispatcher.log_infocCs:|jr|��n&|js.|jr$|��|��n|��dSr)r9�
handle_acceptrQrqrr�handle_readrirrrr�s

zdispatcher.handle_read_eventcCs@|j�tjtj�}|dkr(t|t|���|��d|_d|_dS)NrTF)	rTrhrg�SO_ERRORr,r�handle_connectrQrq�rUrrrrrr�szdispatcher.handle_connect_eventcCs*|jr
dS|js|jr|��|��dSr)r9rQrqrr�handle_writerirrrr#�szdispatcher.handle_write_eventcCs0|j�tjtj�}|dkr$|��n|��dSrw)rTrhrgr�r+�handle_exptr�rrrr%�s
zdispatcher.handle_expt_eventcCsXt�\}}}}zt|�}Wndt|�}Yn0|�d||||fd�|��dS)Nz)<__repr__(self) failed for object at %0x>z:uncaptured python exception, closing channel %s (%s:%s %s)�error)�compact_tracebackr\r^r�r+)rUZnil�t�v�tbinfoZ	self_reprrrrr�s��	zdispatcher.handle_errorcCs|�dd�dS)Nz!unhandled incoming priority eventrL�r�rirrrr��szdispatcher.handle_exptcCs|�dd�dS)Nzunhandled read eventrLr�rirrrr��szdispatcher.handle_readcCs|�dd�dS)Nzunhandled write eventrLr�rirrrr��szdispatcher.handle_writecCs|�dd�dS)Nzunhandled connect eventrLr�rirrrr��szdispatcher.handle_connectcCs|��}|dur|j|�dSr)ru�handle_accepted)rUZpairrrrr��szdispatcher.handle_acceptcCs|��|�dd�dS)Nzunhandled accepted eventrL)r~r�)rUrVrRrrrr��szdispatcher.handle_acceptedcCs|�dd�|��dS)Nzunhandled close eventrL)r�r~rirrrr+�szdispatcher.handle_close)NN)N)N)N)r�),rrr�debugrQr9rq�closingrR�	frozensetr�rWr`rarSrTZAF_INETZSOCK_STREAMrdrPrjr6r7rorprtrurxr}r~r�r�rrrr#r%rr�r�r�r�r�r�r+rrrrrK�sJ

 

	


rKc@s6eZdZddd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�dispatcher_with_sendNcCst�|||�d|_dSr{)rKrW�
out_bufferrfrrrrW�szdispatcher_with_send.__init__cCs.d}t�||jdd��}|j|d�|_dS)Nri)rKrxr�)rUZnum_sentrrr�
initiate_sendsz"dispatcher_with_send.initiate_sendcCs|��dSr)r�rirrrr�sz!dispatcher_with_send.handle_writecCs|jpt|j�Sr)rQ�lenr�rirrrr7szdispatcher_with_send.writablecCs0|jr|�dt|��|j||_|��dS)Nz
sending %s)r�r�r\r�r�)rUryrrrrxszdispatcher_with_send.send)NN)rrrrWr�r�r7rxrrrrr��s

r�cCs�t��\}}}g}|std��|rL|�|jjj|jjjt|j	�f�|j
}q~|d\}}}d�dd�|D��}|||f|||fS)Nztraceback does not exist���rYcSsg|]}d|�qS)z
[%s|%s|%s]r)�.0�xrrr�
<listcomp>&r|z%compact_traceback.<locals>.<listcomp>)r�exc_info�AssertionErrorr8�tb_frame�f_code�co_filename�co_namer��	tb_lineno�tb_nextr])r�r��tbr��file�function�liner�rrrr�s�r�cCs�|durt}t|���D]j}z|��Wqty^}z|jtkrDn|sJ�WYd}~qd}~0typ�Yq|s|�Yq0q|��dSr)	r3r4�valuesr~r,r-r
r�clear)r>Z
ignore_allr�rrr�	close_all)s 

r��posixc@sNeZdZdd�Zdd�Zdd�Zdd�Zdd
d�ZeZeZ	dd
�Z
dd�Zd	S)�file_wrappercCst�|�|_dSr)r�duprA�rUrArrrrWNszfile_wrapper.__init__cCs*|jdkrtjd|t|d�|��dS)Nrzunclosed file %r)�source)rA�warnings�warn�ResourceWarningr~rirrr�__del__Qs

�zfile_wrapper.__del__cGstj|jg|�R�Sr)rr"rA�rU�argsrrrr}Wszfile_wrapper.recvcGstj|jg|�R�Sr)rr$rAr�rrrrxZszfile_wrapper.sendNcCs(|tjkr|tjkr|sdStd��dS)Nrz-Only asyncore specific behaviour implemented.)rTrgr��NotImplementedError)rU�levelZoptname�buflenrrrrh]s
��zfile_wrapper.getsockoptcCs(|jdkrdS|j}d|_t�|�dS)Nrr�)rArr~r�rrrr~hs

zfile_wrapper.closecCs|jSr)rArirrrreoszfile_wrapper.fileno)N)rrrrWr�r}rxrhr"r$r~rerrrrr�Is
r�c@seZdZddd�Zdd�ZdS)�file_dispatcherNcCsNt�|d|�d|_z|��}Wnty2Yn0|�|�t�|d�dS)NTF)rKrWrQre�AttributeError�set_filer�set_blocking)rUrAr>rrrrWts
zfile_dispatcher.__init__cCs"t|�|_|j��|_|��dSr)r�rTrerNrar�rrrr�s
zfile_dispatcher.set_file)N)rrrrWr�rrrrr�rs
r�)r2N)r2N)rFFNN)NF).�__doc__r'rTrr:r�rr-rrrrrrrr	r
rrr
rr�r.r3rr�	Exceptionr�KeyboardInterrupt�
SystemExitrr"r$r&r1rBrEZpoll3rJrKr�r�r�rnr�r�rrrr�<module>sD<�


'

*
)