#!/bin/bash
# Script zum Erzeugen eines DNSSEC-Schluesselpaares.
# Der Schluessel-String wird automatisch an 
# /etc/named.keys angehaengt
# Version: 0.2
# (C) 2011 Stefan Schaefer -- invis-server.org
# Author: Stefan Schaefer <stefan@invis-server.org>
# Questions: http://forum.invis-server.org
# License: GPLv3

# Globale Einstellungen
rootpackdir="/etc/rootpack"
rootpackconfig="$rootpackdir/rootpack.cfg"
target="/etc/named.keys"
# Bildschirm putzen
clear

usage() {
    echo -e "Übergeben Sie diesem Script den Pfad den zugehörigen FQDN\ndes DDNS-Partners sowie den Besitzernamen der Domain.";
    echo -e "Beispiel: \$> mkddnskey homeserver.example.com kunde"
}

# Konfigurationsparameter tauschen
changevalues() {
    # Arg1 = Pfad, Arg2 = Datei, Arg3 = sed String
    cat $1/$2|sed "s%$3%g" > $1/$2.new
    mv $1/$2.new $1/$2
}

getconfvalue() {
    cat $rootpackconfig | grep "$1:" | cut -d ":" -f 2
}

## Wurden alle Parameter uebergeben?

if [[ -z $1 || -z $2 ]]; then
    usage
    exit
else
    fqdn=$1
    customer=$2
fi

## Schlüsseldateien erzeugen
custhomepath=$(getent passwd|grep -e "^$customer:"|cut -d ":" -f6)
pathtofiles="$custhomepath/files/ddns_keyfiles"

exists=$(ls $pathtofiles|grep $fqdn)

# Pruefen, ob es bereits Schluessel fuer diesen Host gibt.
if [[ -n $exists ]]; then
    echo "DNSSec-Schlüssel für den Host $fqdn existieren bereits"
    exit
fi

# Schluesselverzeichnis anlegen, wenn nicht vorhanden
if [[ ! -d $pathtofiles ]]; then
    #echo $pathtofiles
    mkdir -p $pathtofiles
fi

# Schluessel-Dateien erzeugen
dnssec-keygen -v 0 -r /dev/urandom -K $pathtofiles -a HMAC-MD5 -b 512 -n HOST $fqdn

# Dateien dem Besitzer uebereignen
chown -R $customer.users $pathtofiles

# Schluessel-String extrahieren
keystring=$(cat $pathtofiles/*$fqdn*.private|grep "Key:"|tr -d " "|cut -d ":" -f2)
comment=$(cat $custhomepath/infos/$customer*.info |grep "Name:"|tr -d "\t" |cut -d ":" -f2)

# Schluessel in named.keys eintragen
echo -e "\n# $comment\nkey $fqdn {\n\talgorithm HMAC-MD5;\n\tsecret \"$keystring\";\n};" >> $target

# Ausgabe
echo -e "Die Schlüssel-Dateien wurden im Homeverzeichnis von \n$customer unter \"files/dnssec_keyfiles\" abgelegt und\nin \"/etc/named.keys\" eingetragen.\n\nDie zugehörige Zone muss von Hand angepasst werden."
