diff -r ea30c9b619b8 -r aeb106b9487c bin/update --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/update Thu Mar 15 16:08:50 2012 +0200 @@ -0,0 +1,111 @@ +#!/bin/bash +# vim: set ft=sh : + +set -ue + +ROOT=$(pwd) + +BIN=$ROOT/bin +PROCESS_ZONE=$BIN/process-zone +EXPAND_ZONE=$BIN/expand-zone + +SETTINGS=$ROOT/settings +ZONES=$ROOT/zones +SERIALS=$ROOT/serials + +PROCESS_ARGS='--input-charset latin-1' + +FORWARD_MX=mail +REVERSE_ZONE=194.197.235 +REVERSE_DOMAIN=paivola.fi + +function log { + echo "$*" >&2 +} + +function die { + log "$*" + exit 1 +} + +function log_cmd { + local msg=$1; shift + + #log ">>>" "$@" + + echo -n "$msg... " >&2 + + "$@" && log "OK" >&2 || die "Failed" +} + +[ -d $SETTINGS ] || die "Missing settings: $SETTINGS" +[ -d $SERIALS ] || die "Missing serials: $SERIALS" +[ -d $ZONES ] || die "Missing zones: $ZONES" + +function expand_zone { + local output=$1; shift + + $EXPAND_ZONE -o $output "$@" +} + +function process_zone { + local output=$1; shift + + $PROCESS_ZONE $PROCESS_ARGS -o $output "$@" +} + +function copy_zone_part { + local zone=$1 + local part=$2 + + local name=$zone.zone.$part + + log_cmd "Copying zone $zone/$part: zones/$name" + cp $SETTINGS/$name $ZONES/$name +} + +function update_zone { + local zone=$1 + local name=$zone.zone + + log_cmd "Generating $zone zone headers: zones/$name" \ + expand_zone $ZONES/$name $SETTINGS/$zone.zone \ + --serial $SERIALS/$zone.serial --update-serial \ + --expand zones=$ZONES +} + +function update_zone_view { + local zone=$1 + local view=$2 + + local name=$view/$zone.zone + + log_cmd "Generating $zone:$view zone headers: zones/$name" \ + expand_zone $ZONES/$name $SETTINGS/$zone.zone \ + --serial $SERIALS/$zone.serial --update-serial \ + --expand zones=$ZONES \ + --expand view=$view +} + +function main { + log_cmd "Generating external forward zone: zones/external/paivola.zone.hosts" \ + process_zone $ZONES/external/paivola.zone.hosts $SETTINGS/paivola.txt --forward-zone + + log_cmd "Generating internal forward zone: zones/internal/paivola.zone.hosts" \ + process_zone $ZONES/internal/paivola.zone.hosts $SETTINGS/paivola.txt --forward-zone --forward-txt --forward-mx $FORWARD_MX + + log_cmd "Generating reverse zones: zones/paivola-reverse.zone.hosts" \ + process_zone $ZONES/paivola-reverse.zone.hosts $SETTINGS/paivola.txt --reverse-zone $REVERSE_ZONE --reverse-domain $REVERSE_DOMAIN + + + copy_zone_part paivola auto + copy_zone_part paivola services + copy_zone_part paivola internal + copy_zone_part paivola external + + update_zone paivola-reverse + update_zone_view paivola internal + update_zone_view paivola external +} + +main