aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/names/hosts.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/names/hosts.py')
-rwxr-xr-xlib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/names/hosts.py157
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