From 898489f3c9ea6156e2e3a91360cf772dae1a08d4 Mon Sep 17 00:00:00 2001 From: Stanislas Date: Mon, 15 Dec 2025 09:57:52 +0100 Subject: [PATCH] fix: exit non-zero when client name exists (#1407) Fixes https://github.com/angristan/openvpn-install/issues/1194 --- openvpn-install.sh | 2 +- test/server-entrypoint.sh | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/openvpn-install.sh b/openvpn-install.sh index 587d4de..5783bf8 100755 --- a/openvpn-install.sh +++ b/openvpn-install.sh @@ -3142,7 +3142,7 @@ function newClient() { CLIENTEXISTS=$(tail -n +2 /etc/openvpn/server/easy-rsa/pki/index.txt | grep -E "^V" | grep -c -E "/CN=$CLIENT\$") if [[ $CLIENTEXISTS != '0' ]]; then log_error "The specified client CN was already found in easy-rsa, please choose another name." - exit + exit 1 else cd /etc/openvpn/server/easy-rsa/ || return log_info "Generating client certificate..." diff --git a/test/server-entrypoint.sh b/test/server-entrypoint.sh index 5f39f48..7159518 100755 --- a/test/server-entrypoint.sh +++ b/test/server-entrypoint.sh @@ -99,6 +99,29 @@ fi echo "All required files present" +# ===================================================== +# Test duplicate client name handling +# ===================================================== +echo "" +echo "=== Testing Duplicate Client Name Handling ===" +DUPLICATE_CLIENT="testclient" +DUPLICATE_OUTPUT="/tmp/duplicate-client-output.log" +(bash /opt/openvpn-install.sh client add "$DUPLICATE_CLIENT" --cert-days 3650) 2>&1 | tee "$DUPLICATE_OUTPUT" || true +DUPLICATE_EXIT_CODE=${PIPESTATUS[0]} + +if [ "$DUPLICATE_EXIT_CODE" -ne 1 ]; then + echo "FAIL: Expected exit code 1 for duplicate client name, got $DUPLICATE_EXIT_CODE" + cat "$DUPLICATE_OUTPUT" + exit 1 +fi +if grep -q "The specified client CN was already found in easy-rsa" "$DUPLICATE_OUTPUT"; then + echo "PASS: Duplicate client name correctly rejected with exit code 1" +else + echo "FAIL: Expected error message for duplicate client name not found" + cat "$DUPLICATE_OUTPUT" + exit 1 +fi + # Copy client config to shared volume for the client container cp /root/testclient.ovpn /shared/client.ovpn sed -i 's/^remote .*/remote openvpn-server 1194/' /shared/client.ovpn