X7ROOT File Manager
Current Path:
/usr/lib/python3.6/site-packages/dns
usr
/
lib
/
python3.6
/
site-packages
/
dns
/
??
..
??
__init__.py
(1.3 KB)
??
__pycache__
??
_compat.py
(1.28 KB)
??
dnssec.py
(14.44 KB)
??
e164.py
(3.07 KB)
??
edns.py
(4.28 KB)
??
entropy.py
(4.36 KB)
??
exception.py
(4.52 KB)
??
flags.py
(2.6 KB)
??
grange.py
(1.93 KB)
??
hash.py
(1.07 KB)
??
inet.py
(3.17 KB)
??
ipv4.py
(1.98 KB)
??
ipv6.py
(5.17 KB)
??
message.py
(42.12 KB)
??
name.py
(28.74 KB)
??
namedict.py
(3.59 KB)
??
node.py
(5.91 KB)
??
opcode.py
(2.48 KB)
??
query.py
(19.18 KB)
??
rcode.py
(3.03 KB)
??
rdata.py
(14.65 KB)
??
rdataclass.py
(3.18 KB)
??
rdataset.py
(11.29 KB)
??
rdatatype.py
(5.21 KB)
??
rdtypes
??
renderer.py
(11.64 KB)
??
resolver.py
(50.88 KB)
??
reversename.py
(3.23 KB)
??
rrset.py
(5.85 KB)
??
set.py
(7.53 KB)
??
tokenizer.py
(17.88 KB)
??
tsig.py
(7.54 KB)
??
tsigkeyring.py
(1.7 KB)
??
ttl.py
(2.23 KB)
??
update.py
(9.78 KB)
??
version.py
(1.23 KB)
??
wiredata.py
(3.64 KB)
??
zone.py
(39.09 KB)
Editing: namedict.py
# Copyright (C) 2003-2007, 2009-2011 Nominum, Inc. # Copyright (C) 2016 Coresec Systems AB # # 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. # # THE SOFTWARE IS PROVIDED "AS IS" AND CORESEC SYSTEMS AB DISCLAIMS ALL # WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL CORESEC # SYSTEMS AB 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 name dictionary""" import collections import dns.name from ._compat import xrange class NameDict(collections.MutableMapping): """A dictionary whose keys are dns.name.Name objects. @ivar max_depth: the maximum depth of the keys that have ever been added to the dictionary. @type max_depth: int @ivar max_depth_items: the number of items of maximum depth @type max_depth_items: int """ __slots__ = ["max_depth", "max_depth_items", "__store"] def __init__(self, *args, **kwargs): self.__store = dict() self.max_depth = 0 self.max_depth_items = 0 self.update(dict(*args, **kwargs)) def __update_max_depth(self, key): if len(key) == self.max_depth: self.max_depth_items = self.max_depth_items + 1 elif len(key) > self.max_depth: self.max_depth = len(key) self.max_depth_items = 1 def __getitem__(self, key): return self.__store[key] def __setitem__(self, key, value): if not isinstance(key, dns.name.Name): raise ValueError('NameDict key must be a name') self.__store[key] = value self.__update_max_depth(key) def __delitem__(self, key): value = self.__store.pop(key) if len(value) == self.max_depth: self.max_depth_items = self.max_depth_items - 1 if self.max_depth_items == 0: self.max_depth = 0 for k in self.__store: self.__update_max_depth(k) def __iter__(self): return iter(self.__store) def __len__(self): return len(self.__store) def has_key(self, key): return key in self.__store def get_deepest_match(self, name): """Find the deepest match to I{name} in the dictionary. The deepest match is the longest name in the dictionary which is a superdomain of I{name}. @param name: the name @type name: dns.name.Name object @rtype: (key, value) tuple """ depth = len(name) if depth > self.max_depth: depth = self.max_depth for i in xrange(-depth, 0): n = dns.name.Name(name[i:]) if n in self: return (n, self[n]) v = self[dns.name.empty] return (dns.name.empty, v)
Upload File
Create Folder