ogf(>dZdZdZddlmZmZmZddlZ ddlZddl Z ddl Z ddl Z ddlZddlZddlZddlZdd lmZdd lmZdd lmZmZmZeeZGd d ej8ZddZGddej>Z Gdde!Z"y#e $r ddl mZYwxYw)z Cyril Jaquierz Copyright (c) 2004 Cyril JaquierGPL)dumpsloadsHIGHEST_PROTOCOLN)asynchat)Utils)CSPROTO)logging getLoggerformatExceptionInfocFeZdZdZdZdZdZGddeZdZ dZ y ) RequestHandlerctjj||||_||_g|_|j tjyN) r async_chat__init___RequestHandler__conn_RequestHandler__transmitter_RequestHandler__bufferset_terminatorr END)selfconn transmitters =/usr/lib/python3/dist-packages/fail2ban/server/asyncserver.pyrzRequestHandler.__init__8s@ tT*$+"$$-gkk"c|jrD|j}d|_ |jtj|j yy#tj $rYywxYwr)rshutdownsocket SHUT_RDWRcloseerror)rrs r__closezRequestHandler.__close@sV [[ ++44; MM&""#JJL  ,,  s/AA('A(cb|jtjj|yr)_RequestHandler__closerr handle_closers rr(zRequestHandler.handle_closeJs,,. ""4(rc:|jj|yr)rappend)rdatas rcollect_incoming_dataz$RequestHandler.collect_incoming_dataNs--trc eZdZy)RequestHandler.LoadErrorN__name__ __module__ __qualname__rr LoadErrorr/Ssrr5c |j}g|_tjj|}|tjk(r|j y t |}|jr|jj!|}ndg}t#|t$}|j'|tj(zy#t$rU}tjd|tjtjktj|d}~wwxYw#t$r}t+|tjs;tjd|tjtjkt#d|zt$}|j'|tj(zYd}~yd}~wwxYw)Nz$PROTO-error: load message failed: %sexc_infoSHUTDOWNzCaught unhandled exception: %r ERROR: %s)rr EMPTYjoinCLOSEclose_when_doner ExceptionlogSysr$getEffectiveLevelr DEBUGrr5rproceedrrpushr isinstance)rmessagees rfound_terminatorzRequestHandler.found_terminator[sc $ ]]74= ]]   (7  &GnG    ((1GlG 7, -799Ww{{ "# & LL7&&(68  " "1 %%& $ Q00 1 LL11&&('--79;?$4 5799Ww{{ "## $s?AD# C$AD# D  ADD  D## G,B F;;Gc t\}}tjdt|ztjt j j td|zt}|j|tjz|jy#t$r }Yd}~d}~wwxYw)Nz"Unexpected communication error: %sr:)rr@r$str traceback format_exc splitlinesrrrDr rr?r>)re1e2rFrGs r handle_errorzRequestHandler.handle_errors  !62r <<4s2w>? << $$&1134 ;#%5 6799Ww{{ "# sBB++ B>9B>N) r1r2r3rr'r(r-r?r5rHrPr4rrrr6s-# ) !$L rrc|si}d|d<|tj}tj}t |r|}n_|r]tj rMt tjdr3tjdt|dz }tj }|r$ |||dr |dxxdzcc<|r#yy#t$r-}|sYd}~y|dxxdz cc<|ddkro|jdtjtjfvr tj!d t#|ntj%d t#|n|ddk(r+tj'|tj%d n_|dd kDrW|jdtj(k(st+|j-dkDrtj/d |Yd}~yYd}~>ghoov&F,,34 'NT !' $ x = h1 x  (  X!B vvayU^^U[[11 [[3SV< \\4c!f=(r! Q LLCD(c! q U\\! I   $& __BIN ) s!C G<G7DG77G<cTeZdZdZdZdZd dZdZdZdZ d Z d Z e d Z y) AsyncServerctjj|||_d|_d|_d|_ddd|_d|_y)Nz/var/run/fail2ban/fail2ban.sockFr)acceptrR) rY dispatcherr_AsyncServer__transmitter_AsyncServer__sock_AsyncServer__init_AsyncServer__active_AsyncServer__errCountonstart)rrs rrzAsyncServer.__init__sF t$"$1$+$+$- A.$/$,rcyNFr4r)s rwritablezAsyncServer.writables rc4 |j\}}|jdr|jdxxdzcc<tj!|t#||j$y#t$r&}|jdxxdz cc<|jddkr)tj d||jddkn|jddk(rtj dn|jddkDrt |tj r |jdtjk(s&t|jjd kDr0tjd |j|jYd}~yd}~wwxYw) Nrrr rUzAccept socket error: %sr7z.Too many acceptor errors - stop logging errorsrVrrTrW)rrr?rxr@warningr$rEr!r`rarfrgrhristoprp_AsyncServer__markCloseOnExecrrt)rraddrrGs r handle_acceptzAsyncServer.handle_accepts?  :4  __X??8! %t))*)  ??8! ooh"$ NN,ax(A-0 !R' LLAB !C'1fll#q U\\(A DOO " " $%, __BDOOT YY[  sA'' F1DFFNc&tj_|_tj j |rHtjd|r&tjdjn tdjtjtjj! j#|t&j)jj+ddx_x__j2rj3t5fd||j6d _j9y#t$$rtdjzwxYw) Nz$Fail2ban seems to be already runningzForcing execution of the serverzServer already runningzUnable to bind socket %sr TcjSr)_AsyncServer__loopr)srz#AsyncServer.start..s t{{r)rkrlrmF) threadingcurrent_thread_AsyncServer__workerruospathexistsr@r$r~ _remove_sockAsyncServerException create_socketr!AF_UNIX SOCK_STREAMset_reuse_addrbindr?rprrRrvrrwryrnrxr)rsockforcerkrls` rstartzAsyncServer.starts%**,$-$+WW^^D <<67  NN45 7 88V^^V%7%78H99T? ,++a..22$+2 dm \\<<>Gh$//Z$-))+ H 84;;F GGHs E.."Fcd}jrd_jr* jjtjt jjtjjk7rtjfddd}jr[tj j#j$r2j't(j+dj$z|rt(j+dd_y#tj $rYwxYw)NFcj Srrwr)srrz#AsyncServer.close.."st}},rr TzRemoved socket file zSocket shutdown)rwrr!r r"r$rYrsr#rrrr wait_forrvrrrrurr@r^)rstopflgs` rr#zAsyncServer.closes ' ]]4; kk  [[&**+ T" DMM1 NN,a0 7 [[RWW^^DKK0 <<&45  <<!"$- <<   s)D..EEcV|jrtjdd|_yy)NzStop communication, shutdown)rtr@r^r)s rstop_communicationzAsyncServer.stop_communication/s%  <<./4rcD|j|jyr)rr#r)s rrzAsyncServer.stop7s**,rc|jSrrr)s risActivezAsyncServer.isActive<s rc tj|jy#t$r(}|jtj k7rYd}~yd}~wwxYwr)rremoveruOSErrorraENOENT)rrGs rrzAsyncServer._remove_sockBs? 99T[[  gg  s" AAAc|j}tj|tj}tj|tj|tjzyr)filenofcntlF_GETFDF_SETFD FD_CLOEXEC)rfdflagss r__markCloseOnExeczAsyncServer.__markCloseOnExecOs@ {{}" ++b%-- (%++b%--u'7'7!78rr{)r1r2r3rr|rrr#rrrr staticmethodrr4rrrprpsC+>>8   99rrpc eZdZy)rNr0r4rrrrYsrr)NFN)# __author__ __copyright__ __license__picklerrrrYr ImportErrorcompatrarrr!sysrrKutilsr protocolr helpersr r rr1r@rrrnrsrpr?rr4rrrs. 2  11 == 8 UX((Up- lO9(%%O9j9u sB BB