diff options
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/names/hosts.py')
-rwxr-xr-x | lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/names/hosts.py | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/names/hosts.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/names/hosts.py deleted file mode 100755 index fd2cd5eb..00000000 --- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/names/hosts.py +++ /dev/null @@ -1,157 +0,0 @@ -# -*- test-case-name: twisted.names.test.test_hosts -*- -# Copyright (c) Twisted Matrix Laboratories. -# See LICENSE for details. - -""" -hosts(5) support. -""" - -from twisted.names import dns -from twisted.persisted import styles -from twisted.python import failure -from twisted.python.filepath import FilePath -from twisted.internet import defer -from twisted.internet.abstract import isIPAddress - -from twisted.names import common - -def searchFileForAll(hostsFile, name): - """ - Search the given file, which is in hosts(5) standard format, for an address - entry with a given name. - - @param hostsFile: The name of the hosts(5)-format file to search. - @type hostsFile: L{FilePath} - - @param name: The name to search for. - @type name: C{str} - - @return: C{None} if the name is not found in the file, otherwise a - C{str} giving the address in the file associated with the name. - """ - results = [] - try: - lines = hostsFile.getContent().splitlines() - except: - return results - - name = name.lower() - for line in lines: - idx = line.find('#') - if idx != -1: - line = line[:idx] - if not line: - continue - parts = line.split() - - if name.lower() in [s.lower() for s in parts[1:]]: - results.append(parts[0]) - return results - - - -def searchFileFor(file, name): - """ - Grep given file, which is in hosts(5) standard format, for an address - entry with a given name. - - @param file: The name of the hosts(5)-format file to search. - - @param name: The name to search for. - @type name: C{str} - - @return: C{None} if the name is not found in the file, otherwise a - C{str} giving the address in the file associated with the name. - """ - addresses = searchFileForAll(FilePath(file), name) - if addresses: - return addresses[0] - return None - - - -class Resolver(common.ResolverBase, styles.Versioned): - """ - A resolver that services hosts(5) format files. - """ - - persistenceVersion = 1 - - def upgradeToVersion1(self): - # <3 exarkun - self.typeToMethod = {} - for (k, v) in common.typeToMethod.items(): - self.typeToMethod[k] = getattr(self, v) - - - def __init__(self, file='/etc/hosts', ttl = 60 * 60): - common.ResolverBase.__init__(self) - self.file = file - self.ttl = ttl - - - def _aRecords(self, name): - """ - Return a tuple of L{dns.RRHeader} instances for all of the IPv4 - addresses in the hosts file. - """ - return tuple([ - dns.RRHeader(name, dns.A, dns.IN, self.ttl, - dns.Record_A(addr, self.ttl)) - for addr - in searchFileForAll(FilePath(self.file), name) - if isIPAddress(addr)]) - - - def _aaaaRecords(self, name): - """ - Return a tuple of L{dns.RRHeader} instances for all of the IPv6 - addresses in the hosts file. - """ - return tuple([ - dns.RRHeader(name, dns.AAAA, dns.IN, self.ttl, - dns.Record_AAAA(addr, self.ttl)) - for addr - in searchFileForAll(FilePath(self.file), name) - if not isIPAddress(addr)]) - - - def _respond(self, name, records): - """ - Generate a response for the given name containing the given result - records, or a failure if there are no result records. - - @param name: The DNS name the response is for. - @type name: C{str} - - @param records: A tuple of L{dns.RRHeader} instances giving the results - that will go into the response. - - @return: A L{Deferred} which will fire with a three-tuple of result - records, authority records, and additional records, or which will - fail with L{dns.DomainError} if there are no result records. - """ - if records: - return defer.succeed((records, (), ())) - return defer.fail(failure.Failure(dns.DomainError(name))) - - - def lookupAddress(self, name, timeout=None): - """ - Read any IPv4 addresses from C{self.file} and return them as L{Record_A} - instances. - """ - return self._respond(name, self._aRecords(name)) - - - def lookupIPV6Address(self, name, timeout=None): - """ - Read any IPv4 addresses from C{self.file} and return them as L{Record_A} - instances. - """ - return self._respond(name, self._aaaaRecords(name)) - - # Someday this should include IPv6 addresses too, but that will cause - # problems if users of the API (mainly via getHostByName) aren't updated to - # know about IPv6 first. - lookupAllRecords = lookupAddress |