-í ™º‘;csrdZdkZdkZdkZdkZdkZdklZeieƒdZ8dd„Z Edd„Z Rd„Z ad„Z od „Z ‹d „Z¢d „ZÇd eifd „ƒYZdefd„ƒYZ*dfd„ƒYZ2defd„ƒYZˆedjo2‰dkZŠeeiƒdjo'‹deidGHŒeidƒn^deijoAŽeiidƒZeiedZeieed5n ’dZ”deijo/•dZ–eiidƒZ—eie=n ™dZ›deijo œdZeiidƒn ŸdZ¡eo¢eeƒZn¤eeƒZ¦eeiƒda ¨d„Z!¯xmeidD¯][Z"°eo±ei#e"e!ƒn5²eo³ei$e"e!ƒnµei%e"e!ƒqËW¸x7¸ei&o)¹ei'dƒºdeei(ƒGHq3WndS(s6$Id: resolver.py,v 1.4 2000/09/09 22:44:06 adamf Exp $N(scounteriicsb89dt|d?d@ƒt|d@ƒfdtitd„?ti|dƒƒ@dƒSdS(Ns%c%ciiÿs%scs>dtt|ƒƒ|fS(Ns%c%s(schrslenspart(spart((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys>ss.s(schrsidsstringsjoinsmapssplitshost(shostsid((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pysfast_address_request8s:csbEFdt|d?d@ƒt|d@ƒfdtitd„Lti|dƒƒMdƒSdS(Ns%c%ciiÿs%s csKdtt|ƒƒ|fS(Ns%c%s(schrslenspart(spart((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pysKss.s(schrsidsstringsjoinsmapssplitshost(shostsid((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pysfast_ptr_requestEs:csÍRSg}Tx¤Tdo™Ut||ƒ}V|d@o'X|dd>@t||dƒ}nNY|djoZPn6\|d}]|i||||!ƒ^||}qW_ti|dƒSdS(NiiÀi?iis.(snsordsrspossllsappendsstringsjoin(srspossnsll((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys unpack_nameRs  ' cs’ab|}cxucdojdt||ƒ}e|d@og|dSn7h|djoi|d}jPnl||d}qWm|SdS(NiiÀii(spossssordsrsll(srspossssll((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys skip_nameas   cs1optd„rtt|||d!ƒƒSdS(Ncsq|d>|BS(Ni(sxsy(sxsy((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pysqsi(sreducesmapsordsrspos(srspos((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys unpack_ttlos c s;‹Œt|dƒd>t|dƒ}t|dƒd}|oâ“xËt|ƒD“]º}”t||ƒ}•|||d!djo@–t||dƒdtt t||d|d !ƒƒfSn›|d}œt||ƒd>t||d ƒ}|d |}qXWžd t fSn d t fSdS( Niiii iss %d.%d.%d.%di iiii( sordsrsancounts skip_namespossrangesans unpack_ttlstuplesmapsrdlengthsNone(srspossansancountsrdlength((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pysunpack_address_reply‹s%  @ )cs&¢£t|dƒd>t|dƒ}¦t|dƒd}§|oͪx¶t|ƒDª]¥}«t||ƒ}¬|||d!djo+­t||dƒt||dƒfSn²|d}³t||ƒd>t||dƒ}´|d |}qXWµd t fSn·d t fSdS( Niiii is i iii( sordsrsancounts skip_namespossrangesans unpack_ttls unpack_namesrdlengthsNone(srspossansancountsrdlength((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pysunpack_ptr_reply¢s%  + )sresolvercsŒÇÈeƒZÉdd„ZÐd„ZÓd„ZÖd„ZÚd„Zàd„Zãd„Zðd „Z úd „Z d „Z RS( Ns 127.0.0.1cscÉÊtii|ƒË|ititiƒÌ||_Íh|_ Ît t i ƒƒ|_ dS(N( sasyncores dispatchers__init__sselfs create_socketssocketsAF_INETs SOCK_DGRAMsservers request_mapsintstimeslast_reap_time(sselfsserver((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys__init__És   csÐÑdSdS(Ni((sself((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pyswritableÐscs ÓÔdS(N((sselfsargs((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pyslogÓscs$Ö×|idƒØ|iƒdS(Nsclosing!(sselfslog_infosclose(sself((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys handle_closeÖscsNÚÛtiƒ\\}}}}}}Ü|i d|||fÞdƒdS(Ns"Problem with DNS lookup (%s:%s %s)serror( sasyncorescompact_tracebacksfilesfunslinestsvstbinfosselfslog_info(sselfstbinfostsfilesvsfunsline((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys handle_errorÚs$csàá|iiƒdd>SdS(Nii(sselfsidsas_long(sself((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pysget_idàsc sãättiƒƒ} å| |idjoÒæ| |_çx¼|iiƒDç]¨\} \}} }}è| |djo|é|i| =êyë||dt ƒWnNìít iƒ\\}}} }}}î|id|||fdƒnXnqNWndS(Ni´is%s %s %sserror(sintstimesnowsselfslast_reap_times request_mapsitemsskshostsunpackscallbackswhensNonesasyncorescompact_tracebacksfilesfunslinestsvstbinfoslog_info( sselfstbinfosvswhenscallbackshoststsfilesfunslinesnowsunpacksk((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pysreapãs  $csƒðñ|iƒò|iit||iƒƒô|idfƒö|t|t t i ƒƒf|i |iƒ<ø|i iƒdS(Ni5(sselfsreapssocketssendtosfast_address_requestshostsget_idsserversunpack_address_replyscallbacksintstimes request_mapsids increment(sselfshostscallback((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pysresolveðs  .cs¾úû|iƒüti|dƒ}ý|iƒþti|dƒd}ÿ|ii t ||i ƒƒ|i dfƒ|t |ttiƒƒf|i|i ƒ<|iiƒdS(Ns.s .in-addr.arpai5(sselfsreapsstringssplitshostsipsreversesjoinssocketssendtosfast_ptr_requestsget_idsserversunpack_ptr_replyscallbacksintstimes request_mapsids increment(sselfshostscallbacksip((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys resolve_ptrús  .cs |iidƒ\} } t| dƒd>t| dƒ} |ii|ƒo­ |i|\}}}}|i|=|| ƒ\} } y||| | ƒWnNtiƒ\\} }}} }}|id| ||fdƒnXndS(Niiiis%s %s %sserror(sselfssocketsrecvfromsreplyswhencesordsids request_mapshas_keyshostsunpackscallbackswhensttlsanswersasyncorescompact_tracebacksfilesfunslinestsvstbinfoslog_info(sselfstbinfosfunslinesvswhenswhencescallbackshoststsfilesttlsanswersreplysunpacksid((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys handle_reads% $( scountersids__init__swritableslogs handle_closes handle_errorsget_idsreapsresolves resolve_ptrs handle_read(((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pysresolverÇs       srblcsd„Z#d„ZRS(Ncs¥ti|dƒ}|iƒti|dƒd}|iit ||i ƒƒ|i dfƒ ||i |f|i|i ƒ<!|iiƒdS(Ns.s.rbl.maps.vix.comi5(sstringssplitshostsipsreversesjoinsselfssocketssendtosfast_ptr_requestsget_idsservers check_replyscallbacks request_mapsids increment(sselfshostscallbacksip((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys resolve_mapss "csK#%t|dƒd@}&|id|t|ƒfƒ'd|fSdS(NiisMAPS RBL; RCODE =%02x %si(sordsrsrcodesselfslog_infosrepr(sselfsrsrcode((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys check_reply#s (s resolve_mapss check_reply(((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pysrbls shooked_callbackcs*+d„Z.d„ZRS(Ncs"+,||f\|_|_dS(N(shookscallbacksself(sselfshookscallback((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys__init__+scs-./t|i|ƒ0t|i|ƒdS(N(sapplysselfshooksargsscallback(sselfsargs((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys__call__.s(s__init__s__call__(((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pyshooked_callback*s scaching_resolvercsW2dZ35d„Z=d„ZNd„Z_d„ZbdeZdd„ZRS(sCCache DNS queries. Will need to honor the TTL value in the repliescs`56tti|ƒ7|d}8h|_9tƒ|_:tƒ|_;tƒ|_ dS(Ni( sapplysresolvers__init__sargssselfscachescountersforward_requestssreverse_requestss cache_hits(sargssself((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys__init__5s   cs˜=>|iiƒ?|ii|ƒo@@|i|\}}}B||||ƒC|i iƒn,Et i |G|Ht |iJ|ƒƒdS(N(sselfsforward_requestss incrementscacheshas_keyshostswhensttlsanswerscallbacks cache_hitssresolversresolveshooked_callbacks callback_hook(sselfshostscallbacksttlsanswerswhen((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pysresolve=s  cs˜NO|iiƒP|ii|ƒo@Q|i|\}}}S||||ƒT|i iƒn,Vt i |X|Yt |i[|ƒƒdS(N(sselfsreverse_requestss incrementscacheshas_keyshostswhensttlsanswerscallbacks cache_hitssresolvers resolve_ptrshooked_callbacks callback_hook(sselfshostscallbacksttlsanswerswhen((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys resolve_ptrNs  cs&_`tiƒ||f|i|%ss
Server: %ss
Cache Entries: %ds
Outstanding Requests: %ds
Forward Requests: %ss
Reverse Requests: %ss
Cache Hits: %s( sstatus_handlers producersssimple_producersselfs SERVER_IDENTsserverslenscaches request_mapsforward_requestssreverse_requestss cache_hits(sselfs producerssstatus_handler((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pysstatusds  (s__doc__s__init__sresolves resolve_ptrs callback_hooksVERSIONs SERVER_IDENTsstatus(((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pyscaching_resolver2s      s__main__is/usage: %s [-r] [-s ] host [host ...]s-ss 127.0.0.1s-rs-mcsE¨©ªd||fGH«tda¬t o­tiƒndS(Ns%s: %si(shostsanswerscountsrsclose(shoststtlsanswer((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pysprint_it¨s   f30.0srequests outstanding: %d()sRCS_IDsstringsasyncoressocketssysstimescounterssplitsVERSIONsfast_address_requestsfast_ptr_requests unpack_names skip_names unpack_ttlsunpack_address_replysunpack_ptr_replys dispatchersresolversrblshooked_callbackscaching_resolvers__name__slensargvsexitsindexsisserversreversesmapssremovesrscountsprint_itshosts resolve_ptrs resolve_mapssresolves socket_mapspolls request_map(srs unpack_namesasyncoresstringshooked_callbacksprint_itssysshostsVERSIONsresolversfast_ptr_requestsunpack_ptr_replys unpack_ttlsreversessocketsunpack_address_replysisRCS_IDscountersservers skip_namesmapssrblscaching_resolverstimesfast_address_request((sG/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/resolver.pys?sj      "      %OV