/usr/lib/rads/venv/lib/python3.13/site-packages/dns/__pycache__
NameSizeModeActions
asyncbackend.cpython-313.pyc34550644editdlrm
asyncquery.cpython-313.pyc376610644editdlrm
asyncresolver.cpython-313.pyc208710644editdlrm
dnssec.cpython-313.pyc514610644editdlrm
dnssectypes.cpython-313.pyc20700644editdlrm
e164.cpython-313.pyc48490644editdlrm
edns.cpython-313.pyc258940644editdlrm
entropy.cpython-313.pyc61100644editdlrm
enum.cpython-313.pyc49300644editdlrm
exception.cpython-313.pyc74740644editdlrm
flags.cpython-313.pyc30980644editdlrm
grange.cpython-313.pyc17750644editdlrm
immutable.cpython-313.pyc38280644editdlrm
inet.cpython-313.pyc65810644editdlrm
ipv4.cpython-313.pyc27190644editdlrm
ipv6.cpython-313.pyc69210644editdlrm
message.cpython-313.pyc859310644editdlrm
name.cpython-313.pyc490600644editdlrm
namedict.cpython-313.pyc43540644editdlrm
nameserver.cpython-313.pyc147060644editdlrm
node.cpython-313.pyc163490644editdlrm
opcode.cpython-313.pyc31400644editdlrm
query.cpython-313.pyc645170644editdlrm
rcode.cpython-313.pyc44530644editdlrm
rdata.cpython-313.pyc386500644editdlrm
rdataclass.cpython-313.pyc35370644editdlrm
rdataset.cpython-313.pyc226570644editdlrm
rdatatype.cpython-313.pyc102390644editdlrm
renderer.cpython-313.pyc159450644editdlrm
resolver.cpython-313.pyc880070644editdlrm
reversename.cpython-313.pyc46930644editdlrm
rrset.cpython-313.pyc123170644editdlrm
serial.cpython-313.pyc54210644editdlrm
set.cpython-313.pyc121210644editdlrm
tokenizer.cpython-313.pyc265250644editdlrm
transaction.cpython-313.pyc288830644editdlrm
tsig.cpython-313.pyc171680644editdlrm
tsigkeyring.cpython-313.pyc28710644editdlrm
ttl.cpython-313.pyc25350644editdlrm
update.cpython-313.pyc161190644editdlrm
version.cpython-313.pyc7620644editdlrm
versioned.cpython-313.pyc148000644editdlrm
win32util.cpython-313.pyc99290644editdlrm
wire.cpython-313.pyc55500644editdlrm
xfr.cpython-313.pyc146710644editdlrm
zone.cpython-313.pyc662180644editdlrm
zonefile.cpython-313.pyc343180644editdlrm
zonetypes.cpython-313.pyc14160644editdlrm
_asyncbackend.cpython-313.pyc49850644editdlrm
_asyncio_backend.cpython-313.pyc145780644editdlrm
_ddr.cpython-313.pyc79590644editdlrm
_features.cpython-313.pyc32360644editdlrm
_immutable_ctx.cpython-313.pyc33350644editdlrm
_trio_backend.cpython-313.pyc137510644editdlrm
__init__.cpython-313.pyc7020644editdlrm
Edit: /usr/lib/rads/venv/lib/python3.13/site-packages/dns/__pycache__/message.cpython-313.pyc (85931B)
jY L SrSSKrSSKrSSKrSSKrSSKJrJrJrJ r J r J r J r SSK rSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKr"SS\R@RB5r""SS\R@RB5r#"SS \R@RH5r%"S S \R@RB5r&"S S \R@RB5r'"SS\R@RH5r("SS\R@RH5r)"SS\R@RH5r*"SS\R@RH5r+"SS\R@RH5r,"SS\R@RZ5r."SS\RR^5r0"SS5r1Sr2Sr3\ \4\RjRl\RnRp\RrRt\ \RrRt\ \RnRp4r;\\;\RxRz4r>\ \4\?\\RxRz4r@"S S!5rA"S"S#5rB"S$S%\A5rCS&rDS'rE"S(S)5rFSXS+\GS,\ \S-\ \GS.\HS/\ \RjRlS0\ \ \RR\RR4S1\HS2\HS3\HS4\HS5\HS6\HS7\A4S8jjrL"S9S:5rMSYS;\?S<\ \RjRS3\HS/\ \RjRlS=\HS>\ \RjRlS7\A4S?jjrOSZS@\S<\ \RjRS3\HS7\A4SAjjrP\RnRSS*SSSSSS\RRS4 SB\ \RjRl\?4SC\ \RrRt\?4SD\ \RnRp\?4SE\ \ \4\H4SF\HSG\ \4SH\ \4SI\ \4SJ\ \\RRS<\ \RjRSK\ \4SL\4SM\4S7\C4SNjjrV"SOSP\R5rXS[SQ\ASR\HSS\4ST\4SU\4SM\ \4SV\ \XS7\A4SWjjrY\0RrZ\0Rr[\0Rr\\0Rr]g)\z DNS MessagesN)AnyDictListOptionalTupleUnioncastc\rSrSrSrSrg) ShortHeader.z2The DNS packet passed to from_wire() is too short.N__name__ __module__ __qualname____firstlineno____doc____static_attributes__r >/usr/lib/rads/venv/lib/python3.13/site-packages/dns/message.pyr r .s[TU]"U0UD6 gN)super__init__)selfargskwargs __class__s rr.Truncated.__init__Ps $)&)rc URS$)zRAs much of the message as could be processed. Returns a ``dns.message.Message``. r*)r1r/s rr*Truncated.messageSs {{9%%rr ) rrrrr supp_kwargsr.r*r __classcell__)r2s@rr(r(Is$+K*&&rr(c\rSrSrSrSrg)NotQueryResponse[z%Message is not a response to a query.r Nrr rrr:r:[s/rr:c\rSrSrSrSrg) ChainTooLong_zThe CNAME chain is too long.r Nrr rrr=r=_s&rr=c\rSrSrSrSrg)AnswerForNXDOMAINcz.The rcode is NXDOMAIN but an answer was found.r Nrr rrr@r@cs8rr@c\rSrSrSrSrg)NoPreviousNamegzNo previous name was known.r Nrr rrrCrCgs%rrCc8\rSrSrSrSrSrSrSr\ S5r Sr g ) MessageSectionkzMessage sectionsrcgNrJr )clss r_maximumMessageSection._maximumssrr N) rrrrrQUESTIONANSWER AUTHORITY ADDITIONAL classmethodrNrr rrrFrFks+H FIJrrFc&\rSrSrS\S\4SjrSrg) MessageErrorx exceptionoffsetcXlX lgr,rXrY)r/rXrYs rr.MessageError.__init__ys " rr[N)rrrr Exceptionintr.rr rrrVrVxs)SrrVic0 \rSrSrSr\rS^S\\4Sjjr \ S\ \ RR4Sj5r\R S5r\ S\ \ RR4S j5r\R S 5r\ S\ \ RR4S j5r\R S 5r\ S\ \ RR4S j5r\R S5rSrSrS_S\\ R,R.S\S\\\4S\4SjjrSrSrSSS\4SjrS\ \ RRS\4Sjr S\S\ \ RR4Sjr!\ RDRFSSSS4S\$S\ R,R.S\ RJRLS \ RDRNS!\ RDRNS"\\ RJRLS#\S$\S%\\ R,RPS\ RR4S&jjr)\ RDRFSSSS4S\$S\ R,R.S\ RJRLS \ RDRNS!\ RDRNS"\\ RJRLS#\S$\S%\\ R,RPS\\ RR4S'jjr*S\$S\4S(jr+S\4S)jr,S\4S*jr-S`S\\ R,R.S,\S-\S.\\S/\S0\S\\\4S\.4S1jjr/\0S25r1SS3SS+S4\ RdRf4S5\S6\\4\ R,R.\4S7\S8\\S9\S:\.S;\4\ R,R.\4SS4S<jjr5\ S\\ R,R.4S=j5r6\ S\\ R,R.4S>j5r7\ S\\.4S?j5r8\ S\\4S@j5r9\ S\4SAj5r:\0S+\;S4SBj5r)reprrcr5s r__repr__Message.__repr__s"T$'']2S88rc"UR5$r,)to_textr5s r__str__Message.__str__s||~rrq relativizekwc [R"5nURSUR-5 URS[R R UR 55S35 URS[RR UR55S35 URS[RR UR5S35 URS:aURSURS35 URS:wa<URS[RRUR5S35 URS UR-5 URH&nURS UR 5S35 M( URRR!5HeupgURS US35 UR#U5H6nURUR "X40UD65 URS5 M8 Mg UR%5S S $)zConvert the message to text. The *origin*, *relativize*, and any other keyword arguments are passed to the RRset ``to_wire()`` method. Returns a ``str``. zid %d zopcode  zrcode zflags rzedns zeflags z payload %d zoption ;N)ioStringIOwritercreopcoderrcoderhedns ednsflags edns_to_textpayloadoptions _section_enum __members__itemssection_from_numbergetvalue) r/rqrrsrjnamewhichrrsets rrMessage.to_texts KKM  DGG#$ '#**,,T[[]; GGeDII;b) *~~"'#))"8"8"H!ILM GGNT\\1 2<>"a' ::   + + A&A % rrc[UR5Hup#XLdM URU5s $ [S5e)zReturn the "section number" of the specified section for use in indexing. *section* is one of the section attributes of this message. Raises ``ValueError`` if the section isn't known. Returns an ``int``. zunknown section)rrir ValueError)r/rr our_sections rsection_numberMessage.section_number7s>( 6NA%))!,,7*++rnumbercVURRU5nURU$)zReturn the section list associated with the specified section number. *number* is a section number `int` or the text form of a section name. Raises ``ValueError`` if the section isn't known. Returns a ``list``. )rmakeri)r/rrs rrMessage.section_from_numberGs)$$))&1}}W%%rFrrdclassrdtypecoversdeletingcreate force_unique idna_codecc "[U[5(aUn URU 5nOS[U[5(a-URR U5n URU 5nOUR U5n [U[5(a[RR X)S9n[RRRU5n[RRRU5n[RRRU5nUb)[RRRU5nXX4XV4n U(dSURb!URRU 5n U bU $O%UHn U R!X#XEU5(dMU s $ U(d["e[R$R'X#XEU5n UR)U 5 URbXRU 'U $)aFind the RRset with the given attributes in the specified section. *section*, an ``int`` section number, a ``str`` section name, or one of the section attributes of this message. This specifies the the section of the message to search. For example:: my_message.find_rrset(my_message.answer, name, rdclass, rdtype) my_message.find_rrset(dns.message.ANSWER, name, rdclass, rdtype) my_message.find_rrset("ANSWER", name, rdclass, rdtype) *name*, a ``dns.name.Name`` or ``str``, the name of the RRset. *rdclass*, an ``int`` or ``str``, the class of the RRset. *rdtype*, an ``int`` or ``str``, the type of the RRset. *covers*, an ``int`` or ``str``, the covers value of the RRset. The default is ``dns.rdatatype.NONE``. *deleting*, an ``int``, ``str``, or ``None``, the deleting value of the RRset. The default is ``None``. *create*, a ``bool``. If ``True``, create the RRset if it is not found. The created RRset is appended to *section*. *force_unique*, a ``bool``. If ``True`` and *create* is also ``True``, create a new RRset regardless of whether a matching RRset exists already. The default is ``False``. This is useful when creating DDNS Update messages, as order matters for them. *idna_codec*, a ``dns.name.IDNACodec``, specifies the IDNA encoder/decoder. If ``None``, the default IDNA 2003 encoder/decoder is used. Raises ``KeyError`` if the RRset was not found and create was ``False``. Returns a ``dns.rrset.RRset object``. r)rr^rstrr from_textrrer rdatatype RdataTyper rdataclass RdataClassrsget full_matchKeyErrorrRRsetappend) r/rrrrrrrrrrkeyrs r find_rrsetMessage.find_rrsetVsh gs # #$N..~>G  % %!//99'BN..~>G!009N dC 88%%d%BD((--f5..++009((--f5  ~~0055h?HWfGzz% s+$ L%%E''vxPP$ %N vxHu :: !#JJsO rc `URUUUUUUUUU 5 n U $![a Sn U $f=f)aGet the RRset with the given attributes in the specified section. If the RRset is not found, None is returned. *section*, an ``int`` section number, a ``str`` section name, or one of the section attributes of this message. This specifies the the section of the message to search. For example:: my_message.get_rrset(my_message.answer, name, rdclass, rdtype) my_message.get_rrset(dns.message.ANSWER, name, rdclass, rdtype) my_message.get_rrset("ANSWER", name, rdclass, rdtype) *name*, a ``dns.name.Name`` or ``str``, the name of the RRset. *rdclass*, an ``int`` or ``str``, the class of the RRset. *rdtype*, an ``int`` or ``str``, the type of the RRset. *covers*, an ``int`` or ``str``, the covers value of the RRset. The default is ``dns.rdatatype.NONE``. *deleting*, an ``int``, ``str``, or ``None``, the deleting value of the RRset. The default is ``None``. *create*, a ``bool``. If ``True``, create the RRset if it is not found. The created RRset is appended to *section*. *force_unique*, a ``bool``. If ``True`` and *create* is also ``True``, create a new RRset regardless of whether a matching RRset exists already. The default is ``False``. This is useful when creating DDNS Update messages, as order matters for them. *idna_codec*, a ``dns.name.IDNACodec``, specifies the IDNA encoder/decoder. If ``None``, the default IDNA 2003 encoder/decoder is used. Returns a ``dns.rrset.RRset object`` or ``None``. N)rr) r/rrrrrrrrrrs r get_rrsetMessage.get_rrsetsSf OO E  E  s  --c[U[5(aUnURU5nOS[U[5(a-URR U5nURU5nOUR U5n[SU55nU[R:Xa$URbUS- nURbUS- nU$)azReturns the number of records in the specified section. *section*, an ``int`` section number, a ``str`` section name, or one of the section attributes of this message. This specifies the the section of the message to count. For example:: my_message.section_count(my_message.answer) my_message.section_count(dns.message.ANSWER) my_message.section_count("ANSWER") c3L# UHn[S[U55v M g7f)rHN)maxr).0rrss r (Message.section_count..s8C3s8$$s"$rH) rr^rrrrrsumrFrSrjrn)r/rrcounts r section_countMessage.section_counts gs # #$N..~>G  % %!//99'BN..~>G!009N888 ^66 6xx# yy$  rcUR(dgSnURSRH$nUR5nU[U5S-- nM& UR(aUS- nU$)z:Compute the size required for the OPT RR, padding excludedr )rjrto_wirerrl)r/sizeoptionrvs r_compute_opt_reserveMessage._compute_opt_reserve s`xx hhqk))F>>#D CIM !D* 88 AID rcUR(dg[R"5nURRU5 [ UR 55$)z)Compute the size required for the TSIG RRr)rnrBytesIOrrr)r/fs r_compute_tsig_reserveMessage._compute_tsig_reserves<yy JJL !1::<  rrmax_sizemultirrprepend_lengthprefer_truncationc UcURb URnUS:XaURS:wa URnOSnUS:aSnOUS:aSn[RR UR UR X!5nUR5n URU 5 UR5n URU 5 URH4n URU RU RU R5 M6 URH/n UR "[RR"U 40UD6 M1 UR$H/n UR "[RR&U 40UD6 M1 UR(H/n UR "[RR*U 40UD6 M1 UR55 UR6b'UR9UR6UR:X5 UR=5 UR>b[R>RAURC5URDUR>S[G[HRH"55URJUU5upUR>RM5 UR>ROU 5 UR![RR*UR>5 UR=5 U(aXl(URC5nXl)U(a[UU5RWSS5U-nU$![R,R.aa U(aXUR0[RR*:a-U=R [R R2-slGNef=f)aReturn a string containing the message in DNS compressed wire format. Additional keyword arguments are passed to the RRset ``to_wire()`` method. *origin*, a ``dns.name.Name`` or ``None``, the origin to be appended to any relative names. If ``None``, and the message has an origin attribute that is not ``None``, then it will be used. *max_size*, an ``int``, the maximum size of the wire format output; default is 0, which means "the message's request payload, if nonzero, or 65535". *multi*, a ``bool``, should be set to ``True`` if this message is part of a multiple message sequence. *tsig_ctx*, a ``dns.tsig.HMACTSig`` or ``dns.tsig.GSSTSig`` object, the ongoing TSIG context, used when signing zone transfers. *prepend_length*, a ``bool``, should be set to ``True`` if the caller wants the message length prepended to the message itself. This is useful for messages sent over TCP, TLS (DoT), or QUIC (DoQ). *prefer_truncation*, a ``bool``, should be set to ``True`` if the caller wants the message to be truncated if it would otherwise exceed the maximum length. If the truncation occurs before the additional section, the TC bit will be set. Raises ``dns.exception.TooBig`` if *max_size* was exceeded. Returns a ``bytes``. riirIbig),rqrkrerendererRendererrcrhrreserverr{ add_questionrrrr add_rrsetrQrrRrrSrXTooBigrTCrelease_reservedrjadd_optrl write_headerrnsignget_wirermr^ruroclearaddrrrvrto_bytes)r/rqrrrrrrrr opt_reserve tsig_reservernew_tsigctxrvs rrMessage.to_wire*sX >dkk5[[F q=##q(//  c>H  H LL ! !$''4::x H//1  +113  , uzz5<<G' CLL//="=% CLL22E@R@( CLL33UAbA)  88  IIdhh+ D  99 !hhmm   ! DIIK   OX IIOO  IIMM( # KK // ; NN  # zz| t9%%a/$6D =}}##  99s||666GGsyy||+G  s DM""A:O!O!c [RRRR[RR[R RUUUUUUU5 n[R RUSU5$r)rerdtypesANYTSIGrrr from_rdata) keyname algorithm time_signedfudgemac original_iderrorrrns r _make_tsigMessage._make_tsigsl{{##(( NN   MM           yy##GQ55r,rrmr%r(r* tsig_error other_datar&c [U[RR5(aUnURnO[ U5(a U"X5nO[U[ 5(a[RRU5nUc[[U55nXn[U[5(a [RRX(U5nXl Uc URnURUURRSUS[RRURR-UUU5Ulg)aWhen sending, a TSIG signature using the specified key should be added. *key*, a ``dns.tsig.Key`` is the key to use. If a key is specified, the *keyring* and *algorithm* fields are not used. *keyring*, a ``dict``, ``callable`` or ``dns.tsig.Key``, is either the TSIG keyring or key to use. The format of a keyring dict is a mapping from TSIG key name, as ``dns.name.Name`` to ``dns.tsig.Key`` or a TSIG secret, a ``bytes``. If a ``dict`` *keyring* is specified but a *keyname* is not, the key used will be the first key in the *keyring*. Note that the order of keys in a dictionary is not defined, so applications should supply a keyname when a ``dict`` keyring is used, unless they know the keyring contains only one key. If a ``callable`` keyring is specified, the callable will be called with the message and the keyname, and is expected to return a key. *keyname*, a ``dns.name.Name``, ``str`` or ``None``, the name of this TSIG key to use; defaults to ``None``. If *keyring* is a ``dict``, the key must be defined in it. If *keyring* is a ``dns.tsig.Key``, this is ignored. *fudge*, an ``int``, the TSIG time fudge. *original_id*, an ``int``, the TSIG original id. If ``None``, the message's id is used. *tsig_error*, an ``int``, the TSIG error code. *other_data*, a ``bytes``, the TSIG other data. *algorithm*, a ``dns.name.Name`` or ``str``, the TSIG algorithm to use. This is only used if *keyring* is a ``dict``, and the key entry is a ``bytes``. Nr)rrernKeyrcallablerrnextiterbytesrmrcr,r& mac_sizes) r/rmr%r(r*r/r0r&rs ruse_tsigMessage.use_tsigs^ gsxx|| , ,ChhG g  $(C'3''((,,W5tG}-"C#u%%hhll7;  ''KOO  LL " "  chh(()?)?@ @      rcRUR(aURR$gr,)rnrr5s rr%Message.keynames 9999>> !rcXUR(aURSR$gr)rnr&r5s r keyalgorithmMessage.keyalgorithms 9999Q<)) )rcXUR(aURSR$gr)rnr)r5s rr) Message.macs 9999Q<## #rcXUR(aURSR$gr)rnr+r5s rr/Message.tsig_errors 9999Q<%% %rc,[UR5$r,)boolrnr5s rhad_tsigMessage.had_tsigsDIIrc2[RRRRU[RRU=(d S5n[R R [RR[U5U5$)Nr ) rer!r"OPTrrr$rrootr^)rhrrrjs r _make_optMessage._make_opt sWkkoo!!%%gs}}/@/@'-RPyy##CHHMM3u:sCCrrrrrkrrlcUbUSLaSnOUSLaSnUS:aSUlSUlgUS-nX!S--nUc/nURX#U5UlUcUnX@lUS:a [S5eX`lg) aConfigure EDNS behavior. *edns*, an ``int``, is the EDNS level to use. Specifying ``None``, ``False``, or ``-1`` means "do not use EDNS", and in this case the other parameters are ignored. Specifying ``True`` is equivalent to specifying 0, i.e. "use EDNS0". *ednsflags*, an ``int``, the EDNS flag values. *payload*, an ``int``, is the EDNS sender's payload field, which is the maximum size of UDP datagram the sender can handle. I.e. how big a response to this message can be. *request_payload*, an ``int``, is the EDNS payload size to use when sending this message. If not specified, defaults to the value of *payload*. *options*, a list of ``dns.edns.Option`` objects or ``None``, the EDNS options. *pad*, a non-negative ``int``. If 0, the default, do not pad; otherwise add padding bytes to make the message size a multiple of *pad*. Note that if padding is non-zero, an EDNS PADDING option will always be added to the message. NFrTrl~r_zpad must be non-negative)rjrkrKrrl)r/rrrrkrrls ruse_ednsMessage.use_ednss@ <45=D T\D !8DH#$D   #I  #I~~i'BDH&")#2 Qw !;<<HrcJUR(aURS-S- $g)Nir_r)rjrr5s rr Message.ednsDs 88NNX-"4 4rcRUR(aURR$gr)rjttlr5s rrMessage.ednsflagsKs 8888<< rcUR(aXRlgU(aURU5Ulggr,)rjrSrKrs rrrTRs* 88HHL ~~a(DHrcXUR(aURSR$gr)rjrr5s rrMessage.payloadYs 8888A;&& &rcXUR(aURSR$g)Nrr )rjrr5s rrMessage.options`s 8888A;&& &rwantedcU(a.U=R[RR-slgUR(a8U=R[ [RR5)-slgg)zEnable or disable 'DNSSEC desired' flag in requests. *wanted*, a ``bool``. If ``True``, then DNSSEC data is desired in the response, EDNS is enabled if required, and then the DO bit is set. If ``False``, the DO bit is cleared if EDNS is enabled. N)rrerhDOrjr^)r/rZs r want_dnssecMessage.want_dnssecgsG  NNciill *N XX NNs399<<00 0Nrc[RR[UR5[UR 55$)z2Return the rcode. Returns a ``dns.rcode.Rcode``. )rerrr^rhrr5s rr Message.rcodeus, yy##C OS5HIIrrc[RRU5up#U=RS-slU=RU-slU=RS-slU=RU-slg)zESet the rcode. *rcode*, a ``dns.rcode.Rcode``, is the rcode to set. iiN)rerto_flagsrhr)r/rvalueevalues r set_rcodeMessage.set_rcode|sR )),,U3 f  e  *$ & rcf[RR[UR55$)z5Return the opcode. Returns a ``dns.opcode.Opcode``. )rerrr^rhr5s rrMessage.opcodes! zz$$S_55rrcU=RS-slU=R[RRU5-slg)zJSet the opcode. *opcode*, a ``dns.opcode.Opcode``, is the opcode to set. iN)rhrerrb)r/rs r set_opcodeMessage.set_opcodes/ f  cjj))&11 rotypechURVs/sHo"RU:XdMUPM sn$s snf)z1Return the list of options of the specified type.)rrl)r/rlrs r get_optionsMessage.get_optionss'%)\\K\6\\U5J\KKKs//c[[[RRUR [RR R55$)zBReturn the list of Extended DNS Error (EDE) options in the message)r rrer EDEOptionrn OptionTypeEDEr5s rextended_errorsMessage.extended_errorss9D++,d.>.>sxx?R?R?V?V.WXXrcU$r,r )r/rcs r_get_one_rr_per_rrsetMessage._get_one_rr_per_rrsets rc X4SS4$NFr )r/rrrrs r_parse_rr_headerMessage._parse_rr_headersu--rcU[RR:XaJU[R:wd/UR (dU[R R:wa[eO^U[RR:Xa@U[R:wd&U[RR:wdX2S- :wa[eXVSS4$)NrHF) rerrIrFrSrjrrJrr#r"r")r/rrpositionrrrs r_parse_special_rr_header Message._parse_special_rr_headers S]]&& &>44488388==( )s}})) )>444cmm///qy( u--r)rtrhrcrsrmrjrqrlrorkrirurnrrrvrpr,)NT)NrFNFF)T)SrrrrrrFrrr^r.propertyrrerrr{setterrrrrrrNamerErrrrrrrrrrNONE SectionTyperrr IDNACodecrrrrrr7r staticmethodr,rndefault_algorithmrr9r%r>r)r/rFDEFAULT_EDNS_PAYLOADrKrOptionrNrrrrr]rRcodererOpcoderjrrrnrqrtrwr{rrr rrraras"M*8C=** $syy/  __ SYY__-   ]] 4 0   D1  9 +/$!'$!$!38n $! $!L.&$$t$L,d399??&;,, &# &$syy2G &*+.--*<*<8<"37SShhmmS** S  '' S  '' S3>>445SSSSXX//0S Sv+.--*<*<8<"37AAhhmmA** A  '' A  '' A3>>445AAASXX//0A #))// "AF[S8c& !s !+/"&$"'c'cc c 3- c  c c38nc cJ66&8<%)/2xx/I/IH H % s 234H  H c] H  H H +,H  H T#((--0 hsxx}}5 Xe_ HSM $#7DD ,-+)-373uS$Y'(33 3 "# 3 $sxx/0 33 3jc 3 ))   1$ 1$ 1JsyyJ !syy !4 !6 ))62!2!22t2L!4!4Lchhoo9NLYchh&8&8!9Y . .rrac \rSrSrSrS\R RS\\RRS\ S\ \RR4Sjr Srg ) ChainingResultiaThe result of a call to dns.message.QueryMessage.resolve_chaining(). The ``answer`` attribute is the answer RRSet, or ``None`` if it doesn't exist. The ``canonical_name`` attribute is the canonical name after all chaining has been applied (this is the same name as ``rrset.name`` in cases where rrset is not ``None``). The ``minimum_ttl`` attribute is the minimum TTL, i.e. the TTL to use if caching the data. It is the smallest of all the CNAME TTLs and either the answer TTL if it exists or the SOA TTL and SOA minimum values for negative answers. The ``cnames`` attribute is a list of all the CNAME RRSets followed to get to the canonical name. canonical_namer minimum_ttlcnamesc4XlX lX0lX@lgr,)rrrr)r/rrrrs rr.ChainingResult.__init__s- & r)rrrrN)rrrrrrerrrrrr^rr.rr rrrrsT$   )   SYY__% rrcX\rSrSrS\4SjrS\RR4Sjr Sr g) QueryMessageirxcUR[RR-S:Xa[e[ UR 5S:wa[R ReUR SnURn[RRnSnSn/nU[:aHURURX!RUR5n[!X4R5nU[:a[,eUR/5[R.R0:Xa Ub[2eUcgUn URUR4XR[R$R65n [!X:RU SR85n[?X$X65$!["a UR[R$R&:waURURX!R[R$R&5nUR)U5 [!X7R5nUHnUR*n O US- nGM!["a GMf=fGMf=f!["a; U R;5n O+![RR<a GMf=ff=fGM)aFollow the CNAME chain in the response to determine the answer RRset. Raises ``dns.message.NotQueryResponse`` if the message is not a response. Raises ``dns.message.ChainTooLong`` if the CNAME chain is too long. Raises ``dns.message.AnswerForNXDOMAIN`` if the rcode is NXDOMAIN but an answer was found. Raises ``dns.exception.FormError`` if the question count is not 1. Returns a ChainingResult object. rrHN) rhrerr:rr{rX FormErrorrrSMAX_TTL MAX_CHAINrrrrminrrCNAMErtargetr=rNXDOMAINr@rSOAminimumparentNoParentr) r/r{qnamemin_ttlrrrcrrsetrdaunamesrrsets rresolve_chainingQueryMessage.resolve_chainingsE :: $ )" " t}}  "--)) )==# ''//i KK(8(8(//gzz2( I   ::<399-- -&2D# # >F !__0@0@#--BSBSF"'::vay7H7HIG eW==Q ??cmm&9&99 !% KK0@0@#--BUBU" f-"%gzz":"(B$&IIE!#)  # % F !'88,,s]+AF->A"I>-2I; A?I## I3-I;2I33I;:I;> K JJ?9K>J??Kc6UR5R$)auReturn the canonical name of the first name in the question section. Raises ``dns.message.NotQueryResponse`` if the message is not a response. Raises ``dns.message.ChainTooLong`` if the CNAME chain is too long. Raises ``dns.message.AnswerForNXDOMAIN`` if the rcode is NXDOMAIN but an answer was found. Raises ``dns.exception.FormError`` if the question count is not 1. )rrr5s rrQueryMessage.canonical_name's$$&555rr N) rrrrrrrerrrrr rrrrs%I>.I>V6 6rrc SSKngr) dns.update)res r_maybe_import_updater8s rcU[RR:Xa[$U[RR:Xa$[ 5 [R R$[$r,) rerQUERYrUPDATErupdate UpdateMessagera)rs r_message_factory_from_opcoderAsG !!! 3::$$ $zz'''rcF\rSrSrSrS SjrSrSrSrSr S r g) _WireReaderiKa5Wire format reader. parser: the binary parser message: The message object being built initialize_message: Callback to set message parsing options question_only: Are we only reading the question? one_rr_per_rrset: Put each RR into its own RRset? keyring: TSIG keyring ignore_trailing: Ignore trailing junk at end of request? multi: Is this message part of a multi-message sequence? DNS dynamic updates. continue_on_error: try to extract as much information as possible from the message, accumulating MessageErrors in the *errors* attribute instead of raising them. Nc [RRU5UlSUlX lX0lX@lXPlX`l Xpl Xl /Ul gr,) rervParserparserr*initialize_message question_onlyone_rr_per_rrsetignore_trailingrmrcontinue_on_errorrt) r/rvrrrrrmrrs rr._WireReader.__init__\sNhhood+  "4* 0.  !2 rc URceURRUn[U5HnURR URR 5nURR S5upgURRXXv5upv nURRX5XvSSS9 M g)zXRead the next *qcount* records from the wire data and add them to the question section. Nz!HHTrr) r*rirangerget_namerq get_structr{r)r/rqcountr_rrrs r _get_question_WireReader._get_questionrs||''',,''7vAKK(()<)<=E $ 6 6u = V&*ll&C&Cw' #Wa LL # #4 $  rctURR[XRR55 gr,)rtrrVrcurrent)r/es r _add_error_WireReader._add_errors# <;;+>+>?@rc  URceURRUnURn[U5GHnURR nURR 5nURRb&URURR5nOUnURRS5uppU [RR[RR4;a#URRXXXX5un n n nOURRXX5uppURR nU(a=U S:a[R R"eSn[RR$nOsURR'U 5 [R(R+XURURR5nSSS5 WR-5nURR.(a U [RR0:XaSnU [RR:Xa2[R2R5XU5URlGMdU [RR:XGaUR8bUR8SLa [;S5e[=UR8[>5(a\UR8RAU5n[=U[B5(a+[RDRGUUURH5nOC[KUR85(aUR9URU5nO UR8nUc[;SUS35eU(aUURl[RDRMURRNUUU[Q[RRR"55URRTUURRVURX5 URl+[R2R5USU5URl"GM]URR[UUU U UU SU5nUbU S:aSn UR]UU 5 GMGM g!,(df  GN=f![^aLnUR`(a5URcU5 URReX-5 SnAGMeSnAff=f) zRead the next I{count} records from the wire data and add them to the specified section. section_number: the section of the message to which to add records count: the number of records to read Nz!HHIHrTz"got signed message without keyringzkey 'z ' unknowni)3r*rirrrrrrqrrrerrIr#rr{rXrr restrict_tordatafrom_wire_parserrrprrr$rjrmr%rdictrr7rnr3r&r4validatervr^rurorrrrrr]rrseek)r/rrrrrrr_start absolute_namerrrrSrdlenrempty rdata_startrrrrrs r _get_section_WireReader._get_sections||''',,''7,, uA{{**H KK002M||"".$// 0C0CD$,0KK,B,B7,K )Vc#--++S]]-?-?@@ LL99"1G  6:\\5R5R"'62(++--K? qy!mm555B ]]//F007 YY77#T[[$,,:M:M8 YY[F<<###--2C2C(C#'LS]]...'*yy';';Dr'JDLL$s}}111||+t||t/C,-QRR#DLL$77"ll..}=%c511"%((,,}c2<<"PC!$,,//"ll4<<G"ll{,uTF)-DEE/2 ,030A0A KK,,) , LL44$ LL11 JJ 1 -), (<(<]Ar(RDLL% LL33 $ E~+"#C "c*&Y:87f ))OOA&KK$$[%899  sF"AS7AS%B S7$G6S7?S7% S4 /S77 U ?UUU cfURR5S:a[eURRS5upp4pV[ [ R RU55nU"US9Ul[ RRU5URl URRURl URUR5 URRUR5UlUR[ R"U5 UR$(a UR$UR'[ R(U5 UR'[ R*U5 UR'[ R,U5 UR.(d$URR5S:wa[0eUR2(aoURR4(aTURR6(d9URR4R9URR5 UR$![:a8nUR<(a!UR?U5 SnAUR$eSnAff=f)zFRead a wire format DNS message and build a dns.message.Message object. z!HHHHHHrcrN) r remainingr rrrerrr*rhFlagrvrrwrrrFrPrrrQrRrSrrrrrrFrr]rr) r/rcrhrancountaucountadcountfactoryrs rread_WireReader.reads ;; "R ' 9=9O9O : 6FW/szz/D/DU/KL"~  YY^^E2  KK,,   - $ B B  ! !!     ~66 ?!!||#   n33W =   n66 @   n77 A''DKK,A,A,Cq,H""zzdll33DLL ||  %%""||  s%>TUlTUlTUlTUlgr,)rorprqrr)r*rqrorrrps rr%from_wire..initialize_messageUs!) #r)r*) rrrerXrr*rhrr(rt)rvrmrorprqrrrrrrrrrreaderms ```` r from_wirer sP $$    F  KKM ww"5""== H! == " " NN%% 4#FNN3 3 s B BD cH\rSrSrSrS SjrSrSrSrSr S r S r g) _TextReaderizaPText format reader. tok: the tokenizer. message: The message object being built. DNS dynamic updates. last_name: The most recently read name when building a message object. one_rr_per_rrset: Put each RR into its own RRset? origin: The origin for relative names relativize: relativize names? relativize_to: the origin to relativize to. Nc.SUl[RRXS9UlSUlX0lX@lXPlX`l SUl SUl SUl [UlSUl[R R"UlSUlg)Nrrr)r*re tokenizer Tokenizertok last_namerrqr relativize_torcrrrrrrrrh)r/textrrrqrrs rr._TextReader.__init__s| ==**4*G 0 $* +  jj&&  rcURR5nURnUS:Xa!URR5UlGOUS:XaURR5nUR 5(dURR U5 GO4UR[RRUR5-UlMUS:XaBURR5Ul URURS--Ul GOUS:XaURS:aSUl URR5nUR 5(dURR U5 GOEUR[RRUR5-Ul MUS:Xa7URR5Ul URS:aSUl OUS:XazURR5n[RRU5UlUR[RR!UR5-UlOKUS :Xa?URR5n[R"RU5UlO[$eURR'5 g ) z5Process one line from the text format header section.rcrhrr_eflagsrrrrN)rrrcget_intrc is_identifierungetrhrerrredns_from_textr get_stringrrbrrget_eol)r/rtokenwhatrs r _header_line_TextReader._header_lines {{ 4<hh&&(DG W_ **,,HHNN5)!ZZ#))*=*=ekk*JJ  V^((*DI!^^tyyB?DN X yy1}  **,,HHNN5)!%#))2J2J5;;2W!W  Y 88++-DLyy1} X 88&&(D**..t4DKcjj&9&9$++&FFDJ W_88&&(D,,T2DJ$ $ rc URRUnURRSS9nUR 5(dJURR X0RR URUR5Ul URnUc[eURR5nUR5(d[RRe[RR!UR"5nURR5nUR5(d[RRe[R(R!UR"5nURR+XXV5upV nURR-X$XVSSS9 URR/5 g![RRa [RRe[$a [RR&nNf=f)z7Process one line from the text format question section.T want_leadingNr)r*rirr is_whitespaceas_namerqrrrrCrrerX SyntaxErrorrrrcr]INrr{rr)r/rrrrrrrs r_question_line_TextReader._question_lines,,''7 $ /""$$!XX--||**DOOT=O=ODN~~ <  ""$$--++ + (nn..u{{;GHHLLNE&&((mm///)((5"&,,"?"? '# !Q  74d   }}(( ,--++ + (nn''G (s1A2G$$AIIc hURRUnURRSS9nUR 5(dJURR X0RR URUR5Ul URnUc[eURR5nUR5(d[RRe[UR S5nURR5nUR5(d[RRe[R$R'UR 5nURR5nUR5(d[RRe[R*R'UR 5nURR-XXg5upgpURR5nU (a/UR/5(d[RReU (d/UR/5(a[RR0eUR/5(dURR3U5 [R4R'UUURURR URUR5n U R75n OSn [R*R8n URR;UUUUU USUR<5n U bU R?X5 gg![RRa [RRe["a SnGN}f=f![RRa [RRe["a [R$R(nGNkf=f)zVProcess one line from the text format answer, authority, or additional data sections. TrNr) r*rirrrrrqrrrrCrrerXr r^rcr]rrr rr{ is_eol_or_eof UnexpectedEndrrrrrrr) r/rrrrrSrrrrrrrs r_rr_line_TextReader._rr_lines ,,''7 $ /""$$!XX--||**DOOT=O=ODN~~ <  ""$$--++ + ekk1%CHHLLNE&&((mm///) (nn..u{{;GHHLLNE&&((mm///)((5-1\\-J-J '. *(  ,,..--++ +,,..---- -""$$ HHNN5 !$$ ##"" BYY[FB]]''F ''         ! !   > IIb  a}}(( ,--++ + C }}(( ,--++ + (nn''G (s(1ANA2OAOOAP10P1c[UR5nU"URS9nURUlURS:a1UR URUR UR5 UR(aURUR5 UR(aURUl U$)Nrr) rrrcrhrrNrrrrerq)r/rr*s r _make_message_TextReader._make_message6s.t{{;TWW%  99>   TYY E ::   djj ) ;;![[GNrcpURnSnURRSS5nUR5(aGO3UR 5(aUR R 5nUS:Xa URnUR(a URnOUR5nURRU5nUR(d&XPlURUR5Ul U[R:Xa URnO UR nURR%5 GMAURR'U5 U"U5 GMfUR(dUR5UlUR$!["a Nf=f)zFRead a text format DNS message and build a dns.message.Message object.NTHEADER)rrrr is_commentrcupperr*rrrrwrrFrPr rr]rr)r/ line_methodrrur*s rr_TextReader.readBsd'' HHLLt,E""$$!!KK%%'="&"3"3K<<"llG#002G%,%:%:%D%DQ%GN <<'. 070M0M 111-&)@)@@&*&9&9 &*mm   " HHNN5 !  'EF||--/DL||!s3A2F(& F(( F54F5)rrrhrcrr*rrrqrrrrr)FNTN) rrrrrr.rr rrrrr rrrrzs7  0'R!FIV +rrrrrrc<[XX#XE5nUR5$)aConvert the text format message into a message object. The reader stops after reading the first blank line in the input to facilitate reading multiple messages from a single file with ``dns.message.from_file()``. *text*, a ``str``, the text format message. *idna_codec*, a ``dns.name.IDNACodec``, specifies the IDNA encoder/decoder. If ``None``, the default IDNA 2003 encoder/decoder is used. *one_rr_per_rrset*, a ``bool``. If ``True``, then each RR is put into its own rrset. The default is ``False``. *origin*, a ``dns.name.Name`` (or ``None``), the origin to use for relative names. *relativize*, a ``bool``. If true, name will be relativized. *relativize_to*, a ``dns.name.Name`` (or ``None``), the origin to use when relativizing names. If not set, the *origin* value will be used. Raises ``dns.message.UnknownHeaderField`` if a header is unknown. Raises ``dns.exception.SyntaxError`` if the text is badly formed. Returns a ``dns.message.Message object`` )rr)rrrrqrrrs rrrps%T *JF ;;=rrc[U[5(a [U5nO[R"U5nUn[ XU5sSSS5 $!,(df  O=fe)a|Read the next text format message from the specified file. Message blocks are separated by a single blank line. *f*, a ``file`` or ``str``. If *f* is text, it is treated as the pathname of a file to open. *idna_codec*, a ``dns.name.IDNACodec``, specifies the IDNA encoder/decoder. If ``None``, the default IDNA 2003 encoder/decoder is used. *one_rr_per_rrset*, a ``bool``. If ``True``, then each RR is put into its own rrset. The default is ``False``. Raises ``dns.message.UnknownHeaderField`` if a header is unknown. Raises ``dns.exception.SyntaxError`` if the text is badly formed. Returns a ``dns.message.Message object`` N)rropen contextlib nullcontextr)rrrcms r from_filer"sI4!S04Q  # #A & q(89 5s A ArrrrNr]rrrkrrcrhrlc L[U[5(a[RR X S9n[R R RU5n[RRRU5n[U S9n [RRU 5U l U RU RXUSSS9 0nUbX^S'UbXnS'UbX~S'UbXS'U(aUcS nX>S 'XS 'U R"S 0UD6 U R!U5 U $) a]Make a query message. The query name, type, and class may all be specified either as objects of the appropriate type, or as strings. The query will have a randomly chosen query id, and its DNS flags will be set to dns.flags.RD. qname, a ``dns.name.Name`` or ``str``, the query name. *rdtype*, an ``int`` or ``str``, the desired rdata type. *rdclass*, an ``int`` or ``str``, the desired rdata class; the default is class IN. *use_edns*, an ``int``, ``bool`` or ``None``. The EDNS level to use; the default is ``None``. If ``None``, EDNS will be enabled only if other parameters (*ednsflags*, *payload*, *request_payload*, or *options*) are set. See the description of dns.message.Message.use_edns() for the possible values for use_edns and their meanings. *want_dnssec*, a ``bool``. If ``True``, DNSSEC data is desired. *ednsflags*, an ``int``, the EDNS flag values. *payload*, an ``int``, is the EDNS sender's payload field, which is the maximum size of UDP datagram the sender can handle. I.e. how big a response to this message can be. *request_payload*, an ``int``, is the EDNS payload size to use when sending this message. If not specified, defaults to the value of *payload*. *options*, a list of ``dns.edns.Option`` objects or ``None``, the EDNS options. *idna_codec*, a ``dns.name.IDNACodec``, specifies the IDNA encoder/decoder. If ``None``, the default IDNA 2003 encoder/decoder is used. *id*, an ``int`` or ``None``, the desired query id. The default is ``None``, which generates a random query id. *flags*, an ``int``, the desired query flags. The default is ``dns.flags.RD``. *pad*, a non-negative ``int``. If 0, the default, do not pad; otherwise add padding bytes to make the message size a multiple of *pad*. Note that if padding is non-zero, an EDNS PADDING option will always be added to the message. Returns a ``dns.message.QueryMessage`` rrTrrrrkrrrrlr )rrrerrrrrrrrrhrrr{rNr])rrrrNr]rrrkrrrcrhrlrr1s r make_queryr$sL%""5"@ ]] $ $ ) )& 1Fnn'',,W5GAiinnU#AGLLUVDtLT F'{#y"$3 !#y ("6N5MJJMM+ Hrc$\rSrSrSrSrSrSrSrg)CopyModei%z? How should sections be copied when making an update response? rrHrIr N) rrrrrNOTHINGrP EVERYTHINGrr rrr&r&%sGHJrr&queryrecursion_available our_payloadr(r/ copy_modec UR[RR-(a[RR S5eUR 5n[ U5nU"URS9n [RRUR[RR--U lU(a-U =R[RR-slU RU5 Uc[RnU[R:wa[UR5U lU[R :XaN[UR"5U l[UR$5U l[UR&5U lUR(S:ajUcKSnUR*H9n U R,[R(R.R0:XdM7SnM; U R3SSX R4US9 UR6(aFU R9UR:UR<USUSUR>5 UR@U l!U $)aMake a message which is a response for the specified query. The message returned is really a response skeleton; it has all of the infrastructure required of a response, but none of the content. Response section(s) which are copied are shallow copies of the matching section(s) in the query, so the query's RRsets should not be changed. *query*, a ``dns.message.Message``, the query to respond to. *recursion_available*, a ``bool``, should RA be set in the response? *our_payload*, an ``int``, the payload size to advertise in EDNS responses. *fudge*, an ``int``, the TSIG time fudge. *tsig_error*, an ``int``, the TSIG error. *pad*, a non-negative ``int`` or ``None``. If 0, the default, do not pad; otherwise if not ``None`` add padding bytes to make the message size a multiple of *pad*. Note that if padding is non-zero, an EDNS PADDING option will always be added to the message. If ``None``, add padding following RFC 8467, namely if the request is padded, pad the response to 468 otherwise do not pad. *copy_mode*, a ``dns.message.CopyMode`` or ``None``, determines how sections are copied. The default, ``None`` copies sections according to the default for the message's opcode, which is currently ``dns.message.CopyMode.QUESTION`` for all opcodes. ``dns.message.CopyMode.QUESTION`` copies only the question section. ``dns.message.CopyMode.EVERYTHING`` copies all sections other than OPT or TSIG records, which are created appropriately if needed. ``dns.message.CopyMode.NOTHING`` copies no sections; note that this mode is for server testing purposes and is otherwise not recommended for use. In particular, ``dns.message.is_response()`` will be ``False`` if you create a response this way and the rcode is not ``FORMERR``, ``SERVFAIL``, ``NOTIMP``, or ``REFUSED``. Returns a ``dns.message.Message`` object whose specific class is appropriate for the query. For example, if query is a ``dns.update.UpdateMessage``, the response will be one too. z&specified query message is not a queryrNri)rlr)"rhrerrXrrrrcRDRArjr&rPr'listr{r(rrrrrrlrrPADDINGrNrrFr9rmr%r>r)ro) r)r*r+r(r/rlr,rrresponsers r make_responser3/s` {{SYY\\!mm%%&NOO \\^F*62G%((#HYY\\U[[399<<%?@HN#)),,& %% H$$$ 0H'''u||,!%//2"5#3#34 zzQ ;C--<<388#6#6#>#>>C( !Q ]]D ~~ MM MM         %yy Or) NrFNNFFFFFF)NFNTNrz)Fi r.rNN)^rrenumrrutypingrrrrrrr dns.ednsre dns.entropydns.enum dns.exception dns.flagsdns.name dns.opcode dns.rcode dns.rdatadns.rdataclass dns.rdatatypedns.rdtypes.ANY.OPTdns.rdtypes.ANY.TSIG dns.renderer dns.rrsetdns.tsigdns.ttldns.wirerXrr r DNSExceptionrrr"r%r(r:r=r@r rCIntEnumrFrVrrr^rrrrrr IndexKeyTyperr IndexTyperrrarrrrrr7rErnHMACTSigGSSTSigrrrrr"r rhr.rrr$Enumr&r3rPrQrRrSr rrrOs$ @@@=#--))=P3==**P33 $cmm%%$ $cmm%%$ 3S]]//3& **&$0s}}110'3==--'9 229&S]]..& SXX%%    HHMMNNMM S]] $ $% S^^ & &' )  syy. / Cd399??334 k .k .\@Z67Z6z||B"#&&*EI"! %#m m c]m %m   m SXX]] # m uSXX..0@0@@AB m  m m m m m m  m `ssp04"&*-1 - -++,-- SXX]] # -  - CHHMM* - -d04"   ++,   L69^^5F5F+/#!%)/3/3_ # $_ #--))3. /_ 3>>,,c1 2_ uS$Y'( _  _ } _ c]_ c]_ d388??+ ,_ ++,_   _  _  _ _ Dtyy!&$(T TTT  T  T # T!T Tr  " "     $ $  & & r