changeset 811:662e371aea7f draft

Merge branch 'master' of git://1.0.27.102
author Obee <obee@anomail.ano>
date Thu, 01 Dec 2011 04:30:50 +0000
parents 0147d62f86ed (current diff) 178997d691ee (diff)
children 9a4874347d3e
files contrib/peer2anonet/DEBIAN/configure contrib/peer2anonet/DEBIAN/control contrib/peer2anonet/Makefile contrib/peer2anonet/README contrib/peer2anonet/configure contrib/peer2anonet/peer2anonet contrib/splicex/CHANGES contrib/splicex/LICENSE contrib/tor2dns/tor2dns/README contrib/tor2dns/tor2dns/run contrib/tor2dns/tor2dns/serve db/dom/ano/pastebin/ns/ns1.anonet.ano
diffstat 71 files changed, 789 insertions(+), 452 deletions(-) [+]
line wrap: on
line diff
--- a/configure	Thu Dec 01 04:26:15 2011 +0000
+++ b/configure	Thu Dec 01 04:30:50 2011 +0000
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-vars="gitd_ip gitd_basepath git_name git_email tinydns_config tinydns__rootsrvrname tinydns__rootsrvrip tinydns__tldsrvrname tinydns__tldsrvrip"
+vars="gitd_ip gitd_basepath git_name git_email tinydns_config tinydns__rootsrvrname tinydns__rootsrvrip tinydns__tldsrvrname tinydns__tldsrvrip tinydns__srvrip tinydns__srvrname"
 
 echo "Welcome to the resdb configurator!" >&2
 echo >&2
@@ -32,6 +32,12 @@
 if [ x"$tinydns__tldsrvrip" = x ]; then
  tinydns__tldsrvrip="1.0.27.37"
 fi
+if [ x"$tinydns__srvrname" = x ]; then
+ tinydns__srvrname="uz5z6spsd4jsd2k984wuzknr13gwjc630gmvtcv4bmpsrb04c179h1.ns.somerandomnick.ano"
+fi
+if [ x"$tinydns__srvrip" = x ]; then
+ tinydns__srvrip="1.0.27.86"
+fi
 
 echo "Please enter the IP address you'd like gitd to listen on." >&2
 echo "(Default: $gitd_ip)" >&2
@@ -102,6 +108,22 @@
  if [ x"$new_tinydns__tldsrvrip" != x ]; then
   tinydns__tldsrvrip="$new_tinydns__tldsrvrip"
  fi
+
+ echo "Please enter the hostname of your nameserver." >&2
+ echo "(Default: $tinydns__srvrname)" >&2
+ echo -n "SrvName? " >&2
+ read new_tinydns__srvrname
+ if [ x"$new_tinydns__srvrname" != x ]; then
+  tinydns__srvrname="$new_tinydns__srvrname"
+ fi
+
+ echo "Please enter the IP address of your nameserver." >&2
+ echo "(Default: $tinydns__srvrip)" >&2
+ echo -n "SrvIP? " >&2
+ read new_tinydns__srvrip
+ if [ x"$new_tinydns__srvrip" != x ]; then
+  tinydns__srvrip="$new_tinydns__srvrip"
+ fi
 fi
 
 echo "Proposed configuration:" >&2
--- a/contrib/peer2anonet/DEBIAN/configure	Thu Dec 01 04:26:15 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-#!/bin/bash
-read -p "Enter your anonet network: " P2A_NET
-read -p "Enter your anonet router: " P2A_ROUTE
-read -p "Enter your anonet asn: " P2A_ASN
-read -p "Enter your anonet ip: " P2A_IP
-
-echo "P2A_NET=\"$P2A_NET\"" >>DEBIAN/peer2anonet/etc/peer2anonet/p2a.conf
-echo "P2A_ROUTE=\"$P2A_ROUTE\"" >>DEBIAN/peer2anonet/etc/peer2anonet/p2a.conf
-echo "P2A_ASN=\"$P2A_ASN\"" >>DEBIAN/peer2anonet/etc/peer2anonet/p2a.conf
-echo "P2A_IP=\"$P2A_IP\"" >>DEBIAN/peer2anonet/etc/peer2anonet/p2a.conf
--- a/contrib/peer2anonet/DEBIAN/control	Thu Dec 01 04:26:15 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-Source: peer2anonet
-Priority: optional
-Maintainer: d3v11
-Version: 1.0-0
-Package: peer2anonet
-Architecture: all
-Depends: bash(>= 4.1)
-Description: peer2anonet 1.0-0
- peer2anonet is an autoconfiguration utility to easily establish a
- peering session with BGP on AnoNet2.
-
-
--- a/contrib/peer2anonet/Makefile	Thu Dec 01 04:26:15 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-#!/usr/bin/make -f
-
-install-deb:
-	make clean
-	rm -rf DEBIAN/peer2anonet *.deb
-	mkdir DEBIAN/peer2anonet
-	mkdir DEBIAN/peer2anonet/DEBIAN
-	mkdir DEBIAN/peer2anonet/usr
-	mkdir DEBIAN/peer2anonet/usr/bin
-	mkdir DEBIAN/peer2anonet/etc
-	mkdir DEBIAN/peer2anonet/etc/peer2anonet
-	cp DEBIAN/control DEBIAN/peer2anonet/DEBIAN/control
-	cp peer2anonet DEBIAN/peer2anonet/usr/bin/peer2anonet
-	chmod +x DEBIAN/peer2anonet/usr/bin/peer2anonet
-	DEBIAN/configure
-	dpkg-deb --build DEBIAN/peer2anonet
-	dpkg -i DEBIAN/peer2anonet.deb
-	rm -rf DEBIAN/peer2anonet DEBIAN/peer2anonet.deb
-
-install:
-	make clean
-	make uninstall
-	cp peer2anonet /usr/bin/peer2anonet
-	chmod +x /usr/bin/peer2anonet
-	mkdir /etc/peer2anonet
-	./configure
-
-uninstall:
-	rm -rf /usr/bin/peer2anonet /etc/peer2anonet
-
-clean:
-	rm -rf DEBIAN/peer2anonet DEBIAN/peer2anonet.deb
--- a/contrib/peer2anonet/README	Thu Dec 01 04:26:15 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-SYNOPSIS:
-     # Generate Keys:
-     quicktun.keypair</dev/random
-
-     # Interactive prompt:
-     peer2anonet
-
-     # Accept pipe from file:
-     peer2anonet < autoconfig.txt 
-
-     # Accept netcat pipe:
-     nc -l 1337 | peer2anonet 
-
-     # Send a netcat pipe:
-     nc 1337 192.168.1.0 < autoconfig.txt 
-
-DESCRIPTION:
-     peer2anonet is an autoconfiguration utility to easily establish a
-     peering session with BGP on anonet2.
-
-LICENSE:
-     This program is free software: you can redistribute it and/or modify
-     it under the terms of the GNU General Public License as published by
-     the Free Software Foundation, either version 3 of the License, or
-     (at your option) any later version.
-
-     This program is distributed in the hope that it will be useful,
-     but WITHOUT ANY WARRANTY; without even the implied warranty of
-     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-     GNU General Public License for more details.
-
-     You should have received a copy of the GNU General Public License
-     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-DEPENDS ON:
-      quicktun, bird, daemontools(non-deb), bash
-
-INSTALL AND UNINSTALL:
-    ******************************************************************
-    * PEER2ANONET CAN AND WILL OVERWRITE /service AND /services, TO  *
-    * INCLUDE FILES WITHIN THOSE DIRECTORIES. PLEASE CREATE BACKUPS  *
-    * BEFORE INSTALLING AND USING PEER2ANONET AT ANY TIME!           *
-    ******************************************************************
-
-      To install, `cd' to the extracted peer2anonet folder.
-      Issue the following commands as root:
-
-      make install
-
-      To uninstall peer2anonet, as root do:
-
-      make uninstall
-
-      To compile/install a .deb package, as root do:
-
-      make install-deb
-
-USAGE:
-      You may execute peer2anonet and answer configuration questions
-      via interface or pipe a file containing the new peering
-      session's specifications to the executable. peer2anonet has
-      some security checks but it is highly recommended you check
-      a autoconfig file manually before using to prevent malicious
-      attacks. An autoconfig file should be in the following format:
-      Plain text file, one block of data per line, no spaces, and
-      without including the following '<-- comments'.
-
-================== Not Actual Line on File ============================
-anon          <--your peer's alias
-11.22.33.44   <--your peer's remote ip
-1.2.3.4       <--your peer's anonet ip
-4321          <--your peer's client port
-1234          <--your peer's asn
-3c6e0b8a9c15224a8228b9a98ca1531d <--your peer's public key
-================== Not Actual Line on File ============================
-
-     At your discretion, you may exclude the public key from the
-     bottom of an autoconfig file and post installation of your new
-     peer service, peer2anonet will prompt foor it.
-
-
-      
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/peer2anonet/README.html	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,132 @@
+<html><body bgcolor="#000000"><font color="white">
+<pre>
+<b>DESCRIPTION:</b>
+
+    peer2anonet is an autoconfiguration utility for setting
+    up core services on AnoNet2. Enjoy :-).
+
+<b>DEPENDS ON:</b>
+
+    quicktun, bird, bash for now. it also installs some cool shit
+    that you'll use later.
+
+<b>AUTHOR:</b>
+
+    d3v11 from <a href="http://www.d3v11.ano/">www.d3v11.ano</a>, somtimes, maybe, dunno.
+
+    <b>REPORT BULLSHIT TO:</b>
+
+        <b>IRC:</b>
+        
+            /relayhell/d3v11
+
+        <b>EMAIL:</b>
+        
+            d3v11@d3v11.ano
+
+<b>USAGE:</b>
+
+    <b>From $RESDB_ROOT do:</b>
+
+        ./contrib/peer2anonet/peer2anonet --configure             generate a new local configuration and exit
+
+        ./contrib/peer2anonet/peer2anonet --update                regenerate peer configurations
+
+        ./contrib/peer2anonet/peer2anonet --configure-peer        generate a new peer configuration and update
+
+        ./contrib/peer2anonet/peer2anonet --rm-peer               remove a peer configuration and update
+
+        ./contrib/peer2anonet/peer2anonet --install-daemontools   installs daemontools
+
+        ./contrib/peer2anonet/peer2anonet --install-ucspi-tcp     installs ucspi-tcp
+
+        ./contrib/peer2anonet/peer2anonet --install-djbdns        installs djbdns
+
+        ./contrib/peer2anonet/peer2anonet --configure-dns         configures dnscache and tinydns zones
+
+        ./contrib/peer2anonet/peer2anonet --update-dns            updates tinydns-ano zone
+
+<b>RTFM:</b>
+
+    <b>CONFIGURE:</b>
+
+        I highly recommend that before you use peer2anonet
+        you ./configure resdb with tinydns support.
+
+        ./contrib/peer2anonet/peer2anonet --configure
+
+        <b>EXAMPLES:</b>
+
+            Enter your AnoNet subnet: 1.1.5.0
+            Enter your AnoNet router: 1.1.5.1
+            Enter your peering ip: 1.1.5.2
+            Enter your AnoNet asn: 1150
+
+    <b>CONFIGURE PEER:</b>
+
+        ./contrib/peer2anonet/peer2anonet --configure-peer
+
+            <b>KEY PAIRS:</b>
+
+                before running peer2anonet to configure peers you can use
+                quicktun to generate keypairs:
+
+                    quicktun.keypair < /dev/random
+
+            <b>EXAMPLES:</b>
+
+                Enter your peer's name: d3v11
+                Enter your peer's remote ip: 11.11.55.1
+                Enter your peer's peering ip: 1.1.5.2
+                Enter your peer's remote port: 21150
+                Enter your local port: 61150
+                Enter your peer's asn: 1150
+                Enter your peer's public key: * see KEY PAIRS above *
+                Enter your private key: * see KEY PAIRS above *
+
+            <b>RUN CHANGES:</b>
+
+                peer2anonet exports the /service/$PEER/run file to
+                /etc/peer2anonet/peers/$PEER/run. If you need to
+                create customizations for peerings then make adjustments
+                to that file.
+
+            <b>CONFIGURATION FILES:</b>
+
+                /etc/peer2anonet/peers/$PEER/* contains:
+                
+                    asn  local_port  peering_ip  pubkey  remote_ip  remote_port  run  seckey
+
+                In the event you want to reconfigure a peer's tunnel you can alter the run
+                file and do `--update', rm run and modify the above files then use `--update',
+                or reconfigure the peering tunnel altogether with --configure-peer and choose
+                that peer's name. If you think this is absurd then you're probably right! I 
+                plan on doing something with these files later.
+
+    <b>CONFIGURE DNS:</b>
+
+        If you did not ./configure resdb with tinydns support
+        then you need to do that before using this function.
+
+        also before using you will need to have installed
+        daemontools, djbdns, and ucspi-tcp. peer2anonet
+        can do this for you with --install-* options.
+
+        ./contrib/peer2anonet/peer2anonet --configure-dns
+
+        <b>UPDATE DNS:</b>
+
+            After a successful `--configure-dns', you can now
+            enjoy to use `--update-dns' to bring your AnoNet
+            domains up to speed.
+
+    <b>COMPLAIN:</b>
+
+        If this README doesn't tell you what you need to know
+        you can head over to www.d3v11.ano/peering. If that
+        doesn't get you what you want then either complain to
+        me or shoot both of us in the face.
+
+
+      
+</pre></font></body></html>
--- a/contrib/peer2anonet/configure	Thu Dec 01 04:26:15 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-#!/bin/bash
-read -p "Enter your anonet network: " P2A_NET
-read -p "Enter your anonet router: " P2A_ROUTE
-read -p "Enter your anonet asn: " P2A_ASN
-read -p "Enter your anonet ip: " P2A_IP
-
-echo '' >/etc/peer2anonet/p2a.conf
-
-echo "P2A_NET=\"$P2A_NET\"" >>/etc/peer2anonet/p2a.conf
-echo "P2A_ROUTE=\"$P2A_ROUTE\"" >>/etc/peer2anonet/p2a.conf
-echo "P2A_ASN=\"$P2A_ASN\"" >>/etc/peer2anonet/p2a.conf
-echo "P2A_IP=\"$P2A_IP\"" >>/etc/peer2anonet/p2a.conf
--- a/contrib/peer2anonet/peer2anonet	Thu Dec 01 04:26:15 2011 +0000
+++ b/contrib/peer2anonet/peer2anonet	Thu Dec 01 04:30:50 2011 +0000
@@ -1,75 +1,148 @@
 #!/bin/bash
-#########################################################################
-# We need to check for root privileges:
 if [[ $(id -u) != 0 ]]; then
- echo "peer2anonet: error: root privileges required."
- exit 1
+    echo "peer2anonet: root privileges required."
+    exit 1
+fi
+
+if [ -e /services/bird ]; then
+    [ -e /etc/peer2anonet/bird.tar ] || ( cd /services ; echo "creating /etc/peer2anonet/bird.tar backup" ;\
+    tar cf /etc/peer2anonet/bird.tar bird )
 fi
 
-#########################################################################
-# We need to source our peer2anonet variables
-source /etc/peer2anonet/p2a.conf
+[ -e contrib/peer2anonet/peer2anonet ] || echo "peer2anonet: not in \$RESDB_ROOT"
+[ -e contrib/peer2anonet/peer2anonet ] || exit 1
 
-#########################################################################
-# We need to see if service(s) directories exist:
+USAGE(){
+    echo -e '\npeer2anonet:'
+    echo -e '\n    ./contrib/peer2anonet/peer2anonet --configure             generate a new local configuration and exit'
+    echo -e '\n    ./contrib/peer2anonet/peer2anonet --update                regenerate peer configurations'
+    echo -e '\n    ./contrib/peer2anonet/peer2anonet --configure-peer        generate a new peer configuration and update'
+    echo -e '\n    ./contrib/peer2anonet/peer2anonet --rm-peer               remove a peer configuration and update'
+    echo -e '\n    ./contrib/peer2anonet/peer2anonet --install-daemontools   installs daemontools'
+    echo -e '\n    ./contrib/peer2anonet/peer2anonet --install-ucspi-tcp     installs ucspi-tcp'
+    echo -e '\n    ./contrib/peer2anonet/peer2anonet --install-djbdns        installs djbdns'
+    echo -e '\n    ./contrib/peer2anonet/peer2anonet --configure-dns         configures dnscache and tinydns zones'
+    echo -e '\n    ./contrib/peer2anonet/peer2anonet --update-dns            updates tinydns-ano zone\n'
+    exit 0
+    }
+
+mkdir -p /service
 mkdir -p /services
 mkdir -p /services/bird
-mkdir -p /service
+mkdir -p /etc/peer2anonet
+mkdir -p /etc/peer2anonet/peers
+
+CONFIGURE(){
+    echo -e '\nCONFIGURE:\n'
+    read -p "   Enter your AnoNet subnet: " P2A_NET
+    read -p "   Enter your AnoNet router: " P2A_ROUTE
+    read -p "   Enter your peering ip: " P2A_IP
+    read -p "   Enter your AnoNet asn: " P2A_ASN
+
 
-#########################################################################
-# We need to get info for the new peering and BGP session:
-read -p "Enter your peer's name/interface: " PEERNAME
-read -p "Enter your peer's remote ip: " REMOTEIP
-read -p "Enter your peer's anonet ip: " PEERIP
-read -p "Enter your peer's remote port: " PEERPORT
-read -p "Enter your peer's asn: " PEERASN
-read -p "Enter your peer's public key: " PUBKEY
+    echo "P2A_NET=\"$P2A_NET\"">/etc/peer2anonet/p2a.conf
+    echo "P2A_ROUTE=\"$P2A_ROUTE\"">>/etc/peer2anonet/p2a.conf
+    echo "P2A_IP=\"$P2A_IP\"">>/etc/peer2anonet/p2a.conf
+    echo "P2A_ASN=\"$P2A_ASN\"">>/etc/peer2anonet/p2a.conf
+    echo -e '\npeer2anonet: configured\n'
+
+    NICK=`cat conf/git_name`
+    ./scripts/add_as $P2A_ASN $NICK
+    ./scripts/add_ip $P2A_NET/24 $NICK
+    exit 0
+    }
 
-#########################################################################
-# Do some security checks on variables:
-TEST[0]=$PEERNAME; TEST[1]=$REMOTEIP; TEST[2]=$PEERIP
-        TEST[3]=$PEERPORT; TEST[4]=$PEERASN
+UPDATE(){
+    if [ -e /etc/peer2anonet/p2a.conf ]; then
+        source /etc/peer2anonet/p2a.conf
+    else
+        CONFIGURE
+        exit 0
+    fi
 
-for((X=0;X<=2;X++)); do
-if [[ $(echo ${TEST[$X]} | tr -d 'a-zA-Z0-9._-' | wc -c) -gt 1 ]]; then
-echo ${TEST[$X]} | tr -d 'a-zA-Z0-9' | wc -c
- echo "peer2anonet: fatal error: unacceptable data: ${TEST[$X]}
-"
- exit 1
-fi
-done
+    echo -e '\nUPDATE:\n'
+    if [[ $(ls /etc/peer2anonet/peers) ]]; then
+        for PEER in `ls /etc/peer2anonet/peers`; do
+            if [ -e /etc/peer2anonet/peers/"$PEER"/remote_ip ]; then
+                if [[ $(echo X`cat /etc/peer2anonet/peers/"$PEER"/remote_ip`) == 'X' ]]; then
+                    echo "   fatal error: /etc/peer2anonet/peers/$PEER/remote_ip is void"
+                    exit 1
+                fi
+            else
+                echo "   fatal error: /etc/peer2anonet/peers/$PEER/remote_ip not exists"
+                exit 1
+            fi
+
+            if [ -e /etc/peer2anonet/peers/"$PEER"/peering_ip ]; then
+                if [[ $(echo X`cat /etc/peer2anonet/peers/"$PEER"/peering_ip`) == 'X' ]]; then
+                    echo "   fatal error: /etc/peer2anonet/peers/$PEER/peering_ip is void"
+                    exit 1
+                fi
+            else
+                echo "   fatal error: /etc/peer2anonet/peers/$PEER/peering_ip not exists"
+                exit 1
+            fi
 
-for((X=3;X<=4;X++)); do
-if [[ $(echo ${TEST[$X]} | tr -d '0-9' | wc -c) -gt 1 ]]; then
- echo "peer2anonet: fatal error: unacceptable data: ${TEST[$X]}
-"
- exit 1
-fi
-done
+            if [ -e /etc/peer2anonet/peers/"$PEER"/remote_port ]; then
+                if [[ $(echo X`cat /etc/peer2anonet/peers/"$PEER"/remote_port`) == 'X' ]]; then
+                    echo "   fatal error: /etc/peer2anonet/peers/$PEER/remote_port is void"
+                    exit 1
+                fi
+            else
+                echo "   fatal error: /etc/peer2anonet/peers/$PEER/remote_port not exists"
+                exit 1
+            fi
 
-if [[ $(echo "$PUBKEY" | tr -d 'a-zA-Z0-9' | wc -c) -gt 1 ]]; then
- echo "peer2anonet: fatal error: unacceptable data: ${TEST[$X]}
-"
- exit 1
-fi
+            if [ -e /etc/peer2anonet/peers/"$PEER"/local_port ]; then
+                if [[ $(echo X`cat /etc/peer2anonet/peers/"$PEER"/local_port`) == 'X' ]]; then
+                    echo "   fatal error: /etc/peer2anonet/peers/$PEER/local_port is void"
+                    exit 1
+                fi
+            else
+                echo "   fatal error: /etc/peer2anonet/peers/$PEER/local_port not exists"
+                exit 1
+            fi
 
-ADDPORT="2$(($PEERASN % 10000))"
+            if [ -e /etc/peer2anonet/peers/"$PEER"/asn ]; then
+                if [[ $(echo X`cat /etc/peer2anonet/peers/"$PEER"/asn`) == 'X' ]]; then
+                    echo "   fatal error: /etc/peer2anonet/peers/$PEER/asn is void"
+                    exit 1
+                fi
+            else
+                echo "   fatal error: /etc/peer2anonet/peers/$PEER/asn not exists"
+                exit 1
+            fi
 
-#########################################################################
-# We need to check if base files need to be imported to services for bird:
-NEW_PROTOCOL="
-protocol bgp $PEERNAME { table AnoNet_routes;
- local as $P2A_ASN;
- neighbor $PEERIP as $PEERASN;
- source address $P2A_IP;
- import filter only_AnoNet_ebgp;
- export filter only_AnoNet_ebgp_export;
-}"
+            if [ -e /etc/peer2anonet/peers/"$PEER"/pubkey ]; then
+                if [[ $(echo X`cat /etc/peer2anonet/peers/"$PEER"/pubkey`) == 'X' ]]; then
+                    echo "   fatal error: /etc/peer2anonet/peers/$PEER/pubkey is void"
+                    exit 1
+                fi
+            else
+                echo "   fatal error: /etc/peer2anonet/peers/$PEER/pubkey not exists"
+                exit 1
+            fi
 
-BIRD_RUN='#!/bin/sh
-exec bird -c bird.conf -d'
+            if [ -e /etc/peer2anonet/peers/"$PEER"/seckey ]; then
+                if [[ $(echo X`cat /etc/peer2anonet/peers/"$PEER"/seckey`) == 'X' ]]; then
+                    echo "   fatal error: /etc/peer2anonet/peers/$PEER/seckey is void"
+                    exit 1
+                fi
+            else
+                echo "   fatal error: /etc/peer2anonet/peers/$PEER/seckey not exists"
+                exit 1
+            fi
+        done
+    else
+        echo "   fatal error: peering configurations not exists"
+        exit 1
+    fi
 
-BIRD_CONF="function n_AnoNet_mine (prefix arg) {
+    echo '#!/bin/bash
+bird -c bird.conf -d' > /services/bird/run
+    chmod +x /services/bird/run
+
+    echo "function n_AnoNet_mine (prefix arg) {
  if arg ~ [ $P2A_NET/24+ ] then return true;
 return false; };
 
@@ -116,57 +189,368 @@
 protocol direct direct_AnoNet_routes { table AnoNet_routes;
  interface \"eth0\";
  import filter only_AnoNet;
-}"
-
-
+}" > /services/bird/bird.conf
 
-test -e /services/bird/bird.conf || echo "$BIRD_CONF" > /services/bird/bird.conf
-test -e /services/bird/run || echo "$BIRD_RUN" > /services/bird/run
-chmod +x /services/bird/run
-echo "$NEW_PROTOCOL" >> /services/bird/bird.conf
-test -L /services/bird && rm -r /service/bird
-test -L /service/bird || ln -s /services/bird /service/
+    for PEER in `ls /etc/peer2anonet/peers`; do
+        mkdir -p /services/"$PEER"
+        REMOTEIP=`cat /etc/peer2anonet/peers/"$PEER"/remote_ip`
+        PEERIP=`cat /etc/peer2anonet/peers/"$PEER"/peering_ip`
+        PEERPORT=`cat /etc/peer2anonet/peers/"$PEER"/remote_port`
+        LOCALPORT=`cat /etc/peer2anonet/peers/"$PEER"/local_port`
+        PEERASN=`cat /etc/peer2anonet/peers/"$PEER"/asn`
+        PUBKEY=`cat /etc/peer2anonet/peers/"$PEER"/pubkey`
+        SECKEY=`cat /etc/peer2anonet/peers/"$PEER"/seckey`
 
-#########################################################################
-# We need to check if this peering session already exists:
-test -e /services/"$PEERNAME" && rm -r /services/"$PEERNAME"
-mkdir -p /services/"$PEERNAME"
+        echo "
+protocol bgp $PEER { table AnoNet_routes;
+ local as $P2A_ASN;
+ neighbor $PEERIP as $PEERASN;
+ source address $P2A_IP;
+ import filter only_AnoNet_ebgp;
+ export filter only_AnoNet_ebgp_export;
+}" >> /services/bird/bird.conf
 
+        if [ -e /etc/peer2anonet/peers/"$PEER"/run ]; then
+            cp /etc/peer2anonet/peers/$PEER/run /services/"$PEER"/run
+        else
+            echo "#!/bin/bash
+# uncomment if your peer has a dynamic IP
+#
+#export REMOTE_FLOAT=1
 
-#########################################################################
-# Create files to configure the new peering session:
-echo "#!/bin/sh
-#export REMOTE_FLOAT=1
+# uncomment for debugging. you'll need to use ./run to view output instead
+# of svc -u /service/<peer name>
+#
+#export DEBUG=1
+
 export REMOTE_ADDRESS=$REMOTEIP
 export REMOTE_PORT=$PEERPORT
-export LOCAL_PORT=$ADDPORT
-export PRIVATE_KEY=\"\$(cat seckey)\"
+export LOCAL_PORT=$LOCALPORT
+export PRIVATE_KEY=$SECKEY
 export PUBLIC_KEY=$PUBKEY
 export TUN_MODE=1
-export INTERFACE=ppp-$PEERNAME
+export INTERFACE=ppp-$PEER
+
+# uncomment if you want to nuke your default gateway and configure
+# routes only to peers through IcannNet. If any of your peers use
+# dynamic IP's or you use Tor or i2p then this is probably NOT a
+# good idea. You may need to modify the DEFAULT_ROUTE code below.
+# If you run into problems with this please email d3v11@d3v11.ano
+# so I can create a patch.
+#
+#DEFAULT_ROUTE=\`ip route show | grep default | cut -d' ' -f 3\`
+#route del default gw \$DEFAULT_ROUTE
+#route add \$REMOTE_ADDRESS gw \$DEFAULT_ROUTE
+
 ( sleep 5;
  ip addr add $P2A_IP peer $PEERIP/32 dev \$INTERFACE scope link
  ip addr add $P2A_ROUTE/32 dev \$INTERFACE scope global
  ip link set dev \$INTERFACE up
- ping -c 1 -I $INTERFACE -r -w 5
+# comment the following ping line to remove pinghack. this is a
+# trick used to help bird connect.
+ ping -c 1 -I \$INTERFACE $PEERIP -r -w 5
 ) &
-exec /usr/sbin/quicktun.nacltai" > /services/"$PEERNAME"/run
-chmod +x /services/"$PEERNAME"/run
+exec /usr/sbin/quicktun.nacltai" > /etc/peer2anonet/peers/$PEER/run
+            cp /etc/peer2anonet/peers/$PEER/run /services/"$PEER"/run
+        fi
+        chmod +x /services/"$PEER"/run
+        test -L "/service/$PEER" || ln -s "/services/$PEER" "/service/$PEER"
+        svc -t "/service/$PEER"
+    done
+    test -L /service/bird || ln -s /services/bird /service/bird
+    echo configure | birdc
+    }
+
+CONFIGURE_PEER(){
+    if [ -e /etc/peer2anonet/p2a.conf ]; then
+        source /etc/peer2anonet/p2a.conf
+    else
+        CONFIGURE
+        exit 0
+    fi
+
+    echo -e '\nCONFIGURE PEER:\n'
+    read -p "   Enter your peer's name: " PEER
+    read -p "   Enter your peer's remote ip: " REMOTEIP
+    read -p "   Enter your peer's peering ip: " PEERIP
+    read -p "   Enter your peer's remote port: " PEERPORT
+    read -p "   Enter your local port: " LOCALPORT
+    read -p "   Enter your peer's asn: " PEERASN
+    read -p "   Enter your peer's public key: " PUBKEY
+    read -p "   Enter your private key: " SECKEY
+    [ -e /etc/peer2anonet/peers/"$PEER" ] && rm -r /etc/peer2anonet/peers/"$PEER"
+    mkdir -p /etc/peer2anonet/peers/"$PEER"
+    echo $REMOTEIP >/etc/peer2anonet/peers/"$PEER"/remote_ip
+    echo $PEERIP >/etc/peer2anonet/peers/"$PEER"/peering_ip
+    echo $PEERPORT >/etc/peer2anonet/peers/"$PEER"/remote_port
+    echo $LOCALPORT >/etc/peer2anonet/peers/"$PEER"/local_port
+    echo $PEERASN >/etc/peer2anonet/peers/"$PEER"/asn
+    echo $PUBKEY >/etc/peer2anonet/peers/"$PEER"/pubkey
+    echo $SECKEY >/etc/peer2anonet/peers/"$PEER"/seckey
+    echo -e "\n   configured $PEER\n"
+    }
+
+RM_PEER(){
+    if [ -e /etc/peer2anonet/p2a.conf ]; then
+        source /etc/peer2anonet/p2a.conf
+    else
+        CONFIGURE
+        exit 0
+    fi
+
+    echo -e '\nRM PEER:\n'
+    read -p "   Enter your peer's name: " PEER
+    if [ -e /etc/peer2anonet/peers/"$PEER" ]; then
+        rm -r /etc/peer2anonet/peers/"$PEER"
+        echo
+        echo -e "   removed /etc/peer2anonet/peers/$PEER\n"
+    else
+        echo
+        echo -e "   fatal error: /etc/peer2anonet/peers/$PEER not exists\n"
+        exit 1
+    fi
+    }
+
+INSTALL_DAEMONTOOLS(){
+    echo -e '\nINSTALL DAEMONTOOLS:\n'
+    [[ $(echo X`which gcc`) == X ]] && echo '   fatal error: cannot find gcc'
+    [[ $(echo X`which gcc`) == X ]] && exit 1
+    [[ $(echo X`which make`) == X ]] && echo '   fatal error: cannot find make'
+    [[ $(echo X`which make`) == X ]] && exit 1
+    [[ $(echo X`which csh`) == X ]] && echo '   fatal error: cannot find csh'
+    [[ $(echo X`which csh`) == X ]] && exit 1
+    mkdir -p /package
+    chmod 1755 /package
+    cd /package
+    wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
+    gunzip daemontools-0.76.tar
+    tar -xpf daemontools-0.76.tar
+    rm -f daemontools-0.76.tar
+    cd admin/daemontools-0.76
+    sed -i 's/gcc/gcc -include errno.h/g' src/conf-cc
+    package/install
+    cp /etc/rc.local /etc/peer2anonet/rc.local.backup
+    sed -i "s/exit 0/csh -cf \'\/command\/svscanboot \&\'/" /etc/rc.local
+    chmod +x /etc/rc.local
+    }
+
+INSTALL_UCSPI_TCP(){
+    echo -e '\nINSTALL UCSPI-TCP:\n'
+    [[ $(echo X`which gcc`) == X ]] && echo '   fatal error: cannot find gcc'
+    [[ $(echo X`which gcc`) == X ]] && exit 1
+    [[ $(echo X`which make`) == X ]] && echo '   fatal error: cannot find make'
+    [[ $(echo X`which make`) == X ]] && exit 1
+    cd /usr/local/src
+    wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
+    gunzip ucspi-tcp-0.88.tar
+    tar -xf ucspi-tcp-0.88.tar
+    cd ucspi-tcp-0.88
+    sed -i 's/gcc/gcc -include errno.h/g' conf-cc
+    make
+    make setup check
+    }
+
+INSTALL_DJBDNS(){
+    echo -e '\nINSTALL DJBDNS:\n'
+    [[ $(echo X`which gcc`) == X ]] && echo '   fatal error: cannot find gcc'
+    [[ $(echo X`which gcc`) == X ]] && exit 1
+    [[ $(echo X`which make`) == X ]] && echo '   fatal error: cannot find make'
+    [[ $(echo X`which make`) == X ]] && exit 1
+    [[ $(echo X`which tcpserver`) == X ]] && echo '   fatal error: needs ./contrib/peer2anonet/peer2nonet --install-ucspi-tcp'
+    [[ $(echo X`which tcpserver`) == X ]] && exit 1
+    [[ $(echo X`which svscanboot`) == X ]] && echo '   fatal error: needs ./contrib/peer2anonet/peer2nonet --install-daemontools'
+    [[ $(echo X`which svscanboot`) == X ]] && exit 1
+    cd /usr/local/src
+    wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
+    gunzip djbdns-1.05.tar
+    tar -xf djbdns-1.05.tar
+    cd djbdns-1.05
+    echo gcc -O2 -include /usr/include/errno.h > conf-cc
+    make
+    make setup check
+    }
+
+CONFIGURE_DNS(){
+    if [ -e /etc/peer2anonet/p2a.conf ]; then
+        source /etc/peer2anonet/p2a.conf
+    else
+        CONFIGURE
+        exit 0
+    fi
+
+    [[ $(echo X`which tcpserver`) == X ]] && echo '   fatal error: needs ./contrib/peer2anonet/peer2nonet --install-ucspi-tcp'
+    [[ $(echo X`which tcpserver`) == X ]] && exit 1
+    [[ $(echo X`which svscanboot`) == X ]] && echo '   fatal error: needs ./contrib/peer2anonet/peer2nonet --install-daemontools'
+    [[ $(echo X`which svscanboot`) == X ]] && exit 1
 
-#########################################################################
-# Configure and start our new peering session:
-test -L "/service/$PEERNAME" && rm -r "/service/$PEERNAME"
-ln -s "/services/$PEERNAME" /service/
-echo 'Secret Key Goes Here!' > "/services/$PEERNAME/seckey"
-echo "peer2anonet: New peering session configured.
-Please place your secret key in: /services/$PEERNAME/seckey
+    if [ -e /services/dnscache ]; then
+        [ -e /etc/peer2anonet/dnscache.tar ] || ( cd /services ; echo "creating /etc/peer2anonet/dnscache.tar backup" ;\
+        tar cf /etc/peer2anonet/dnscache.tar dnscache )
+    fi
+    if [ -e /services/tinydns ]; then
+        [ -e /etc/peer2anonet/tinydns.tar ] || ( cd /services ; echo "creating /etc/peer2anonet/tinydns.tar backup" ;\
+        tar cf /etc/peer2anonet/tinydns.tar tinydns )
+    fi
+    if [ -e /services/tinydns-ano ]; then
+        [ -e /etc/peer2anonet/tinydns-ano.tar ] || ( cd /services ; echo "creating /etc/peer2anonet/tinydns-ano.tar backup" ;\
+        tar cf /etc/peer2anonet/tinydns-ano.tar tinydns-ano )
+    fi
+    if [ -e /services/tinydns-root ]; then
+        [ -e /etc/peer2anonet/tinydns-root.tar ] || ( cd /services ; echo "creating /etc/peer2anonet/tinydns-root.tar backup" ;\
+        tar cf /etc/peer2anonet/tinydns-root.tar tinydns-root )
+    fi
+
+    (
+        cd /service
+        svc -d dnscache tinydns tinydns-ano tinydns-root
+        rm -f dnscache tinydns tinydns-ano tinydns-root
+        cd /services
+        rm -rf dnscache tinydns tinydns-ano tinydns-root
+    )
+
+    echo -e '\nCONFIGURE DNS:\n'
+    NICK=`cat conf/git_name`
+    TINYDNS_ROOT_IP=`cat conf/tinydns__rootsrvrip`
+    TINYDNS_ROOT_DOMAIN=`cat conf/tinydns__rootsrvrname`
+    TINYDNS_ANO_IP=`cat conf/tinydns__tldsrvrip`
+    TINYDNS_ANO_DOMAIN=`cat conf/tinydns__tldsrvrname`
+    TINYDNS_IP=`cat conf/tinydns__srvrip`
+    TINYDNS_DOMAIN=`cat conf/tinydns__srvrname`
+    GIT_IP=`cat conf/gitd_ip`
+    GIT_DOMAIN="git.$NICK.ano"
+
+    ip addr add $TINYDNS_ROOT_IP/32 dev lo > /dev/null 2>&1
+    ip addr add $TINYDNS_IP/32 dev lo > /dev/null 2>&1
+    ip addr add $TINYDNS_ANO_IP/32 dev lo > /dev/null 2>&1
+    ip addr add $GIT_IP/32 dev lo > /dev/null 2>&1
+
+    if [[ $(cat /etc/rc.local) != *"ip addr add $TINYDNS_ROOT_IP/32 dev lo &"* ]]; then
+        echo "ip addr add $TINYDNS_ROOT_IP/32 dev lo &" >> /etc/rc.local
+    fi
+    if [[ $(cat /etc/rc.local) != *"ip addr add $TINYDNS_IP/32 dev lo &"* ]]; then
+        echo "ip addr add $TINYDNS_IP/32 dev lo &" >> /etc/rc.local
+    fi
+    if [[ $(cat /etc/rc.local) != *"ip addr add $TINYDNS_ANO_IP/32 dev lo &"* ]]; then
+        echo "ip addr add $TINYDNS_ANO_IP/32 dev lo &" >> /etc/rc.local
+    fi
+    if [[ $(cat /etc/rc.local) != *"ip addr add $GIT_IP/32 dev lo &"* ]]; then
+        echo "ip addr add $GIT_IP/32 dev lo &" >> /etc/rc.local
+    fi
+
+    useradd Gdnscache
+    useradd Gdnslog
+    useradd Gtinydns
+ 
+    dnscache-conf Gdnscache Gdnslog /services/dnscache
+    mv /services/dnscache/root/servers/@ /services/dnscache/root/servers/@.icann
+    echo $TINYDNS_ROOT_IP >/services/dnscache/root/servers/@
+    echo 'nameserver 127.0.0.1' >/etc/resolv.conf
+
+
+    tinydns-conf Gtinydns Gdnslog /services/tinydns $TINYDNS_IP
+    (
+        cd /services/tinydns/root
+        ./add-ns $NICK.ano $TINYDNS_IP
+        ./add-alias $GIT_DOMAIN $GIT_IP
+        ./add-alias $TINYDNS_ROOT_DOMAIN $TINYDNS_ROOT_IP
+        ./add-alias $TINYDNS_ANO_DOMAIN $TINYDNS_ANO_IP
+        make
+    )
+
+    tinydns-conf Gtinydns Gdnslog /services/tinydns-root $TINYDNS_ROOT_IP
+    ./scripts/nameserver_autogen/tinydns_root_datafile > /services/tinydns-root/root/data
+    ( cd /services/tinydns-root/root ; make )
+
+    tinydns-conf Gtinydns Gdnslog /services/tinydns-ano $TINYDNS_ANO_IP
+    ./scripts/nameserver_autogen/tinydns_tld_datafile > /services/tinydns-ano/root/data
+    ( cd /services/tinydns-ano/root ; make )
 
-To allow remote floating:
-uncomment REMOTE_FLOAT=1 in /services/$PEERNAME/run"
+    ( 
+        cd /
+        ln -s /services/dnscache /service/dnscache
+        ln -s /services/tinydns /service/tinydns
+        ln -s /services/tinydns-ano /service/tinydns-ano
+        ln -s /services/tinydns-root /service/tinydns-root
+        cd /service ; sleep 5 ; svc -t dnscache tinydns tinydns-ano tinydns-root
+    )
+    }
+
+INSTALL_DJBDNS(){
+    echo -e '\nINSTALL DJBDNS:\n'
+    [[ $(echo X`which gcc`) == X ]] && echo '   fatal error: cannot find gcc'
+    [[ $(echo X`which gcc`) == X ]] && exit 1
+    [[ $(echo X`which make`) == X ]] && echo '   fatal error: cannot find make'
+    [[ $(echo X`which make`) == X ]] && exit 1
+    [[ $(echo X`which tcpserver`) == X ]] && echo '   fatal error: needs ./contrib/peer2anonet/peer2nonet --install-ucspi-tcp'
+    [[ $(echo X`which tcpserver`) == X ]] && exit 1
+    [[ $(echo X`which svscanboot`) == X ]] && echo '   fatal error: needs ./contrib/peer2anonet/peer2nonet --install-daemontools'
+    [[ $(echo X`which svscanboot`) == X ]] && exit 1
+    cd /usr/local/src
+    wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
+    gunzip djbdns-1.05.tar
+    tar -xf djbdns-1.05.tar
+    cd djbdns-1.05
+    echo gcc -O2 -include /usr/include/errno.h > conf-cc
+    make
+    make setup check
+    }
+
+UPDATE_DNS(){
+    if [ -e /etc/peer2anonet/p2a.conf ]; then
+        source /etc/peer2anonet/p2a.conf
+    else
+        CONFIGURE
+        exit 0
+    fi
+
+    [[ $(echo X`which tcpserver`) == X ]] && echo '   fatal error: needs ./contrib/peer2anonet/peer2nonet --install-ucspi-tcp'
+    [[ $(echo X`which tcpserver`) == X ]] && exit 1
+    [[ $(echo X`which svscanboot`) == X ]] && echo '   fatal error: needs ./contrib/peer2anonet/peer2nonet --install-daemontools'
+    [[ $(echo X`which svscanboot`) == X ]] && exit 1
+
+    if [ -e /services/tinydns-ano ]; then
+        ( 
+            cd /services
+            echo "creating /etc/peer2anonet/tinydns-ano.tar backup"
+            tar cf /etc/peer2anonet/tinydns-ano.tar tinydns-ano
+        )
+    fi
+
+    echo -e '\nUPDATE DNS:\n'
+    ./scripts/nameserver_autogen/tinydns_tld_datafile > /services/tinydns-ano/root/data
+    ( cd /services/tinydns-ano/root ; make )
+
+    ( 
+        cd /service
+        sleep 5
+        svc -t dnscache tinydns tinydns-ano tinydns-root
+    )
+    }
+
+
+if [ "$1" == '--configure' ]; then
+    CONFIGURE
+elif [ "$1" == '--update' ]; then
+    UPDATE
+elif [ "$1" == '--configure-peer' ]; then
+    CONFIGURE_PEER
+    UPDATE
+elif [ "$1" == '--rm-peer' ]; then
+    RM_PEER
+    UPDATE
+elif [ "$1" == '--install-daemontools' ]; then
+    INSTALL_DAEMONTOOLS
+elif [ "$1" == '--install-ucspi-tcp' ]; then
+    INSTALL_UCSPI_TCP
+elif [ "$1" == '--install-djbdns' ]; then
+    INSTALL_DJBDNS
+elif [ "$1" == '--configure-dns' ]; then
+    CONFIGURE_DNS
+elif [ "$1" == '--update-dns' ]; then
+    UPDATE_DNS
+else
+    USAGE
+fi
 
 
 
-
-
-
-
--- a/contrib/splicex/CHANGES	Thu Dec 01 04:26:15 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-CHANGES:
-
-	d3v11 - Sat Oct 22 2011:
-
-		SpliceX is the new replacement for Splice3.
-		it includes some new options and should be
-		compatible with most versions of Python.
-
-		see README, splicex --help, splicex --rtfm
-
-	d3v11 - Sun Oct 23 2011:
-
-		Added some colour enhancements to SpliceX
-		:-). This is a useless update but i thought
-		it was fun.
-
-		Also, I trimmed down much unnecessary
-		code.
-
-		'deshadow' bug fixed in splicex.py src
-
-	d3v11 - Fri Oct 28 2011:
-
-		SpliceX now compiles to machine language
-		via Cython. see README for dependencies
-		and installation details.
-		
-		SpliceX compiler flags patched. recent
-		update did not distinguish:
-
-			/usr/include/<python version>
-
-				-FROM-
-
-			/usr/local/include/<python version>
-
-		Thus, if you have debian python-dev or 
-		source python-dev the ./configure script
-		should choose the appropriate option.
-		if the configure still failed to locate
-		the python development files (headers)
-		please let me know and I will correct.
-
-		SpliceX can now optionally do a pure
-		python install. This cuts down on
-		dependencies and is useful if you just
-		want to test, try, and/or debug.
-
-		SpliceX now detects invalid arguments
-		and prints with error message.
-
-	d3v11 - Sat Oct 29 2011:
-		
-		Old timing bug is now fixed. --time now
-		how a consistant tracking of how many
-		passwords and how much time has elapsed
-		among each brute force algorithm. This
-		new patch also simplified the code and
-		makes the functions faster. Much code
-		has been trimmed from splicex without
-		removing any options or functionality.
-
-		--no-char bug fixed
--- a/contrib/splicex/DEBIAN/control	Thu Dec 01 04:26:15 2011 +0000
+++ b/contrib/splicex/DEBIAN/control	Thu Dec 01 04:30:50 2011 +0000
@@ -7,6 +7,6 @@
 Architecture: all
 Depends: python2.6 (>= 2.6)
 Description: SpliceX
- brute force utilities for the linux shell.
+ Brute Force Utilities For GNU/Linux.
 
 
--- a/contrib/splicex/LICENSE	Thu Dec 01 04:26:15 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-                __________        _ _         __  __    ______  
-               / / / / ___| _ __ | (_) ___ ___\ \/ /   / / / /  
-              / / / /\___ \| '_ \| | |/ __/ _ \\  /   / / / /
-             / / / /  ___) | |_) | | | (_|  __//  \  / / / /   
-            /_/_/_/  |____/| .__/|_|_|\___\___/_/\_\/_/_/_/    
-                           |_|                                                           
-                                                                                               
-                                                                                               
-                                                                                               
-                 .:Brute Force Utilities For GNU/Linux:.                              
-
-
-
-   SpliceX is free software: you can redistribute it and/or modify it under 
-   the terms of the GNU General Public License as published by the Free     
-   Software Foundation, either version 3 of the License, or (at your option)
-   any later version.                                                       
-
-   SpliceX is distributed in the hope that it will be useful, but WITHOUT   
-   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or    
-   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License    
-   for more details. <http://www.gnu.org/licenses/>
--- a/contrib/splicex/README	Thu Dec 01 04:26:15 2011 +0000
+++ b/contrib/splicex/README	Thu Dec 01 04:30:50 2011 +0000
@@ -7,16 +7,6 @@
 
                      .:Brute Force Utilities For GNU/Linux:.
 
-       SpliceX is free software: you can redistribute it and/or modify it under
-       the terms of the GNU General Public License as published by the Free 
-       Software Foundation, either version 3 of the License, or (at your option)
-       any later version.
-
-       SpliceX is distributed in the hope that it will be useful, but WITHOUT
-       ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-       FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-       for more details. http://www.gnu.org/licenses/
-
 AUTHOR:
 
 	d3v11 <d3v11@d3v11.ano>
@@ -25,11 +15,11 @@
 
 (UN)INSTALL:
 
-	You may optionally install splicex with cython. Doing so takes
-	longer to install because of compile times but splicex will
+	You may optionally install SpliceX with cython. Doing so takes
+	longer to install because of compile times but SpliceX will
 	also be 20% to 35% faster, depending on your system. I recommend
-	this option if you intend on putting splicex to long-term use.
-	If your goal is simply to test, try, and/or debug splicex then
+	this option if you intend on putting SpliceX to long-term use.
+	If your goal is simply to test, try, and/or debug SpliceX then
 	using the pythonic install will be more practical.
 
 	NOTES:
@@ -46,6 +36,13 @@
 		This generates Python.h and structmember.h, which are
 		needed for gcc to compile splicex.
 
+		"<python[version]>" as seen in the install instructions
+		should be typed the same way you would call a specific
+		Python interpreter with only the first two version
+		numbers. IE:
+
+		python2.6, python2.7, python3.1, python3.2
+
 	DEPENDS ON:
 
 		python (>=2.6), python-dev(>=2.6), cython (>=0.12.1), 
@@ -69,7 +66,8 @@
 		 		make uninstall
 
 			DEBIAN/UBUNTU:
-		 		apt-get remove splicex
+
+				dpkg --remove splicex
 
 PYTHONIC (UN)INSTALL:
 
@@ -79,6 +77,17 @@
 	cython + gcc option above. I recommend using this option
 	if you simply want to test, try, and/or debug splicex.
 
+	NOTES:
+
+		"<python[version]>" as seen in the install instructions
+		should be typed the same way you would call a specific
+		Python interpreter with only the first two version
+		numbers. For a Pythonic install "python" sans the version
+		will most likely work as well, and will set SpliceX to
+		use the default Python Interpreter. IE:
+
+		python2.6, python2.7, python3.1, python3.2
+
 	DEPENDS ON:
 
 		python (>=2.6), bash (>=4.1.5), man (>=2.5.7)
@@ -99,7 +108,8 @@
 		 		make uninstall
 
 			DEBIAN/UBUNTU:
-		 		apt-get remove splicex
+		 		
+				dpkg --remove splicex
 
 TOOLS:
 
@@ -110,13 +120,13 @@
 
 UPDATE:
 
-	d3v11's AnoNet(2) update for splicex:
+	d3v11's AnoNet(2) update for SpliceX:
  
 	make update
 
 HELP AND USAGE:
 
-	To obtain additional information on how to use splicex
+	To obtain additional information on how to use SpliceX
 	enter either of the following commands after installation:
 
 	splicex --help
--- a/contrib/splicex/src/manual	Thu Dec 01 04:26:15 2011 +0000
+++ b/contrib/splicex/src/manual	Thu Dec 01 04:30:50 2011 +0000
@@ -8,19 +8,6 @@
  
                      .:Brute Force Utilities For GNU/Linux:.
 
-
-       SpliceX is free software: you can redistribute it and/or modify it under
-       the terms of the GNU General Public License as published by the Free
-       Software Foundation, either version 3 of the License, or (at your option)
-       any later version.
-
-       SpliceX is distributed in the hope that it will be useful, but WITHOUT
-       ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-       FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-       for more details. <http://www.gnu.org/licenses/>
-
-
-
 .SH
 OPTIONS
 
--- a/contrib/splicex/src/splicex.pyx	Thu Dec 01 04:26:15 2011 +0000
+++ b/contrib/splicex/src/splicex.pyx	Thu Dec 01 04:30:50 2011 +0000
@@ -22,18 +22,6 @@
     print('')
     print('')
     print('')
-    print('   SpliceX is free software: you can redistribute it and/or modify it under ')
-    print('   the terms of the GNU General Public License as published by the Free     ')
-    print('   Software Foundation, either version 3 of the License, or (at your option)')
-    print('   any later version.                                                       ')
-    print('')
-    print('   SpliceX is distributed in the hope that it will be useful, but WITHOUT   ')
-    print('   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or    ')
-    print('   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License    ')
-    print('   for more details. <http://www.gnu.org/licenses/>                         ')
-    print('')
-    print('')
-    print('')
     print(Red + '   --help                ' + DefColour + 'Show help display and exit')
     print('')
     print(Red + '   --command             ' + DefColour + 'Parse passwords to this command')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/tor2dns/README	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,32 @@
+DESCRIPTION:
+	tor2dns is a quick solution to non-free
+	and centralized dns.
+
+DEPENDS:
+	tor, daemontools, python
+
+INSTALL:
+
+mkdir /var/lib/tor/tor2dns
+echo 'HiddenServiceDir /var/lib/tor/tor2dns' >> /etc/tor/torrc
+echo 'HiddenServicePort 8053 127.0.0.1:8053' >> /etc/tor/torrc
+
+#See note below, you may need to use the commented line.
+#chown debian-tor /var/lib/tor/tor2dns
+
+/etc/init.d/tor restart
+mkdir /services/tor2dns
+tar -xvf tor2dns.tgz --directory='/services'
+cd /
+ln -s /services/tor2dns /service
+echo 'new dns link >>> http://'`cat /var/lib/tor/tor2dns/hostname`':8053'
+
+UPDATE:
+
+# pull a copy from AnoNet2
+wget http://d3v11.ano/tor2dns.tgz
+
+NOTE:
+	On some systems /var/lib/tor/tor2dns will need a special owner
+	like "debian-tor". If tor2dns fails for you please troubleshoot
+	your logs.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/tor2dns/run	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,13 @@
+#!/bin/bash
+GETIP() {
+	while true; do
+	wget 'http://www.showmyip.com/simple/' -O index.html
+	sleep 5h
+        done
+	}
+
+[ -e SHARE ] || mkdir SHARE
+cd SHARE
+../serve &
+GETIP
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/tor2dns/serve	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,9 @@
+#!/usr/bin/python
+import SimpleHTTPServer
+import SocketServer
+
+PORT = 8053
+
+Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
+httpd = SocketServer.TCPServer(("", PORT), Handler)
+httpd.serve_forever()
--- a/contrib/tor2dns/tor2dns/README	Thu Dec 01 04:26:15 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-DESCRIPTION:
-	tor2dns is a quick solution to non-free
-	and centralized dns.
-
-DEPENDS:
-	tor, daemontools, python
-
-INSTALL:
-
-mkdir /var/lib/tor/tor2dns
-echo 'HiddenServiceDir /var/lib/tor/tor2dns' >> /etc/tor/torrc
-echo 'HiddenServicePort 8053 127.0.0.1:8053' >> /etc/tor/torrc
-
-#See note below, you may need to use the commented line.
-#chown debian-tor /var/lib/tor/tor2dns
-
-/etc/init.d/tor restart
-mkdir /services/tor2dns
-tar -xvf tor2dns.tgz --directory='/services'
-cd /
-ln -s /services/tor2dns /service
-echo 'new dns link >>> http://'`cat /var/lib/tor/tor2dns/hostname`':8053'
-
-UPDATE:
-
-# pull a copy using tor 
-usewithtor wget http://nbafkr7odek2wh6r.onion/peer2anonet.tgz
-
-# pull a copy from AnoNet2
-wget http://d3v11.ano/peer2anonet.tgz
-
-
-POST INSTALL:
-	You will want to make sure port fowarding is turned on, on
-	port 8053 of your router, you may also need to adjust your
-	firewall. you can test for success by opening your browser
-	with tor enabled and going to the link given @ the end of
-	your installation. :-) enjoy.
-
-NOTE:
-	On some systems /var/lib/tor/tor2dns will need a special owner
-	like "debian-tor". If tor2dns fails for you please troubleshoot
-	your logs, port fowarding, etc.
--- a/contrib/tor2dns/tor2dns/run	Thu Dec 01 04:26:15 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-#!/bin/bash
-GETIP() {
-	while true; do
-	wget 'http://www.showmyip.com/simple/' -O index.html
-	sleep 5h
-        done
-	}
-
-[ -e SHARE ] || mkdir SHARE
-cd SHARE
-../serve &
-GETIP
-
--- a/contrib/tor2dns/tor2dns/serve	Thu Dec 01 04:26:15 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-#!/usr/bin/python
-import SimpleHTTPServer
-import SocketServer
-
-PORT = 8053
-
-Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
-httpd = SocketServer.TCPServer(("", PORT), Handler)
-httpd.serve_forever()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/as/1190/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+demontrox
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/as/125/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+Richard
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/dom/ano/async/ns/a.ns.d3v11.ano	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/dom/ano/async/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+d3v11
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/dom/ano/cellphuck/ns/a.ns.d3v11.ano	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/dom/ano/cellphuck/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+d3v11
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/dom/ano/cotichopa/ns/a.ns.cotichopa.ano	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+1.2.5.3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/dom/ano/cotichopa/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+Richard
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/dom/ano/demontrox/ns/a.ns.demontrox.ano	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+1.1.9.153
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/dom/ano/demontrox/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+demontrox
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/dom/ano/gunsuit/ns/a.ns.d3v11.ano	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/dom/ano/gunsuit/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+d3v11
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/dom/ano/jcs/ns/ns2.jcs.ano	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+1.3.14.65
--- a/db/dom/ano/pastebin/ns/ns1.anonet.ano	Thu Dec 01 04:26:15 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-
--- a/db/dom/ano/pastebin/owner	Thu Dec 01 04:26:15 2011 +0000
+++ b/db/dom/ano/pastebin/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -1,1 +1,1 @@
-anyone
+somerandomnick
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/dom/ano/webd3v11/ns/a.ns.d3v11.ano	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/dom/ano/webd3v11/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+d3v11
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/dom/ano/webdevil/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+d3v11
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/ip/01/01/09/cidr	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+1.1.9.0/24
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/ip/01/01/09/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+demontrox
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/ip/01/02/05/cidr	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+1.2.5.0/24
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/ip/01/02/05/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+Richard
--- a/db/ip/01/03/0E/ns/ns1.jcs.ano	Thu Dec 01 04:26:15 2011 +0000
+++ b/db/ip/01/03/0E/ns/ns1.jcs.ano	Thu Dec 01 04:30:50 2011 +0000
@@ -1,1 +0,0 @@
-1.3.14.15
--- a/db/ip/01/03/0F/ns/ns1.jcs.ano	Thu Dec 01 04:26:15 2011 +0000
+++ b/db/ip/01/03/0F/ns/ns1.jcs.ano	Thu Dec 01 04:30:50 2011 +0000
@@ -1,1 +0,0 @@
-1.3.14.15
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/A1/@/.gitignore	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+temp.keys
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/A1/@/default.key	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+fcde3e34f6210d6de57d2bc6702b9b1a2f89d685f394feda913a5740316c8508
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/A1/@/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+somerandomnick
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/A1/@/path	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+/A1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/CA2/@/.gitignore	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+temp.keys
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/CA2/@/default.key	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+d81cb67b5dd7ef5e8e7ff6d0d63fe7a4be7bdf19d5510392c6b33639ddd84e32
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/CA2/@/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+pikaj00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/CA2/@/path	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+/CA2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/GunSuit/@/.gitignore	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+temp.keys
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/GunSuit/@/default.key	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+f24d566c98a4b470bb87260d8d859099a0897cc6ce7c384805bbc3f39017f24a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/GunSuit/@/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+d3v11
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/GunSuit/@/path	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+/GunSuit
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/OnionNet/@/.gitignore	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+temp.keys
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/OnionNet/@/default.key	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+a813810f649716f9311531d4859bb91846282cca0f1d62f235c96f5b04e1553a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/OnionNet/@/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+somerandomnick
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/OnionNet/@/path	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+/OnionNet
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/srn8/@/.gitignore	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+temp.keys
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/srn8/@/default.key	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+0e902157e061e2069d4a1c977a035ee6fb6278d6f979117d9c069b8a3a893346
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/srn8/@/owner	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+somerandomnick
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/udpmsg4/srn8/@/path	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+/srn8
--- a/db/usr/JCS/git	Thu Dec 01 04:26:15 2011 +0000
+++ b/db/usr/JCS/git	Thu Dec 01 04:30:50 2011 +0000
@@ -1,1 +1,1 @@
-git://1.3.14.15/
+git://git.jcs.ano/resdb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/usr/Richard/git	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+git://1.2.5.1/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/db/usr/demontrox/git	Thu Dec 01 04:30:50 2011 +0000
@@ -0,0 +1,1 @@
+git://1.1.9.3/
--- a/doc/www.anonet2.org/public_pod/index.pod	Thu Dec 01 04:26:15 2011 +0000
+++ b/doc/www.anonet2.org/public_pod/index.pod	Thu Dec 01 04:30:50 2011 +0000
@@ -5,6 +5,8 @@
 =for comment
 You can read more information about AnoNet below, or on L<http://wiki.ucis.nl/Anonet>.
 
+Join us in chat for more information right now by loading L<http://client.thruhere.net:9090> enter your nick and #anonet.
+
 =head2 Theory
 
 =over
@@ -56,13 +58,13 @@
  <tr><td>IRCZ<></td><td>L<SRN3 (tor)|irc://elef7kcrczguvamt.onion/anonet></td><td>L<aaoa|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname (note 2))</td></tr>
  <tr><td>IRCZ<></td><td>L<SRN4 (tor)|irc://wllef6hh2mt6uoi4.onion/anonet></td><td>L<aaoa|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname (note 2))</td></tr>
  <tr><td>IRCZ<></td><td>L<SRN6 (tor)|irc://5ziqujry3yknhco2.onion/anonet></td><td>L<aaoa|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname (note 2))</td></tr>
+ <tr><td>IRCZ<></td><td>L<SRN8 (tor)|irc://kvur4ogjijlvxsdm.onion/anonet></td><td>L<aaoa|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname (note 2))</td></tr>
  <tr><td>IRCZ<></td><td>L<sevilNatas (tor)|irc://p4hej3mnyqdtxwiu.onion/anonet></td><td>L<aaoa|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname (note 2))</td></tr>
 <!--
  <tr><td>IRCZ<></td><td>L<UFO|irc://anortr.ucis.nl:8805/anonet></td><td>L<aooo|http://www.anonet2.org/irc_anonymity> (Hidden IP, visible username and realname)</td></tr>
  <tr><td>IRCZ<></td><td>L<UFO|irc://irc.kwaaknet.org:6667/anonet></td><td>L<nooo|http://www.anonet2.org/irc_anonymity> (Visible IP, username and realname (warning!))</td></tr>
+ <tr><td>IRCZ<></td><td>L<d3v11 (tor)|irc://rbb3cizcd23x7w4g.onion/anonet></td><td>L<aaoa|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname, custom nickname)</td></tr>
 -->
- <tr><td>IRCZ<></td><td>L<d3v11|irc://v7ygpbs5s62zqei6.onion/anonet></td><td>L<aaoa|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname, custom nickname)</td></tr>
- <tr><td>IRCZ<></td><td>L<whatis-theplan|irc://mjf6cqigsjeqhsb3.onion/anonet></td><td>L<aaoa|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname, custom nickname)</td></tr>
 <!--
  <tr><td>TelnetZ<></td><td>L<SRN|telnet://anortr.ucis.nl:8803/></td><td>L<aaya|http://www.anonet2.org/irc_anonymity> (Hidden IP and username, custom nickname)</td></tr>
 -->
@@ -87,6 +89,7 @@
 =back
 
 If you want to browse around first, there's a tor gateway available at L<http://mkdopl6dniqykj2y.onion/>.  (You will need tor for that link to work.)
+If you're not sure where to go with the link above check out one of our search engines at L<http://rxbhq3ybu3dyvxko.onion:8080/async/search/>.
 
 If you're feeling adventurous enough to connect at the IP level, there
 are a few options available:
@@ -113,7 +116,7 @@
 =item *
 
 d3v11 has a site with much software and tutorials for configuring peering(s)
-and services on AnoNet2 at L<http://4umq6btkv2ltlbm5.onion/>. 
+and services on AnoNet2 at L<http://z3n2g7wycmbzk27d.onion/>. 
 
 =back
 
@@ -129,10 +132,11 @@
 <!--
  <tr><td>HTTP WebChatZ<></td><td>L<KwaakNet|http://anortr.ucis.ano:8086/?channels=anonet&nick=Anonymous></td><td>L<KwaakNet|http://1.3.3.2:8086/?channels=anonet&nick=Anonymous></td><td>L<aaya|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname, custom nickname (note 1))</td></tr>
 -->
+ <tr><td>IRCZ<></td><td>L<SRN (srn8)|irc://irc8.srn.ano:6667/anonet></td><td>L<SRN (srn8)|irc://1.0.27.123:6667/anonet></td><td>L<aaoa|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname (note 2))</td></tr>
  <tr><td>IRCZ<></td><td>L<SRN (NewNickNetCloud)|irc://irc6.srn.ano:6667/anonet></td><td>L<SRN (NewNickNetCloud)|irc://1.0.27.120:6667/anonet></td><td>L<aaoa|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname (note 2))</td></tr>
  <tr><td>IRCZ<></td><td>L<SRN (NewNickNet)|irc://irc3.srn.ano:6667/anonet></td><td>L<SRN (NewNickNet)|irc://1.0.27.111:6667/anonet></td><td>L<aaoa|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname (note 2))</td></tr>
  <tr><td>IRCZ<></td><td>L<SRN (NickNet)|irc://irc4.srn.ano:6667/anonet></td><td>L<SRN (NickNet)|irc://1.0.27.114:6667/anonet></td><td>L<aaoa|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname (note 2))</td></tr>
- <tr><td>IRCZ<></td><td>L<SRN|irc://irc.somerandomnick.ano:6667/anonet></td><td>L<SRN|irc://1.0.27.103:6667/anonet></td><td>L<aaoa|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname (note 2), and also blocks most CTCP messages)</td></tr>
+ <tr><td>IRCZ<></td><td>L<SRN|irc://irc1.somerandomnick.ano:6667/anonet></td><td>L<SRN|irc://1.0.27.103:6667/anonet></td><td>L<aaoa|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname (note 2), and also blocks most CTCP messages)</td></tr>
  <!--<tr><td>IRCZ<></td><td>L<sevilNatas|irc://irc0.sevilnatas.ano:6667/anoNet></td><td>L<aaao|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname, custom nickname, SSL enabled)</td></tr>-->
  <tr><td>IRCZ<></td><td>L<sevilNatas|irc://irc0.sevilnatas.ano:6667/anonet></td><td></td><td>L<aaao|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname, custom nickname, SSL enabled)</td></tr>
 <!--
@@ -140,8 +144,7 @@
 -->
  <tr><td>IRCZ<></td><td>L<pragmo|irc://irc.pragmo.ano:6667/atomic></td><td>L<pragmo|irc://1.0.16.111:6667/atomic></td><td>L<????|http://www.anonet2.org/irc_anonymity> (Unknown)</td></tr>
  <tr><td>TelnetZ<></td><td>L<SRN|telnet://irc.somerandomnick.ano:2323/></td><td></td><td>L<aaya|http://www.anonet2.org/irc_anonymity> (Hidden IP and username, custom nickname)</td></tr>
- <tr><td>IRC<></td><td>L<d3v11|irc://irc.d3v11.ano:6667/></td><td></td><td>L<aaoa|irc:1.1.5.67:6667/> (Hidden IP and username, custom nickname)</td></tr>
- <tr><td>IRC<></td><td>L<whatis-theplan|irc://irc.whatis-theplan.ano:6667/></td><td></td><td>L<aaoa|irc:1.1.5.69:6667/> (Hidden IP and username, custom nickname)</td></tr>
+ <tr><td>IRCZ<></td><td>L<d3v11|irc://irc.d3v11.ano:6667/></td><td></td><td>L<aaoa|irc:1.1.5.67:6667/> (Hidden IP and username, custom nickname)</td></tr>
  <tr><td>JabberZ<></td><td>irc.somerandomnick.ano (anonet MUC)</td><td></td><td>L<aaya|http://www.anonet2.org/irc_anonymity> (Hidden IP, username and realname, custom nickname)</td></tr>
 </table>
 
--- a/doc/www.anonet2.org/public_pod/links.pod	Thu Dec 01 04:26:15 2011 +0000
+++ b/doc/www.anonet2.org/public_pod/links.pod	Thu Dec 01 04:30:50 2011 +0000
@@ -4,6 +4,20 @@
 
 This is a collection of links that you may find interesting:
 
+20111129 - L<How "Intellectual Property" Impedes Competition|http://www.thefreemanonline.org/featured/how-intellectual-property-impedes-competition/>
+
+20111124 - L<Document Trove Exposes Surveillance Methods|http://online.wsj.com/article/SB10001424052970203611404577044192607407780.html>
+
+20111123 - L<Greek crisis demonstrates that Europe has no clothes|http://fullcomment.nationalpost.com/2011/11/04/greek-crisis-demonstrates-that-europe-has-no-clothes/>
+
+20111123 - L<Why you should always encrypt your smartphone|http://arstechnica.com/gadgets/guides/2011/01/why-you-should-always-encrypt-your-smartphone.ars/2>
+
+20111123 - L<The gadgets police use to snarf cell phone data|http://arstechnica.com/tech-policy/news/2011/04/michigan-state-police-we-only-grab-your-cellphone-data-with-a-warrant.ars>
+
+20111123 - L<Cellebrite UFED Extends Forensic Capabilities to Android Mobile Devices|http://www.prnewswire.com/news-releases/cellebrite-ufed-extends-forensic-capabilities-to-android-mobile-devices-132449788.html>
+
+20111122 - L<Blocking DNS|http://www.isc.org/community/blog/201103/blocking-dns>
+
 20111009 - L<Chaos Computer Club analyzes government malware|http://ccc.de/en/updates/2011/staatstrojaner>
 
 20110902 - L<Apple Cries About Samsung and Motorola's Patent "Monopoly"|http://www.dailytech.com/Apple+Cries+About+Samsung+and+Motorolas+Patent+Monopoly/article22586.htm>
--- a/git-commit	Thu Dec 01 04:26:15 2011 +0000
+++ b/git-commit	Thu Dec 01 04:30:50 2011 +0000
@@ -1,4 +1,4 @@
 #!/bin/sh
 git add configure db doc git-commit gitd scripts contrib .gitignore
-git commit
+TZ=UTC git commit --date="`date -u +'%s'`"
 test -x /usr/lib/git-core/git-update-server-info && /usr/lib/git-core/git-update-server-info
--- a/scripts/nameserver_autogen/dnsmasq_tld_conffile	Thu Dec 01 04:26:15 2011 +0000
+++ b/scripts/nameserver_autogen/dnsmasq_tld_conffile	Thu Dec 01 04:30:50 2011 +0000
@@ -31,11 +31,13 @@
 
 for tld in $($LS db/dom/); do 
 	for domain in $($LS db/dom/${tld}/); do 
-		if [ -d $($LS db/dom/${tld}/{$domain}/ns/ ]; then
-			for ns in $($LS db/dom/${tld}/${domain}/ns/); do 
-				STR="server=/${domain}.${tld}/$(scripts/ns2ip -f ${ns})"
-				echo $STR
-			done; 
+		if [ -d $($LS -d db/dom/${tld}/${domain}/) ]; then
+			if [ -d $($LS -d db/dom/${tld}/${domain}/ns/) ]; then
+				for ns in $($LS db/dom/${tld}/${domain}/ns/); do 
+					STR="server=/${domain}.${tld}/$(scripts/ns2ip -f ${ns})"
+					echo $STR
+				done; 
+			fi
 		fi
 	done; 
 done