--- a/dnssec-creatkey Wed Jul 14 12:05:41 2010 +0200
+++ b/dnssec-creatkey Wed Jul 14 15:37:27 2010 +0200
@@ -1,12 +1,14 @@
#!/bin/bash
set -e
+#import aus der dnstools.conf
source dnstools.conf
-
master_dir=$MASTER_DIR
key_counter_end=$KEY_COUNTER_END
-function test_zsk_new { # prueft ob es einen ZSK gibt
+
+# gibt alle zonen ohne zsk in die standard-ausgabe
+function test_zsk_new {
for zone in $master_dir/*
do
test -f $zone/${zone##*/}.signed || continue
@@ -14,7 +16,9 @@
done
}
-function test_ksk_new { # prueft ob es einen KSK gibt
+
+# gibt alle zonen ohne ksk in die standard-ausgabe
+function test_ksk_new {
for zone in $master_dir/*
do
test -f $zone/${zone##*/}.signed || continue
@@ -22,11 +26,12 @@
done
}
+
+# gibt alle zonen mitabgelaufenen keycounter in die standardausgabe
function test_zsk_time { # prueft den keycounter
for zone in $master_dir/*
do
test -f $zone/${zone##*/}.signed || continue
- key_counter_end=$1
test -f $zone/keycounter || echo 0 > $zone/keycounter
key_counter=`< $zone/keycounter`
@@ -37,26 +42,29 @@
done
}
-#prüft die eingegebnen domains
+
+#prüft die eingegebnen domains und erstellt eine liste
for utf8domain in $@
do
domain=$(idn --quiet "$utf8domain")
if [ -d $master_dir/$domain ]
then
- zsk_aenderung="$zsk_aenderung $domain"
+ zsk_manuell="$zsk_manuell $domain"
else
echo $domain ist keine verwaltete Zone
fi
done
-zsk_time=`test_zsk_time $key_counter_end`
+# übergibt die standard-ausgabe aus den funktionen in listen
+zsk_time=`test_zsk_time`
zsk_new=`test_zsk_new`
ksk_new=`test_ksk_new`
-for NEW_ZSK_ZONE in $zsk_time $zsk_aenderung # Erstellt ZSK
+# erstellt zsks
+for NEW_ZSK_ZONE in $zsk_time $zsk_manuell
do
cd $master_dir/$NEW_ZSK_ZONE
echo "erzeugt zsk fuer" $NEW_ZSK_ZONE
@@ -67,7 +75,9 @@
echo 0 > keycounter
done
-for NEW_KSK_ZONE in $zsk_aenderung # Erstellt KSK
+
+# erstellt ksks
+for NEW_KSK_ZONE in $zsk_manuell
do
cd $master_dir/$NEW_KSK_ZONE
echo "erzeugt ksk fuer" $NEW_KSK_ZONE
@@ -77,18 +87,18 @@
done
-
-for ZONE in $zsk_time $zsk_new $ksk_new $zsk_aenderung
+# fuegt die schluessel in die zone-datei
+for zone in $zsk_time $zsk_manuell
do
- cd $master_dir/$ZONE
+ cd $master_dir/$zone
#loescht 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
+ rm $(ls K*[key,private] | grep -v "`cat .index.zsk`" | grep -v "`cat .index.ksk`") 2>/dev/null || true
#erzeugt ein backup und entfernt alle schluessel aus der zonedatei
- mv $ZONE $ZONE.old
- grep -v 'DNSKEY' $ZONE.old >> $ZONE
+ mv $zone .$zone
+ grep -v 'DNSKEY' .$zone >> $zone
#fuegt die existirenden schluessel in die zonedatei ein
- cat K$ZONE.*key >> $ZONE
+ cat K$zone.*key >> $zone
done
--- a/dnssec-killkey Wed Jul 14 12:05:41 2010 +0200
+++ b/dnssec-killkey Wed Jul 14 15:37:27 2010 +0200
@@ -1,17 +1,19 @@
#!/bin/bash
-ZONE_DIR="/etc/bind/master" # ordner fuer die einzelnen zonedateiordner
-ABL_ZEIT=1440 # zeit in minuten waehrend der 2 keys verwendet werden / ungefaehr doppelte TTL
+source dnstools.conf
-cd $ZONE_DIR
-for DOMAIN in *
+master_dir=$MASTER_DIR # ordner fuer die einzelnen zonedateiordner
+ablauf_zeit=$ABL_ZEIT # zeit in minuten waehrend der 2 keys verwendet werden / ungefaehr doppelte TTL
+
+cd $master_dir
+for domain in *
do
- if ( find $ZONE_DIR/$DOMAIN -name "index*" -mmin +$ABL_ZEIT >/dev/null ) # prueft die schluesselindexdateien
+ if ( find $master_dir/$domain -name "index*" -mmin +$ablauf_zeit >/dev/null ) # prueft die schluesselindexdateien
then # auf zeitpunkt der aenderung
- cd $ZONE_DIR/$DOMAIN
- INDEX_FILE=`find . -name "index*" -mmin +$ABL_ZEIT` # schreibt eine liste INDEX_FILE aller
+ cd $master_dir/$domain
+ INDEX_FILE=`find . -name ".index*" -mmin +$ablauf_zeit` # schreibt eine liste INDEX_FILE aller
# dateien die vor ABL_ZEIT erstellt worden
for INDEX in $INDEX_FILE
do
@@ -19,22 +21,24 @@
if ( wc -l $INDEX | grep ^2 > /dev/null ) # prueft die indexdatei auf anzahl an eintraegen
then
INDEX=${INDEX#./}
- echo aktualisiert $INDEX in $DOMAIN
+ echo aktualisiert $INDEX in $domain
- DNS_KEY=`tail -n1 $INDEX` # speichert den letzten eintrag aus dem
+ DNS_KEY=`tail -n1 $INDEX` # speichert den letzten eintrag aus dem
# index in die variable DNS_KEY
- echo $DNS_KEY > $ZONE_DIR/$DOMAIN/$INDEX # schreibt nur die variable
+ echo $DNS_KEY > $master_dir/$domain/$INDEX # schreibt nur die variable
# DNS_KEY in die indexdatei
rm $(ls K*[key,private] | grep -v "`cat .index.zsk`" | \
grep -v "`cat .index.ksk`") 2> /dev/null # loesche alle schluessel die nicht in der indexdatei
# stehen
- mv $DOMAIN $DOMAIN.old
- grep -v 'DNSKEY' $DOMAIN.old >> $DOMAIN # erzeugt ein backup und entfernt alle schluessel
+ mv $domain .$domain
+ grep -v 'DNSKEY' .$domain >> $domain # erzeugt ein backup und entfernt alle schluessel
# aus der zonedatei
- cat K$DOMAIN.*key >>$DOMAIN # schreibt die aktuellen schluessel in die zonedatei
- dnssec-signzone $DOMAIN
+ cat K$domain.*key >>$domain # schreibt die aktuellen schluessel in die zonedatei
+
+ key_counter=`< keycounter`
+ dnssec-signzone $domain && echo $[ key_counter + 1 ] > keycounter
fi
--- a/dnssec-sign Wed Jul 14 12:05:41 2010 +0200
+++ b/dnssec-sign Wed Jul 14 15:37:27 2010 +0200
@@ -2,6 +2,7 @@
source ./dnstools.conf
master_dir=$MASTER_DIR
+
#prüft die eingegebnen domains
for utf8domain in $@
do
@@ -15,7 +16,9 @@
fi
done
-function time_out { #prüft den ablauf der signatur
+
+#gibt zonen mit abgelaufener signatur in die standardausgabe
+function time_out {
unowtime=`date +%s`
alerttime=`date -d @$[unowtime - $[ 3600 * $SIGN_ALERT_TIME ] ] +%Y%m%d%H`
@@ -37,7 +40,9 @@
done
}
-function new_sign { # prüft nach der ersten signatur
+
+#gibt zonen mit schluessel aber ohne signatur in die standardausgabe
+function new_sign {
for zone in $master_dir/*
do
if [ -f $zone/keycounter ]
@@ -50,14 +55,17 @@
done
}
+
+#uebergibt die ausgabe der funktionen in listen
zone_new_sign=`new_sign`
zone_time_out=`time_out`
+
+# signiert alle zonen aus den listen
for zone in $zone_aenderung $zone_new_sign $zone_time_out
do
cd $zone
domain=${zone##/*/}
key_counter=`< keycounter`
-
dnssec-signzone $domain && echo $[ key_counter + 1 ] > keycounter
done
--- a/dnstools.conf Wed Jul 14 12:05:41 2010 +0200
+++ b/dnstools.conf Wed Jul 14 15:37:27 2010 +0200
@@ -1,3 +1,4 @@
+ABL_ZEIT=1440 # Dauer des Key-Rollover
BIND_DIR=/etc/bind
SECONDARY=hh.schlittermann.de
PRIMARY=pu.schlittermann.de
--- a/templates/named.conf.zone Wed Jul 14 12:05:41 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-zone "[% domain %]" {
-// Start: [% start %]
-// Invoice: [% customer %]
-// UTF8: [% utf8domain %]
- type master;
- file "[% file %]";
- allow-transfer { localhost; [% primary_ip %]; [% secondary_ip %]; };
- allow-query { any; };
- also-notify { [% primary_ip %]; };
-};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/named.config Wed Jul 14 15:37:27 2010 +0200
@@ -0,0 +1,10 @@
+zone "[% domain %]" {
+// Start: [% start %]
+// Invoice: [% customer %]
+// UTF8: [% utf8domain %]
+ type master;
+ file "[% file %]";
+ allow-transfer { localhost; [% primary_ip %]; [% secondary_ip %]; };
+ allow-query { any; };
+ also-notify { [% primary_ip %]; };
+};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/named.zone Wed Jul 14 15:37:27 2010 +0200
@@ -0,0 +1,17 @@
+$ORIGIN [% domain %].
+$TTL 1d
+@ IN SOA [% primary %]. [% hostmaster %]. (
+ [% time %] ; serial
+ 1d ; refresh
+ 2h ; retry
+ 7d ; expire
+ 1d ; default ttl
+)
+
+ IN TXT "invoice: [% customer %]"
+ IN TXT "start: [% start %]"
+ IN TXT "utf8: [% utf8domain %]"
+
+ IN NS [% primary %].
+ IN NS [% secondary %].
+
--- a/zone-mk Wed Jul 14 12:05:41 2010 +0200
+++ b/zone-mk Wed Jul 14 15:37:27 2010 +0200
@@ -72,25 +72,17 @@
test -f $zonefile && { echo "$zonefile exists. Skipping $domain" >&2; continue; }
test -f $config && { echo "$config exists. Skipping $domain" >&2; continue; }
- cat <<xxx >$zonefile
-\$ORIGIN $domain.
-\$TTL 1d
-@ IN SOA $primary. $hostmaster. (
- $(date +%Y%m%d00) ; serial
- 1d ; refresh
- 2h ; retry
- 7d ; expire
- 1d ; default ttl
-)
-
- IN TXT "invoice: $customer"
- IN TXT "start: $start"
- IN TXT "utf8: $utf8domain"
-
- IN NS $primary.
- IN NS $secondary.
-
-xxx
+ tpage \
+ --define start="$start" \
+ --define domain="$domain" \
+ --define time="$(date +%Y%m%d00)" \
+ --define primary="$primary" \
+ --define secondary="$secondary" \
+ --define hostmaster="$hostmaster" \
+ --define customer="$customer" \
+ --define utf8domain="$utf8domain" \
+ templates/named.zone \
+ >$zonefile
tpage \
--define domain="$domain" \
@@ -100,7 +92,7 @@
--define file="$master_dir/$domain/$domain" \
--define primary_ip="$primary_ip" \
--define secondary_ip="$secondary_ip" \
- templates/named.conf.zone \
+ templates/named.config \
>$config
done