- ;cs dZ dkZ dkZdkZdkZdkZdkZdkZdkZdk Z dk Z dk Z dk Z dk Z eiedZ dklZ&dfdYZQde ifdYZdeifd YZd Zeid eiZd Zd dZeidZdZdfdYZdZeZ e!djodkZe"ei#djodei#dGHndk$Z$dk%Z%dk&Z&dk Z dk'Z'dk(Z(dk)Z)dk Z e)i*dZ+e i,ei-Z.e$i/dddZ0e%i1ei#d Z2e&i&e2Z3edei4ei#de+e.Z5e5i6e3e'i'e'i7ei#d ddde+de.Z8e(i(ddZ9e i:e5e0e8e9e+gZ;e5i6e;d ei#jo/d!Z<dk=Z=e=i>d"d#nei?ndS($s9$Id: http_server.py,v 1.2 2000/09/09 22:44:06 adamf Exp $Ni(scounters http_requestc s&)dZ+eZ4dZ7eZ9dZKdZNdZQdZ TdZ be i dZ gd Zpd Zvd Zd Zd ZdZddZdZeZdZdZ dZhdd<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\eid]d^d_d`dadbdcdddeg IdfZRS(gNiics9;|\|_|_|_|_|_|_?t|_ @hdt d<t i t i d<|_Dtii|_Et|_Fh|_dS(Ns Medusa/%ssServersDate(sargssselfschannelsrequestscommandsurisversionsheadersfifosoutgoingsVERSION_STRINGs http_datesbuild_http_datestimes reply_headerss http_requestsrequest_counters incrementsrequest_numbersNones _split_uris _header_cache(sselfsargs((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys__init__9s -1 csKL||i|Wss s (sstringsjoinsselfsresponses reply_codesmaps reply_headerssitems(sself((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pysbuild_reply_headerTs$s+\([^;?#]*\)\(;[^?#]*\)?\(\?[^#]*\)?\(#.*\)?csgh|itjoci|ii|it|ijojtdn(lt|idt dd|_nm|iSdS(Ns Broken URIcsl|i|S(N(srsgroupsi(sisr((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pyslsii( sselfs _split_urisNones path_regexsmatchsurislens ValueErrorsmapsrange(sself((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys split_urigs (+cs[pqxG|iDq]9}r|i|t|jos|i|SnqWtdSdS(Ns(sselfsheaderslineshead_regsmatchslensgroup(sselfshead_regsgroupsline((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pysget_header_with_regexps  csvwti|}x|i}y|i| oz|d}{t|}|xV|iD|]H}}ti|| |jo%~||}|||<|Snq^Wt ||<t Sn ||SdS(Ns: ( sstringslowersheadersselfs _header_cacheshcshas_keyshslenshlslinesrsNone(sselfsheadersrshlshcshsline((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys get_headervs       csK|io|ii|n!|idt|ddS(Ns*Dropping %d bytes of incoming request dataswarning(sselfs collectorscollect_incoming_datasdataslog_infoslen(sselfsdata((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pyscollect_incoming_datas cs>|io|iin|idddS(Ns-Unexpected end-of-record for incoming requestswarning(sselfs collectorsfound_terminatorslog_info(sself((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pysfound_terminators  csVt|tdjo |iiti|n|ii|dS(Ns(stypesthingsselfsoutgoingspushs producersssimple_producer(sselfsthing((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pyspushs cs:|i|}||_d|i||fSdS(Ns HTTP/%s %d %s(sselfs responsesscodesmessages reply_codesversion(sselfscodesmessage((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pysresponses cs||_|i|}|ih|d<|d<}t||d<d|d<|i||i dS(NscodesmessagesContent-Lengths text/htmls Content-Type( scodesselfs reply_codes responsessmessagesDEFAULT_ERROR_MESSAGEssslenspushsdone(sselfscodesssmessage((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pyserrors " csqtitt|i}d}d}|i djoO|djo2|i d o d}nd|dsError responsesss

Error response

s

Error code %(code)d.s

Message: %(message)s.sss (s reply_codescountersrequest_counters use_chunkedsNones collectors__init__s __setitem__s __getitem__shas_keysbuild_reply_headersregexscompiles path_regexs split_urisget_header_with_regexs get_headerscollect_incoming_datasfound_terminatorspushsresponseserrors reply_nowsdoneslog_date_stringslogs responsessstringsjoinsDEFAULT_ERROR_MESSAGE(((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys http_request&s4              L  W)' s http_channelcsQTdd>ZVeZWeZYdZddZmdZodZsdZ wdd Z yd Z d Z d Z d ZdZdZdZdZdZRS(NiicsYZtii|_[t|_\tii ||]||_ ^||_ _|i d`d|_atti|_b|idS(Ns s(s http_channelschannel_counters incrementsselfschannel_numberscountersrequest_countersasynchats async_chats__init__sconnsserversaddrsset_terminators in_buffersintstimes creation_timescheck_maintenance(sselfsserversconnsaddr((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys__init__Ys   cs=detii|dd!}fd||i|ifSdS(Niis<%s channel#: %s requests:%s>(sasynchats async_chats__repr__sselfsarschannel_numbersrequest_counter(sselfsar((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys__repr__dsics-op|i|i oq|indS(N(sselfschannel_numbersmaintenance_intervals maintenance(sself((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pyscheck_maintenanceoscsst|idS(N(sselfs kill_zombies(sself((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys maintenancessii<csyztti}{x_tiiD{]K}||i|ijo/}||i |i jo~|i nnq+WdS(N( sintstimesnowsasyncores socket_mapsvaluesschannels __class__sselfs creation_timeszombie_timeoutsclose(sselfsnowschannel((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys kill_zombiesys  csBtii||}|iiit ||SdS(N( sasynchats async_chatssendsselfsdatasresultsservers bytes_outs incrementslen(sselfsdatasresult((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pyssendscsry?tii||}|iiit ||SWn&t j ot i dnXdS(NsOut of Memory!( sasynchats async_chatsrecvsselfs buffer_sizesresultsserversbytes_ins incrementslens MemoryErrorssyssexit(sselfs buffer_sizesresult((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pysrecvs  csStid \}}|tjo||ntii|dS(Ni( ssyssexc_infostsvs SystemExitsasynchats async_chats handle_errorsself(sselfstsv((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys handle_errorscs dS(N((sselfsargs((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pyslogscs>|io|ii|n|i||_dS(N(sselfscurrent_requestscollect_incoming_datasdatas in_buffer(sselfsdata((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pyscollect_incoming_datas csf|io|iin?|i}d|_ti|d}x(|o |d o|d}qWW| o|idSn|d}t |\} } } t|d}t||| | | |}|ii|iii| tjo8|idt|d|iddSnx|iiD]}|i|oy ||_|i|Wn|iiiti\\}}}} } }|id| | ||fdy|id Wn nXnXdSnqsW|id dS( Nss iisBad HTTP request: %sserroris'Server Error: %s, %s: file: %s line: %sii(&sselfscurrent_requestsfound_terminators in_buffersheadersstringssplitslinessclose_when_donesrequests crack_requestscommandsurisversions join_headerss http_requestsrsrequest_counters incrementsserverstotal_requestssNoneslog_infosreprserrorshandlersshsmatchshandle_requests exceptionssasyncorescompact_tracebacksfilesfunslinestsvstbinfo(sselfstbinfoslinessheadersfileslinesrshsrequestsurisversionscommandstsvsfun((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pysfound_terminatorsL          $  cs!|ip t|iSdS(N(sselfs ac_out_bufferslens producer_fifo(sself((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pyswritablescst|io dSnVt|ioB|ii}t|do|i SndSndS(Nisstalled(sselfs ac_out_bufferslens producer_fifosfirstspshasattrsstalled(sselfsp((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pyswritable_for_proxys  (sac_out_buffer_sizesNonescurrent_requestscounterschannel_counters__init__s__repr__smaintenance_intervalscheck_maintenances maintenanceszombie_timeouts kill_zombiesssendsrecvs handle_errorslogscollect_incoming_datasfound_terminatorswritableswritable_for_proxy(((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys http_channelQs$             = s http_servercsdeZeZ eedZ@dZCdZFdZIdZ LdZ add Z gd Z jd Z RS( NsHTTP Server (V%s)csC  ||_ ||_ tii||ititi g|_ | ot i ti}n|i|i||f|id|ii\}}| o/|iddtiti}ny ti|d|_Wn8!tij o&"|idd#||_nX%||_&t|_'t|_(t|_)t|_ *t|_!,| o-t i ti}n/|o0t i#|||_ n2t i$||_ 4|idt%t&i't&i&|i|fdS(NisComputing default hostnameswarningisCannot do reverse lookups2Medusa (V%s) started at %s Hostname: %s Port:%d ((sipsselfsportsasyncores dispatchers__init__s create_socketssocketsAF_INETs SOCK_STREAMshandlerss logger_objectsloggers file_loggerssyssstdoutsset_reuse_addrsbindslistens getsocknameshostslog_infos gethostbynames gethostnames gethostbyaddrs server_nameserrors server_portscounters total_clientsstotal_requestss exceptionss bytes_outsbytes_insresolversresolving_loggersunresolving_loggersVERSION_STRINGstimesctime(sselfsipsportsresolvers logger_objectshost((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys__init__ s>         cs@AdSdS(Ni((sself((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pyswritable@scs CDdS(N((sself((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys handle_readCscsFG|iSdS(N(sselfs accepting(sself((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pysreadableFscs IJdS(N((sself((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pyshandle_connectIscsLM|iiNyO|i\}}WnbPtij o!U|iddVdSn1Wt j o!\|idd]dSnX_|i |||dS(Ns+warning: server accept() threw an exceptionswarnings*warning: server accept() threw EWOULDBLOCK( sselfs total_clientss incrementsacceptsconnsaddrssocketserrorslog_infos TypeErrors channel_class(sselfsaddrsconn((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys handle_acceptLs  ics>ab|oc|ii|ne|iid|dS(Ni(sbacksselfshandlerssappendshandlersinsert(sselfshandlersback((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pysinstall_handleras csgh|ii|dS(N(sselfshandlerssremoveshandler(sselfshandler((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pysremove_handlergsc sjkd}ntttt|i}p|io)q|i i t |ii }n sd}ut itt id|id|id|id|id|i d|d ||ii d ||ii d |id g g|t id gSdS(Ncs kltiti|SdS(N(sstringsjoinsstatus_handlers english_bytessn(sn((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys nice_bytesksf0.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
(s nice_bytessfiltersNonesmaps maybe_statussselfshandlerss handler_statss total_clientsstotal_requestssas_longsfloatsratios producersscomposite_producersfifoslines_producers SERVER_IDENTs server_namesportsbytes_ins bytes_outs exceptionsssimple_producer(sselfsratios handler_statss nice_bytes((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pysstatusjs   ) (sVERSION_STRINGs SERVER_IDENTs http_channels channel_classsNones__init__swritables handle_readsreadableshandle_connects handle_acceptsinstall_handlersremove_handlersstatus(((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys http_servers  6      cs2t|do|iSntSdS(Nsstatus(shasattrsthingsstatussNone(sthing((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys maybe_statusssConnection: \(.*\)csg}xjtt|D]S}||ddjo!|d||d|d is 127.0.0.1sfnordi'ssportiUsresolvers logger_objectias-pcs7ytiWntj o nXdS(N(sasyncoresloopsKeyboardInterrupt(((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys profile_loopssprofile_loop()s profile.out(@sRCS_IDsossregexssocketsstatsstringssysstimesasyncoresasynchats http_dates producerssstatus_handlersloggerssplitsVERSION_STRINGscounters http_requests async_chats http_channels dispatchers http_servers maybe_statusscompilescasefolds CONNECTIONs join_headerss get_headersREQUESTs crack_requestsfifoscompute_timezone_for_logs tz_for_logs__name__slensargvsmonitorsfilesyssdefault_handlers ftp_servers chat_serversresolverscaching_resolversrss file_loggersstdoutslgssecure_monitor_serversmss os_filesystemsfssdhsatoishssinstall_handlersdummy_authorizersftpscssstatus_extensionsshs profile_loopsprofilesrunsloop(-sasyncores join_headersscompute_timezone_for_logsstatsfifoscss http_dates chat_serversfilesyss http_channelsregexslgsVERSION_STRINGsasynchatsmonitorsrssRCS_IDsdefault_handlers profile_loopsloggers get_headersprofiles http_requestsfssstringsdhsftpshsstimesREQUESTs maybe_statuss producerssstatus_handlersresolverssyss ftp_serverssocketscounters crack_requests CONNECTIONsshs http_serversmss tz_for_logsos((sJ/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/http_server.pys? sv              ,              (  !