bin/update
author Tero Marttila <terom@paivola.fi>
Fri, 16 Mar 2012 14:33:54 +0200
changeset 10 26e789db3f72
parent 9 beb4bef2498a
child 13 7d02a07e0354
permissions -rwxr-xr-x
update: named-checkzone
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
#!/bin/bash
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
# vim: set ft=sh :
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
set -ue
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
ROOT=$(pwd)
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
     8
BIN=bin
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
PROCESS_ZONE=$BIN/process-zone
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
EXPAND_ZONE=$BIN/expand-zone
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    11
UPDATE_SERIAL=$BIN/update-serial
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    13
SETTINGS=settings
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    14
ZONES=zones
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    15
SERIALS=serials
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
PROCESS_ARGS='--input-charset latin-1'
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
FORWARD_MX=mail
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
REVERSE_ZONE=194.197.235
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
REVERSE_DOMAIN=paivola.fi
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
10
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
    23
NAMED_CHECKZONE=/usr/sbin/named-checkzone
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
    24
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    25
## options
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    26
IS_TTY=
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    27
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    28
LOG=y
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    29
LOG_INFO=
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    30
LOG_DEBUG=
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    31
LOG_CMD=
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    32
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    33
UPDATE_FORCE=
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    34
UPDATE_NOOP=
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    35
UPDATE_DIFF=
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    36
SERIAL_NOUPDATE=
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    37
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    38
function help_args {
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    39
    local prog=$1
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    40
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    41
    cat <<END
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    42
Usage: $prog [options]
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    43
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    44
    -h      display this help text
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    45
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    46
    -q      quiet
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    47
    -v      verbose
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    48
    -D      debug
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
    49
    -C      debug commands
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    50
    
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
    51
    -p      show changes
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    52
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    53
    -F      force-updates without checking src mtime
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    54
    -S      do not update serial
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
    55
    -n      no-op/mock-update; do not actually change anything; implies -Sp
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    56
END
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    57
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    58
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    59
function parse_args {
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    60
    OPTIND=1
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    61
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
    62
    while getopts 'hqvDCpFSn' opt "$@"; do
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    63
        case $opt in
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    64
            h)  
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    65
                help_args $1
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    66
                exit 0
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    67
            ;;
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    68
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    69
            q)  LOG= ;;
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    70
            v)  LOG_INFO=y ;;
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
    71
            D)  LOG_DEBUG=y  ;;
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
    72
            C)  LOG_CMD=y ;;
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
    73
            p)  UPDATE_DIFF=y ;;
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    74
            F)  UPDATE_FORCE=y ;;
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    75
            S)  SERIAL_NOUPDATE=y ;;
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    76
 
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    77
            n)  
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    78
                UPDATE_NOOP=y 
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
    79
                # implies -Sp
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
    80
                UPDATE_DIFF=y
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    81
                SERIAL_NOUPDATE=y
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    82
                ;;
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    83
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    84
           
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    85
            ?)  
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    86
                die 
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    87
            ;;
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    88
        esac
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    89
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    90
    done
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    91
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    92
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    93
## lib
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    94
function log_msg {
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    95
    echo "$*" >&2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    96
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    97
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    98
function log_color {
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    99
    local code=$1; shift
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   100
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   101
    if [ $IS_TTY ]; then
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   102
        echo $'\e[0;'${code}'m'"$*"$'\e[00m' >&2
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   103
    else
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   104
        echo "$*" >&2
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   105
    fi
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   106
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   107
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   108
function log_error {
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   109
    log_color 31 "$*"
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   110
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   111
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   112
function log {
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   113
    [ $LOG ] && log_msg "$*" || true
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   114
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   115
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   116
function log_info {
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   117
    [ $LOG_INFO ] && log_color 36 "  $*" || true
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   118
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   119
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   120
function log_debug {
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   121
    [ $LOG_DEBUG ] && log_color 32 "    $*" || true
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   122
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   123
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   124
function log_cmd {
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   125
    [ $LOG_CMD ] && log_color 35 "        \$ $*" || true
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   126
}
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   127
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   128
# XXX: broken
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   129
function log_stack {
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   130
    local level=1
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   131
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   132
    while info=$(caller $level); do
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   133
        echo $info | read line sub file
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   134
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   135
        log_msg "$file:$lineno $sub()"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   136
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   137
        level=$(($level + 1))
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   138
    done
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   139
}
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   140
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   141
function fail {
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   142
    func=$(caller 1 | cut -d ' ' -f 2)
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   143
    
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   144
    log_error "$func: $*"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   145
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   146
    exit 2
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   147
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   148
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   149
function die {
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   150
    log_error "$*"
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   151
    exit 1
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   152
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   153
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   154
function cmd {
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   155
    log_cmd "$@"
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   156
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   157
    "$@" || die "Failed"
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   158
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   159
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   160
function run_cmd {
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   161
    local msg=$1; shift
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   162
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   163
    log_info "$msg... "
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   164
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   165
    cmd "$@"
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   166
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   167
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   168
function indent () {
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   169
    local indent=$1; shift
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   170
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   171
    "$@" | (
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   172
        while read line; do
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   173
            echo "$indent$line"
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   174
        done
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   175
    ) || exit $?
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   176
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   177
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   178
## test
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   179
[ -d $SETTINGS ] || die "Missing settings: $SETTINGS"
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   180
[ -d $SERIALS ] || die "Missing serials: $SERIALS"
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   181
[ -d $ZONES ] || die "Missing zones: $ZONES"
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   182
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   183
## functions
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   184
function check_update {
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   185
    # target
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   186
    local dst=$1; shift
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   187
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
   188
    log_debug "check_update: $dst"
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   189
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   190
    # need update?
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   191
    local update=
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   192
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   193
    if [ ! -e $dst ] || [ $UPDATE_FORCE ]; then
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   194
        log_debug "  update forced"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   195
        update=y
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   196
    fi
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   197
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   198
    # check deps
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   199
    for dep in "$@"; do
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   200
        # don't bother checking if already figured out
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   201
        [ $update ] && continue
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   202
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   203
        # check
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   204
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   205
        if [ $dst -ot $dep ]; then
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   206
            log_debug "  changed: $dep"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   207
            update=y
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   208
        fi
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   209
    done
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   210
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   211
    [ ! $update ] && log_debug "  up-to-date"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   212
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   213
    # return
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   214
    [ $update ]
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   215
}
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   216
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   217
function do_update {
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   218
    local dst=$1; shift
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   219
    local tmp=$dst.new
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   220
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
   221
    log_debug "update: $dst"
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   222
    cmd "$@" > $tmp
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   223
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   224
    # compare
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   225
    if [ -e $dst ] && [ $UPDATE_DIFF ]; then
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   226
        log_debug "  changes:"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   227
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   228
        # terse
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   229
        indent "        " diff --unified=1 $dst $tmp
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   230
    fi
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   231
    
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   232
    if [ $UPDATE_NOOP ]; then
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   233
        # cleanup
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
   234
        log_debug "  no-op"
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   235
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   236
        cmd rm $tmp
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   237
    else
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   238
        # commit
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
   239
        log_debug "  update"
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   240
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   241
        cmd mv $tmp $dst
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   242
    fi
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   243
}
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   244
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   245
function update {
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   246
    local dst=$1; shift;
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   247
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   248
    local sep=
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   249
    local dep=()
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   250
    local cmd=()
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   251
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   252
    for arg in "$@"; do
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   253
        if [ $arg == '--' ]; then
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   254
            sep=y
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   255
        fi
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   256
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   257
        if [ $sep ]; then
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   258
            cmd=("${cmd[@]:-}" "$arg")
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   259
        else
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   260
            dep=("${dep[@]:-}" "$arg")
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   261
        fi
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   262
    done
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   263
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   264
    [ ! $sep ] && fail "Invalid args given: $@"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   265
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   266
    check_update $dst "${dep[@]}" && do_update $dst "${cmd[@]}" || true
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   267
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   268
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   269
## bin wrappers
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   270
function update_serial {
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   271
    local serial=$1; shift
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   272
    local old=$(cat $serial)
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   273
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   274
    log_info "Updating serial: $serial"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   275
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   276
    cmd $UPDATE_SERIAL $* $serial
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   277
    
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   278
    local new=$(cat $serial)
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   279
        
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   280
    log_debug "  $old -> $new"
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   281
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   282
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   283
function expand_zone {
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   284
    local output=$1; shift
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   285
    local src=$1; shift
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   286
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   287
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   288
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   289
function process_zone {
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   290
    local output=$1; shift
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   291
    local src=$1; shift
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   292
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   293
    check_update $output $src && update $output $PROCESS_ZONE $PROCESS_ARGS "$@" $src
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   294
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   295
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   296
## actions
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   297
function copy_zone_part {
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   298
    local zone=$1
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   299
    local part=$2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   300
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   301
    local name=$zone.zone.$part
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   302
    local src=$SETTINGS/$name
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   303
    local dst=$ZONES/$name
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   304
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   305
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   306
    if check_update $dst $src; then
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   307
        log_info "Copying zone $zone.$part..."
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   308
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
   309
        do_update $dst cat $src
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   310
    else
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   311
        log_info "Copying zone $zone.$part: not changed"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   312
    fi
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   313
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   314
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   315
function update_zone {
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   316
    local zone=$1
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   317
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   318
    local name=$zone.zone
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   319
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   320
    local out=$ZONES/$name
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   321
    local in=$SETTINGS/$zone.zone
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   322
    local serial=$SERIALS/$zone.serial
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   323
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   324
    if check_update $out $in $serial; then
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   325
        log_info "Generating $zone zone headers..." 
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   326
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   327
        do_update $out \
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   328
            $EXPAND_ZONE $SETTINGS/$zone.zone   \
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   329
                --serial $SERIALS/$zone.serial  \
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   330
                --expand zones=$ROOT/$ZONES
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   331
    else
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   332
        log_info "Generating $zone zone headers: not changed" 
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   333
    fi
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   334
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   335
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   336
function update_zone_view {
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   337
    local zone=$1
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   338
    local view=$2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   339
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   340
    local name=$view/$zone.zone
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   341
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   342
    local out=$ZONES/$name
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   343
    local in=$SETTINGS/$zone.zone
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   344
    local serial=$SERIALS/$zone.serial
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   345
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   346
    if check_update $out $in $serial; then
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   347
        log_info "Generating $zone:$view zone headers..."
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   348
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   349
        do_update $out \
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   350
            $EXPAND_ZONE $SETTINGS/$zone.zone   \
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   351
                --serial $SERIALS/$zone.serial  \
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   352
                --expand zones=$ROOT/$ZONES     \
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   353
                --expand view=$view
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   354
    else
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   355
        log_info "Generating $zone:$view zone headers: not changed"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   356
    fi
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   357
}
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   358
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   359
function update_hosts {
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   360
    local dst=$1; shift
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   361
    local src=$1; shift
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   362
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   363
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   364
    if check_update $dst $src; then
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   365
        log_info "Generating $dst..."
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   366
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   367
        do_update $dst $PROCESS_ZONE $PROCESS_ARGS $src "$@"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   368
    else
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   369
        log_info "Generating $dst: not changed"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   370
    fi
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   371
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   372
10
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   373
function check_zone {
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   374
    local name=$1
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   375
    local file=$2
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   376
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   377
    # test
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   378
    if $NAMED_CHECKZONE -q $name $file; then
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   379
        log_info "Check $file($name): OK"
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   380
    else
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   381
        log_error "  Check $file($name): Failed:"
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   382
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   383
        indent "    " $NAMED_CHECKZONE $name $file
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   384
    fi
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   385
}
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   386
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   387
function main {
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   388
    # test tty
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   389
    [ -t 1 ] && IS_TTY=y
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   390
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   391
    parse_args "$@"
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   392
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   393
    log "Updating serials..."
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   394
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   395
    if [ $SERIAL_NOUPDATE ]; then
10
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   396
        log_info "Skipped"
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   397
    else
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   398
        update_serial   $SERIALS/paivola.serial
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   399
        update_serial   $SERIALS/paivola-reverse.serial
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   400
    fi
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   401
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   402
    log "Generating host zones..."
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   403
        update_hosts    $ZONES/external/paivola.zone.hosts  $SETTINGS/paivola.txt --forward-zone
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   404
        update_hosts    $ZONES/internal/paivola.zone.hosts  $SETTINGS/paivola.txt --forward-zone --forward-txt --forward-mx $FORWARD_MX
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   405
        update_hosts    $ZONES/paivola-reverse.zone.hosts   $SETTINGS/paivola.txt --reverse-zone $REVERSE_ZONE --reverse-domain $REVERSE_DOMAIN
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   406
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   407
    log "Copying zone parts..."
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   408
        copy_zone_part      paivola             auto
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   409
        copy_zone_part      paivola             services
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   410
        copy_zone_part      paivola             internal
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   411
        copy_zone_part      paivola             external
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   412
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   413
    log "Updating zones headers..."
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   414
        update_zone         paivola-reverse
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   415
        update_zone_view    paivola             internal
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   416
        update_zone_view    paivola             external
10
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   417
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   418
    log "Testing zones..."
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   419
        check_zone          paivola.fi                  $ZONES/external/paivola.zone
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   420
        check_zone          paivola.fi                  $ZONES/external/paivola.zone
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   421
        check_zone          235.197.194.in-addr.arpa    $ZONES/paivola-reverse.zone
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   422
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   423
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   424
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   425
main "$@"