File: //usr/lib/python3.9/site-packages/fail2ban/server/__pycache__/asyncserver.cpython-39.opt-2.pyc
a
�8D)� @ s& d Z dZdZddlmZmZmZ zddlZW n eyJ ddl mZ Y n0 zddl
Z
W n eyv ddl m
Z
Y n0 ddlZddlZddl
Z
ddlZddlZddlZddlZd d
lmZ ddlmZ ddlmZmZmZ ee�ZG d
d� dej�Zddd�ZG dd� de
j�Z G dd� de!�Z"dS )z
Cyril Jaquierz Copyright (c) 2004 Cyril JaquierZGPL� )�dumps�loads�HIGHEST_PROTOCOLN� )�asynchat)�asyncore� )�Utils)�CSPROTO)�logging� getLogger�formatExceptionInfoc @ sL e Zd Zdd� Zdd� Zdd� Zdd� ZG d d
� d
e�Zdd� Z d
d� Z
dS )�RequestHandlerc C s0 t j�| |� || _|| _g | _| �tj� d S �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__c C sD | j r@| j }d | _ z|�tj� |�� W n tjy> Y n0 d S r )r �shutdown�socket� SHUT_RDWR�close�error)r r r r r Z__closeC s zRequestHandler.__closec C s | � � tj�| � d S r )�_RequestHandler__closer r �handle_close�r r r r r! M s zRequestHandler.handle_closec C s | j �|� d S r )r �append)r �datar r r �collect_incoming_dataQ s z$RequestHandler.collect_incoming_datac @ s e Zd ZdS )zRequestHandler.LoadErrorN��__name__�
__module__�__qualname__r r r r � LoadErrorV s r* c
C s. z�| j }g | _ tj�|�}|tjkr2| �� W d S zt|�}W nH ty� } z0tj d|t�
� tjk d� t
�|��W Y d }~n
d }~0 0 | jr�| j�|�}ndg}t|t�}| �|tj � W nj t�y( } zPt|t
j�s�tj d|t�
� tjkd� td| t�}| �|tj � W Y d }~n
d }~0 0 d S )Nz$PROTO-error: load message failed: %s��exc_infoZSHUTDOWNzCaught unhandled exception: %r� ERROR: %s)r r
ZEMPTY�joinZCLOSE�close_when_doner � Exception�logSysr ZgetEffectiveLevelr �DEBUGr r* r Zproceedr r �pushr �
isinstance)r �message�er r r �found_terminator^ s4
�
�zRequestHandler.found_terminatorc
C s� zPt � \}}t�dt|� � t�t�� �� � td| t�}| � |t
j � W n$ tyt } zW Y d }~n
d }~0 0 | �
� d S )Nz"Unexpected communication error: %sr- )r
r1 r �str� traceback�
format_exc�
splitlinesr r r3 r
r r0 r/ )r Ze1Ze2r5 r6 r r r �handle_error� s
zRequestHandler.handle_errorN)r'