a =*fW( @ 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 eeZG d d dejZdddZG dd de jZ G dd de!Z"dS )z Cyril Jaquierz Copyright (c) 2004 Cyril JaquierZGPL )dumpsloadsHIGHEST_PROTOCOLN )asynchat)asyncore )Utils)CSPROTO)logging getLoggerformatExceptionInfoc @ sL e Zd Zdd Zdd Zdd Zdd ZG d d d eZdd 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)selfconntransmitter 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 shutdownsocket SHUT_RDWRcloseerror)r r r r r Z__closeC s zRequestHandler.__closec C s | tj| d S r )_RequestHandler__closer r handle_closer 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 ty( } zPt|t jstj d|t tjkd td| t}| |tj W Y d }~n d }~0 0 d S )Nz$PROTO-error: load message failed: %sexc_infoZSHUTDOWNzCaught unhandled exception: %r ERROR: %s)r r ZEMPTYjoinZCLOSEclose_when_doner ExceptionlogSysr ZgetEffectiveLevelr DEBUGr r* r Zproceedr r pushr isinstance)r messageer r r found_terminator^ s4 zRequestHandler.found_terminatorc C s zPt \}}tdt| tt 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 e1e2r5 r6 r r r handle_error s zRequestHandler.handle_errorN)r' r( r) r r r! r% r0 r* r7 r> r r r r r 9 s &r Fc C s |si }d|d<