mirror of
https://github.com/cwinfo/yggdrasil-map
synced 2024-11-22 11:40:28 +00:00
57 lines
1.6 KiB
Bash
Executable File
57 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
source conf_sh.py
|
|
mkdir -p mapper-confs
|
|
|
|
# Generate configurations and collect their publick keys and ports
|
|
for i in $(seq 1 $num_of_nodes)
|
|
do
|
|
file=mapper-confs/node$i.conf
|
|
|
|
$cjdns_path/cjdroute --genconf > $file
|
|
|
|
# Get connecting info
|
|
publicKey=$(grep -oP -m1 '(?<="publicKey": ").*(?=",)' $file)
|
|
connectPort=$(grep -oP -m1 '(?<="0.0.0.0:).*(?=",)' $file)
|
|
connectToInfo[i]='"127.0.0.1:'"$connectPort"'":{"password":"'"$rpc_pw"'","publicKey":"'"$publicKey"'"},'
|
|
done
|
|
|
|
# Modify configurations
|
|
for i in $(seq 1 $num_of_nodes)
|
|
do
|
|
echo "Starting mapper node $i/$num_of_nodes"
|
|
|
|
file=mapper-confs/node$i.conf
|
|
rpcport=$(($rpc_firstport + $i - 1))
|
|
|
|
# Connect to all mapper nodes except itself
|
|
connectInfo=""
|
|
for j in $(seq 1 $num_of_nodes)
|
|
do
|
|
if [[ $i != $j ]]; then
|
|
connectInfo+="${connectToInfo[j]}"
|
|
fi
|
|
done
|
|
|
|
# Set peer credentials
|
|
sed -i 's/\/\/ Add connection credentials here to join the network/'"$connectInfo"'/g' $file
|
|
sed -i 's/\/\/ Ask somebody who is already connected./"'"${peer_ip}"':'"${peer_port}"'":{"password":"'"${peer_pw}"'","publicKey":"'"${peer_pk}"'"}/g' $file
|
|
|
|
# Set admin rpc credentials
|
|
sed -i 's/127.0.0.1:11234/'"${rpc_bind}"':'"${rpcport}"'/g' $file
|
|
sed -i 's/"password": ".*"/"password": "'"${rpc_pw}"'"/g' $file
|
|
|
|
# Disable tun interface
|
|
sed -i 's/"type": "TUNInterface"/\/\/"type": "TUNInterface"/g' $file
|
|
|
|
# Start mappers
|
|
if [[ $* == *-d* ]]; then
|
|
# Log to stdout
|
|
sed -i 's/\/\/ "logTo":"stdout"/"logTo":"stdout"/g' $file
|
|
|
|
gdb $cjdns_path/cjdroute -ex 'set follow-fork-mode child' -ex 'run < '"${file}" -ex 'thread apply all bt' -ex 'quit' > gdb-$i.log 2>&1 &
|
|
else
|
|
$cjdns_path/cjdroute < $file
|
|
fi
|
|
done
|