def getAuthority(self): """ Get a resolver for the transferred domains. @rtype: L{ResolverChain} """ return resolve.ResolverChain(self.domains)
def __init__(self): self._query = 0 self._lock = Lock() self._cache = cache.CacheResolver() rlist = [self._cache, client.Resolver('/etc/resolv.conf')] self._resolve = resolve.ResolverChain(rlist)
def __init__(self, authorities=None, caches=None, clients=None, verbose=0): """ @param authorities: Resolvers which provide authoritative answers. @type authorities: L{list} of L{IResolver} providers @param caches: Resolvers which provide cached non-authoritative answers. The first cache instance is assigned to C{DNSServerFactory.cache} and its C{cacheResult} method will be called when a response is received from one of C{clients}. @type caches: L{list} of L{Cache<twisted.names.cache.CacheResolver>} instances @param clients: Resolvers which are capable of performing recursive DNS lookups. @type clients: L{list} of L{IResolver} providers @param verbose: An integer controlling the verbosity of logging of queries and responses. Default is C{0} which means no logging. Set to C{2} to enable logging of full query and response messages. @type verbose: L{int} """ resolvers = [] if authorities is not None: resolvers.extend(authorities) if caches is not None: resolvers.extend(caches) if clients is not None: resolvers.extend(clients) self.canRecurse = not not clients self.resolver = resolve.ResolverChain(resolvers) self.verbose = verbose if caches: self.cache = caches[-1] self.connections = []
def createResolver(servers=None, resolvconf=None, hosts=None): if hosts is None: hosts = b'/etc/hosts' if platform.getType() == 'posix' else r'c:\windows\hosts' theResolver = Resolver(resolvconf, servers) hostResolver = hostsModule.Resolver(hosts) chain = [hostResolver, cache.CacheResolver(), theResolver] return resolve.ResolverChain(chain)
def __init__(self, authorities = None, caches = None, clients = None, verbose = 0): resolvers = [] if authorities is not None: resolvers.extend(authorities) if caches is not None: resolvers.extend(caches) if clients is not None: resolvers.extend(clients) self.canRecurse = not not clients self.resolver = resolve.ResolverChain(resolvers) self.verbose = verbose if caches: self.cache = caches[-1] self.connections = []
def create_resolver(servers=None, resolvconf=None, hosts=None): if platform.getType() == 'posix': if resolvconf is None: resolvconf = b'/etc/resolv.conf' if hosts is None: hosts = b'/etc/hosts' the_resolver = client.Resolver(resolvconf, servers) host_resolver = Resolver(hosts) else: if hosts is None: hosts = r'c:\windows\hosts' from twisted.internet import reactor bootstrap = client._ThreadedResolverImpl(reactor) host_resolver = Resolver(hosts) the_resolver = root.bootstrap(bootstrap, resolverFactory=client.Resolver) return resolve.ResolverChain([host_resolver, cache.CacheResolver(), the_resolver])
def createResolver(servers=None, resolvconf=None, hosts=None): 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 = HardcoreResolver(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)
def createResolver(configuration): resolverFile = configuration["DNS_RESOLVER"]["HOSTS"]["FILE"] resolverServers = [] i = 0 while i < len(configuration["DNS_RESOLVER"]["SERVERS"]): resolverServers.append( (configuration["DNS_RESOLVER"]["SERVERS"][i]["ADDRESS"], configuration["DNS_RESOLVER"]["SERVERS"][i]["PORT"])) i = i + 1 resolvers = [] if resolverFile != "": resolvers.append(HostsResolver(file=resolverFile)) if len(resolverServers) != 0: resolvers.append(cache.CacheResolver()) resolvers.append(ClientResolver(servers=resolverServers)) if len(resolvers) != 0: return resolve.ResolverChain(resolvers) else: return base.BlockingResolver()
def createResolver(servers=None, resolvconf=None, hosts=None): r""" 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)
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)
def getAuthority(self): return resolve.ResolverChain(self.domains)
def messageReceived(self, message, proto, address=None): self._src_ip = unicode(address[0]) self.resolver.resolvers = [RedirectResolver(self.config, self._src_ip),] + self.original_resolvers self.resolver = resolve.ResolverChain(self.resolver.resolvers) return server.DNSServerFactory.messageReceived(self, message, proto, address)