bin/update
changeset 36 3208cd6540dc
parent 32 694dab02a6b0
child 37 f28db5535b10
--- a/bin/update	Mon Mar 19 16:50:28 2012 +0200
+++ b/bin/update	Mon Mar 19 17:32:32 2012 +0200
@@ -375,6 +375,23 @@
     log_debug "  $old -> $new"
 }
 
+function link_zone_serial {
+    local name=$1
+    local base=$2
+
+    local lnk=$SERIALS/$name.serial
+    local tgt=$SERIALS/$base.serial
+
+    if [ -e $ROOT/$lnk ] && [ $(readlink $ROOT/$lnk) == $ROOT/$tgt ]; then
+        log_info "Linking $lnk -> $tgt: not changed"
+
+    else
+        log_info "Linking $lnk -> $tgt..."
+
+        cmd ln -sf $ROOT/$tgt $ROOT/$lnk
+    fi
+}
+
 function update_zone_part {
     local zone=$1
     local part=$2
@@ -396,9 +413,7 @@
 function update_zone {
     local zone=$1
 
-    local name=$zone.zone
-
-    local out=$ZONES/$name
+    local out=$ZONES/$zone
     local in=$DATA/$zone.zone
     local serial=$SERIALS/$zone.serial
 
@@ -418,9 +433,7 @@
     local zone=$1
     local view=$2
 
-    local name=$view/$zone.zone
-
-    local out=$ZONES/$name
+    local out=$ZONES/$view/$zone
     local in=$DATA/$zone.zone
     local serial=$SERIALS/$zone.serial
 
@@ -442,18 +455,24 @@
     local view=$2
     local base=$3
     
-    local lnk=$ZONES/$view/$zone.zone
-    local tgt
-    
-    if [ $zone == $base ]; then
-        # out of view
-        log_debug "$view/$zone: base $base from root"
-        tgt=$ZONES/$base.zone
-    else
-        log_debug "$view/$zone: base $base from view"
-        tgt=$ZONES/$view/$base.zone
+    local lnk=$ZONES/$view/$zone
+    local tgt=
+
+    # find tgt
+    for path in "$ZONES/$view/$base" "$ZONES/$base"; do
+        if [ -e "$ROOT/$path" ]; then
+            log_debug "$view/$zone: base $base from $path"
+            tgt="$path"
+
+            break
+        fi
+    done
+
+    if [ ! $tgt ]; then
+        die "$view/$zone: base $base not found!"
     fi
-    
+   
+    # link
     if [ -e $ROOT/$lnk ] && [ $(readlink $ROOT/$lnk) == $ROOT/$tgt ]; then
         log_info "Linking $lnk -> $tgt: not changed"
 
@@ -572,7 +591,7 @@
     ensure_dir  $ZONES
     
     # views
-    for view in "${views[@]}"; do
+    for view in "${views[@]}" "common" "hosts"; do
         ensure_dir $ZONES/$view
     done
 
@@ -583,9 +602,16 @@
 
     # update
     log "Generating host zones..."
-        update_hosts    $ZONES/internal/paivola.zone.hosts  $DATA/paivola.txt --forward-zone --forward-txt --forward-mx $FORWARD_MX
-        update_hosts    $ZONES/external/paivola.zone.hosts  $DATA/paivola.txt --forward-zone
-        update_hosts    $ZONES/paivola-reverse.zone.hosts   $DATA/paivola.txt --reverse-zone $REVERSE_ZONE --reverse-domain $REVERSE_DOMAIN
+        update_hosts    $ZONES/hosts/paivola.internal       $DATA/paivola.txt --forward-zone --forward-txt --forward-mx $FORWARD_MX
+        update_hosts    $ZONES/hosts/paivola.external       $DATA/paivola.txt --forward-zone
+        update_hosts    $ZONES/hosts/194.197.235            $DATA/paivola.txt --reverse-zone $REVERSE_ZONE --reverse-domain $REVERSE_DOMAIN
+
+        
+        # XXX: foward
+        update_hosts    $ZONES/hosts/pvls                   $DATA/pvl.zone      --forward-zone
+        update_hosts    $ZONES/hosts/10                     $DATA/pvl.zone      --reverse-zone 10 --reverse-domain pvl -q
+        update_hosts    $ZONES/hosts/192.168                $DATA/pvl.zone      --reverse-zone 192.168 --reverse-domain pvl -q
+
 
     ## zones
     # parts
@@ -602,21 +628,33 @@
     else
         log "Updating serials..."
 
+        update_zone_serial  pvl
+        link_zone_serial    10          pvl
+        link_zone_serial    192.168     pvl
+
         update_zone_serial  paivola
-        update_zone_serial  paivola-reverse
+        update_zone_serial  194.197.235
     fi
 
     # headers
     log "Updating zones headers..."
-        update_zone         paivola-reverse
+        update_zone_view    pvl                 internal
         update_zone_view    paivola             internal
         update_zone_view    paivola             external
 
+        update_zone_view    10                  internal
+        update_zone_view    192.168             internal
+
+        update_zone_view    194.197.235         common
+
     # test
     log "Testing zones..."
-        check_zone          paivola.fi                  $ZONES/external/paivola.zone
-        check_zone          paivola.fi                  $ZONES/internal/paivola.zone
-        check_zone          235.197.194.in-addr.arpa    $ZONES/paivola-reverse.zone
+        check_zone          paivola.fi                  $ZONES/external/paivola
+        check_zone          paivola.fi                  $ZONES/internal/paivola
+
+        check_zone          10.in-addr.arpa             $ZONES/internal/10
+        check_zone          192.168.in-addr.arpa        $ZONES/internal/192.168
+        check_zone          235.197.194.in-addr.arpa    $ZONES/common/194.197.235
 
     # extra zones...
     local base_zone=paivola
@@ -626,11 +664,11 @@
     for view in "${views[@]}"; do
         for zone in "${link_zones[@]}"; do
             link_zone_view  $zone   $view   $base_zone
-            check_zone      $zone   $ZONES/$view/$zone.zone
+            check_zone      $zone   $ZONES/$view/$zone
         done
 
         # reverse
-        link_zone_view      paivola-reverse     $view   paivola-reverse
+        link_zone_view      194.197.235     $view   common/194.197.235
     done
 
     ## deploy