annotate scripts/nameserver_autogen/bind_tld_zonefile.sh @ 1241:c842697ded21 draft

some tweaks to namegen
author cathugger <cathugger@cock.li>
date Thu, 05 Sep 2019 02:34:52 +0000
parents 24c17a3904b9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1120
8e01b8361e9e changed add_dom to not even bother with anything head -c -1 related. should still work.
epoch <epoch@hacking.allowed.org>
parents:
diff changeset
1 #!/bin/bash
1199
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
2 # made for bash. not sure if all /bin/sh work.
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
3 # be sure to set these variables first.
1241
c842697ded21 some tweaks to namegen
cathugger <cathugger@cock.li>
parents: 1230
diff changeset
4 # please don't edit this file though.
1199
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
5 #RESDB_PATH=/var/db/resdb
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
6 #ZONEFILE_DIR=/etc/namedb
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
7 # optional:
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
8 : ${TLDS:=ano}
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
9 : ${RDNS_PREFIX:=21}
1241
c842697ded21 some tweaks to namegen
cathugger <cathugger@cock.li>
parents: 1230
diff changeset
10 RDNS6_PREFIX=fd63:1e39:6f73 # do not change, hardcoded below
1120
8e01b8361e9e changed add_dom to not even bother with anything head -c -1 related. should still work.
epoch <epoch@hacking.allowed.org>
parents:
diff changeset
11
1199
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
12 if [ ! "$ZONEFILE_DIR" ];then
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
13 echo "You forgot to set some variables. read the source plzkthx." >&2
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
14 exit 1
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
15 fi
1120
8e01b8361e9e changed add_dom to not even bother with anything head -c -1 related. should still work.
epoch <epoch@hacking.allowed.org>
parents:
diff changeset
16
1220
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
17 DOM="3.7.f.6.9.3.e.1.3.6.d.f.ip6.arpa"
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
18 RDNS_ZONEFILE="$ZONEFILE_DIR/$DOM"
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
19
1241
c842697ded21 some tweaks to namegen
cathugger <cathugger@cock.li>
parents: 1230
diff changeset
20 echo -n "generating IPv6 reverse lookup zonefile for $RDNS6_PREFIX::/48..." >&2
1220
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
21 echo "; this zonefile generated on: `date -u`" > "$RDNS_ZONEFILE".tmp
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
22 echo '$TTL 3600' >> "$RDNS_ZONEFILE".tmp
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
23 echo '$ORIGIN' $DOM. >> "$RDNS_ZONEFILE".tmp
1230
24c17a3904b9 Revert "dropped the use of @ so the generated zones would work with yadifa too. also exported env vars so child of bind_tld_zonefile_all.sh can use them"
epoch <epoch@hack.thebackupbox.net>
parents: 1226
diff changeset
24 echo '@ IN SOA @ root ('`date -u +" %Y%m%d%H"`' 60 300 3600000 3600 )' >> "$RDNS_ZONEFILE".tmp
24c17a3904b9 Revert "dropped the use of @ so the generated zones would work with yadifa too. also exported env vars so child of bind_tld_zonefile_all.sh can use them"
epoch <epoch@hack.thebackupbox.net>
parents: 1226
diff changeset
25 echo '@ IN NS @' >> "$RDNS_ZONEFILE".tmp
24c17a3904b9 Revert "dropped the use of @ so the generated zones would work with yadifa too. also exported env vars so child of bind_tld_zonefile_all.sh can use them"
epoch <epoch@hack.thebackupbox.net>
parents: 1226
diff changeset
26 echo '@ IN A 127.0.0.1' >> "$RDNS_ZONEFILE".tmp
1220
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
27 cd $RESDB_PATH/db/ip6/F/D/6/3/1/E/3/9/6/F/7/3/
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
28 for i in */*/*/*/ns/*;do
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
29 a=$(printf "%s\n" "$i" | cut -d/ -f1-4 | tr '/' '.' | rev)
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
30 b=$(printf "%s\n" "$i" | cut -d/ -f6)
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
31 printf '%s IN NS %s.\n' "$a" "$b"
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
32 done >> "$RDNS_ZONEFILE".tmp
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
33 mv -f "$RDNS_ZONEFILE".tmp "$RDNS_ZONEFILE"
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
34 echo " done." >&2
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
35
c6fa1e38f44f updated bind_tld_zonefile.sh to generate IPv6 rDNS zone too. added ns record for volatile.ano so I could test.
epochqwert <epoch@hacking.allowed.org>
parents: 1212
diff changeset
36
1199
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
37 # convert to hex
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
38 if [ "*" != "$RDNS_PREFIX" ];then
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
39 X=""
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
40 for PFX in $RDNS_PREFIX;do
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
41 C=`printf "%02X\n" $PFX 2>/dev/null`
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
42 [ -z "$X" ] && X="$C" || X="$X $C"
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
43 done
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
44 RDNS_PREFIX="$X"
1148
5c239f21ff7e fixed a bug where I used a literal instead of one of the user defined variables (thx mkz)
epoch <epoch@hacking.allowed.org>
parents: 1138
diff changeset
45 fi
1120
8e01b8361e9e changed add_dom to not even bother with anything head -c -1 related. should still work.
epoch <epoch@hacking.allowed.org>
parents:
diff changeset
46
8e01b8361e9e changed add_dom to not even bother with anything head -c -1 related. should still work.
epoch <epoch@hacking.allowed.org>
parents:
diff changeset
47
1199
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
48 cd "$RESDB_PATH/db/ip" || exit 1
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
49 for PFX in $RDNS_PREFIX;do
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
50 cd "$RESDB_PATH/db/ip/$PFX" 2>/dev/null || continue
1212
0e5d4b7fc3d8 add missing cidr entry, fix abslimit's IP entry, tweak bind autogen script
cathugger <cathugger@cock.li>
parents: 1210
diff changeset
51 IP=$((0x$PFX))
1199
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
52 DOM=$IP.in-addr.arpa
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
53 RDNS_ZONEFILE="$ZONEFILE_DIR/$DOM"
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
54 echo -n "generating IPv4 reverse lookup zonefile for $IP/8..." >&2
1138
c95369b825a2 whoisd... don't remember.
epoch <epoch@hacking.allowed.org>
parents: 1120
diff changeset
55
1199
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
56 echo "; this zonefile genreated on: `date -u`" > "$RDNS_ZONEFILE".tmp
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
57 echo '$TTL 3600' >> "$RDNS_ZONEFILE".tmp
1206
08be53f67e42 NSD requires absolute origin
cathugger <cathugger@cock.li>
parents: 1205
diff changeset
58 echo '$ORIGIN' $DOM. >> "$RDNS_ZONEFILE".tmp
1230
24c17a3904b9 Revert "dropped the use of @ so the generated zones would work with yadifa too. also exported env vars so child of bind_tld_zonefile_all.sh can use them"
epoch <epoch@hack.thebackupbox.net>
parents: 1226
diff changeset
59 echo '@ IN SOA @ root ('`date -u +" %Y%m%d%H"`' 60 300 3600000 3600 )' >> "$RDNS_ZONEFILE".tmp
24c17a3904b9 Revert "dropped the use of @ so the generated zones would work with yadifa too. also exported env vars so child of bind_tld_zonefile_all.sh can use them"
epoch <epoch@hack.thebackupbox.net>
parents: 1226
diff changeset
60 echo '@ IN NS @' >> "$RDNS_ZONEFILE".tmp
24c17a3904b9 Revert "dropped the use of @ so the generated zones would work with yadifa too. also exported env vars so child of bind_tld_zonefile_all.sh can use them"
epoch <epoch@hack.thebackupbox.net>
parents: 1226
diff changeset
61 echo '@ IN A 127.0.0.1' >> "$RDNS_ZONEFILE".tmp
1138
c95369b825a2 whoisd... don't remember.
epoch <epoch@hacking.allowed.org>
parents: 1120
diff changeset
62
1199
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
63 for i in */*/ns/*;do
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
64 [ -e "$i" ] || continue
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
65 f=$(basename $i)
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
66 a=$(basename $(dirname $i))
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
67 b=$(basename $(dirname $(dirname $i)))
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
68 c=$(basename $(dirname $(dirname $(dirname $i))))
1212
0e5d4b7fc3d8 add missing cidr entry, fix abslimit's IP entry, tweak bind autogen script
cathugger <cathugger@cock.li>
parents: 1210
diff changeset
69 ipv4=`printf "%d.%d" $((0x$b)) $((0x$c))`
1201
7490236529e9 a bit more alignment for bind tld zonefile generation
cathugger <cathugger@cock.li>
parents: 1199
diff changeset
70 printf "%-7s IN NS %s\n" $ipv4 ${f}.
1199
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
71 done >> "$RDNS_ZONEFILE".tmp
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
72 mv -f "$RDNS_ZONEFILE".tmp "$RDNS_ZONEFILE"
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
73 echo " done." >&2
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
74 done
1138
c95369b825a2 whoisd... don't remember.
epoch <epoch@hacking.allowed.org>
parents: 1120
diff changeset
75
1148
5c239f21ff7e fixed a bug where I used a literal instead of one of the user defined variables (thx mkz)
epoch <epoch@hacking.allowed.org>
parents: 1138
diff changeset
76
1199
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
77 cd "$RESDB_PATH/db/dom"
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
78 for TLD in $TLDS;do
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
79 cd "$RESDB_PATH/db/dom/$TLD" 2>/dev/null || continue
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
80 ANO_ZONEFILE="$ZONEFILE_DIR/$TLD"
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
81 echo -n "generating .${TLD} TLD zonefile..." >&2
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
82
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
83 echo "; this zonefile genreated on: `date -u`" > "$ANO_ZONEFILE".tmp
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
84 echo '$TTL 3600' >> "$ANO_ZONEFILE".tmp
1206
08be53f67e42 NSD requires absolute origin
cathugger <cathugger@cock.li>
parents: 1205
diff changeset
85 echo '$ORIGIN' $TLD. >> "$ANO_ZONEFILE".tmp
1230
24c17a3904b9 Revert "dropped the use of @ so the generated zones would work with yadifa too. also exported env vars so child of bind_tld_zonefile_all.sh can use them"
epoch <epoch@hack.thebackupbox.net>
parents: 1226
diff changeset
86 echo '@ IN SOA @ root ('`date -u +" %Y%m%d%H"`' 60 300 3600000 3600 )' >> "$ANO_ZONEFILE".tmp
24c17a3904b9 Revert "dropped the use of @ so the generated zones would work with yadifa too. also exported env vars so child of bind_tld_zonefile_all.sh can use them"
epoch <epoch@hack.thebackupbox.net>
parents: 1226
diff changeset
87 echo '@ IN NS @' >> "$ANO_ZONEFILE".tmp
24c17a3904b9 Revert "dropped the use of @ so the generated zones would work with yadifa too. also exported env vars so child of bind_tld_zonefile_all.sh can use them"
epoch <epoch@hack.thebackupbox.net>
parents: 1226
diff changeset
88 echo '@ IN A 127.0.0.1' >> "$ANO_ZONEFILE".tmp
1199
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
89
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
90 for name in *;do
1205
29449ec44913 small tweak
cathugger <cathugger@cock.li>
parents: 1201
diff changeset
91 if [ -d "$name/ns" ];then
1199
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
92 for server in "$name"/ns/*;do
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
93 [ -e "$server" ] || continue
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
94 fqserver=`cut -d/ -f3- <<< "$server"`
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
95 echo -e "${name}\tIN NS\t${fqserver}."
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
96 for ip in $(cat $server);do
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
97 if grep ':' <<< "$ip" > /dev/null;then
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
98 printf '%s.\tIN AAAA\t%s\n' "${fqserver}" "${ip}"
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
99 else
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
100 printf '%s.\tIN A\t%s\n' "${fqserver}" "${ip}"
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
101 fi
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
102 done
1120
8e01b8361e9e changed add_dom to not even bother with anything head -c -1 related. should still work.
epoch <epoch@hacking.allowed.org>
parents:
diff changeset
103 done
1199
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
104 fi
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
105 done >> "$ANO_ZONEFILE".tmp
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
106 mv -f "$ANO_ZONEFILE".tmp "$ANO_ZONEFILE"
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
107 echo " done." >&2
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
108 done
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
109
dfda92fd4ec3 rewrite bind tld zonefile generators
cathugger <cathugger@cock.li>
parents: 1191
diff changeset
110 echo might want to send a sighup to your named now. >&2