+invirt-dns (0.0.5) unstable; urgency=low
+
+ * Instead of hacking in support for prod.xvm.mit.edu, support zone files
+ that override the database
+
+ -- Evan Broder <broder@mit.edu> Sat, 01 Nov 2008 00:48:53 -0400
+
invirt-dns (0.0.4) unstable; urgency=low
* Whoops - actually install the invirt-dns script
from twisted.names import server
from twisted.names import dns
from twisted.names import common
+from twisted.names import authority
from twisted.internet import defer
from twisted.python import failure
ttl = 900
name = name.lower()
- # XXX hack for the transition to two separate dev/prod clusters
- if 'dev.xvm.mit.edu' in self.domains and name.endswith('prod.xvm.mit.edu'):
- # import time, sys
- # print time.localtime(), 'handling prod request', name
- # sys.stdout.flush()
-
- # Point the client in the right direction for prod requests.
- authority = dns.RRHeader('prod.xvm.mit.edu', dns.NS, dns.IN, 3600,
- dns.Record_NS(name='ns1.prod.xvm.mit.edu', ttl=3600), auth=True)
- additional = dns.RRHeader('ns1.prod.xvm.mit.edu', dns.A, dns.IN, 3600,
- dns.Record_A(address='18.181.0.221', ttl=3600), auth=True)
- return defer.succeed(([], [authority], [additional]))
-
if name in self.domains:
domain = name
else:
return defer.fail(failure.Failure(dns.AuthoritativeDomainError(name)))
if '__main__' == __name__:
- resolver = DatabaseAuthority()
+ resolvers = []
+ for zone in config.dns.zone_files:
+ for origin in config.dns.domains:
+ r = authority.BindAuthority(zone)
+ # This sucks, but if I want a generic zone file, I have to
+ # reload the information by hand
+ r.origin = origin
+ lines = open(zone).readlines()
+ lines = r.collapseContinuations(r.stripComments(lines))
+ r.parseLines(lines)
+
+ resolvers.append(r)
+ resolvers.append(DatabaseAuthority())
verbosity = 0
- f = server.DNSServerFactory(authorities=[resolver], verbose=verbosity)
+ f = server.DNSServerFactory(authorities=resolvers, verbose=verbosity)
p = dns.DNSDatagramProtocol(f)
f.noisy = p.noisy = verbosity