From 07002a94533b6eaaf89d332c153d6b0968c6a866 Mon Sep 17 00:00:00 2001 From: Cristian Gauxachs Date: Thu, 27 Aug 2020 23:23:47 +0200 Subject: [PATCH] Fix CLIENT_IP not being set properly when array is modified --- root/defaults/peer.conf | 2 +- root/etc/cont-init.d/30-config | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/root/defaults/peer.conf b/root/defaults/peer.conf index 57222d5..205a1bd 100644 --- a/root/defaults/peer.conf +++ b/root/defaults/peer.conf @@ -1,5 +1,5 @@ [Interface] -Address = ${INTERFACE}.${CLIENT_IP_IDX} +Address = ${CLIENT_IP} PrivateKey = $(cat /config/${PEER_ID}/privatekey-${PEER_ID}) ListenPort = 51820 DNS = ${PEERDNS} diff --git a/root/etc/cont-init.d/30-config b/root/etc/cont-init.d/30-config index 197ec94..91bc902 100644 --- a/root/etc/cont-init.d/30-config +++ b/root/etc/cont-init.d/30-config @@ -172,7 +172,6 @@ generate_confs () { `cat /config/templates/server.conf` DUDE" - CLIENT_IP_IDX=2 for i in ${PEERS_ARRAY[@]}; do if [[ "${i}" =~ ^[0-9]+$ ]]; then PEER_ID="peer${i}" @@ -184,6 +183,17 @@ DUDE" umask 077 wg genkey | tee /config/${PEER_ID}/privatekey-${PEER_ID} | wg pubkey > /config/${PEER_ID}/publickey-${PEER_ID} fi + if [ -f "/config/${PEER_ID}/${PEER_ID}.conf" ]; then + CLIENT_IP=$(cat /config/${PEER_ID}/${PEER_ID}.conf | grep "Address" | awk '{print $NF}') + else + for idx in {2..254}; do + PROPOSED_IP="${INTERFACE}.${idx}" + if ! grep -q -R "${PROPOSED_IP}" /config/peer*/*.conf; then + CLIENT_IP="${PROPOSED_IP}" + break + fi + done + fi eval "`printf %s` cat < /config/${PEER_ID}/${PEER_ID}.conf `cat /config/templates/peer.conf` @@ -192,10 +202,9 @@ DUDE" [Peer] # ${PEER_ID} PublicKey = $(cat /config/${PEER_ID}/publickey-${PEER_ID}) -AllowedIPs = ${INTERFACE}.${CLIENT_IP_IDX}/32 +AllowedIPs = ${CLIENT_IP}/32 DUDE - CLIENT_IP_IDX=$(( $CLIENT_IP_IDX + 1 )) echo "PEER ${i} QR code:" qrencode -t ansiutf8 < /config/${PEER_ID}/${PEER_ID}.conf qrencode -o /config/${PEER_ID}/${PEER_ID}.png < /config/${PEER_ID}/${PEER_ID}.conf