Ñò KUc@sÚddkZddkZddkZddkZdZdZdZdZdZdZ dZ dZ dZ d Z d Zd Zd Zd ZdZdZdZeZdd,d„ƒYZd„Zdd-d„ƒYZdd.d„ƒYZd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#d „Z$d!„Z%d"„Z&d#„Z'd$„Z(d%„Z)d&„Z*d'„Z+e,d(joRe-Zd)GHe+e.ei/ƒdjoei/dpd*eeƒZ0ei1d+ƒndS(/iÿÿÿÿNiiiiiÿiii i i i iii!tDNSQueryHeadercBs2eZdZd„Zd„Zd„Zd„ZRS(s!HBBHHHHcCsyd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS(Ni( tdns_idtdns_rdtdns_tctdns_aat dns_opcodetdns_qrt dns_rcodetdns_ztdns_rat dns_qdcountt dns_ancountt dns_nscountt dns_arcount(tself((s"/usr/share/authconfig/dnsclient.pyt__init__0s            c Csœtiti|i|id@|id@d>B|id@d>B|id@d>B|i d@d>B|i d@|i d@d>B|i d@d>B|i |i|i|iƒS(Niiiiii(tstructtpackRtFORMATRRRRRRRRR R R R R (R((s"/usr/share/authconfig/dnsclient.pyR?s 7c CsÊtiti|d|iƒ!ƒ\|_}}|_|_|_|_ |d@|_ |d?d@|_ |d?d@|_ |d?d@|_ |d?d@|_|d@|_|d?d@|_|d?d@|_dS(Niiiiiii(RtunpackRRtsizeRR R R R RRRRRRRR (Rtdatatbyte1tbyte2((s"/usr/share/authconfig/dnsclient.pyROsF  cCstitiƒS(N(RtcalcsizeRR(R((s"/usr/share/authconfig/dnsclient.pyR[s(t__name__t __module__RRRRR(((s"/usr/share/authconfig/dnsclient.pyR.s    cCstƒ}|i|ƒ|S(N(RR(Rtheader((s"/usr/share/authconfig/dnsclient.pytunpackQueryHeader^s  t DNSResultcBsAeZdZdZd„Zd„Zd„Zd„Zd„ZRS(s!HHIHs!HHcCs:d|_d|_d|_d|_d|_d|_dS(Nti(tdns_nametdns_typet dns_classtdns_ttlt dns_rlengthtNonetrdata(R((s"/usr/share/authconfig/dnsclient.pyRfs      cCs>titi|d|iƒ!ƒ\|_|_|_|_dS(Ni( RRRRRR R!R"R#(RR((s"/usr/share/authconfig/dnsclient.pyRnscCs2titi|d|iƒ!ƒ\|_|_dS(Ni(RRRtQFORMATtqsizeR R!(RR((s"/usr/share/authconfig/dnsclient.pytqunpackrscCstitiƒS(N(RRRR(R((s"/usr/share/authconfig/dnsclient.pyRuscCstitiƒS(N(RRRR&(R((s"/usr/share/authconfig/dnsclient.pyR'xs( RRRR&RRR(RR'(((s"/usr/share/authconfig/dnsclient.pyRcs    tDNSRDatacBseZd„ZRS(cCsdS(N((R((s"/usr/share/authconfig/dnsclient.pyR|s(RRR(((s"/usr/share/authconfig/dnsclient.pyR){scCsDd}|idƒ}x(|D] }|tt|ƒƒ|7}qW|S(NRt.(tsplittchrtlen(tnametouttpart((s"/usr/share/authconfig/dnsclient.pytdnsNameToLabel±s cCs²tƒ}d|_d|_d|_d|_d|_t|ƒ}|pdS|iƒ|}|t|d?ƒ7}|t|d@ƒ7}|t|d?ƒ7}|t|d@ƒ7}|S(NiiRiiÿ( RRRRRR R1RR,(tquerytqclasstqtypeRtqlabelR/((s"/usr/share/authconfig/dnsclient.pytdnsFormatQuery¸s       c Cs)|pd Sd}|}d}d}yÜxÕt|dƒoÃt|dƒd@oL|t|dƒd@d>t|dƒ}|o|d7}nd}q*n||dt|dƒd!d7}|o|t|dƒd7}n|t|dƒd}q*WWntj od SX||||fS( NRiiiÀi?iiR*(RN(RN(R$tordt IndexError(tlabeltbasetupdatetresttoutputtskip((s"/usr/share/authconfig/dnsclient.pyt dnsParseLabelÍs,*#!cCsÃtƒ}t|ƒdjod|_dSt|dƒd>t|dƒd>Bt|dƒd>Bt|dƒd>B|_toAd t|dƒt|dƒt|dƒt|dƒfGHn|S( NiiiiiiiisA = %d.%d.%d.%d.(R)R-taddressR$R7tDEBUG_DNSCLIENT(RR:R%((s"/usr/share/authconfig/dnsclient.pyt dnsParseAçs  MAcCsat|ƒdjodSt|dƒ}t|ƒ|djodS||d|d|d!fS(NiRi(RN(RN(R-R$R7(Rttlen((s"/usr/share/authconfig/dnsclient.pyt dnsParseTextós cCs<tƒ}t||ƒ\}|_tod|iGHn|S(NsNS DNAME = "%s".(R)R?tnsdnameRA(RR:R%R<((s"/usr/share/authconfig/dnsclient.pyt dnsParseNSûs  cCs<tƒ}t||ƒ\}|_tod|iGHn|S(Ns CNAME = "%s".(R)R?tcnameRA(RR:R%R<((s"/usr/share/authconfig/dnsclient.pyt dnsParseCNAMEs  cCs*tƒ}d}t||ƒ\}|_|idjodSt||ƒ\}|_|idjodSt|ƒti|ƒjodSti||ti|ƒ ƒ\|_ |_ |_ |_ |_ toXd|iGHd|iGHd|i GHd|i GHd|i GHd|i GHd|i GHn|S( Ns!IIIIIsSOA(mname) = "%s".sSOA(rname) = "%s".sSOA(serial) = %d.sSOA(refresh) = %d.sSOA(retry) = %d.sSOA(expire) = %d.sSOA(minimum) = %d.(R)R?tmnameR$trnameR-RRRtserialtrefreshtretrytexpiretminimumRA(RR:R%tformatR<((s"/usr/share/authconfig/dnsclient.pyt dnsParseSOA s( =      cCsdS(N(R$(RR:((s"/usr/share/authconfig/dnsclient.pyt dnsParseNULL#scCsdS(N(R$(RR:((s"/usr/share/authconfig/dnsclient.pyt dnsParseWKS'scCsetƒ}t|ƒ\}|_|ot|ƒ\}|_ntod|iGHd|iGHn|S(NsHINFO(cpu) = "%s".sHINFO(os) = "%s".(R)RDtcputosRA(RR:R%R<((s"/usr/share/authconfig/dnsclient.pyt dnsParseHINFO*s  cCs‰tƒ}t|ƒdjodSt|dƒd>t|dƒB|_t|d|ƒ\}|_tod|iGHd|iGHn|S(NiiiisMX(exchanger) = "%s".sMX(preference) = %d.(R)R-R$R7t preferenceR?texchangeRA(RR:R%R<((s"/usr/share/authconfig/dnsclient.pyt dnsParseMX4s % cCs9tƒ}t|ƒ\}|_tod|iGHn|S(Ns TXT = "%s".(R)RDRRA(RR:R%R<((s"/usr/share/authconfig/dnsclient.pyt dnsParseTXT?s  cCs<tƒ}t||ƒ\}|_tod|iGHndS(Ns PTR = "%s".(R)R?tptrdnameRA(RR:R%R<((s"/usr/share/authconfig/dnsclient.pyt dnsParsePTRFs cCs¹tƒ}d}ti|ƒ}t|ƒ|jodSti||| ƒ\|_|_|_t |||ƒ\}|_ t o4d|i GHd|iGHd|iGHd|iGHn|S(Ns!HHHsSRV(server) = "%s".sSRV(weight) = %d.sSRV(priority) = %d.sSRV(port) = %d.( R)RRR-R$RtprioritytweighttportR?tserverRA(RR:R%RPtflenR<((s"/usr/share/authconfig/dnsclient.pyt dnsParseSRVLs (   cCsäyt|ƒ}Wntij ogSX|idjogS|idjogS||iƒ}g}x±t|iƒD] }|pgStƒ}t ||ƒ\}}|djogSt |ƒ|i ƒjogS|i |ƒ||i ƒ}tod||i|ifGHqzqzWx«t|i|i|iƒD]Œ}t ||ƒ\}}|djogStƒ}||_t |ƒ|iƒjogS|i|ƒ||iƒ}to(d||i|i|i|ifGHnt |ƒ|ijoto dGHngSh tt6tt6tt6tt6t t!6t"t#6t$t%6t&t'6t(t)6t*t+6t,t-6}|i|jotod|iGHq®n!||i||i |ƒ|_.||i}||g7}q<W|p |g}n|S(Niis(Queried for '%s', class = %d, type = %d.s4Answer %d for '%s', class = %d, type = %d, ttl = %d.sAnswer too short.s#Don't know how to parse RR type %d!(/RRterrorRRRtxrangeR RR?R$R-R'R(RAR!R R R R RRR"R#RBtDNS_T_ARFtDNS_T_NSRHt DNS_T_CNAMERQt DNS_T_SOARRt DNS_T_NULLRSt DNS_T_WKSR\t DNS_T_PTRRVt DNS_T_HINFORYtDNS_T_MXRZt DNS_T_TXTRbt DNS_T_SRVR%(tresultsRR<trrlisttitrrR9tfmap((s"/usr/share/authconfig/dnsclient.pytdnsParseResults\sv            cCsCt|||ƒ}|pgSti|ƒ}|pgSt|ƒS(N(R6tacutiltres_sendRu(R2R3R4tqdatatanswer((s"/usr/share/authconfig/dnsclient.pyR2¯st__main__sSending query.sdevserv.devel.redhat.com.i((((2RtsockettsysRvtDNS_C_INtDNS_C_CSt DNS_C_CHAOStDNS_C_HSt DNS_C_ANYReRfRgRhRiRjRkRlRmRnRot DNS_T_ANYtFalseRARRRR)R1R6R?RBRDRFRHRQRRRSRVRYRZR\RbRuR2RtTrueR-targvRstexit(((s"/usr/share/authconfig/dnsclient.pyts`    0 6             S *