summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ship/lib/retiolum20
-rw-r--r--ship/src/refresh-super-keys5
-rw-r--r--ship/src/refresh-supers9
3 files changed, 32 insertions, 2 deletions
diff --git a/ship/lib/retiolum b/ship/lib/retiolum
index 3956a200..1e55041c 100644
--- a/ship/lib/retiolum
+++ b/ship/lib/retiolum
@@ -1,10 +1,28 @@
#!/bin/sh
# retiolum host functions
#@include core
+#@include network
tinc_path=${tinc_path:-/etc/tinc}
netname=${netname:-retiolum}
hosts_dir=${hosts_dir:-$tinc_path/$netname/hosts}
+supernode_urls="http://euer.krebsco.de/retiolum/supernodes.tar.gz"
+reload_tinc(){
+ info "reloading tinc configuration"
+ pkill -HUP tincd || tinc -n $netname reload;
+}
+refresh_supernode_keys(){
+ for url in $supernode_urls;do
+ info "Trying $url to retrieve supernodes"
+ if http_get "$url" \
+ | tar xvz -C $hosts_dir | xargs -n1 echo "refreshed:" ;then
+ info "refreshed supernode keys"
+ return 0
+ else
+ error "$url unusable for retrieving supernode host files"
+ fi
+ done && return 1
+}
find_supernodes(){
cd $hosts_dir
@@ -67,7 +85,7 @@ check_free_v4(){
info "Check if ip is still free: "
for i in `ls -1`; do
if grep -q -e $myipv4\$ $i ;then
- warn "Host IP already taken by $i! "
+ error "Host IP already taken by $i! "
return 1
fi
done
diff --git a/ship/src/refresh-super-keys b/ship/src/refresh-super-keys
new file mode 100644
index 00000000..dddbe846
--- /dev/null
+++ b/ship/src/refresh-super-keys
@@ -0,0 +1,5 @@
+#!/bin/sh
+#@info
+#@include retiolum
+#@mainifyme
+refresh_supernode_keys
diff --git a/ship/src/refresh-supers b/ship/src/refresh-supers
index 26909a94..af31a5df 100644
--- a/ship/src/refresh-supers
+++ b/ship/src/refresh-supers
@@ -1,6 +1,9 @@
#!/bin/sh
#@info
# usage: [DEBUG=1] [tincconf=/not/tinc/retiolum/tinc.conf] $0
+# This is the implementation of the proposal how to update tinc supernode
+# connections
+
#@include core
#@include retiolum
# using find_supernodes
@@ -10,12 +13,14 @@
#@strict
#@mainifyme
+refresh_supernode_keys
+
max_connect_to=${max_connect_to:-5}
tincconf=${tincconf:-$tinc_path/$netname/tinc.conf}
tmp_tincconf=$(mktemp)
defer "rm -f $tmp_tincconf"
-sed '/[ ]*ConnectTo=/d' "$tincconf" > "$tmp_tincconf"
+sed '/^[ ]*ConnectTo/d' "$tincconf" > "$tmp_tincconf"
find_supernodes | cut -d\ -f 1 | shuf \
| head -n "${max_connect_to}" \
@@ -24,3 +29,5 @@ find_supernodes | cut -d\ -f 1 | shuf \
info "replacing old tinc.conf with one"
test "${DEBUG:-}" && diff "$tincconf" "$tmp_tincconf"
mv "$tmp_tincconf" "$tincconf"
+
+tinc_reload