diff options
Diffstat (limited to 'retiolum/bin')
-rwxr-xr-x | retiolum/bin/fillxx | 6 | ||||
-rwxr-xr-x | retiolum/bin/hosts | 11 | ||||
-rwxr-xr-x | retiolum/bin/install | 18 | ||||
-rwxr-xr-x | retiolum/bin/ipv6 | 35 | ||||
-rwxr-xr-x | retiolum/bin/tinc | 18 | ||||
-rwxr-xr-x | retiolum/bin/update_tinc_hosts | 48 |
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 |