repo: resdb
action: commit
revision: 
path_from: 
revision_from: 85e32860a7dd614f433018d3e0371ecf4a96543f:
path_to: 
revision_to: 
git.thebackupbox.net
resdb
git clone git://git.thebackupbox.net/resdb
commit 85e32860a7dd614f433018d3e0371ecf4a96543f
Author: epoch 
Date:   Fri Aug 23 03:24:54 2013 +0000

    Added a whoisd to make for easier querying of the resdb's info. Read the source.

diff --git a/contrib/whoisd/README b/contrib/whoisd/README
new file mode 100644
index 0000000000000000000000000000000000000000..228197c6e50398f040f28afe649ed5f20d2c19f3
--- /dev/null
+++ b/contrib/whoisd/README
@@ -0,0 +1,8 @@
+RTFS
+
+todo:
+  ipv6
+  more info in responses?
+  make it compatible with traceroute -A ?
+
+add any other features you'd like either in here or the source. You know perl, right?
diff --git a/contrib/whoisd/whoisd.pl b/contrib/whoisd/whoisd.pl
new file mode 100755
index 0000000000000000000000000000000000000000..8580475055b882e5bf5190a470eeafbdffefa0f3
--- /dev/null
+++ b/contrib/whoisd/whoisd.pl
@@ -0,0 +1,99 @@
+#!/usr/bin/perl
+# coded by epoch.
+# use inetd or tcpserver or something else.
+# waste of time to do manual sockets for something like this.
+# this isn't my baby. you can murder it if you want.
+
+use strict;
+
+my $RESDB = "/services/resdb/resdb";
+
+my $QUERY=;
+$QUERY =~ s/\r\n//g;
+my $out;
+my $title;
+my $value;
+my @parts;
+my $i;
+
+# ASNs
+if($QUERY =~ m/^AS(.+?)$/) {
+ printf "%% AS section for %s\n", $QUERY;
+ my $AS=$1;
+ chdir("$RESDB/db/as");
+ if(chdir($AS)) {
+  foreach(split(/\n/,`grep '' -r .`)) {
+   $out = $_;
+   $out =~ s/^\.\///g;
+   $out =~ m/^(.+?):(.+?)$/;
+   ($title, $value) = ($1, $2);
+   printf "%-20s %s\n", $title . ":", $value;
+   if($title eq "owner") {
+    $QUERY = $value;
+   }
+  }
+ } else {
+  printf "AS not found.";
+ }
+}
+
+# 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");
+ foreach(split(/\./,$QUERY)) {
+  chdir(sprintf("%02x",$_));
+ }
+ foreach(split(/\n/,`grep '' -r .`)) {
+  $out = $_;
+  $out =~ s/^\.\///g;
+  ($title, $value) = split(/:/,$out);
+  printf "%-20s %s\n", $title . ":", $value;
+  if($title eq "owner") {
+   $QUERY = $value;
+  }
+ }
+}
+
+
+# if we get here and there's still a . in the query it is probably a domain.
+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]);
+ }
+ foreach(split(/\n/,`grep '' -r .`)) {
+  $out = $_;
+  $out =~ s/^\.\///g;
+  $out =~ m/^(.+?):(.+?)$/;
+  ($title, $value) = ($1, $2);
+  printf "%-20s %s\n", $title . ":", $value;
+  if($title eq "owner") {
+   $QUERY = $value;
+  }
+ }
+}
+
+# default to assuming it is a name.
+printf "%% user section for %s\n", $QUERY;
+
+chdir("$RESDB/db/usr");
+if(chdir($QUERY)) {
+ foreach(split(/\n/,`grep '' -r .`)) {
+  $out = $_;
+  $out =~ s/^\.\///g;
+  $out =~ m/^(.+?):(.+?)$/;
+  ($title, $value) = ($1, $2);
+  printf "%-20s %s\n", $title . ":", $value;
+ }
+} else {
+ printf "%-20s missing db/usr file.\n", "warning" . ":";
+}
+chdir("$RESDB/db/as");
+foreach(split(/\n/,`grep '^$QUERY\$' */owner | cut -d/ -f1`)) {
+ $out = $_;
+ $out =~ s/\n//g;
+ printf "%-20s %s\n", "ASN" . ":", $out;
+}
diff --git a/db/usr/epoch/email b/db/usr/epoch/email
new file mode 100644
index 0000000000000000000000000000000000000000..bbaa967d421301c3456971b9ad4e20404109bbd9
--- /dev/null
+++ b/db/usr/epoch/email
@@ -0,0 +1 @@
+epoch@hacking.allowed.ano
diff --git a/db/usr/epoch/irc b/db/usr/epoch/irc
new file mode 100644
index 0000000000000000000000000000000000000000..e6402a5f7deaa3a0a57b136b78aa789b6bbe2857
--- /dev/null
+++ b/db/usr/epoch/irc
@@ -0,0 +1 @@
+epoch in #default on hacking.allowed.ano

-----END OF PAGE-----