bin/update
changeset 2 aeb106b9487c
child 7 f4457348faa0
equal deleted inserted replaced
1:ea30c9b619b8 2:aeb106b9487c
       
     1 #!/bin/bash
       
     2 # vim: set ft=sh :
       
     3 
       
     4 set -ue
       
     5 
       
     6 ROOT=$(pwd)
       
     7 
       
     8 BIN=$ROOT/bin
       
     9 PROCESS_ZONE=$BIN/process-zone
       
    10 EXPAND_ZONE=$BIN/expand-zone
       
    11 
       
    12 SETTINGS=$ROOT/settings
       
    13 ZONES=$ROOT/zones
       
    14 SERIALS=$ROOT/serials
       
    15 
       
    16 PROCESS_ARGS='--input-charset latin-1'
       
    17 
       
    18 FORWARD_MX=mail
       
    19 REVERSE_ZONE=194.197.235
       
    20 REVERSE_DOMAIN=paivola.fi
       
    21 
       
    22 function log {
       
    23     echo "$*" >&2
       
    24 }
       
    25 
       
    26 function die {
       
    27     log "$*"
       
    28     exit 1
       
    29 }
       
    30 
       
    31 function log_cmd {
       
    32     local msg=$1; shift
       
    33 
       
    34     #log ">>>" "$@"
       
    35 
       
    36     echo -n "$msg... " >&2
       
    37 
       
    38     "$@" && log "OK" >&2 || die "Failed"
       
    39 }
       
    40 
       
    41 [ -d $SETTINGS ] || die "Missing settings: $SETTINGS"
       
    42 [ -d $SERIALS ] || die "Missing serials: $SERIALS"
       
    43 [ -d $ZONES ] || die "Missing zones: $ZONES"
       
    44 
       
    45 function expand_zone {
       
    46     local output=$1; shift
       
    47 
       
    48     $EXPAND_ZONE -o $output "$@"
       
    49 }
       
    50 
       
    51 function process_zone {
       
    52     local output=$1; shift
       
    53 
       
    54     $PROCESS_ZONE $PROCESS_ARGS -o $output "$@"
       
    55 }
       
    56 
       
    57 function copy_zone_part {
       
    58     local zone=$1
       
    59     local part=$2
       
    60 
       
    61     local name=$zone.zone.$part
       
    62 
       
    63     log_cmd "Copying zone $zone/$part: zones/$name"
       
    64     cp $SETTINGS/$name $ZONES/$name
       
    65 }
       
    66 
       
    67 function update_zone {
       
    68     local zone=$1
       
    69     local name=$zone.zone
       
    70 
       
    71     log_cmd "Generating $zone zone headers: zones/$name" \
       
    72         expand_zone     $ZONES/$name    $SETTINGS/$zone.zone   \
       
    73             --serial $SERIALS/$zone.serial --update-serial  \
       
    74             --expand zones=$ZONES
       
    75 }
       
    76 
       
    77 function update_zone_view {
       
    78     local zone=$1
       
    79     local view=$2
       
    80 
       
    81     local name=$view/$zone.zone
       
    82 
       
    83     log_cmd "Generating $zone:$view zone headers: zones/$name" \
       
    84         expand_zone     $ZONES/$name    $SETTINGS/$zone.zone   \
       
    85             --serial $SERIALS/$zone.serial --update-serial  \
       
    86             --expand zones=$ZONES   \
       
    87             --expand view=$view
       
    88 }
       
    89 
       
    90 function main {
       
    91     log_cmd "Generating external forward zone: zones/external/paivola.zone.hosts" \
       
    92         process_zone    $ZONES/external/paivola.zone.hosts  $SETTINGS/paivola.txt --forward-zone
       
    93 
       
    94     log_cmd "Generating internal forward zone: zones/internal/paivola.zone.hosts" \
       
    95         process_zone    $ZONES/internal/paivola.zone.hosts  $SETTINGS/paivola.txt --forward-zone --forward-txt --forward-mx $FORWARD_MX
       
    96 
       
    97     log_cmd "Generating reverse zones: zones/paivola-reverse.zone.hosts" \
       
    98         process_zone    $ZONES/paivola-reverse.zone.hosts   $SETTINGS/paivola.txt --reverse-zone $REVERSE_ZONE --reverse-domain $REVERSE_DOMAIN
       
    99 
       
   100 
       
   101     copy_zone_part      paivola             auto
       
   102     copy_zone_part      paivola             services
       
   103     copy_zone_part      paivola             internal
       
   104     copy_zone_part      paivola             external
       
   105 
       
   106     update_zone         paivola-reverse
       
   107     update_zone_view    paivola             internal
       
   108     update_zone_view    paivola             external
       
   109 }
       
   110 
       
   111 main