aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheJackiMonster <thejackimonster@gmail.com>2021-05-02 21:33:35 +0200
committerTheJackiMonster <thejackimonster@gmail.com>2021-05-02 21:33:35 +0200
commit2a027d304a09fa9645cb7e121a2650085328fb6c (patch)
tree1697b4ad145c8bdaeee8ad826b7929669cae3e1c
parenta5082240f035f1851715771b0265e25088bb687c (diff)
downloadgnunet-2a027d304a09fa9645cb7e121a2650085328fb6c.tar.gz
gnunet-2a027d304a09fa9645cb7e121a2650085328fb6c.zip
-added optional stunserver to netjail script
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
-rwxr-xr-xcontrib/scripts/netjail/netjail_core.sh29
-rwxr-xr-xcontrib/scripts/netjail/netjail_setup_internet.sh33
2 files changed, 60 insertions, 2 deletions
diff --git a/contrib/scripts/netjail/netjail_core.sh b/contrib/scripts/netjail/netjail_core.sh
index 6a18ea902..8dbbeacf1 100755
--- a/contrib/scripts/netjail/netjail_core.sh
+++ b/contrib/scripts/netjail/netjail_core.sh
@@ -9,6 +9,25 @@ JAILOR=${SUDO_USER:?must run in sudo}
9 9
10export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 10export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
11 11
12netjail_opt() {
13 OPT=$1
14 shift 1
15
16 INDEX=1
17
18 while [ $# -gt 0 ]; do
19 if [ "$1" = "$OPT" ]; then
20 printf "%d" $INDEX
21 return
22 fi
23
24 INDEX=$(($INDEX + 1))
25 shift 1
26 done
27
28 printf "%d" 0
29}
30
12netjail_check() { 31netjail_check() {
13 NODE_COUNT=$1 32 NODE_COUNT=$1
14 33
@@ -74,6 +93,15 @@ netjail_node_link_bridge() {
74 ip link set $LINK_BR up 93 ip link set $LINK_BR up
75} 94}
76 95
96netjail_node_unlink_bridge() {
97 NODE=$1
98 BRIDGE=$2
99
100 LINK_BR="$NODE-$BRIDGE-1"
101
102 ip link delete $LINK_BR
103}
104
77netjail_node_add_nat() { 105netjail_node_add_nat() {
78 NODE=$1 106 NODE=$1
79 ADDRESS=$2 107 ADDRESS=$2
@@ -98,3 +126,4 @@ netjail_node_exec() {
98 unshare -fp --kill-child -- ip netns exec $NODE sudo -u $JAILOR -- $@ 1>& $FD_OUT 0<& $FD_IN 126 unshare -fp --kill-child -- ip netns exec $NODE sudo -u $JAILOR -- $@ 1>& $FD_OUT 0<& $FD_IN
99} 127}
100 128
129
diff --git a/contrib/scripts/netjail/netjail_setup_internet.sh b/contrib/scripts/netjail/netjail_setup_internet.sh
index d99709555..2d448168a 100755
--- a/contrib/scripts/netjail/netjail_setup_internet.sh
+++ b/contrib/scripts/netjail/netjail_setup_internet.sh
@@ -9,16 +9,19 @@ export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
9LOCAL_M=$1 9LOCAL_M=$1
10GLOBAL_N=$2 10GLOBAL_N=$2
11 11
12# TODO: stunserver? ..and globally known peer? 12# TODO: globally known peer?
13 13
14shift 2 14shift 2
15 15
16netjail_check $(($LOCAL_M * $GLOBAL_N)) 16netjail_check $(($LOCAL_M * $GLOBAL_N))
17 17
18# Starts optionally 'stunserver' on "92.68.150.$(($GLOBAL_N + 1))":
19STUN=$(netjail_opt '--stun' $@)
20
18LOCAL_GROUP="192.168.15" 21LOCAL_GROUP="192.168.15"
19GLOBAL_GROUP="92.68.150" 22GLOBAL_GROUP="92.68.150"
20 23
21echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/24]" 24echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/24, stun: $STUN]"
22 25
23NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M) 26NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M)
24 27
@@ -53,6 +56,22 @@ for N in $(seq $GLOBAL_N); do
53 done 56 done
54done 57done
55 58
59WAITING=""
60KILLING=""
61
62if [ $STUN -gt 0 ]; then
63 shift 1
64
65 S=$(($GLOBAL_N + 1))
66 STUN_NODE=$(netjail_print_name "S" $S)
67
68 netjail_node $STUN_NODE
69 netjail_node_link_bridge $STUN_NODE $NETWORK_NET "$GLOBAL_GROUP.$S" 24
70
71 netjail_node_exec $STUN_NODE 0 1 stunserver &
72 KILLING="$!"
73fi
74
56for N in $(seq $GLOBAL_N); do 75for N in $(seq $GLOBAL_N); do
57 for M in $(seq $LOCAL_M); do 76 for M in $(seq $LOCAL_M); do
58 NODE=$(netjail_print_name "N" $N $M) 77 NODE=$(netjail_print_name "N" $N $M)
@@ -62,11 +81,21 @@ for N in $(seq $GLOBAL_N); do
62 FD_Y=$(($INDEX * 2 + 3 + 1)) 81 FD_Y=$(($INDEX * 2 + 3 + 1))
63 82
64 netjail_node_exec $NODE $FD_X $FD_Y $@ & 83 netjail_node_exec $NODE $FD_X $FD_Y $@ &
84 WAITING="$! $WAITING"
65 done 85 done
66done 86done
67 87
88for PID in $WAITING; do wait $PID; done
89for PID in $KILLING; do kill $PID; done
68wait 90wait
69 91
92if [ $STUN -gt 0 ]; then
93 STUN_NODE=$(netjail_print_name "S" $(($GLOBAL_N + 1)))
94
95 netjail_node_unlink_bridge $STUN_NODE $NETWORK_NET
96 netjail_node_clear $STUN_NODE
97fi
98
70for N in $(seq $GLOBAL_N); do 99for N in $(seq $GLOBAL_N); do
71 for M in $(seq $LOCAL_M); do 100 for M in $(seq $LOCAL_M); do
72 netjail_node_clear $(netjail_print_name "N" $N $M) 101 netjail_node_clear $(netjail_print_name "N" $N $M)