--- 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