Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(156)

Unified Diff: third_party/twisted_8_1/twisted/names/root.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/twisted_8_1/twisted/names/root.py
diff --git a/third_party/twisted_8_1/twisted/names/root.py b/third_party/twisted_8_1/twisted/names/root.py
deleted file mode 100644
index b5b64b2375ce1ec06d65defcdb298b57cf6b52a6..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/names/root.py
+++ /dev/null
@@ -1,208 +0,0 @@
-# -*- test-case-name: twisted.names.test.test_rootresolve -*-
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-
-"""
-Resolver implementation for querying successive authoritative servers to
-lookup a record, starting from the root nameservers.
-
-@author: U{Jp Calderone<mailto:exarkun@twistedmatrix.com>}
-
-todo::
- robustify it
- break discoverAuthority into several smaller functions
- documentation
-"""
-
-from __future__ import generators
-
-import sys
-
-from twisted.python import log
-from twisted.internet import defer
-from twisted.names import dns
-from twisted.names import common
-
-def retry(t, p, *args):
- assert t, "Timeout is required"
- t = list(t)
- def errback(failure):
- failure.trap(defer.TimeoutError)
- if not t:
- return failure
- return p.query(timeout=t.pop(0), *args
- ).addErrback(errback
- )
- return p.query(timeout=t.pop(0), *args
- ).addErrback(errback
- )
-
-class _DummyController:
- def messageReceived(self, *args):
- pass
-
-class Resolver(common.ResolverBase):
- def __init__(self, hints):
- common.ResolverBase.__init__(self)
- self.hints = hints
-
- def _lookup(self, name, cls, type, timeout):
- d = discoverAuthority(name, self.hints
- ).addCallback(self.discoveredAuthority, name, cls, type, timeout
- )
- return d
-
- def discoveredAuthority(self, auth, name, cls, type, timeout):
- from twisted.names import client
- q = dns.Query(name, type, cls)
- r = client.Resolver(servers=[(auth, dns.PORT)])
- d = r.queryUDP([q], timeout)
- d.addCallback(r.filterAnswers)
- return d
-
-def lookupNameservers(host, atServer, p=None):
- # print 'Nameserver lookup for', host, 'at', atServer, 'with', p
- if p is None:
- p = dns.DNSDatagramProtocol(_DummyController())
- p.noisy = False
- return retry(
- (1, 3, 11, 45), # Timeouts
- p, # Protocol instance
- (atServer, dns.PORT), # Server to query
- [dns.Query(host, dns.NS, dns.IN)] # Question to ask
- )
-
-def lookupAddress(host, atServer, p=None):
- # print 'Address lookup for', host, 'at', atServer, 'with', p
- if p is None:
- p = dns.DNSDatagramProtocol(_DummyController())
- p.noisy = False
- return retry(
- (1, 3, 11, 45), # Timeouts
- p, # Protocol instance
- (atServer, dns.PORT), # Server to query
- [dns.Query(host, dns.A, dns.IN)] # Question to ask
- )
-
-def extractAuthority(msg, cache):
- records = msg.answers + msg.authority + msg.additional
- nameservers = [r for r in records if r.type == dns.NS]
-
- # print 'Records for', soFar, ':', records
- # print 'NS for', soFar, ':', nameservers
-
- if not nameservers:
- return None, nameservers
- if not records:
- raise IOError("No records")
- for r in records:
- if r.type == dns.A:
- cache[str(r.name)] = r.payload.dottedQuad()
- for r in records:
- if r.type == dns.NS:
- if str(r.payload.name) in cache:
- return cache[str(r.payload.name)], nameservers
- for addr in records:
- if addr.type == dns.A and addr.name == r.name:
- return addr.payload.dottedQuad(), nameservers
- return None, nameservers
-
-def discoverAuthority(host, roots, cache=None, p=None):
- if cache is None:
- cache = {}
-
- rootAuths = list(roots)
-
- parts = host.rstrip('.').split('.')
- parts.reverse()
-
- authority = rootAuths.pop()
-
- soFar = ''
- for part in parts:
- soFar = part + '.' + soFar
- # print '///////', soFar, authority, p
- msg = defer.waitForDeferred(lookupNameservers(soFar, authority, p))
- yield msg
- msg = msg.getResult()
-
- newAuth, nameservers = extractAuthority(msg, cache)
-
- if newAuth is not None:
- # print "newAuth is not None"
- authority = newAuth
- else:
- if nameservers:
- r = str(nameservers[0].payload.name)
- # print 'Recursively discovering authority for', r
- authority = defer.waitForDeferred(discoverAuthority(r, roots, cache, p))
- yield authority
- authority = authority.getResult()
- # print 'Discovered to be', authority, 'for', r
-## else:
-## # print 'Doing address lookup for', soFar, 'at', authority
-## msg = defer.waitForDeferred(lookupAddress(soFar, authority, p))
-## yield msg
-## msg = msg.getResult()
-## records = msg.answers + msg.authority + msg.additional
-## addresses = [r for r in records if r.type == dns.A]
-## if addresses:
-## authority = addresses[0].payload.dottedQuad()
-## else:
-## raise IOError("Resolution error")
- # print "Yielding authority", authority
- yield authority
-
-discoverAuthority = defer.deferredGenerator(discoverAuthority)
-
-def makePlaceholder(deferred, name):
- def placeholder(*args, **kw):
- deferred.addCallback(lambda r: getattr(r, name)(*args, **kw))
- return deferred
- return placeholder
-
-class DeferredResolver:
- def __init__(self, resolverDeferred):
- self.waiting = []
- resolverDeferred.addCallback(self.gotRealResolver)
-
- def gotRealResolver(self, resolver):
- w = self.waiting
- self.__dict__ = resolver.__dict__
- self.__class__ = resolver.__class__
- for d in w:
- d.callback(resolver)
-
- def __getattr__(self, name):
- if name.startswith('lookup') or name in ('getHostByName', 'query'):
- self.waiting.append(defer.Deferred())
- return makePlaceholder(self.waiting[-1], name)
- raise AttributeError(name)
-
-def bootstrap(resolver):
- """Lookup the root nameserver addresses using the given resolver
-
- Return a Resolver which will eventually become a C{root.Resolver}
- instance that has references to all the root servers that we were able
- to look up.
- """
- domains = [chr(ord('a') + i) for i in range(13)]
- # f = lambda r: (log.msg('Root server address: ' + str(r)), r)[1]
- f = lambda r: r
- L = [resolver.getHostByName('%s.root-servers.net' % d).addCallback(f) for d in domains]
- d = defer.DeferredList(L)
- d.addCallback(lambda r: Resolver([e[1] for e in r if e[0]]))
- return DeferredResolver(d)
-
-if __name__ == '__main__':
- if len(sys.argv) < 2:
- print 'Specify a domain'
- else:
- log.startLogging(sys.stdout)
- from twisted.names.client import ThreadedResolver
- r = bootstrap(ThreadedResolver())
- d = r.lookupAddress(sys.argv[1])
- d.addCallbacks(log.msg, log.err).addBoth(lambda _: reactor.stop())
- from twisted.internet import reactor
- reactor.run()
« no previous file with comments | « third_party/twisted_8_1/twisted/names/resolve.py ('k') | third_party/twisted_8_1/twisted/names/secondary.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698