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