Index: third_party/twisted_8_1/twisted/names/secondary.py |
diff --git a/third_party/twisted_8_1/twisted/names/secondary.py b/third_party/twisted_8_1/twisted/names/secondary.py |
deleted file mode 100644 |
index 19afa246e247056364bb73a0b1dbc7a085410f33..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/names/secondary.py |
+++ /dev/null |
@@ -1,102 +0,0 @@ |
-# Copyright (c) 2001-2006 Twisted Matrix Laboratories. |
-# See LICENSE for details. |
- |
-from twisted.internet import task, defer |
-from twisted.names import dns |
-from twisted.names import common |
-from twisted.names import client |
-from twisted.names import resolve |
-from twisted.python import log, failure |
-from twisted.application import service |
- |
-class SecondaryAuthorityService(service.Service): |
- calls = None |
- |
- def __init__(self, primary, domains): |
- """ |
- @param primary: The IP address of the server from which to perform |
- zone transfers. |
- |
- @param domains: A sequence of domain names for which to perform |
- zone transfers. |
- """ |
- self.primary = primary |
- self.domains = [SecondaryAuthority(primary, d) for d in domains] |
- |
- def getAuthority(self): |
- return resolve.ResolverChain(self.domains) |
- |
- def startService(self): |
- service.Service.startService(self) |
- self.calls = [task.LoopingCall(d.transfer) for d in self.domains] |
- i = 0 |
- from twisted.internet import reactor |
- for c in self.calls: |
- # XXX Add errbacks, respect proper timeouts |
- reactor.callLater(i, c.start, 60 * 60) |
- i += 1 |
- |
- def stopService(self): |
- service.Service.stopService(self) |
- for c in self.calls: |
- c.stop() |
- |
- |
-from twisted.names.authority import FileAuthority |
- |
-class SecondaryAuthority(common.ResolverBase): |
- """An Authority that keeps itself updated by performing zone transfers""" |
- |
- transferring = False |
- |
- soa = records = None |
- def __init__(self, primaryIP, domain): |
- common.ResolverBase.__init__(self) |
- self.primary = primaryIP |
- self.domain = domain |
- |
- def transfer(self): |
- if self.transferring: |
- return |
- self.transfering = True |
- return client.Resolver(servers=[(self.primary, dns.PORT)] |
- ).lookupZone(self.domain |
- ).addCallback(self._cbZone |
- ).addErrback(self._ebZone |
- ) |
- |
- |
- def _lookup(self, name, cls, type, timeout=None): |
- if not self.soa or not self.records: |
- return defer.fail(failure.Failure(dns.DomainError(name))) |
- |
- |
- return FileAuthority.__dict__['_lookup'](self, name, cls, type, timeout) |
- |
- #shouldn't we just subclass? :P |
- |
- lookupZone = FileAuthority.__dict__['lookupZone'] |
- |
- def _cbZone(self, zone): |
- ans, _, _ = zone |
- self.records = r = {} |
- for rec in ans: |
- if not self.soa and rec.type == dns.SOA: |
- self.soa = (str(rec.name).lower(), rec.payload) |
- else: |
- r.setdefault(str(rec.name).lower(), []).append(rec.payload) |
- |
- def _ebZone(self, failure): |
- log.msg("Updating %s from %s failed during zone transfer" % (self.domain, self.primary)) |
- log.err(failure) |
- |
- def update(self): |
- self.transfer().addCallbacks(self._cbTransferred, self._ebTransferred) |
- |
- def _cbTransferred(self, result): |
- self.transferring = False |
- |
- def _ebTransferred(self, failure): |
- self.transferred = False |
- log.msg("Transferring %s from %s failed after zone transfer" % (self.domain, self.primary)) |
- log.err(failure) |