aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/contrib/client-server-example/server.sh
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/client-server-example/server.sh')
-rwxr-xr-xcontrib/client-server-example/server.sh14
1 files changed, 14 insertions, 0 deletions
diff --git a/contrib/client-server-example/server.sh b/contrib/client-server-example/server.sh
new file mode 100755
index 0000000..e37861f
--- /dev/null
+++ b/contrib/client-server-example/server.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+if [[ -z $NCAT_REMOTE_ADDR ]]; then
+ ip link del dev wg0 2>/dev/null
+ set -e
+ ip link add dev wg0 type wireguard
+ ip address add 192.168.4.1/24 dev wg0
+ wg set wg0 private-key <(wg genkey) listen-port 12912
+ ip link set up dev wg0
+ exec ncat -e "$(readlink -f "$0")" -k -l -p 42912 -v
+fi
+read -r public_key
+[[ $(wg show wg0 | grep peer | wc -l) -ge 253 ]] && wg set wg0 peer $(wg show wg0 latest-handshakes | sort -k 2 -b -n | head -n 1 | cut -f 1) remove
+next_ip=$(all="$(wg show wg0 allowed-ips)"; for ((i=2; i<=254; i++)); do ip="192.168.4.$i"; [[ $all != *$ip/32* ]] && echo $ip && break; done)
+wg set wg0 peer "$public_key" allowed-ips $next_ip/32 2>/dev/null && echo "OK:$(wg show wg0 private-key | wg pubkey):$(wg show wg0 listen-port):$next_ip" || echo ERROR