From d50e7dd3f4221ebe9324307740e4c3b4f7e57bd1 Mon Sep 17 00:00:00 2001 From: Nethius Date: Thu, 18 Apr 2024 20:02:34 +0700 Subject: [PATCH] added installation_uuid to apiPayload (#747) Added installation_uuid to apiPayload --- client/amnezia_application.cpp | 1 - client/amnezia_application.h | 3 --- client/core/controllers/apiController.cpp | 11 +++++++---- client/core/controllers/apiController.h | 2 +- client/secure_qsettings.cpp | 8 ++++++++ client/settings.cpp | 17 +++++++++++++++++ client/settings.h | 4 ++++ client/ui/controllers/connectionController.cpp | 2 +- 8 files changed, 38 insertions(+), 10 deletions(-) diff --git a/client/amnezia_application.cpp b/client/amnezia_application.cpp index 12be2dfe..9653c595 100644 --- a/client/amnezia_application.cpp +++ b/client/amnezia_application.cpp @@ -9,7 +9,6 @@ #include #include #include - #include #include "logger.h" diff --git a/client/amnezia_application.h b/client/amnezia_application.h index aadc6a0c..aa14701b 100644 --- a/client/amnezia_application.h +++ b/client/amnezia_application.h @@ -14,8 +14,6 @@ #include "settings.h" #include "vpnconnection.h" -#include "core/controllers/apiController.h" - #include "ui/controllers/connectionController.h" #include "ui/controllers/exportController.h" #include "ui/controllers/importController.h" @@ -125,7 +123,6 @@ private: QScopedPointer m_settingsController; QScopedPointer m_sitesController; QScopedPointer m_systemController; - QScopedPointer m_apiController; QScopedPointer m_appSplitTunnelingController; }; diff --git a/client/core/controllers/apiController.cpp b/client/core/controllers/apiController.cpp index 4114c468..9e1cfa2f 100644 --- a/client/core/controllers/apiController.cpp +++ b/client/core/controllers/apiController.cpp @@ -5,7 +5,6 @@ #include #include -#include "core/errorstrings.h" #include "configurators/wireguard_configurator.h" namespace @@ -20,6 +19,7 @@ namespace constexpr char certificate[] = "certificate"; constexpr char publicKey[] = "public_key"; constexpr char protocol[] = "protocol"; + constexpr char uuid[] = "installation_uuid"; } } @@ -64,11 +64,11 @@ QJsonObject ApiController::fillApiPayload(const QString &protocol, const ApiCont return obj; } -ErrorCode ApiController::updateServerConfigFromApi(QJsonObject &serverConfig) +ErrorCode ApiController::updateServerConfigFromApi(const QString &installationUuid, QJsonObject &serverConfig) { QFutureWatcher watcher; - QFuture future = QtConcurrent::run([this, &serverConfig]() { + QFuture future = QtConcurrent::run([this, &serverConfig, &installationUuid]() { auto containerConfig = serverConfig.value(config_key::containers).toArray(); if (serverConfig.value(config_key::configVersion).toInt()) { @@ -86,7 +86,10 @@ ErrorCode ApiController::updateServerConfigFromApi(QJsonObject &serverConfig) auto apiPayloadData = generateApiPayloadData(protocol); - QByteArray requestBody = QJsonDocument(fillApiPayload(protocol, apiPayloadData)).toJson(); + auto apiPayload = fillApiPayload(protocol, apiPayloadData); + apiPayload[configKey::uuid] = installationUuid; + + QByteArray requestBody = QJsonDocument(apiPayload).toJson(); QScopedPointer reply; reply.reset(manager.post(request, requestBody)); diff --git a/client/core/controllers/apiController.h b/client/core/controllers/apiController.h index 430572c5..554e8849 100644 --- a/client/core/controllers/apiController.h +++ b/client/core/controllers/apiController.h @@ -13,7 +13,7 @@ public: explicit ApiController(QObject *parent = nullptr); public slots: - ErrorCode updateServerConfigFromApi(QJsonObject &serverConfig); + ErrorCode updateServerConfigFromApi(const QString &installationUuid, QJsonObject &serverConfig); private: struct ApiPayloadData { diff --git a/client/secure_qsettings.cpp b/client/secure_qsettings.cpp index 1df10168..b478b38d 100644 --- a/client/secure_qsettings.cpp +++ b/client/secure_qsettings.cpp @@ -125,6 +125,10 @@ QByteArray SecureQSettings::backupAppConfig() const QJsonObject cfg; for (const QString &key : m_settings.allKeys()) { + if (key == "Conf/installationUuid") { + continue; + } + cfg.insert(key, QJsonValue::fromVariant(value(key))); } @@ -138,6 +142,10 @@ bool SecureQSettings::restoreAppConfig(const QByteArray &json) return false; for (const QString &key : cfg.keys()) { + if (key == "Conf/installationUuid") { + continue; + } + setValue(key, cfg.value(key).toVariant()); } diff --git a/client/settings.cpp b/client/settings.cpp index 2a083b32..c9aef207 100644 --- a/client/settings.cpp +++ b/client/settings.cpp @@ -361,7 +361,9 @@ QString Settings::secondaryDns() const void Settings::clearSettings() { + auto uuid = getInstallationUuid(false); m_settings.clearSettings(); + setInstallationUuid(uuid); emit settingsCleared(); } @@ -423,6 +425,21 @@ void Settings::setAppsSplitTunnelingEnabled(bool enabled) setValue("Conf/appsSplitTunnelingEnabled", enabled); } +QString Settings::getInstallationUuid(const bool needCreate) +{ + auto uuid = value("Conf/installationUuid", "").toString(); + if (needCreate && uuid.isEmpty()) { + uuid = QUuid::createUuid().toString(); + setInstallationUuid(uuid); + } + return uuid; +} + +void Settings::setInstallationUuid(const QString &uuid) +{ + setValue("Conf/installationUuid", uuid); +} + ServerCredentials Settings::defaultServerCredentials() const { return serverCredentials(defaultServerIndex()); diff --git a/client/settings.h b/client/settings.h index 7eb650db..c1fd594f 100644 --- a/client/settings.h +++ b/client/settings.h @@ -214,6 +214,8 @@ public: bool getAppsSplitTunnelingEnabled() const; void setAppsSplitTunnelingEnabled(bool enabled); + QString getInstallationUuid(const bool needCreate); + signals: void saveLogsChanged(bool enabled); void screenshotsEnabledChanged(bool enabled); @@ -224,6 +226,8 @@ private: QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const; void setValue(const QString &key, const QVariant &value); + void setInstallationUuid(const QString &uuid); + mutable SecureQSettings m_settings; }; diff --git a/client/ui/controllers/connectionController.cpp b/client/ui/controllers/connectionController.cpp index a603a034..97c4aa62 100644 --- a/client/ui/controllers/connectionController.cpp +++ b/client/ui/controllers/connectionController.cpp @@ -42,7 +42,7 @@ void ConnectionController::openConnection() if (serverConfig.value(config_key::configVersion).toInt() && !m_serversModel->data(serverIndex, ServersModel::Roles::HasInstalledContainers).toBool()) { ApiController apiController; - errorCode = apiController.updateServerConfigFromApi(serverConfig); + errorCode = apiController.updateServerConfigFromApi(m_settings->getInstallationUuid(true), serverConfig); if (errorCode != ErrorCode::NoError) { emit connectionErrorOccurred(errorString(errorCode)); return;