From 0d5463997691ff50525d18940300c72ed88ffd40 Mon Sep 17 00:00:00 2001 From: Everyday Design Date: Mon, 20 Jul 2026 19:08:43 +0530 Subject: [PATCH] fix qvpn - qvpn marks QVPN_VERSION as readonly --- qvpn | 9 ++++++--- tests/run.sh | 28 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/qvpn b/qvpn index 8da14de..45a74d5 100755 --- a/qvpn +++ b/qvpn @@ -241,8 +241,12 @@ load_config() { load_meta() { if [[ -f "$QVPN_META" ]]; then - # shellcheck source=/dev/null - source "$QVPN_META" + # Older metadata files persisted QVPN_VERSION, which is readonly in + # the running script. Filter it out so existing installs keep working. + local meta_content + meta_content=$(sed '/^[[:space:]]*QVPN_VERSION[[:space:]]*=/d' "$QVPN_META") + # shellcheck source=/dev/stdin + source /dev/stdin <<< "$meta_content" debug "loaded state: $QVPN_META" fi } @@ -250,7 +254,6 @@ load_meta() { save_meta() { cat > "$QVPN_META" < "$QVPN_META" <<'EOF' +QVPN_VERSION="0.9.0" +SERVER_IP="203.0.113.10" +VPN_SUBNET="10.77.0.0/24" +SERVER_VPN_IP="10.77.0.1" +LISTEN_PORT="42820" +DNS_SERVERS="9.9.9.9" +NETWORK_INTERFACE="ens3" +EOF + + SERVER_IP=""; VPN_SUBNET=""; SERVER_VPN_IP="" + LISTEN_PORT=""; DNS_SERVERS=""; NETWORK_INTERFACE="" + + load_meta + + assert_eq "$QVPN_VERSION" "1.0.0" "runtime QVPN_VERSION should remain unchanged" + assert_eq "$SERVER_IP" "203.0.113.10" "SERVER_IP meta" + assert_eq "$VPN_SUBNET" "10.77.0.0/24" "VPN_SUBNET meta" + assert_eq "$SERVER_VPN_IP" "10.77.0.1" "SERVER_VPN_IP meta" + assert_eq "$LISTEN_PORT" "42820" "LISTEN_PORT meta" + assert_eq "$DNS_SERVERS" "9.9.9.9" "DNS_SERVERS meta" + assert_eq "$NETWORK_INTERFACE" "ens3" "NETWORK_INTERFACE meta" + rm -rf "$tmp" +} + # ============================================================================ # BLACK-BOX TESTS — invoke ./qvpn as a subprocess # ============================================================================