update: update zonefiles
authorTero Marttila <terom@paivola.fi>
Thu, 15 Mar 2012 16:08:50 +0200
changeset 2 aeb106b9487c
parent 1 ea30c9b619b8
child 3 cd10c4fe44bb
update: update zonefiles
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