+#!/bin/bash
+source `dirname $0`/conf/settings
+cd `dirname $0`
+
+if [ $# -ne 1 ] ; then
+ echo "$0 <domain.tld>"
+ exit
+fi
+if [ ! -d zones/$1 ] ; then
+ echo "zone $1 does not exists"
+ exit
+fi
+
+function gen_salt {
+ # gen_salt function copied and adapted from advanced bash scripting guide
+ LENGTH=$1
+ MATRIX="0123456789ABCDEF"
+
+ while [ "${n:=1}" -le "$LENGTH" ]
+ do
+ SALT="$SALT${MATRIX:$(($RANDOM%${#MATRIX})):1}"
+ let n+=1
+ done
+ return 0;
+}
+
+cd zones/$1
+
+echo "=== zone $1"
+echo "... adding keys"
+cat $1 K$1*.key > $1.zone
+cat $1 K$1*.oldkey >> $1.zone
+
+echo "... signing"
+gen_salt $salt_length
+$signzone -A -a -3 $SALT -N unixtime -o $1 $1.zone
+
+for i in `seq $num_nameservers` ; do
+ ns=ns$i
+
+ echo "... uploading to $ns"
+ eval ssh_access=\$${ns}_ssh_access
+ eval conf_path=\$${ns}_conf_path
+ eval rndc_path=\$${ns}_rndc_path
+
+ scp -q $1.zone.signed $ssh_access:$conf_path
+ ssh -q $ssh_access "$rndc_path reload"
+done