summaryrefslogtreecommitdiff
path: root/contrib/peer2anonet
diff options
context:
space:
mode:
authorObee <obee@anomail.ano>2011-12-01 04:30:50 +0000
committerObee <obee@anomail.ano>2011-12-01 04:30:50 +0000
commit9225c2b010f5d7b84e63a772a9679ab8b1a2f3b9 (patch)
tree2e0889510daedb2fd2640adbd8339be4126453cb /contrib/peer2anonet
parentcce40b6ef5b27a573147a98d728b8bbd502754c4 (diff)
parent84c8ec4218fbf18341cca859ca1c1efe32ec7472 (diff)
downloadresdb-9225c2b010f5d7b84e63a772a9679ab8b1a2f3b9.tar.gz
resdb-9225c2b010f5d7b84e63a772a9679ab8b1a2f3b9.zip
Merge branch 'master' of git://1.0.27.102
Diffstat (limited to 'contrib/peer2anonet')
-rwxr-xr-xcontrib/peer2anonet/DEBIAN/configure10
-rw-r--r--contrib/peer2anonet/DEBIAN/control12
-rw-r--r--contrib/peer2anonet/Makefile32
-rw-r--r--contrib/peer2anonet/README82
-rw-r--r--contrib/peer2anonet/README.html132
-rwxr-xr-xcontrib/peer2anonet/configure12
-rwxr-xr-x[-rw-r--r--]contrib/peer2anonet/peer2anonet594
7 files changed, 621 insertions, 253 deletions
diff --git a/contrib/peer2anonet/DEBIAN/configure b/contrib/peer2anonet/DEBIAN/configure
deleted file mode 100755
index 6a01c74..0000000
--- a/contrib/peer2anonet/DEBIAN/configure
+++ /dev/null
@@ -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
diff --git a/contrib/peer2anonet/DEBIAN/control b/contrib/peer2anonet/DEBIAN/control
deleted file mode 100644
index 903b29e..0000000
--- a/contrib/peer2anonet/DEBIAN/control
+++ /dev/null
@@ -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.
-
-
diff --git a/contrib/peer2anonet/Makefile b/contrib/peer2anonet/Makefile
deleted file mode 100644
index b3d0ee5..0000000
--- a/contrib/peer2anonet/Makefile
+++ /dev/null
@@ -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
diff --git a/contrib/peer2anonet/README b/contrib/peer2anonet/README
deleted file mode 100644
index 04feabb..0000000
--- a/contrib/peer2anonet/README
+++ /dev/null
@@ -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.
-
-
-
diff --git a/contrib/peer2anonet/README.html b/contrib/peer2anonet/README.html
new file mode 100644
index 0000000..6866354
--- /dev/null
+++ b/contrib/peer2anonet/README.html
@@ -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>
diff --git a/contrib/peer2anonet/configure b/contrib/peer2anonet/configure
deleted file mode 100755
index d9a574d..0000000
--- a/contrib/peer2anonet/configure
+++ /dev/null
@@ -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
diff --git a/contrib/peer2anonet/peer2anonet b/contrib/peer2anonet/peer2anonet
index 64af216..152f4a4 100644..100755
--- a/contrib/peer2anonet/peer2anonet
+++ b/contrib/peer2anonet/peer2anonet
@@ -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
-#########################################################################
-# We need to source our peer2anonet variables
-source /etc/peer2anonet/p2a.conf
-
-#########################################################################
-# We need to see if service(s) directories exist:
-mkdir -p /services
-mkdir -p /services/bird
-mkdir -p /service
-
-#########################################################################
-# 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
-
-#########################################################################
-# Do some security checks on variables:
-TEST[0]=$PEERNAME; TEST[1]=$REMOTEIP; TEST[2]=$PEERIP
- TEST[3]=$PEERPORT; TEST[4]=$PEERASN
-
-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
+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
-done
-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 [[ $(echo "$PUBKEY" | tr -d 'a-zA-Z0-9' | wc -c) -gt 1 ]]; then
- echo "peer2anonet: fatal error: unacceptable data: ${TEST[$X]}
-"
- exit 1
-fi
+[ -e contrib/peer2anonet/peer2anonet ] || echo "peer2anonet: not in \$RESDB_ROOT"
+[ -e contrib/peer2anonet/peer2anonet ] || exit 1
+
+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
+ }
-ADDPORT="2$(($PEERASN % 10000))"
-
-#########################################################################
-# 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;
-}"
-
-BIRD_RUN='#!/bin/sh
-exec bird -c bird.conf -d'
-
-BIRD_CONF="function n_AnoNet_mine (prefix arg) {
+mkdir -p /service
+mkdir -p /services
+mkdir -p /services/bird
+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
+
+
+ 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
+ }
+
+UPDATE(){
+ if [ -e /etc/peer2anonet/p2a.conf ]; then
+ source /etc/peer2anonet/p2a.conf
+ else
+ CONFIGURE
+ exit 0
+ fi
+
+ 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
+
+ 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 [ -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
+
+ 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
+
+ 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
+
+ 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
+
+ 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 device {
protocol direct direct_AnoNet_routes { table AnoNet_routes;
interface \"eth0\";
import filter only_AnoNet;
-}"
-
-
-
-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/
-
-#########################################################################
-# We need to check if this peering session already exists:
-test -e /services/"$PEERNAME" && rm -r /services/"$PEERNAME"
-mkdir -p /services/"$PEERNAME"
+}" > /services/bird/bird.conf
+
+ 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`
+
+ 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
+# uncomment for debugging. you'll need to use ./run to view output instead
+# of svc -u /service/<peer name>
+#
+#export DEBUG=1
-#########################################################################
-# Create files to configure the new peering session:
-echo "#!/bin/sh
-#export REMOTE_FLOAT=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
-
-#########################################################################
-# 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
-
-To allow remote floating:
-uncomment REMOTE_FLOAT=1 in /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
+
+ 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 )
+
+ (
+ 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