summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcontrib/whoisd/whoisd.pl55
-rw-r--r--db/dom/ano/allowed/ns/ns6.allowed.ano1
-rw-r--r--db/dom/ano/whois/ns/ns.whois.ano1
-rw-r--r--db/dom/ano/whois/owner1
-rwxr-xr-xscripts/nameserver_autogen/bind_tld_zonefile1
-rwxr-xr-xscripts/nameserver_autogen/bind_tld_zonefile.sh44
6 files changed, 77 insertions, 26 deletions
diff --git a/contrib/whoisd/whoisd.pl b/contrib/whoisd/whoisd.pl
index 5b9aa54..67636c9 100755
--- a/contrib/whoisd/whoisd.pl
+++ b/contrib/whoisd/whoisd.pl
@@ -6,22 +6,37 @@
use strict;
+#maybe chroot this whoisd?
my $RESDB = "/services/resdb/resdb";
+my $HACK=0;
my $QUERY=<stdin>;
$QUERY =~ s/\r\n//g;
+$QUERY =~ s/\///g;
+if($QUERY eq '') {
+ printf "%% error. no query. wtf?";
+ exit 0;
+}
my $out;
my $title;
my $value;
my @parts;
my $i;
+if($QUERY eq "!!\n") {
+ $QUERY=<stdin>;
+ $QUERY =~ s/^!r(.+?)[\/,].*$/\1/;
+ printf "A500\n"; #fake this I guess. Does it even use that number for anything?
+ printf "%% Looks like you're trying -A on a BSDian traceroute with this server.\n";
+ $HACK=1;
+}
+
# ASNs
if($QUERY =~ m/^AS(.+?)$/) {
printf "%% AS section for %s\n", $QUERY;
my $AS=$1;
- chdir("$RESDB/db/as");
- if(chdir($AS)) {
+ chdir("$RESDB/db/as") || die "%% error";
+ if(chdir($AS) || die "%% error") {
foreach(split(/\n/,`grep '' -r .`)) {
$out = $_;
$out =~ s/^\.\///g;
@@ -39,12 +54,12 @@ if($QUERY =~ m/^AS(.+?)$/) {
# IPv4 addresses
if($QUERY =~ m/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/) {
- printf "%% IP section for %s\n", $QUERY;
- chdir("$RESDB/db/ip");
+ printf "%% IP section for %s\n", $QUERY unless $HACK;
+ chdir("$RESDB/db/ip") || die "%% error";
@parts=split(/\./,$QUERY);
for($i=0;$i<scalar(@parts)-1;$i++) {
- if(!chdir(sprintf("%02x",$parts[$i]))) {
- printf "%-20s %s\n", "error" . ":", "IP not found.";
+ if(!chdir(sprintf("%02X",$parts[$i]))) {
+ printf "%-20s %s\n", "error" . ":", "IP not found." unless $HACK;
exit;
}
}
@@ -52,7 +67,7 @@ if($QUERY =~ m/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-
$out = $_;
$out =~ s/^\.\///g;
($title, $value) = split(/:/,$out);
- printf "%-20s %s\n", $title . ":", $value;
+ printf "%-20s %s\n", $title . ":", $value unless $HACK;
if($title eq "owner") {
$QUERY = $value;
}
@@ -64,9 +79,16 @@ if($QUERY =~ m/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-
if($QUERY =~ m/\./) {
printf "%% domain section for %s\n", $QUERY;
@parts=split(/\./,$QUERY);
- chdir("$RESDB/db/dom");
- for($i=scalar(@parts)-1;$i>=0;$i--) {
- chdir($parts[$i]);
+ chdir("$RESDB/db/dom") || die "%% error";
+ for($i=scalar(@parts)-1;$i>scalar(@parts)-3;$i--) {
+ if(!$parts[$i]) {
+ printf "%% error";
+ exit
+ }
+ if(!chdir($parts[$i])) {
+ printf "%-20s %s", "warning" . ":", "domain not found.";
+ exit;
+ }
}
foreach(split(/\n/,`grep '' -r .`)) {
$out = $_;
@@ -81,25 +103,26 @@ if($QUERY =~ m/\./) {
}
# default to assuming it is a name.
-printf "%% user section for %s\n", $QUERY;
+printf "%% user section for '%s'\n", $QUERY unless $HACK;
-chdir("$RESDB/db/usr");
+chdir("$RESDB/db/usr") || die "%% error";
if(chdir($QUERY)) {
foreach(split(/\n/,`grep '' -r .`)) {
$out = $_;
$out =~ s/^\.\///g;
$out =~ m/^(.+?):(.+?)$/;
($title, $value) = ($1, $2);
- printf "%-20s %s\n", $title . ":", $value;
+ printf "%-20s %s\n", $title . ":", $value unless $HACK;
}
} else {
- printf "%-20s missing db/usr file.\n", "warning" . ":";
+ printf "%-20s missing db/usr file.\n", "warning" . ":" unless $HACK;
}
-chdir("$RESDB/db/as");
+chdir("$RESDB/db/as") || die "%% error";
foreach(split(/\n/,`grep '^$QUERY\$' */owner | cut -d/ -f1`)) {
$out = $_;
$out =~ s/\n//g;
- printf "%-20s %s\n", "ASN" . ":", $out;
+ printf "%-20s AS%s\n", "origin" . ":", $out if $HACK;
+ printf "%-20s AS%s\n", "origin" . ":", $out unless $HACK;
}
foreach(split(/\n/,`grep -i -e "^$QUERY\$" "$RESDB/db/dom"/*/*/owner`)) {
diff --git a/db/dom/ano/allowed/ns/ns6.allowed.ano b/db/dom/ano/allowed/ns/ns6.allowed.ano
new file mode 100644
index 0000000..542e31a
--- /dev/null
+++ b/db/dom/ano/allowed/ns/ns6.allowed.ano
@@ -0,0 +1 @@
+fd63:1e39:6f73:2929::1
diff --git a/db/dom/ano/whois/ns/ns.whois.ano b/db/dom/ano/whois/ns/ns.whois.ano
new file mode 100644
index 0000000..cb39eef
--- /dev/null
+++ b/db/dom/ano/whois/ns/ns.whois.ano
@@ -0,0 +1 @@
+1.41.41.1
diff --git a/db/dom/ano/whois/owner b/db/dom/ano/whois/owner
new file mode 100644
index 0000000..3aea3d0
--- /dev/null
+++ b/db/dom/ano/whois/owner
@@ -0,0 +1 @@
+epoch
diff --git a/scripts/nameserver_autogen/bind_tld_zonefile b/scripts/nameserver_autogen/bind_tld_zonefile
index 344bb4e..fb224e5 100755
--- a/scripts/nameserver_autogen/bind_tld_zonefile
+++ b/scripts/nameserver_autogen/bind_tld_zonefile
@@ -1,4 +1,5 @@
#!/usr/bin/php
+#does anyone use this?
<?php
print('$ttl 600'."\n");
chdir('../db/dom/ano');
diff --git a/scripts/nameserver_autogen/bind_tld_zonefile.sh b/scripts/nameserver_autogen/bind_tld_zonefile.sh
index 72c1128..06eb802 100755
--- a/scripts/nameserver_autogen/bind_tld_zonefile.sh
+++ b/scripts/nameserver_autogen/bind_tld_zonefile.sh
@@ -3,33 +3,57 @@
#be sure to edit these variables first.
ANO_ZONEFILE=/etc/namedb/ano
+RDNS_ZONEFILE=/etc/namedb/1.in-addr.arpa
RESDB_PATH=/services/resdb/resdb
-echo "; this zonefile genreated on: `date`" > $ANO_ZONEFILE
-echo '$TTL 3600' >> $ANO_ZONEFILE
-echo '@ IN SOA localns root ('`date +" %Y%m%d00"`' 60 300 3600000 3600 )' >> $ANO_ZONEFILE
-echo '@ IN NS localns' >> $ANO_ZONEFILE
-echo 'localns IN A 127.0.0.1' >> $ANO_ZONEFILE
cd ${RESDB_PATH}/db/dom/ano
-echo -n generating zonefile...
+echo -n "generating ipv4 reverse lookup zonefile for 1/8..."
+
+echo "; this zonefile genreated on: `date`" > "$RDNS_ZONEFILE"
+echo '$TTL 3600' >> "$RDNS_ZONEFILE"
+echo '@ IN SOA localhost. root.localhost. ('`date +" %Y%m%d%H"`' 60 300 3600000 3600 )' >> "$RDNS_ZONEFILE"
+echo '@ IN NS localhost.' >> "$RDNS_ZONEFILE"
+echo 'localhost. IN A 127.0.0.1' >> "$RDNS_ZONEFILE"
+
+for i in `ls /services/resdb/resdb/db/ip/01/*/*/ns/*`;do
+ f=$(basename $i)
+ a=$(basename $(dirname $i))
+ b=$(basename $(dirname $(dirname $i)))
+ c=$(basename $(dirname $(dirname $(dirname $i))))
+ printf "%d.%d IN NS %s\n" $[0x${b}] $[0x${c}] ${f}.
+done >> "$RDNS_ZONEFILE"
+echo done.
+
+echo -n generating .ano TLD zonefile...
+
+echo "; this zonefile genreated on: `date`" > "$ANO_ZONEFILE"
+echo '$TTL 3600' >> "$ANO_ZONEFILE"
+echo '@ IN SOA localhost. root.localhost. ('`date +" %Y%m%d%H"`' 60 300 3600000 3600 )' >> "$ANO_ZONEFILE"
+echo '@ IN NS localhost.' >> "$ANO_ZONEFILE"
+echo 'localhost. IN A 127.0.0.1' >> "$ANO_ZONEFILE"
+
for name in *;do
if [ -e "${name}/ns/" ];then
for server in "$name"/ns/*;do
- if grep '\.ano$' <<< $name > /dev/null;then
+ if grep '\.ano$' <<< "$name" > /dev/null;then
true
fi
- if grep '\.ano$' <<< $server > /dev/null;then
+ if grep '\.ano$' <<< "$server" > /dev/null;then
true
fi
fqserver=`cut -d/ -f3- <<< $server`
echo -e "${name}\tIN NS\t${fqserver}."
for ip in `cat ${server}`;do
- echo -e "${fqserver}.\tIN A\t$ip"
+ if grep ':' <<< "$ip" > /dev/null;then
+ echo -e "${fqserver}.\tIN AAAA\t$ip"
+ else
+ echo -e "${fqserver}.\tIN A\t$ip"
+ fi
done
done
fi
-done >> $ANO_ZONEFILE
+done >> "$ANO_ZONEFILE"
echo done.
echo might want to send a sighup to your named now.