bin/pvl.dns-serial
author Tero Marttila <terom@paivola.fi>
Sat, 21 Dec 2013 22:57:44 +0200
changeset 329 b3778c190aa5
parent 246 819320b0cf81
permissions -rwxr-xr-x
version 0..0:

pvl.rrd: api.report()
pvl.wlan-syslog: track openwrt hostapd syslog wlan sta activity
pvl.verkko.wlan: basic Table view
pvl.dns-serial
pvl.dns-zone
pvl.dhcp.config: nested blocks
pvl.hosts-import: import hosts from dns/dhcp
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235
pvl.hosts-dhcp: generate dhcp hosts conf
#!/usr/bin/env python

"""
    Update zone serials.
"""

from pvl.dns import __version__
import pvl.dns.serial

import os.path

import pvl.args
import optparse
import logging; log = logging.getLogger('main')

def parse_options (argv) :
    """
        Parse command-line arguments.
    """

    prog = argv[0]

    parser = optparse.OptionParser(
            prog        = prog,
            usage       = '%prog: [options] <serial-path> ...',
            version     = __version__,

            # module docstring
            description = __doc__,
    )
    
    # options
    parser.add_option_group(pvl.args.parser(parser))

    parser.add_option('-n', '--noop',       action='store_true',
            help="Do not actually update serial")

    # defaults
    parser.set_defaults(

    )
    
    # parse
    options, args = parser.parse_args(argv[1:])
    
    # apply
    pvl.args.apply(options, prog)

    return options, args

def process_serial (options, path) :
    """
        Read old serial, generate new one, and update file.
    """

    # read
    if os.path.exists(path) :
        serial = open(path).read().strip()
        log.debug("%s: current: %s", path, serial)

    else :
        log.warn("%s: Given .serial does not yet exist", path)
        serial = None

    # update
    serial = pvl.dns.serial.update_serial(serial)
    
    if options.noop :
        log.warn("%s: %s", path, serial)
    else :
        # write
        open(path, 'w').write(serial + '\n')

    return serial

def main (argv) :
    options, args = parse_options(argv)

    # serial files to update
    for path in args :
        process_serial(options, path)
    
    return 0

if __name__ == '__main__':
    import sys

    sys.exit(main(sys.argv))