From 5beae954c77eb3786bcfa6b88d3d87679059476e Mon Sep 17 00:00:00 2001 From: dranik Date: Thu, 7 May 2026 20:44:35 +0300 Subject: [PATCH] add test macros AMNEZIA_QR_PAIRING_ALLOW_DUPLICATE_VPN_KEY & disable ApiConfigAlreadyAdded --- client/CMakeLists.txt | 4 ++++ .../api/subscriptionController.cpp | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index d778062b9..c84390be8 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -208,6 +208,10 @@ if(AMNEZIA_LOCAL_GATEWAY) target_compile_definitions(${PROJECT} PRIVATE AMNEZIA_LOCAL_GATEWAY) endif() +if(AMNEZIA_QR_PAIRING_ALLOW_DUPLICATE_VPN_KEY) + target_compile_definitions(${PROJECT} PRIVATE AMNEZIA_QR_PAIRING_ALLOW_DUPLICATE_VPN_KEY) +endif() + target_sources(${PROJECT} PRIVATE ${SOURCES} ${HEADERS} ${RESOURCES} ${QRC} ${I18NQRC}) # Finalize the executable so Qt can gather/deploy QML modules and plugins correctly (Android needs this). diff --git a/client/core/controllers/api/subscriptionController.cpp b/client/core/controllers/api/subscriptionController.cpp index ac89113a0..677fde356 100644 --- a/client/core/controllers/api/subscriptionController.cpp +++ b/client/core/controllers/api/subscriptionController.cpp @@ -1,5 +1,6 @@ #include "subscriptionController.h" +#include #include #include #include @@ -338,7 +339,9 @@ ErrorCode SubscriptionController::importServerFromQrPairingResponse(const QStrin if (duplicateServerIndex) { *duplicateServerIndex = i; } +#ifndef AMNEZIA_QR_PAIRING_ALLOW_DUPLICATE_VPN_KEY return ErrorCode::ApiConfigAlreadyAdded; +#endif } } @@ -384,6 +387,24 @@ ErrorCode SubscriptionController::importServerFromQrPairingResponse(const QStrin apiV2->apiConfig.vpnKey = fullKey; } +#ifdef AMNEZIA_QR_PAIRING_ALLOW_DUPLICATE_VPN_KEY + static int existingSameKeyCount = 0; + if (apiV2) { + ++existingSameKeyCount; + const QString suffix = QCoreApplication::translate("SubscriptionController", " (paired copy %1)") + .arg(existingSameKeyCount); + + if (!apiV2->name.isEmpty()) { + apiV2->name += suffix; + } else if (!apiV2->description.isEmpty()) { + apiV2->description += suffix; + } else { + apiV2->name = QCoreApplication::translate("SubscriptionController", "Paired subscription %1") + .arg(existingSameKeyCount); + } + } +#endif + m_serversRepository->addServer(serverConfigModel); serverConfig = serverConfigModel; return ErrorCode::NoError;