Python twisted.internet.interfaces.IResolver() Examples
The following are 21
code examples of twisted.internet.interfaces.IResolver().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
twisted.internet.interfaces
, or try the search function
.
Example #1
Source File: client.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def getResolver(): """ Get a Resolver instance. Create twisted.names.client.theResolver if it is L{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
Example #2
Source File: client.py From python-for-android with Apache License 2.0 | 6 votes |
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
Example #3
Source File: client.py From learn_python3_spider with MIT License | 6 votes |
def getResolver(): """ Get a Resolver instance. Create twisted.names.client.theResolver if it is L{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
Example #4
Source File: test_client.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def test_interface(self): """ L{client.getResolver} returns an object providing L{IResolver}. """ with AlternateReactor(Clock()): resolver = client.getResolver() self.assertTrue(verifyObject(IResolver, resolver))
Example #5
Source File: client.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def createResolver(servers=None, resolvconf=None, hosts=None): """ Create and return a Resolver. @type servers: C{list} of C{(str, int)} or L{None} @param servers: If not L{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 L{None} @param resolvconf: If not L{None}, on posix systems will be interpreted as an alternate resolv.conf to use. Will do nothing on windows systems. If L{None}, /etc/resolv.conf will be used. @type hosts: C{str} or L{None} @param hosts: If not L{None}, an alternate hosts file to use. If L{None} on posix systems, /etc/hosts will be used. On windows, C:\windows\hosts will be used. @rtype: C{IResolver} """ if platform.getType() == 'posix': if resolvconf is None: resolvconf = b'/etc/resolv.conf' if hosts is None: hosts = b'/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, resolverFactory=Resolver) L = [hostResolver, cache.CacheResolver(), theResolver] return resolve.ResolverChain(L)
Example #6
Source File: client.py From python-for-android with Apache License 2.0 | 5 votes |
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 addresses of domain name servers to attempt to use. Addresses should be in dotted-quad form. @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)
Example #7
Source File: resolve.py From learn_python3_spider with MIT License | 5 votes |
def _lookup(self, name, cls, type, timeout): """ Build a L{dns.Query} for the given parameters and dispatch it to each L{IResolver} in C{self.resolvers} until an answer or L{error.AuthoritativeDomainError} is returned. @type name: C{str} @param name: DNS name to resolve. @type type: C{int} @param type: DNS record type. @type cls: C{int} @param cls: DNS record class. @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: L{Deferred} @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. """ if not self.resolvers: return defer.fail(error.DomainError()) q = dns.Query(name, type, cls) d = self.resolvers[0].query(q, timeout) for r in self.resolvers[1:]: d = d.addErrback( FailureHandler(r.query, q, timeout) ) return d
Example #8
Source File: resolve.py From learn_python3_spider with MIT License | 5 votes |
def __init__(self, resolvers): """ @type resolvers: L{list} @param resolvers: A L{list} of L{IResolver} providers. """ common.ResolverBase.__init__(self) self.resolvers = resolvers
Example #9
Source File: test_client.py From learn_python3_spider with MIT License | 5 votes |
def test_clientResolverProvidesIResolver(self): """ L{client.Resolver} provides L{IResolver}. """ verifyClass(IResolver, client.Resolver)
Example #10
Source File: test_client.py From learn_python3_spider with MIT License | 5 votes |
def test_clientProvidesIResolver(self): """ L{client} provides L{IResolver} through a series of free functions. """ verifyObject(IResolver, client)
Example #11
Source File: test_client.py From learn_python3_spider with MIT License | 5 votes |
def test_interface(self): """ L{client.getResolver} returns an object providing L{IResolver}. """ with AlternateReactor(Clock()): resolver = client.getResolver() self.assertTrue(verifyObject(IResolver, resolver))
Example #12
Source File: test_common.py From learn_python3_spider with MIT License | 5 votes |
def test_resolverBaseProvidesIResolver(self): """ L{ResolverBase} provides the L{IResolver} interface. """ verifyClass(IResolver, ResolverBase)
Example #13
Source File: test_cache.py From learn_python3_spider with MIT License | 5 votes |
def test_interface(self): """ L{cache.CacheResolver} implements L{interfaces.IResolver} """ verifyClass(interfaces.IResolver, cache.CacheResolver)
Example #14
Source File: test_cache.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def test_interface(self): """ L{cache.CacheResolver} implements L{interfaces.IResolver} """ verifyClass(interfaces.IResolver, cache.CacheResolver)
Example #15
Source File: client.py From learn_python3_spider with MIT License | 5 votes |
def createResolver(servers=None, resolvconf=None, hosts=None): """ Create and return a Resolver. @type servers: C{list} of C{(str, int)} or L{None} @param servers: If not L{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 L{None} @param resolvconf: If not L{None}, on posix systems will be interpreted as an alternate resolv.conf to use. Will do nothing on windows systems. If L{None}, /etc/resolv.conf will be used. @type hosts: C{str} or L{None} @param hosts: If not L{None}, an alternate hosts file to use. If L{None} on posix systems, /etc/hosts will be used. On windows, C:\windows\hosts will be used. @rtype: C{IResolver} """ if platform.getType() == 'posix': if resolvconf is None: resolvconf = b'/etc/resolv.conf' if hosts is None: hosts = b'/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, resolverFactory=Resolver) L = [hostResolver, cache.CacheResolver(), theResolver] return resolve.ResolverChain(L)
Example #16
Source File: resolve.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def _lookup(self, name, cls, type, timeout): """ Build a L{dns.Query} for the given parameters and dispatch it to each L{IResolver} in C{self.resolvers} until an answer or L{error.AuthoritativeDomainError} is returned. @type name: C{str} @param name: DNS name to resolve. @type type: C{int} @param type: DNS record type. @type cls: C{int} @param cls: DNS record class. @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: L{Deferred} @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. """ if not self.resolvers: return defer.fail(error.DomainError()) q = dns.Query(name, type, cls) d = self.resolvers[0].query(q, timeout) for r in self.resolvers[1:]: d = d.addErrback( FailureHandler(r.query, q, timeout) ) return d
Example #17
Source File: resolve.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def __init__(self, resolvers): """ @type resolvers: L{list} @param resolvers: A L{list} of L{IResolver} providers. """ common.ResolverBase.__init__(self) self.resolvers = resolvers
Example #18
Source File: test_client.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def test_clientResolverProvidesIResolver(self): """ L{client.Resolver} provides L{IResolver}. """ verifyClass(IResolver, client.Resolver)
Example #19
Source File: test_client.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def test_clientProvidesIResolver(self): """ L{client} provides L{IResolver} through a series of free functions. """ verifyObject(IResolver, client)
Example #20
Source File: test_common.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def test_resolverBaseProvidesIResolver(self): """ L{ResolverBase} provides the L{IResolver} interface. """ verifyClass(IResolver, ResolverBase)
Example #21
Source File: network.py From maas with GNU Affero General Public License v3.0 | 4 votes |
def reverseResolve( ip: MaybeIPAddress, resolver: IResolver = None ) -> Optional[List[str]]: """Using the specified IResolver, reverse-resolves the specifed `ip`. :return: a sorted list of resolved hostnames (which the specified IP address reverse-resolves to). If the DNS lookup appeared to succeed, but no hostnames were found, returns an empty list. If the DNS lookup timed out or an error occurred, returns None. """ if resolver is None: resolver = getResolver() ip = IPAddress(ip) try: data = yield resolver.lookupPointer( ip.reverse_dns, timeout=REVERSE_RESOLVE_RETRIES ) # I love the concise way in which I can ask the Twisted data structure # what the list of hostnames is. This is great. results = sorted( (rr.payload.name.name.decode("idna") for rr in data[0]), key=preferred_hostnames_sort_key, ) except AuthoritativeDomainError: # "Failed to reverse-resolve '%s': authoritative failure." % ip # This means the name didn't resolve, so return an empty list. return [] except DomainError: # "Failed to reverse-resolve '%s': no records found." % ip # This means the name didn't resolve, so return an empty list. return [] except DNSQueryTimeoutError: # "Failed to reverse-resolve '%s': timed out." % ip # Don't return an empty list since this implies a temporary failure. pass except ResolverError: # "Failed to reverse-resolve '%s': rejected by local resolver." % ip # Don't return an empty list since this could be temporary (unclear). pass else: return results return None