summaryrefslogtreecommitdiffstats
path: root/retiolum/bin
diff options
context:
space:
mode:
Diffstat (limited to 'retiolum/bin')
-rwxr-xr-xretiolum/bin/fillxx6
-rwxr-xr-xretiolum/bin/hosts11
-rwxr-xr-xretiolum/bin/install18
-rwxr-xr-xretiolum/bin/ipv635
-rwxr-xr-xretiolum/bin/tinc18
-rwxr-xr-xretiolum/bin/update_tinc_hosts48
6 files changed, 136 insertions, 0 deletions
diff --git a/retiolum/bin/fillxx b/retiolum/bin/fillxx
new file mode 100755
index 00000000..5e558362
--- /dev/null
+++ b/retiolum/bin/fillxx
@@ -0,0 +1,6 @@
+#! /bin/sh
+while echo $1 | grep -q xx; do
+ xx=`od -An -tx1 -N 1 /dev/urandom | tr -d \ `
+ set -- `echo $1 | sed s/xx/$xx/`
+done
+echo $1
diff --git a/retiolum/bin/hosts b/retiolum/bin/hosts
new file mode 100755
index 00000000..6939f52c
--- /dev/null
+++ b/retiolum/bin/hosts
@@ -0,0 +1,11 @@
+#! /bin/sh
+set -euf
+
+netname=${1-retiolum}
+
+cd /etc/tinc/$netname/hosts
+
+for i in `ls`; do
+ sed -rn 's|^ *Subnet *= *([^ /]*)(/[0-9]*)? *$|\1\t'$i' '$i'.'$netname'|p' $i
+done | sort
+
diff --git a/retiolum/bin/install b/retiolum/bin/install
new file mode 100755
index 00000000..9e4459fb
--- /dev/null
+++ b/retiolum/bin/install
@@ -0,0 +1,18 @@
+#! /bin/sh
+#
+#
+#
+set -euf
+
+trap 'echo "${comment+$comment
+}You are made of stupid!">&2; exit 23' EXIT
+
+if ! test -e /usr/sbin/tincd; then
+ if grep -iq ubuntu /etc/issue; then
+ sudo apt-get install --yes tinc
+ else
+ comment='Install tinc to continue.' exit
+ fi
+fi
+
+trap - EXIT
diff --git a/retiolum/bin/ipv6 b/retiolum/bin/ipv6
new file mode 100755
index 00000000..65a1eaa1
--- /dev/null
+++ b/retiolum/bin/ipv6
@@ -0,0 +1,35 @@
+#! /bin/sh
+#
+# Manage IPv6 of the retiolum interface.
+#
+# usage: ipv6 {start,stop}
+#
+set -euf
+
+if test `id -u` != 0; then
+ echo "we're going sudo..." >&2
+ exec sudo "$0" "$@"
+ exit 23 # go to hell
+fi
+
+file=/etc/tinc/retiolum/hosts/`hostname`
+addr=`sed -rn 's|^Subnet *= *(42:[0-9A-Fa-f:]*/128)|\1|p' $file`
+route=42::/16
+
+start() {
+ stop
+ ip -6 addr add $addr dev retiolum
+ ip -6 route add $route dev retiolum
+}
+
+stop() {
+ ip -6 addr del $addr dev retiolum 2>/dev/null || :
+ ip -6 route del $route dev retiolum 2>/dev/null || :
+}
+
+## dispatch
+case "$1" in
+ (start) start;;
+ (stop) stop;;
+ (*) echo "You're made of stupid" 2>/dev/null; exit 23;;
+esac
diff --git a/retiolum/bin/tinc b/retiolum/bin/tinc
new file mode 100755
index 00000000..ffa1dbee
--- /dev/null
+++ b/retiolum/bin/tinc
@@ -0,0 +1,18 @@
+#! /bin/sh
+#
+set -euf
+
+init() {
+ f=/tmp/retiolum.GraphDumpFile
+ if ! test -f $f; then
+ touch $f &&
+ chown -v tincd: $f
+ fi
+
+ modprobe -v tun
+}
+
+if init; then
+ exec tincd --user=tincd --net=retiolum "$@"
+fi
+
diff --git a/retiolum/bin/update_tinc_hosts b/retiolum/bin/update_tinc_hosts
new file mode 100755
index 00000000..fe0785e3
--- /dev/null
+++ b/retiolum/bin/update_tinc_hosts
@@ -0,0 +1,48 @@
+#! /bin/sh
+set -euf
+
+if test "${nosudo-false}" != true -a `id -u` != 0; then
+ echo "we're going sudo..." >&2
+ exec sudo "$0" "$@"
+ exit 23 # go to hell
+fi
+
+DIRNAME=`dirname $0`
+export PATH="`readlink -f $DIRNAME`:$PATH"
+
+hosts="${hosts-/etc/hosts}"
+
+bs='# BEGIN OF RETIOLUM'
+es='# END OF RETIOLUM'
+
+case "${*-I am made of stupid}" in
+ (start|restart)
+ hosts | $0 replace magic
+ ;;
+ (stop)
+ $0 clear magic
+ ;;
+ ('print magic')
+ echo "$bs"
+ cat
+ echo "$es"
+ ;;
+ ('create magic')
+ $0 has magic || $0 print magic >> $hosts < /dev/null
+ ;;
+ ('destroy magic')
+ $0 has magic && sed -ie "/^$bs$/,/^$es$/d" $hosts
+ ;;
+ ('has magic')
+ grep -q "^$bs$" $hosts && grep -q "^$es$" $hosts
+ ;;
+ ('replace magic')
+ $0 destroy magic && $0 print magic >> $hosts
+ ;;
+ ('clear magic')
+ $0 replace magic < /dev/null
+ ;;
+ (*)
+ echo 'Error 1: You are made of stupid!' >&2
+ exit 23
+esac