updated documentation
[public/microdnssec.git] / sign-zone.sh
1 #!/bin/bash
2 source `dirname $0`/conf/settings
3 cd `dirname $0`
4
5 if [ $# -ne 1 ] ; then
6         echo "$0 <domain.tld>"
7         exit
8 fi 
9 if [ ! -d zones/$1 ] ; then
10     echo "zone $1 does not exists"
11     exit
12 fi
13
14 function gen_salt { 
15     # gen_salt function copied and adapted from advanced bash scripting guide
16     LENGTH=$1
17     MATRIX="0123456789ABCDEF"
18
19     while [ "${n:=1}" -le "$LENGTH" ]
20     do
21         SALT="$SALT${MATRIX:$(($RANDOM%${#MATRIX})):1}"
22         let n+=1
23     done
24     return 0;
25 }
26
27 cd zones/$1 
28
29 echo "=== zone $1"
30 echo "... adding keys"
31 cat $1 K$1*.key > $1.zone
32 cat $1 K$1*.oldkey  >> $1.zone 2>/dev/null
33
34 echo "... signing"
35 gen_salt $salt_length
36 $signzone -A -a  -3 $SALT -N unixtime -o $1 $1.zone
37
38 for i in `seq $num_nameservers`  ; do 
39     ns=ns$i
40
41     echo "... uploading to $ns"
42     eval ssh_access=\$${ns}_ssh_access
43     eval conf_path=\$${ns}_conf_path
44     eval rndc_path=\$${ns}_rndc_path
45
46     scp -q $1.zone.signed $ssh_access:$conf_path
47     ssh -q $ssh_access  "$rndc_path reload"
48 done