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