class ZoneExporter(object):
- def __init__(self, db, format, origin, ttl=None):
+ def __init__(self, db, format, origin, ttl=None, master=None, zonemaster=None):
self.db = db
self.format = format
self.origin = origin
- self.ttl = ttl
+ self.ttl = ttl or 86400
+ self.master = master or "invalid."
+ self.zonemaster = zonemaster or "zonemaster.invalid."
try:
self.write = self.formats[format]
f.write("Updated At: %s\n" % created_at.isoformat())
f.write(";##############################################################################\n")
- f.write("$ORIGIN %s" % self.origin)
+ f.write("$ORIGIN %s\n" % self.origin)
if self.ttl:
- f.write("$TTL %s" % self.ttl)
+ f.write("$TTL %s\n" % self.ttl)
+
+ # Write the SOA
+ f.write("@ IN SOA %s %s %s 3600 600 3600000 %s\n" % \
+ (self.master, self.zonemaster, self.db.created_at, self.ttl))
# Write all records
self.write(self, f)
export_zone.add_argument("--origin", required=True,
help=_("The origin of the DNS zone"))
export_zone.add_argument("--ttl", help=_("The TTL of the DNS zone"))
+ export_zone.add_argument("--master", help=_("The zone master"))
+ export_zone.add_argument("--zonemaster", help=_("The email address of the zone's administrator"))
export_zone.set_defaults(func=self.handle_export_zone)
args = parser.parse_args()
"""
Exports the database in DNS zone format
"""
- e = location.export.ZoneExporter(db, format=ns.type, origin=ns.origin, ttl=ns.ttl)
+ e = location.export.ZoneExporter(db,
+ format = ns.type,
+ origin = ns.origin,
+ ttl = ns.ttl,
+ master = ns.master,
+ zonemaster = ns.zonemaster,
+ )
e.export(ns.output)