#! /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
