--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/creatkey Fri Jun 18 15:36:13 2010 +0200
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+while getopts ":k" opt
+do
+ case $opt in
+ k ) K_OPTION="1";;
+ \? ) echo "SYNOPSIS: creatkey [-k] zonename"
+ exit 1
+ esac # prueft ob -k als option angegeben wurde
+done
+
+test $# -lt $[$K_OPTION+1] && echo "SYNOPSIS: creatkey [-k] zonename" && exit 1
+ # prueft ob eine es eine domain gibt
+
+# durchgang fuer jede eingabe
+for DOMAIN in $@
+do
+
+ ZONE_DIR=/etc/bind/master # konfiguration
+ ZONE_NAME=`idn --quiet $DOMAIN`
+
+ if [ -d $ZONE_DIR/$ZONE_NAME ] # prueft die existens des zoneordners
+ then
+ cd $ZONE_DIR/$ZONE_NAME/
+
+ test -f index.ksk || touch index.ksk
+ test -f index.zsk || touch index.zsk
+
+ if test # erzeugt die schluessel und erstelt eine indexdatei
+ then
+ echo "erzeugt zsk fuer" $DOMAIN
+ dnssec-keygen -a RSASHA1 -b 512 -n ZONE $ZONE_NAME >> index.zsk
+ INDEX_ZSK=$( tail -n2 index.zsk ) ; echo $INDEX_ZSK | fmt -w1 > index.zsk
+ else
+ echo "erzeugt ksk fuer" $DOMAIN
+ dnssec-keygen -a RSASHA1 -b 1024 -n ZONE -f KSK $ZONE_NAME >> index.ksk
+ INDEX_KSK=$( tail -n2 index.ksk ) ; echo $INDEX_KSK | fmt -w1 > index.ksk
+ fi
+
+ #loesche alle Schluessel die nicht in der indexdatei stehen
+ rm $(ls K*[key,private] | grep -v "`cat index.zsk`" | grep -v "`cat index.ksk`") 2> /dev/null
+
+ #erzeugt ein backup und entfernt alle schluessel aus der zonedatei
+ mv $ZONE_NAME $ZONE_NAME.old
+ grep -v 'DNSKEY' $ZONE_NAME.old >> $ZONE_NAME
+
+ #fuegt die schluessel in die zonedatei ein
+ cat K$ZONE_NAME.*key >>$ZONE_NAME
+
+ #signiert die zonedatei - erzeugt zone.signed
+ dnssec-signzone $ZONE_NAME
+ else
+ echo "zone $ZONE_NAME nicht gefunden"
+ fi
+
+done
+
+
+exit 0