bin/pvl.dns-zone
changeset 252 0ea4450fdd40
parent 251 d250f200dd7e
child 258 1ad9cec4f556
--- 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)