The RRSet Reader¶
dns.zonefile.read_rrsets() reads one or more RRsets from text format. It
is designed to be used in situations where you are processing DNS data in
text format, but do not want or need a valid zone. For example, a DNS registry
web application might want to allow the user to input RRs.
- dns.zonefile.read_rrsets(text, name=None, ttl=None, rdclass=RdataClass.IN, default_rdclass=RdataClass.IN, rdtype=None, default_ttl=None, idna_codec=None, origin=<DNS name .>, relativize=False)¶
Read one or more rrsets from the specified text, possibly subject to restrictions.
text, a file object or a string, is the input to process.
name, a string,
None, is the owner name of the rrset. If not
None, then the owner name is “forced”, and the input must not specify an owner name. If
None, then any owner names are allowed and must be present in the input.
int, string, or None. If not
None, the the TTL is forced to be the specified value and the input must not specify a TTL. If
None, then a TTL may be specified in the input. If it is not specified, then the default_ttl will be used.
dns.rdataclass.RdataClass, string, or
None. If not
None, then the class is forced to the specified value, and the input must not specify a class. If
None, then the input may specify a class that matches default_rdclass. Note that it is not possible to return rrsets with differing classes; specifying
Nonefor the class simply allows the user to optionally type a class as that may be convenient when cutting and pasting.
dns.rdataclass.RdataClassor string. The class of the returned rrsets.
dns.rdatatype.RdataType, string, or
None. If not
None, then the type is forced to the specified value, and the input must not specify a type. If
None, then a type must be present for each RR.
int, string, or
None. If not
None, then if the TTL is not forced and is not specified, then this value will be used. if
None, then if the TTL is not forced an error will occur if the TTL is not specified.
dns.name.IDNACodec, specifies the IDNA encoder/decoder. If
None, the default IDNA 2003 encoder/decoder is used. Note that codecs only apply to the owner name; dnspython does not do IDNA for names in rdata, as there is no IDNA zonefile format.
origin, a string,
None, is the origin for any relative names in the input, and also the origin to relativize to if relativize is
relativize, a bool. If
True, names are relativized to the origin; if
Falsethen any relative names in the input are made absolute by appending the origin.
Read RRSets with name, TTL, and rdclass forced:
input = ''' mx 10 a mx 20 b ns ns1 ''' rrsets = dns.read_rrsets(input, name='name', ttl=300)
Read RRSets with name, TTL, rdclass, and rdtype forced:
input = ''' 10 a 20 b ''' rrsets = dns.read_rrsets(input, name='name', ttl=300, rdtype='mx')
Note that in this case the length of rrsets will always be one.
Read relativized RRsets with unforced rdclass (but which must match default_rdclass):
input = ''' name1 20 MX 10 a.example. name2 30 IN MX 20 b ''' rrsets = dns.read_rrsets(input, origin='example', relativize=True, rdclass=None)
The dns.zonefile.Reader Class¶
Reader class reads data in DNS zonefile format, or various
restrictions of that format, and converts it to a sequence of operations
in a transaction.
This class is primarily used by
dns.zonefile.read_rrsets, but may be useful for other software which needs
to process the zonefile format.
- class dns.zonefile.Reader(tok, rdclass, txn, allow_include=False, allow_directives=True, force_name=None, force_ttl=None, force_rdclass=None, force_rdtype=None, default_ttl=None)¶
Read a DNS zone file into a transaction.
Read a DNS zone file and build a zone object.
@raises dns.zone.NoSOA: No SOA RR was found at the zone origin @raises dns.zone.NoNS: No NS RRset was found at the zone origin