summaryrefslogtreecommitdiffstats
path: root/ship/src/refresh-supers
diff options
context:
space:
mode:
authorroot <root@flap>2014-05-06 10:00:33 -0400
committerroot <root@flap>2014-05-06 10:00:33 -0400
commit4d8016064edd5e5dc1d194ea5ec0fce4f07b8f2a (patch)
treed8ecba8651604e51d6f887449641ac627844ae63 /ship/src/refresh-supers
parentf44c8529e6d04b557d93cc862599b956ed21f0de (diff)
parentd0367082a5c1296cefed641b4eda736b29a3ad69 (diff)
Merge branch 'master' of https://github.com/krebscode/painload
Diffstat (limited to 'ship/src/refresh-supers')
-rw-r--r--ship/src/refresh-supers35
1 files changed, 35 insertions, 0 deletions
diff --git a/ship/src/refresh-supers b/ship/src/refresh-supers
new file mode 100644
index 00000000..6dc6e8ab
--- /dev/null
+++ b/ship/src/refresh-supers
@@ -0,0 +1,35 @@
+#!/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
+ # tinc_path
+ # netname
+
+#@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"
+
+
+# TODO find_supernodes requires netcat
+find_supernodes | cut -d\ -f 1 | shuf \
+ | head -n "${max_connect_to}" \
+ | xargs -n1 printf "ConnectTo=%s\n" >> "$tmp_tincconf"
+
+info "replacing old tinc.conf with one"
+test "${DEBUG:-}" && diff "$tincconf" "$tmp_tincconf"
+mv "$tmp_tincconf" "$tincconf"
+
+reload_tinc