--- a/bin/pvl.dns-zone Wed Sep 11 14:06:16 2013 +0300
+++ b/bin/pvl.dns-zone Wed Sep 11 14:23:26 2013 +0300
@@ -78,6 +78,10 @@
parser.add_option('--reverse-zone', metavar='NET',
help="Generate forward zone for given subnet (x.z.y | a:b:c:d)")
+ # other
+ parser.add_option('--serial', metavar='YYMMDDXX',
+ help="Set serial for SOA record")
+
# defaults
parser.set_defaults(
# XXX: combine
@@ -139,6 +143,20 @@
return fail
+def process_zone_soa (soa, serial) :
+ return pvl.dns.zone.SOA(
+ soa.master, soa.contact,
+ serial, soa.refresh, soa.retry, soa.expire, soa.nxttl
+ )
+
+def process_zone_serial (zone, serial) :
+ for rr in zone :
+ if rr.type == 'SOA' :
+ # XXX: as SOA record..
+ yield process_zone_soa(pvl.dns.zone.SOA.parse(rr.line), serial)
+ else :
+ yield rr
+
def process_zone_forwards (zone, txt=False, mx=False) :
"""
Process zone data -> forward zone data.
@@ -278,6 +296,11 @@
else :
log.info("Hosts check OK")
+ if options.serial :
+ log.info("Set zone serial: %s", options.serial)
+
+ zone = list(process_zone_serial(zone, serial=options.serial))
+
# output file
output = open_file(options.output, 'w', options.output_charset)