#! /bin/sh - # -*- mode:sh -*- # $Id:$ # Copyright (c) 2009 travis+code@subspacefield.org # set base filename for prepending to errors progname=$(basename "$0") # usage="\ $progname [-r refresh] [-e retry] [-x expire] [-m minimum] [-s serial] [-a append] [-t ttl] email_of_hostmaster master_ns -r refresh zone information after N seconds -e retry retry zone tranfers after N seconds -x expire secondary copies of zones expire after N seconds -m minimum minimum TTL time on records -s serial serial number for zone (default is seconds since epoch) -t ttl default TTL for zone file email_of_hostmaster the full email address of the hostmaster for this domain master_ns the primary name server for this domain " # defaults except for email, which needs dnsmaster hostname refresh=10800 # refresh after 3 hours retry=3600 # retry zone transfer after one hour expire=604800 # zone expires after one week minimum=86400 # minimum TTL time of one day serial="$(date +%s)" # default is number of seconds since epoch append=/dev/null ttl="0" # no default TTL unless specified # process command line options while getopts "a:r:e:x:m:s:t:" c do case "$c" in "a") append=$OPTARG;; "r") refresh=$OPTARG;; "e") retry=$OPTARG;; "x") expire=$OPTARG;; "m") minimum=$OPTARG;; "s") serial=$OPTARG;; "t") ttl=$OPTARG;; "?") echo -n "$usage"; exit;; esac done shift $(($OPTIND - 1)) if test "$#" -lt 2 then echo -n "$usage" exit 1 fi echo "; BIND/named DNS zone file" echo if test "$ttl" != "0" then echo echo \$TTL $ttl echo fi # Convert @ sign to period, leading periods to "hostmaster" and then a period. # This makes "hostmaster@domain" the default contact if no username supplied. email=$(echo "$1" | sed -e 's/@/./' | sed -e 's/^\./hostmaster./') # Get the name for the master nameserver for this domain master="$2" echo "@ IN SOA $master $email (" echo " $serial" echo " $refresh" echo " $retry" echo " $expire" echo " $minimum)" if test "$append" != "/dev/null" then cat "$append" fi exit 0