aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/names/client.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/client.py')
-rwxr-xr-xlib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/names/client.py955
1 files changed, 0 insertions, 955 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/names/client.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/names/client.py
deleted file mode 100755
index a8dd0c5d..00000000
--- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/names/client.py
+++ /dev/null
@@ -1,955 +0,0 @@
-# -*- test-case-name: twisted.names.test.test_names -*-
-# Copyright (c) Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-"""
-Asynchronous client DNS
-
-The functions exposed in this module can be used for asynchronous name
-resolution and dns queries.
-
-If you need to create a resolver with specific requirements, such as needing to
-do queries against a particular host, the L{createResolver} function will
-return an C{IResolver}.
-
-Future plans: Proper nameserver acquisition on Windows/MacOS,
-better caching, respect timeouts
-
-@author: Jp Calderone
-"""
-
-import os
-import errno
-import warnings
-
-from zope.interface import implements
-
-# Twisted imports
-from twisted.python.runtime import platform
-from twisted.internet import error, defer, protocol, interfaces
-from twisted.python import log, failure
-from twisted.python.deprecate import getWarningMethod
-from twisted.names import dns, common
-
-
-class Resolver(common.ResolverBase):
- """
- @ivar _waiting: A C{dict} mapping tuple keys of query name/type/class to
- Deferreds which will be called back with the result of those queries.
- This is used to avoid issuing the same query more than once in
- parallel. This is more efficient on the network and helps avoid a
- "birthday paradox" attack by keeping the number of outstanding requests
- for a particular query fixed at one instead of allowing the attacker to
- raise it to an arbitrary number.
-
- @ivar _reactor: A provider of L{IReactorTCP}, L{IReactorUDP}, and
- L{IReactorTime} which will be used to set up network resources and
- track timeouts.
- """
- implements(interfaces.IResolver)
-
- index = 0
- timeout = None
-
- factory = None
- servers = None
- dynServers = ()
- pending = None
- connections = None
-
- resolv = None
- _lastResolvTime = None
- _resolvReadInterval = 60
-
- def _getProtocol(self):
- getWarningMethod()(
- "Resolver.protocol is deprecated; use Resolver.queryUDP instead.",
- PendingDeprecationWarning,
- stacklevel=0)
- self.protocol = dns.DNSDatagramProtocol(self)
- return self.protocol
- protocol = property(_getProtocol)
-
-
- def __init__(self, resolv=None, servers=None, timeout=(1, 3, 11, 45), reactor=None):
- """
- Construct a resolver which will query domain name servers listed in
- the C{resolv.conf(5)}-format file given by C{resolv} as well as
- those in the given C{servers} list. Servers are queried in a
- round-robin fashion. If given, C{resolv} is periodically checked
- for modification and re-parsed if it is noticed to have changed.
-
- @type servers: C{list} of C{(str, int)} or C{None}
- @param servers: If not None, interpreted as a list of (host, port)
- pairs specifying addresses of domain name servers to attempt to use
- for this lookup. Host addresses should be in IPv4 dotted-quad
- form. If specified, overrides C{resolv}.
-
- @type resolv: C{str}
- @param resolv: Filename to read and parse as a resolver(5)
- configuration file.
-
- @type timeout: Sequence of C{int}
- @param timeout: Default number of seconds after which to reissue the
- query. When the last timeout expires, the query is considered
- failed.
-
- @param reactor: A provider of L{IReactorTime}, L{IReactorUDP}, and
- L{IReactorTCP} which will be used to establish connections, listen
- for DNS datagrams, and enforce timeouts. If not provided, the
- global reactor will be used.
-
- @raise ValueError: Raised if no nameserver addresses can be found.
- """
- common.ResolverBase.__init__(self)
-
- if reactor is None:
- from twisted.internet import reactor
- self._reactor = reactor
-
- self.timeout = timeout
-
- if servers is None:
- self.servers = []
- else:
- self.servers = servers
-
- self.resolv = resolv
-
- if not len(self.servers) and not resolv:
- raise ValueError, "No nameservers specified"
-
- self.factory = DNSClientFactory(self, timeout)
- self.factory.noisy = 0 # Be quiet by default
-
- self.connections = []
- self.pending = []
-
- self._waiting = {}
-
- self.maybeParseConfig()
-
-
- def __getstate__(self):
- d = self.__dict__.copy()
- d['connections'] = []
- d['_parseCall'] = None
- return d
-
-
- def __setstate__(self, state):
- self.__dict__.update(state)
- self.maybeParseConfig()
-
-
- def maybeParseConfig(self):
- if self.resolv is None:
- # Don't try to parse it, don't set up a call loop
- return
-
- try:
- resolvConf = file(self.resolv)
- except IOError, e:
- if e.errno == errno.ENOENT:
- # Missing resolv.conf is treated the same as an empty resolv.conf
- self.parseConfig(())
- else:
- raise
- else:
- mtime = os.fstat(resolvConf.fileno()).st_mtime
- if mtime != self._lastResolvTime:
- log.msg('%s changed, reparsing' % (self.resolv,))
- self._lastResolvTime = mtime
- self.parseConfig(resolvConf)
-
- # Check again in a little while
- self._parseCall = self._reactor.callLater(
- self._resolvReadInterval, self.maybeParseConfig)
-
-
- def parseConfig(self, resolvConf):
- servers = []
- for L in resolvConf:
- L = L.strip()
- if L.startswith('nameserver'):
- resolver = (L.split()[1], dns.PORT)
- servers.append(resolver)
- log.msg("Resolver added %r to server list" % (resolver,))
- elif L.startswith('domain'):
- try:
- self.domain = L.split()[1]
- except IndexError:
- self.domain = ''
- self.search = None
- elif L.startswith('search'):
- try:
- self.search = L.split()[1:]
- except IndexError:
- self.search = ''
- self.domain = None
- if not servers:
- servers.append(('127.0.0.1', dns.PORT))
- self.dynServers = servers
-
-
- def pickServer(self):
- """
- Return the address of a nameserver.
-
- TODO: Weight servers for response time so faster ones can be
- preferred.
- """
- if not self.servers and not self.dynServers:
- return None
- serverL = len(self.servers)
- dynL = len(self.dynServers)
-
- self.index += 1
- self.index %= (serverL + dynL)
- if self.index < serverL:
- return self.servers[self.index]
- else:
- return self.dynServers[self.index - serverL]
-
-
- def _connectedProtocol(self):
- """
- Return a new L{DNSDatagramProtocol} bound to a randomly selected port
- number.
- """
- if 'protocol' in self.__dict__:
- # Some code previously asked for or set the deprecated `protocol`
- # attribute, so it probably expects that object to be used for
- # queries. Give it back and skip the super awesome source port
- # randomization logic. This is actually a really good reason to
- # remove this deprecated backward compatibility as soon as
- # possible. -exarkun
- return self.protocol
- proto = dns.DNSDatagramProtocol(self)
- while True:
- try:
- self._reactor.listenUDP(dns.randomSource(), proto)
- except error.CannotListenError:
- pass
- else:
- return proto
-
-
- def connectionMade(self, protocol):
- """
- Called by associated L{dns.DNSProtocol} instances when they connect.
- """
- self.connections.append(protocol)
- for (d, q, t) in self.pending:
- self.queryTCP(q, t).chainDeferred(d)
- del self.pending[:]
-
-
- def connectionLost(self, protocol):
- """
- Called by associated L{dns.DNSProtocol} instances when they disconnect.
- """
- if protocol in self.connections:
- self.connections.remove(protocol)
-
-
- def messageReceived(self, message, protocol, address = None):
- log.msg("Unexpected message (%d) received from %r" % (message.id, address))
-
-
- def _query(self, *args):
- """
- Get a new L{DNSDatagramProtocol} instance from L{_connectedProtocol},
- issue a query to it using C{*args}, and arrange for it to be
- disconnected from its transport after the query completes.
-
- @param *args: Positional arguments to be passed to
- L{DNSDatagramProtocol.query}.
-
- @return: A L{Deferred} which will be called back with the result of the
- query.
- """
- protocol = self._connectedProtocol()
- d = protocol.query(*args)
- def cbQueried(result):
- protocol.transport.stopListening()
- return result
- d.addBoth(cbQueried)
- return d
-
-
- def queryUDP(self, queries, timeout = None):
- """
- Make a number of DNS queries via UDP.
-
- @type queries: A C{list} of C{dns.Query} instances
- @param queries: The queries to make.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- @raise C{twisted.internet.defer.TimeoutError}: When the query times
- out.
- """
- if timeout is None:
- timeout = self.timeout
-
- addresses = self.servers + list(self.dynServers)
- if not addresses:
- return defer.fail(IOError("No domain name servers available"))
-
- # Make sure we go through servers in the list in the order they were
- # specified.
- addresses.reverse()
-
- used = addresses.pop()
- d = self._query(used, queries, timeout[0])
- d.addErrback(self._reissue, addresses, [used], queries, timeout)
- return d
-
-
- def _reissue(self, reason, addressesLeft, addressesUsed, query, timeout):
- reason.trap(dns.DNSQueryTimeoutError)
-
- # If there are no servers left to be tried, adjust the timeout
- # to the next longest timeout period and move all the
- # "used" addresses back to the list of addresses to try.
- if not addressesLeft:
- addressesLeft = addressesUsed
- addressesLeft.reverse()
- addressesUsed = []
- timeout = timeout[1:]
-
- # If all timeout values have been used this query has failed. Tell the
- # protocol we're giving up on it and return a terminal timeout failure
- # to our caller.
- if not timeout:
- return failure.Failure(defer.TimeoutError(query))
-
- # Get an address to try. Take it out of the list of addresses
- # to try and put it ino the list of already tried addresses.
- address = addressesLeft.pop()
- addressesUsed.append(address)
-
- # Issue a query to a server. Use the current timeout. Add this
- # function as a timeout errback in case another retry is required.
- d = self._query(address, query, timeout[0], reason.value.id)
- d.addErrback(self._reissue, addressesLeft, addressesUsed, query, timeout)
- return d
-
-
- def queryTCP(self, queries, timeout = 10):
- """
- Make a number of DNS queries via TCP.
-
- @type queries: Any non-zero number of C{dns.Query} instances
- @param queries: The queries to make.
-
- @type timeout: C{int}
- @param timeout: The number of seconds after which to fail.
-
- @rtype: C{Deferred}
- """
- if not len(self.connections):
- address = self.pickServer()
- if address is None:
- return defer.fail(IOError("No domain name servers available"))
- host, port = address
- self._reactor.connectTCP(host, port, self.factory)
- self.pending.append((defer.Deferred(), queries, timeout))
- return self.pending[-1][0]
- else:
- return self.connections[0].query(queries, timeout)
-
-
- def filterAnswers(self, message):
- """
- Extract results from the given message.
-
- If the message was truncated, re-attempt the query over TCP and return
- a Deferred which will fire with the results of that query.
-
- If the message's result code is not L{dns.OK}, return a Failure
- indicating the type of error which occurred.
-
- Otherwise, return a three-tuple of lists containing the results from
- the answers section, the authority section, and the additional section.
- """
- if message.trunc:
- return self.queryTCP(message.queries).addCallback(self.filterAnswers)
- if message.rCode != dns.OK:
- return failure.Failure(self.exceptionForCode(message.rCode)(message))
- return (message.answers, message.authority, message.additional)
-
-
- def _lookup(self, name, cls, type, timeout):
- """
- Build a L{dns.Query} for the given parameters and dispatch it via UDP.
-
- If this query is already outstanding, it will not be re-issued.
- Instead, when the outstanding query receives a response, that response
- will be re-used for this query as well.
-
- @type name: C{str}
- @type type: C{int}
- @type cls: C{int}
-
- @return: A L{Deferred} which fires with a three-tuple giving the
- answer, authority, and additional sections of the response or with
- a L{Failure} if the response code is anything other than C{dns.OK}.
- """
- key = (name, type, cls)
- waiting = self._waiting.get(key)
- if waiting is None:
- self._waiting[key] = []
- d = self.queryUDP([dns.Query(name, type, cls)], timeout)
- def cbResult(result):
- for d in self._waiting.pop(key):
- d.callback(result)
- return result
- d.addCallback(self.filterAnswers)
- d.addBoth(cbResult)
- else:
- d = defer.Deferred()
- waiting.append(d)
- return d
-
-
- # This one doesn't ever belong on UDP
- def lookupZone(self, name, timeout = 10):
- """
- Perform an AXFR request. This is quite different from usual
- DNS requests. See http://cr.yp.to/djbdns/axfr-notes.html for
- more information.
- """
- address = self.pickServer()
- if address is None:
- return defer.fail(IOError('No domain name servers available'))
- host, port = address
- d = defer.Deferred()
- controller = AXFRController(name, d)
- factory = DNSClientFactory(controller, timeout)
- factory.noisy = False #stfu
-
- connector = self._reactor.connectTCP(host, port, factory)
- controller.timeoutCall = self._reactor.callLater(
- timeout or 10, self._timeoutZone, d, controller,
- connector, timeout or 10)
- return d.addCallback(self._cbLookupZone, connector)
-
- def _timeoutZone(self, d, controller, connector, seconds):
- connector.disconnect()
- controller.timeoutCall = None
- controller.deferred = None
- d.errback(error.TimeoutError("Zone lookup timed out after %d seconds" % (seconds,)))
-
- def _cbLookupZone(self, result, connector):
- connector.disconnect()
- return (result, [], [])
-
-
-class AXFRController:
- timeoutCall = None
-
- def __init__(self, name, deferred):
- self.name = name
- self.deferred = deferred
- self.soa = None
- self.records = []
-
- def connectionMade(self, protocol):
- # dig saids recursion-desired to 0, so I will too
- message = dns.Message(protocol.pickID(), recDes=0)
- message.queries = [dns.Query(self.name, dns.AXFR, dns.IN)]
- protocol.writeMessage(message)
-
-
- def connectionLost(self, protocol):
- # XXX Do something here - see #3428
- pass
-
-
- def messageReceived(self, message, protocol):
- # Caveat: We have to handle two cases: All records are in 1
- # message, or all records are in N messages.
-
- # According to http://cr.yp.to/djbdns/axfr-notes.html,
- # 'authority' and 'additional' are always empty, and only
- # 'answers' is present.
- self.records.extend(message.answers)
- if not self.records:
- return
- if not self.soa:
- if self.records[0].type == dns.SOA:
- #print "first SOA!"
- self.soa = self.records[0]
- if len(self.records) > 1 and self.records[-1].type == dns.SOA:
- #print "It's the second SOA! We're done."
- if self.timeoutCall is not None:
- self.timeoutCall.cancel()
- self.timeoutCall = None
- if self.deferred is not None:
- self.deferred.callback(self.records)
- self.deferred = None
-
-
-
-from twisted.internet.base import ThreadedResolver as _ThreadedResolverImpl
-
-class ThreadedResolver(_ThreadedResolverImpl):
- def __init__(self, reactor=None):
- if reactor is None:
- from twisted.internet import reactor
- _ThreadedResolverImpl.__init__(self, reactor)
- warnings.warn(
- "twisted.names.client.ThreadedResolver is deprecated since "
- "Twisted 9.0, use twisted.internet.base.ThreadedResolver "
- "instead.",
- category=DeprecationWarning, stacklevel=2)
-
-class DNSClientFactory(protocol.ClientFactory):
- def __init__(self, controller, timeout = 10):
- self.controller = controller
- self.timeout = timeout
-
-
- def clientConnectionLost(self, connector, reason):
- pass
-
-
- def buildProtocol(self, addr):
- p = dns.DNSProtocol(self.controller)
- p.factory = self
- return p
-
-
-
-def createResolver(servers=None, resolvconf=None, hosts=None):
- """
- Create and return a Resolver.
-
- @type servers: C{list} of C{(str, int)} or C{None}
-
- @param servers: If not C{None}, interpreted as a list of domain name servers
- to attempt to use. Each server is a tuple of address in C{str} dotted-quad
- form and C{int} port number.
-
- @type resolvconf: C{str} or C{None}
- @param resolvconf: If not C{None}, on posix systems will be interpreted as
- an alternate resolv.conf to use. Will do nothing on windows systems. If
- C{None}, /etc/resolv.conf will be used.
-
- @type hosts: C{str} or C{None}
- @param hosts: If not C{None}, an alternate hosts file to use. If C{None}
- on posix systems, /etc/hosts will be used. On windows, C:\windows\hosts
- will be used.
-
- @rtype: C{IResolver}
- """
- from twisted.names import resolve, cache, root, hosts as hostsModule
- if platform.getType() == 'posix':
- if resolvconf is None:
- resolvconf = '/etc/resolv.conf'
- if hosts is None:
- hosts = '/etc/hosts'
- theResolver = Resolver(resolvconf, servers)
- hostResolver = hostsModule.Resolver(hosts)
- else:
- if hosts is None:
- hosts = r'c:\windows\hosts'
- from twisted.internet import reactor
- bootstrap = _ThreadedResolverImpl(reactor)
- hostResolver = hostsModule.Resolver(hosts)
- theResolver = root.bootstrap(bootstrap)
-
- L = [hostResolver, cache.CacheResolver(), theResolver]
- return resolve.ResolverChain(L)
-
-theResolver = None
-def getResolver():
- """
- Get a Resolver instance.
-
- Create twisted.names.client.theResolver if it is C{None}, and then return
- that value.
-
- @rtype: C{IResolver}
- """
- global theResolver
- if theResolver is None:
- try:
- theResolver = createResolver()
- except ValueError:
- theResolver = createResolver(servers=[('127.0.0.1', 53)])
- return theResolver
-
-def getHostByName(name, timeout=None, effort=10):
- """
- Resolve a name to a valid ipv4 or ipv6 address.
-
- Will errback with C{DNSQueryTimeoutError} on a timeout, C{DomainError} or
- C{AuthoritativeDomainError} (or subclasses) on other errors.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @type effort: C{int}
- @param effort: How many times CNAME and NS records to follow while
- resolving this name.
-
- @rtype: C{Deferred}
- """
- return getResolver().getHostByName(name, timeout, effort)
-
-def lookupAddress(name, timeout=None):
- """
- Perform an A record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupAddress(name, timeout)
-
-def lookupIPV6Address(name, timeout=None):
- """
- Perform an AAAA record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupIPV6Address(name, timeout)
-
-def lookupAddress6(name, timeout=None):
- """
- Perform an A6 record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupAddress6(name, timeout)
-
-def lookupMailExchange(name, timeout=None):
- """
- Perform an MX record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupMailExchange(name, timeout)
-
-def lookupNameservers(name, timeout=None):
- """
- Perform an NS record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupNameservers(name, timeout)
-
-def lookupCanonicalName(name, timeout=None):
- """
- Perform a CNAME record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupCanonicalName(name, timeout)
-
-def lookupMailBox(name, timeout=None):
- """
- Perform an MB record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupMailBox(name, timeout)
-
-def lookupMailGroup(name, timeout=None):
- """
- Perform an MG record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupMailGroup(name, timeout)
-
-def lookupMailRename(name, timeout=None):
- """
- Perform an MR record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupMailRename(name, timeout)
-
-def lookupPointer(name, timeout=None):
- """
- Perform a PTR record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupPointer(name, timeout)
-
-def lookupAuthority(name, timeout=None):
- """
- Perform an SOA record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupAuthority(name, timeout)
-
-def lookupNull(name, timeout=None):
- """
- Perform a NULL record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupNull(name, timeout)
-
-def lookupWellKnownServices(name, timeout=None):
- """
- Perform a WKS record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupWellKnownServices(name, timeout)
-
-def lookupService(name, timeout=None):
- """
- Perform an SRV record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupService(name, timeout)
-
-def lookupHostInfo(name, timeout=None):
- """
- Perform a HINFO record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupHostInfo(name, timeout)
-
-def lookupMailboxInfo(name, timeout=None):
- """
- Perform an MINFO record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupMailboxInfo(name, timeout)
-
-def lookupText(name, timeout=None):
- """
- Perform a TXT record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupText(name, timeout)
-
-def lookupSenderPolicy(name, timeout=None):
- """
- Perform a SPF record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupSenderPolicy(name, timeout)
-
-def lookupResponsibility(name, timeout=None):
- """
- Perform an RP record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupResponsibility(name, timeout)
-
-def lookupAFSDatabase(name, timeout=None):
- """
- Perform an AFSDB record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupAFSDatabase(name, timeout)
-
-def lookupZone(name, timeout=None):
- """
- Perform an AXFR record lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: C{int}
- @param timeout: When this timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- # XXX: timeout here is not a list of ints, it is a single int.
- return getResolver().lookupZone(name, timeout)
-
-def lookupAllRecords(name, timeout=None):
- """
- ALL_RECORD lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupAllRecords(name, timeout)
-
-
-
-def lookupNamingAuthorityPointer(name, timeout=None):
- """
- NAPTR lookup.
-
- @type name: C{str}
- @param name: DNS name to resolve.
-
- @type timeout: Sequence of C{int}
- @param timeout: Number of seconds after which to reissue the query.
- When the last timeout expires, the query is considered failed.
-
- @rtype: C{Deferred}
- """
- return getResolver().lookupNamingAuthorityPointer(name, timeout)