m "Ec@sTdZdkZdkZdkZdkZdkZdkZdkZdkZdk Z dk Z dk Z dk Z dk Z dkZeidoeiedZndZdklZdklZdfdYZd e ifd YZd e ifd YZd ZeideiZdZddZdZ eidZ!dZ"dfdYZ#dZ$e$Z%e&djodkZe'ei(djodei(dGHndk)Z)dk*Z*dk+Z+dk Z dk,Z,dk-Z-dk.Z.dkZe.i/dZ0ei1ei2Z3e)i4dddZ5e*i6ei(dZ7e+i+e7Z8edei9ei(de0e3Z:e:i;e8e,i,e,i<ei(ddd d!e0d"e3Z=e-i-dd#Z>e i?e:e5e=e>e0gZ@e:i;e@d$ei(jo&d%ZAdkBZBeBiCd&d'n e iDndS((s9$Id: http_server.py 24763 2004-05-17 05:59:28Z philikon $Ns$Id: is0.0(scounter(sunquotet http_requestc BsKtZdZeZdZeZdZdZ dZ dZ dZ e idZd Zd Zd Zd Zd ZdZddZdZeZdZdZdZhdd<dd<dd<dd<dd<dd<dd <d!d"<d#d$<d%d&<d'd(<d)d*<d+d,<d-d.<d/d0<d1d2<d3d4<d5d6<d7d8<d9d:<d;d<<d=d><d?d@<dAdB<dCdD<dEdF<dGdH<dIdJ<dKdL<dMdN<dOdP<dQdR<dSdT<dUdV<dWdX<dYdZ<d[d\s * . cCs||i|\ss s (tstringtjoinRtresponset reply_codetmapRtitems(R((Rtbuild_reply_headerYs!s#([^;?#]*)(;[^?#]*)?(\?[^#]*)?(#.*)?cCsh|idjoQ|ii|i}|it|ijo t dqa|i |_n|iS(Ns Broken URI( RRRt path_regextmatchRtmtendtlent ValueErrortgroups(RR*((Rt split_urils  cCsQxJ|iD]?}|i|}|it|jo|i|Sq q WdS(Nt( RR tlinethead_regR)R*R+R,tgroup(RR2R3R*R1((Rtget_header_with_regexus  cCsti|}|i}|i|pr|d}t|}xG|iD]<}ti|| |jo||}|||<|SqHqHWd||((RR=s cCs/|io|iin|idddS(Ns-Unexpected end-of-record for incoming requestR;(RR<tfound_terminatorR?(R((RR@s  cCsJt|tdjo|iiti|n|ii|dS(NR0(ttypetthingRR tpusht producerstsimple_producer(RRB((RRCscCs1|i|}||_d|ipd||fS(Ns HTTP/%s %d %ss1.0(Rt responsestcodetmessageR$R (RRGRH((RR#s  cCsj||_|i|}|ihd|<d|<}t||dsError responsesss

Error response

s

Error code %(code)d.s

Message: %(message)s.sR0s ( t__name__t __module__R$tcounterRRTRR<RRRRR'tretcompileR(R/R4R:R=R@RCR#RLt reply_nowRKRfR]RFR!R"RI(((RR+s4            L  T)$ t http_channelcBstZdd>ZdZeZdZdZdZ dZ dZ dd Z d Z d Zd Zd ZdZdZdZdZdZRS(NiicCs|tii|_t|_tii ||||_ ||_ |i dd|_tti|_|idS(Ns R0(Rtchannel_counterRRtchannel_numberRRtasynchatt async_chatRtconnRuRwtset_terminatort in_buffertintRt creation_timetcheck_maintenance(RRuRRw((RRss     cCs0tii|dd!}d||i|ifS(Niis<%s channel#: %s requests:%s>(RRt__repr__RtarRR(RR((RR~sicCs#|i|ip|indS(N(RRtmaintenance_intervalt maintenance(R((RRscCs|idS(N(Rt kill_zombies(R((RRsii<cCsltti}xStiiD]B}|i|ijo)||i |i jo|i qdq"q"WdS(N( RRtnowtasyncoret socket_maptvaluesRt __class__RRtzombie_timeoutRN(RRR((RRs cCs2tii||}|iiit ||S(N( RRtsendRR>tresultRut bytes_outRR,(RR>R((RRscCs]y6tii||}|iiit ||SWn t j ot i dnXdS(NsOut of Memory!( RRtrecvRt buffer_sizeRRutbytes_inRR,t MemoryErrortsystexit(RRR((RRs cCsDtid \}}|tjo ||ntii|dS(Ni( Rtexc_infoRttvt SystemExitRRt handle_errorR(RRtR((RRs  cGsdS(N((RR((RR]scCs2|io|ii|n|i||_dS(N(RR^R=R>R(RR>((RR=s cCs |io|iin|i}d|_ti|d}x"|o|d o|d}qBW|p|idSn|d}t |\} } }d|jot|}nt|d}t||| | ||} |ii|iii| djo/|idt|d| iddSnx|iiD]}|i| oy| |_|i| Wns|iiiti \\}}}} } }|id | | ||fdy| id WqqXnXdSqJqJW| id dS( NR0s iit%sBad HTTP request: %sRLis'Server Error: %s, %s: file: %s line: %sii('RR^R@RR R!RstlinesR_Rt crack_requestRRR tunquotet join_headersRR9RRRuttotal_requestsRR?treprRLthandlersR7R)thandle_requestt exceptionsRtcompact_tracebacktfiletfunR1RtRttbinfo(RRR RR RR1R7RRR9RRtRR((RR@sP           ! cCs|ip t|iS(N(Rt ac_out_bufferR,t producer_fifo(R((RtwritablescCs\|iodSnGt|io6|ii}t|do|i SqXdSndS(Nitstalled(RRR,RtfirsttpthasattrR(RR((Rtwritable_for_proxys (RRtac_out_buffer_sizeRR^RRRRRRRRRRRRR]R=R@RR(((RRks$            J t http_servercBsrtZdeZeZdddZdZdZ dZ dZ dZ dd Z d Zd ZRS( NsHTTP Server (V%s)cCs ||_||_tii||ititi g|_ |pt i ti}n|i|i||f|id|ii\}}|pU|iddytiti}Wqtij otid}qXnyti|d|_Wn/tij o |idd||_nX||_t|_t|_t|_t|_ t|_!|pt i ti}n|ot i#|||_ nt i$||_ |idt%t&i't&i&|i|fdS(NisComputing default hostnameR;t localhostisCannot do reverse lookups2Medusa (V%s) started at %s Hostname: %s Port:%d ((tipRtportRt dispatcherRt create_sockettsockettAF_INETt SOCK_STREAMRt logger_objectRvt file_loggerRtstdouttset_reuse_addrtbindtlistent getsocknamethostR?t gethostbynamet gethostnameRLt gethostbyaddrt server_namet server_portRt total_clientsRRRRtresolvertresolving_loggertunresolving_loggerR Rtctime(RRRRRR((RR1sD           cCsdS(Ni((R((RRjscCsdS(N((R((Rt handle_readmscCs|iS(N(Rt accepting(R((RtreadablepscCsdS(N((R((Rthandle_connectsscCs|iiy|i}Wn7tij o(|idd|iidSnXy|\}}Wn$t j o|iidSnX|i |||dS(Ns+warning: server accept() threw an exceptionR;( RRRtacceptttupRRLR?t decrementRRwt TypeErrort channel_class(RRRRw((Rt handle_acceptvs      icCs2|o|ii|n|iid|dS(Ni(tbackRRtappendthandlertinsert(RRR((Rtinstall_handlerscCs|ii|dS(N(RRtremoveR(RR((Rtremove_handlersc Csd}tdtt|i}|io&|i i t |ii }nd}t itt id|id|id|id|id|i d|d ||ii d ||ii d |id g g|t id gS(NcCstiti|S(N(R!R"tstatus_handlert english_bytestn(R((Rt nice_bytessf0.0s

%s

s!
Listening on: Host: %ssPort: %ds#

  • Total Clients: %ssRequests: %ssRequests/Client: %.1fs
  • Total Bytes In: %ssBytes Out: %ss
  • Total Exceptions: %ss!

Extension List

    s
(RtfilterRR%t maybe_statusRRt handler_statsRRtas_longtfloattratioRDRWR tlines_producert SERVER_IDENTRRRRRRE(RRRR((Rtstatuss   &(RRR RRRRRRRRRRRRR(((RR+s 9       cCs&t|do|iSndSdS(NR(RRBRR(RB((RRssConnection: (.*)cCskg}x^tt|D]J}||ddjo|d||d|d(RR>((RRCscCs7|io%|id}|id=d|fSndSdS(Nii(iN(RRRR(RR((Rtpops    ( RRRRRRRYRCR(((RR s      cCstio ti}n ti}|djo d}nd}| }t|d\}}t|d\}}|od||fSnd||fSdS(Niiii<s -%02d%02ds +%02d%02d( RtdaylighttaltzonettzttimezonetnegtdivmodR7tremR*(RRR R*R7((Rtcompute_timezone_for_logs     t__main__susage: %s is 127.0.0.1tfnordi'R0RiURRias-pcCs(ytiWntj onXdS(N(RtlooptKeyboardInterrupt(((Rt profile_loop2ssprofile_loop()s profile.out(EtRCS_IDtosRRtstatR!RRRnRRRRDRRvt startswithRsR RturllibRRRRRRRRt IGNORECASERPRR:RRRR R ReRR,targvtmonitortfilesystdefault_handlert ftp_servert chat_serverRtcaching_resolvertrsRRtlgtsecure_monitor_servertmst os_filesystemtfstdhtatoithsRtdummy_authorizertftptcststatus_extensiontshRtprofiletrunR (0RRRR RR R(RRRRRR RRRRRnRRRR RvR:R+RR"R!R#R'R%ReRRRDRRRRRRRRPR*RRRR((Rt? s                A                %