mirror of
https://github.com/triffid/pia-wg.git
synced 2026-04-05 08:54:08 -04:00
Make currentserver and portforward more robust against endpoint IP changing in datafile after connection, by performing a search if the exact IP isn't found
This commit is contained in:
@@ -36,4 +36,14 @@ then
|
||||
source "$CONFIG"
|
||||
fi
|
||||
|
||||
jq '.regions | .[] | select(.servers.wg[0].ip == "'"$(jq -r .server_ip "$REMOTEINFO")"'")' "$DATAFILE_NEW"
|
||||
SERVER_IP="$(jq -r .server_ip "$REMOTEINFO")"
|
||||
|
||||
if [ -z "$(jq '.regions | .[] | select(.servers.wg[0].ip == "'"$SERVER_IP"'")' "$DATAFILE_NEW")" ]
|
||||
then
|
||||
SERVER_IP_S="$(cut -d. -f1-3 <<< $SERVER_IP)"
|
||||
jq '.regions | .[] | select(.servers.wg[0].ip | test("^'"$SERVER_IP_S"'"))' "$DATAFILE_NEW"
|
||||
|
||||
echo "Note: Inexact match for $SERVER_IP_S.* ($SERVER_IP not found)" >/dev/stderr
|
||||
else
|
||||
jq '.regions | .[] | select(.servers.wg[0].ip == "'"$SERVER_IP"'")' "$DATAFILE_NEW"
|
||||
fi
|
||||
|
||||
@@ -69,7 +69,25 @@ then
|
||||
PF_BINDFILE="$CONFIGDIR/pf-bind"
|
||||
fi
|
||||
|
||||
WG_INFO="$(jq -r '.regions | .[] | select(.servers.wg[0].ip == "'"$(jq -r .server_ip "$REMOTEINFO")"'")' "$DATAFILE_NEW")"
|
||||
PEER_IP="$(jq -r .peer_ip "$REMOTEINFO")"
|
||||
SERVER_PUBLIC_KEY="$(jq -r .server_key "$REMOTEINFO")"
|
||||
SERVER_IP="$(jq -r .server_ip "$REMOTEINFO")"
|
||||
SERVER_PORT="$(jq -r .server_port "$REMOTEINFO")"
|
||||
SERVER_VIP="$(jq -r .server_vip "$REMOTEINFO")"
|
||||
|
||||
WG_INFO="$(jq '.regions | .[] | select(.servers.wg[0].ip == "'"$SERVER_IP"'")' "$DATAFILE_NEW")"
|
||||
|
||||
if [ -z "$WG_INFO" ]
|
||||
then
|
||||
SERVER_IP_S="$(cut -d. -f1-3 <<< $SERVER_IP)"
|
||||
WG_INFO="$(jq '.regions | .[] | select(.servers.wg[0].ip | test("^'"$SERVER_IP_S"'"))' "$DATAFILE_NEW")"
|
||||
fi
|
||||
|
||||
if [ -z "$WG_INFO" ]
|
||||
then
|
||||
echo "Couldn't determine server information even with fuzzy search, is your $DATAFILE_NEW ok?" >/dev/stderr
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$(jq -r .port_forward <<< "$WG_INFO")" != true ]
|
||||
then
|
||||
@@ -84,12 +102,6 @@ WG_DNS="$(jq -r .dns <<< "$WG_INFO")"
|
||||
WG_HOST="$(jq -r '.servers.wg[0].ip' <<< "$WG_INFO")"
|
||||
WG_CN="$(jq -r '.servers.wg[0].cn' <<< "$WG_INFO")"
|
||||
|
||||
PEER_IP="$(jq -r .peer_ip "$REMOTEINFO")"
|
||||
SERVER_PUBLIC_KEY="$(jq -r .server_key "$REMOTEINFO")"
|
||||
SERVER_IP="$(jq -r .server_ip "$REMOTEINFO")"
|
||||
SERVER_PORT="$(jq -r .server_port "$REMOTEINFO")"
|
||||
SERVER_VIP="$(jq -r .server_vip "$REMOTEINFO")"
|
||||
|
||||
# sections of the below adapted from Threarah's work at
|
||||
# https://github.com/thrnz/docker-wireguard-pia/blob/003f79f3b6ba24387e10d7de63ec62e98e6518a5/run#L233-L270 with permission
|
||||
# Also see https://www.reddit.com/r/PrivateInternetAccess/comments/h9y4da/is_there_any_way_to_generate_wireguard_config/fxhkpjt/
|
||||
|
||||
Reference in New Issue
Block a user