X7ROOT File Manager
Current Path:
/usr/lib64/python2.7/site-packages/dns
usr
/
lib64
/
python2.7
/
site-packages
/
dns
/
📁
..
📄
__init__.py
(1.3 KB)
📄
__init__.pyc
(765 B)
📄
__init__.pyo
(765 B)
📄
dnssec.py
(14.37 KB)
📄
dnssec.pyc
(13.46 KB)
📄
dnssec.pyo
(13.38 KB)
📄
e164.py
(3.01 KB)
📄
e164.pyc
(2.76 KB)
📄
e164.pyo
(2.76 KB)
📄
edns.py
(4.21 KB)
📄
edns.pyc
(5.2 KB)
📄
edns.pyo
(5.2 KB)
📄
entropy.py
(3.79 KB)
📄
entropy.pyc
(3.7 KB)
📄
entropy.pyo
(3.7 KB)
📄
exception.py
(1.29 KB)
📄
exception.pyc
(1.56 KB)
📄
exception.pyo
(1.56 KB)
📄
flags.py
(2.62 KB)
📄
flags.pyc
(2.58 KB)
📄
flags.pyo
(2.58 KB)
📄
grange.py
(1.83 KB)
📄
grange.pyc
(1.15 KB)
📄
grange.pyo
(1.08 KB)
📄
hash.py
(2.34 KB)
📄
hash.pyc
(2.11 KB)
📄
hash.pyo
(2.11 KB)
📄
inet.py
(3.16 KB)
📄
inet.pyc
(2.61 KB)
📄
inet.pyo
(2.61 KB)
📄
ipv4.py
(1.81 KB)
📄
ipv4.pyc
(1.37 KB)
📄
ipv4.pyo
(1.37 KB)
📄
ipv6.py
(4.97 KB)
📄
ipv6.pyc
(3.44 KB)
📄
ipv6.pyo
(3.44 KB)
📄
message.py
(41.63 KB)
📄
message.pyc
(36.39 KB)
📄
message.pyo
(36.39 KB)
📄
name.py
(21.82 KB)
📄
name.pyc
(23 KB)
📄
name.pyo
(23 KB)
📄
namedict.py
(2.06 KB)
📄
namedict.pyc
(1.92 KB)
📄
namedict.pyo
(1.92 KB)
📄
node.py
(5.89 KB)
📄
node.pyc
(6.15 KB)
📄
node.pyo
(6.15 KB)
📄
opcode.py
(2.55 KB)
📄
opcode.pyc
(2.49 KB)
📄
opcode.pyo
(2.49 KB)
📄
query.py
(17.89 KB)
📄
query.pyc
(15.31 KB)
📄
query.pyo
(15.31 KB)
📄
rcode.py
(3.03 KB)
📄
rcode.pyc
(2.92 KB)
📄
rcode.pyo
(2.92 KB)
📄
rdata.py
(15.34 KB)
📄
rdata.pyc
(16.59 KB)
📄
rdata.pyo
(16.59 KB)
📄
rdataclass.py
(3.22 KB)
📄
rdataclass.pyc
(2.96 KB)
📄
rdataclass.pyo
(2.96 KB)
📄
rdataset.py
(11.28 KB)
📄
rdataset.pyc
(11.08 KB)
📄
rdataset.pyo
(11.03 KB)
📄
rdatatype.py
(5.07 KB)
📄
rdatatype.pyc
(5.29 KB)
📄
rdatatype.pyo
(5.29 KB)
📁
rdtypes
📄
renderer.py
(11.63 KB)
📄
renderer.pyc
(10.85 KB)
📄
renderer.pyo
(10.75 KB)
📄
resolver.py
(45.35 KB)
📄
resolver.pyc
(37.16 KB)
📄
resolver.pyo
(37.16 KB)
📄
reversename.py
(3.03 KB)
📄
reversename.pyc
(2.4 KB)
📄
reversename.pyo
(2.4 KB)
📄
rrset.py
(5.76 KB)
📄
rrset.pyc
(6.17 KB)
📄
rrset.pyo
(6.17 KB)
📄
set.py
(7.66 KB)
📄
set.pyc
(9.81 KB)
📄
set.pyo
(9.81 KB)
📄
tokenizer.py
(17.54 KB)
📄
tokenizer.pyc
(16.92 KB)
📄
tokenizer.pyo
(16.92 KB)
📄
tsig.py
(8.1 KB)
📄
tsig.pyc
(8.08 KB)
📄
tsig.pyo
(8.08 KB)
📄
tsigkeyring.py
(1.61 KB)
📄
tsigkeyring.pyc
(1.16 KB)
📄
tsigkeyring.pyo
(1.16 KB)
📄
ttl.py
(2.13 KB)
📄
ttl.pyc
(1.48 KB)
📄
ttl.pyo
(1.48 KB)
📄
update.py
(9.92 KB)
📄
update.pyc
(8.27 KB)
📄
update.pyo
(8.27 KB)
📄
version.py
(1.24 KB)
📄
version.pyc
(560 B)
📄
version.pyo
(560 B)
📄
wiredata.py
(2.53 KB)
📄
wiredata.pyc
(2.19 KB)
📄
wiredata.pyo
(2.19 KB)
📄
zone.py
(37.94 KB)
📄
zone.pyc
(33.52 KB)
📄
zone.pyo
(33.52 KB)
Editing: update.py
# Copyright (C) 2003-2007, 2009-2011 Nominum, Inc. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose with or without fee is hereby granted, # provided that the above copyright notice and this permission notice # appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. """DNS Dynamic Update Support""" import dns.message import dns.name import dns.opcode import dns.rdata import dns.rdataclass import dns.rdataset import dns.tsig class Update(dns.message.Message): def __init__(self, zone, rdclass=dns.rdataclass.IN, keyring=None, keyname=None, keyalgorithm=dns.tsig.default_algorithm): """Initialize a new DNS Update object. @param zone: The zone which is being updated. @type zone: A dns.name.Name or string @param rdclass: The class of the zone; defaults to dns.rdataclass.IN. @type rdclass: An int designating the class, or a string whose value is the name of a class. @param keyring: The TSIG keyring to use; defaults to None. @type keyring: dict @param keyname: The name of the TSIG key to use; defaults to None. The key must be defined in the keyring. If a keyring is specified but a keyname is not, then 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 keyring is used, unless they know the keyring contains only one key. @type keyname: dns.name.Name or string @param keyalgorithm: The TSIG algorithm to use; defaults to dns.tsig.default_algorithm. Constants for TSIG algorithms are defined in dns.tsig, and the currently implemented algorithms are HMAC_MD5, HMAC_SHA1, HMAC_SHA224, HMAC_SHA256, HMAC_SHA384, and HMAC_SHA512. @type keyalgorithm: string """ super(Update, self).__init__() self.flags |= dns.opcode.to_flags(dns.opcode.UPDATE) if isinstance(zone, (str, unicode)): zone = dns.name.from_text(zone) self.origin = zone if isinstance(rdclass, str): rdclass = dns.rdataclass.from_text(rdclass) self.zone_rdclass = rdclass self.find_rrset(self.question, self.origin, rdclass, dns.rdatatype.SOA, create=True, force_unique=True) if not keyring is None: self.use_tsig(keyring, keyname, algorithm=keyalgorithm) def _add_rr(self, name, ttl, rd, deleting=None, section=None): """Add a single RR to the update section.""" if section is None: section = self.authority covers = rd.covers() rrset = self.find_rrset(section, name, self.zone_rdclass, rd.rdtype, covers, deleting, True, True) rrset.add(rd, ttl) def _add(self, replace, section, name, *args): """Add records. The first argument is the replace mode. If false, RRs are added to an existing RRset; if true, the RRset is replaced with the specified contents. The second argument is the section to add to. The third argument is always a name. The other arguments can be: - rdataset... - ttl, rdata... - ttl, rdtype, string...""" if isinstance(name, (str, unicode)): name = dns.name.from_text(name, None) if isinstance(args[0], dns.rdataset.Rdataset): for rds in args: if replace: self.delete(name, rds.rdtype) for rd in rds: self._add_rr(name, rds.ttl, rd, section=section) else: args = list(args) ttl = int(args.pop(0)) if isinstance(args[0], dns.rdata.Rdata): if replace: self.delete(name, args[0].rdtype) for rd in args: self._add_rr(name, ttl, rd, section=section) else: rdtype = args.pop(0) if isinstance(rdtype, str): rdtype = dns.rdatatype.from_text(rdtype) if replace: self.delete(name, rdtype) for s in args: rd = dns.rdata.from_text(self.zone_rdclass, rdtype, s, self.origin) self._add_rr(name, ttl, rd, section=section) def add(self, name, *args): """Add records. The first argument is always a name. The other arguments can be: - rdataset... - ttl, rdata... - ttl, rdtype, string...""" self._add(False, self.authority, name, *args) def delete(self, name, *args): """Delete records. The first argument is always a name. The other arguments can be: - I{nothing} - rdataset... - rdata... - rdtype, [string...]""" if isinstance(name, (str, unicode)): name = dns.name.from_text(name, None) if len(args) == 0: rrset = self.find_rrset(self.authority, name, dns.rdataclass.ANY, dns.rdatatype.ANY, dns.rdatatype.NONE, dns.rdatatype.ANY, True, True) elif isinstance(args[0], dns.rdataset.Rdataset): for rds in args: for rd in rds: self._add_rr(name, 0, rd, dns.rdataclass.NONE) else: args = list(args) if isinstance(args[0], dns.rdata.Rdata): for rd in args: self._add_rr(name, 0, rd, dns.rdataclass.NONE) else: rdtype = args.pop(0) if isinstance(rdtype, (str, unicode)): rdtype = dns.rdatatype.from_text(rdtype) if len(args) == 0: rrset = self.find_rrset(self.authority, name, self.zone_rdclass, rdtype, dns.rdatatype.NONE, dns.rdataclass.ANY, True, True) else: for s in args: rd = dns.rdata.from_text(self.zone_rdclass, rdtype, s, self.origin) self._add_rr(name, 0, rd, dns.rdataclass.NONE) def replace(self, name, *args): """Replace records. The first argument is always a name. The other arguments can be: - rdataset... - ttl, rdata... - ttl, rdtype, string... Note that if you want to replace the entire node, you should do a delete of the name followed by one or more calls to add.""" self._add(True, self.authority, name, *args) def present(self, name, *args): """Require that an owner name (and optionally an rdata type, or specific rdataset) exists as a prerequisite to the execution of the update. The first argument is always a name. The other arguments can be: - rdataset... - rdata... - rdtype, string...""" if isinstance(name, (str, unicode)): name = dns.name.from_text(name, None) if len(args) == 0: rrset = self.find_rrset(self.answer, name, dns.rdataclass.ANY, dns.rdatatype.ANY, dns.rdatatype.NONE, None, True, True) elif isinstance(args[0], dns.rdataset.Rdataset) or \ isinstance(args[0], dns.rdata.Rdata) or \ len(args) > 1: if not isinstance(args[0], dns.rdataset.Rdataset): # Add a 0 TTL args = list(args) args.insert(0, 0) self._add(False, self.answer, name, *args) else: rdtype = args[0] if isinstance(rdtype, (str, unicode)): rdtype = dns.rdatatype.from_text(rdtype) rrset = self.find_rrset(self.answer, name, dns.rdataclass.ANY, rdtype, dns.rdatatype.NONE, None, True, True) def absent(self, name, rdtype=None): """Require that an owner name (and optionally an rdata type) does not exist as a prerequisite to the execution of the update.""" if isinstance(name, (str, unicode)): name = dns.name.from_text(name, None) if rdtype is None: rrset = self.find_rrset(self.answer, name, dns.rdataclass.NONE, dns.rdatatype.ANY, dns.rdatatype.NONE, None, True, True) else: if isinstance(rdtype, (str, unicode)): rdtype = dns.rdatatype.from_text(rdtype) rrset = self.find_rrset(self.answer, name, dns.rdataclass.NONE, rdtype, dns.rdatatype.NONE, None, True, True) def to_wire(self, origin=None, max_size=65535): """Return a string containing the update in DNS compressed wire format. @rtype: string""" if origin is None: origin = self.origin return super(Update, self).to_wire(origin, max_size)
Upload File
Create Folder