summaryrefslogtreecommitdiffstats
path: root/ship/src/refresh-supers
blob: 6dc6e8abe1177de12a9d65e8753391de77a49832 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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