Mercurial > hg > anonet-resdb
comparison scripts/nameserver_autogen/bind_tld_zonefile.sh @ 1199:dfda92fd4ec3 draft
rewrite bind tld zonefile generators
author | cathugger <cathugger@cock.li> |
---|---|
date | Fri, 17 Nov 2017 08:59:16 +0000 |
parents | 56c959ab3e05 |
children | 7490236529e9 |
comparison
equal
deleted
inserted
replaced
1198:93f2650b65c0 | 1199:dfda92fd4ec3 |
---|---|
1 #!/bin/bash | 1 #!/bin/bash |
2 #made for bash. not sure if all /bin/sh work. | 2 # made for bash. not sure if all /bin/sh work. |
3 #be sure to edit these variables first. | 3 # be sure to set these variables first. |
4 #RESDB_PATH=/var/db/resdb | |
5 #ZONEFILE_DIR=/etc/namedb | |
6 # optional: | |
7 : ${TLDS:=ano} | |
8 : ${RDNS_PREFIX:=21} | |
4 | 9 |
5 #ANO_ZONEFILE=/etc/namedb/ano | 10 if [ ! "$ZONEFILE_DIR" ];then |
6 #RDNS_ZONEFILE=/etc/namedb/1.in-addr.arpa | 11 echo "You forgot to set some variables. read the source plzkthx." >&2 |
7 #RESDB_PATH=/services/resdb/resdb | 12 exit 1 |
13 fi | |
8 | 14 |
9 if [ ! "$ANO_ZONEFILE" ];then | 15 # convert to hex |
10 echo "You forgot to set some variables. read the source plzkthx." | 16 if [ "*" != "$RDNS_PREFIX" ];then |
11 exit 0; | 17 X="" |
18 for PFX in $RDNS_PREFIX;do | |
19 C=`printf "%02X\n" $PFX 2>/dev/null` | |
20 [ -z "$X" ] && X="$C" || X="$X $C" | |
21 done | |
22 RDNS_PREFIX="$X" | |
12 fi | 23 fi |
13 | 24 |
14 | 25 |
15 echo -n "generating ipv4 reverse lookup zonefile for 21/8..." | 26 cd "$RESDB_PATH/db/ip" || exit 1 |
27 for PFX in $RDNS_PREFIX;do | |
28 cd "$RESDB_PATH/db/ip/$PFX" 2>/dev/null || continue | |
29 IP=$[0x$PFX] | |
30 DOM=$IP.in-addr.arpa | |
31 RDNS_ZONEFILE="$ZONEFILE_DIR/$DOM" | |
32 echo -n "generating IPv4 reverse lookup zonefile for $IP/8..." >&2 | |
16 | 33 |
17 echo "; this zonefile genreated on: `date -u`" > "$RDNS_ZONEFILE" | 34 echo "; this zonefile genreated on: `date -u`" > "$RDNS_ZONEFILE".tmp |
18 echo '$TTL 3600' >> "$RDNS_ZONEFILE" | 35 echo '$TTL 3600' >> "$RDNS_ZONEFILE".tmp |
19 echo '@ IN SOA @ root ('`date -u +" %Y%m%d%H"`' 60 300 3600000 3600 )' >> "$RDNS_ZONEFILE" | 36 echo '$ORIGIN' $DOM >> "$RDNS_ZONEFILE".tmp |
20 echo '@ IN NS @' >> "$RDNS_ZONEFILE" | 37 echo '@ IN SOA @ root ('`date -u +" %Y%m%d%H"`' 60 300 3600000 3600 )' >> "$RDNS_ZONEFILE".tmp |
21 echo '@ IN A 127.0.0.1' >> "$RDNS_ZONEFILE" | 38 echo '@ IN NS @' >> "$RDNS_ZONEFILE".tmp |
39 echo '@ IN A 127.0.0.1' >> "$RDNS_ZONEFILE".tmp | |
22 | 40 |
23 for i in `ls ${RESDB_PATH}/db/ip/15/*/*/ns/*`;do | 41 for i in */*/ns/*;do |
24 f=$(basename $i) | 42 [ -e "$i" ] || continue |
25 a=$(basename $(dirname $i)) | 43 f=$(basename $i) |
26 b=$(basename $(dirname $(dirname $i))) | 44 a=$(basename $(dirname $i)) |
27 c=$(basename $(dirname $(dirname $(dirname $i)))) | 45 b=$(basename $(dirname $(dirname $i))) |
28 printf "%d.%d IN NS %s\n" $[0x${b}] $[0x${c}] ${f}. | 46 c=$(basename $(dirname $(dirname $(dirname $i)))) |
29 done >> "$RDNS_ZONEFILE" | 47 printf "%d.%d IN NS %s\n" $[0x${b}] $[0x${c}] ${f}. |
30 echo done. | 48 done >> "$RDNS_ZONEFILE".tmp |
31 | 49 mv -f "$RDNS_ZONEFILE".tmp "$RDNS_ZONEFILE" |
32 cd ${RESDB_PATH}/db/dom/ano | 50 echo " done." >&2 |
33 | 51 done |
34 echo -n generating .ano TLD zonefile... | |
35 | |
36 echo "; this zonefile genreated on: `date -u`" > "$ANO_ZONEFILE" | |
37 echo '$TTL 3600' >> "$ANO_ZONEFILE" | |
38 echo '@ IN SOA @ root ('`date -u +" %Y%m%d%H"`' 60 300 3600000 3600 )' >> "$ANO_ZONEFILE" | |
39 echo '@ IN NS @' >> "$ANO_ZONEFILE" | |
40 echo '@ IN A 127.0.0.1' >> "$ANO_ZONEFILE" | |
41 | 52 |
42 | 53 |
43 for name in *;do | 54 cd "$RESDB_PATH/db/dom" |
44 if [ -e "${name}/ns/" ];then | 55 for TLD in $TLDS;do |
45 for server in "$name"/ns/*;do | 56 cd "$RESDB_PATH/db/dom/$TLD" 2>/dev/null || continue |
46 if grep '\.ano$' <<< "$name" > /dev/null;then | 57 ANO_ZONEFILE="$ZONEFILE_DIR/$TLD" |
47 true | 58 echo -n "generating .${TLD} TLD zonefile..." >&2 |
48 fi | 59 |
49 if grep '\.ano$' <<< "$server" > /dev/null;then | 60 echo "; this zonefile genreated on: `date -u`" > "$ANO_ZONEFILE".tmp |
50 true | 61 echo '$TTL 3600' >> "$ANO_ZONEFILE".tmp |
51 fi | 62 echo '$ORIGIN' $TLD >> "$ANO_ZONEFILE".tmp |
52 fqserver=`cut -d/ -f3- <<< $server` | 63 echo '@ IN SOA @ root ('`date -u +" %Y%m%d%H"`' 60 300 3600000 3600 )' >> "$ANO_ZONEFILE".tmp |
53 echo -e "${name}\tIN NS\t${fqserver}." | 64 echo '@ IN NS @' >> "$ANO_ZONEFILE".tmp |
54 for ip in `cat ${server}`;do | 65 echo '@ IN A 127.0.0.1' >> "$ANO_ZONEFILE".tmp |
55 if grep ':' <<< "$ip" > /dev/null;then | 66 |
56 echo -e "${fqserver}.\tIN AAAA\t$ip" | 67 for name in *;do |
57 else | 68 if [ -e "$name/ns/" ];then |
58 echo -e "${fqserver}.\tIN A\t$ip" | 69 for server in "$name"/ns/*;do |
59 fi | 70 [ -e "$server" ] || continue |
71 fqserver=`cut -d/ -f3- <<< "$server"` | |
72 echo -e "${name}\tIN NS\t${fqserver}." | |
73 for ip in $(cat $server);do | |
74 if grep ':' <<< "$ip" > /dev/null;then | |
75 printf '%s.\tIN AAAA\t%s\n' "${fqserver}" "${ip}" | |
76 else | |
77 printf '%s.\tIN A\t%s\n' "${fqserver}" "${ip}" | |
78 fi | |
79 done | |
60 done | 80 done |
61 done | 81 fi |
62 fi | 82 done >> "$ANO_ZONEFILE".tmp |
63 done >> "$ANO_ZONEFILE" | 83 mv -f "$ANO_ZONEFILE".tmp "$ANO_ZONEFILE" |
64 echo done. | 84 echo " done." >&2 |
65 echo might want to send a sighup to your named now. | 85 done |
86 | |
87 echo might want to send a sighup to your named now. >&2 |