From c1a5fff98cab4adf04210ba8120459b8e87a8fa3 Mon Sep 17 00:00:00 2001 From: saturneric Date: Sun, 15 Oct 2023 16:17:28 +0800 Subject: fix: solve some issues on linux .desktop file --- src/ui/thread/KeyServerImportTask.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/ui/thread/KeyServerImportTask.cpp') diff --git a/src/ui/thread/KeyServerImportTask.cpp b/src/ui/thread/KeyServerImportTask.cpp index fc6a868c..d188b49b 100644 --- a/src/ui/thread/KeyServerImportTask.cpp +++ b/src/ui/thread/KeyServerImportTask.cpp @@ -36,7 +36,7 @@ GpgFrontend::UI::KeyServerImportTask::KeyServerImportTask( manager_(new QNetworkAccessManager(this)) {} void GpgFrontend::UI::KeyServerImportTask::run() { - SetFinishAfterRun(false); + HoldOnLifeCycle(true); QUrl keyserver_url = QUrl(keyserver_url_.c_str()); for (const auto& key_id : keyids_) { -- cgit v1.2.3 From 95997d27106daf91336847f50efaaa32279b7fc7 Mon Sep 17 00:00:00 2001 From: saturneric Date: Mon, 16 Oct 2023 17:54:05 +0800 Subject: fix: check and update copyright at files --- src/ui/thread/KeyServerImportTask.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/ui/thread/KeyServerImportTask.cpp') diff --git a/src/ui/thread/KeyServerImportTask.cpp b/src/ui/thread/KeyServerImportTask.cpp index d188b49b..7b8c8984 100644 --- a/src/ui/thread/KeyServerImportTask.cpp +++ b/src/ui/thread/KeyServerImportTask.cpp @@ -1,5 +1,5 @@ /** - * Copyright (C) 2021 Saturneric + * Copyright (C) 2021 Saturneric * * This file is part of GpgFrontend. * @@ -19,8 +19,10 @@ * The initial version of the source code is inherited from * the gpg4usb project, which is under GPL-3.0-or-later. * - * The source code version of this software was modified and released - * by Saturneric starting on May 12, 2021. + * All the source code of GpgFrontend was modified and released by + * Saturneric starting on May 12, 2021. + * + * SPDX-License-Identifier: GPL-3.0-or-later * */ -- cgit v1.2.3 From 70196cf01757824a578e4d9c49a210bf136de266 Mon Sep 17 00:00:00 2001 From: saturneric Date: Wed, 18 Oct 2023 22:45:33 +0800 Subject: feat: using pool for concurrent executions, not stable yet --- src/ui/thread/KeyServerImportTask.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/ui/thread/KeyServerImportTask.cpp') diff --git a/src/ui/thread/KeyServerImportTask.cpp b/src/ui/thread/KeyServerImportTask.cpp index 7b8c8984..99e662af 100644 --- a/src/ui/thread/KeyServerImportTask.cpp +++ b/src/ui/thread/KeyServerImportTask.cpp @@ -35,11 +35,11 @@ GpgFrontend::UI::KeyServerImportTask::KeyServerImportTask( : Task("key_server_import_task"), keyserver_url_(std::move(keyserver_url)), keyids_(std::move(keyids)), - manager_(new QNetworkAccessManager(this)) {} - -void GpgFrontend::UI::KeyServerImportTask::run() { + manager_(new QNetworkAccessManager(this)) { HoldOnLifeCycle(true); +} +void GpgFrontend::UI::KeyServerImportTask::run() { QUrl keyserver_url = QUrl(keyserver_url_.c_str()); for (const auto& key_id : keyids_) { QUrl req_url(keyserver_url.scheme() + "://" + keyserver_url.host() + @@ -62,6 +62,6 @@ void GpgFrontend::UI::KeyServerImportTask::dealing_reply_from_server() { emit SignalKeyServerImportResult(network_reply, buffer); if (result_count_++ == keyids_.size() - 1) { - emit SignalTaskRunnableEnd(0); + emit SignalTaskShouldEnd(0); } } \ No newline at end of file -- cgit v1.2.3 From 124929609eabff19359caad276a10f1026793c0f Mon Sep 17 00:00:00 2001 From: saturneric Date: Wed, 25 Oct 2023 18:26:26 +0800 Subject: fix: solve some code tidy issues --- src/ui/thread/KeyServerImportTask.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/ui/thread/KeyServerImportTask.cpp') diff --git a/src/ui/thread/KeyServerImportTask.cpp b/src/ui/thread/KeyServerImportTask.cpp index 99e662af..1f9b1b92 100644 --- a/src/ui/thread/KeyServerImportTask.cpp +++ b/src/ui/thread/KeyServerImportTask.cpp @@ -61,7 +61,7 @@ void GpgFrontend::UI::KeyServerImportTask::dealing_reply_from_server() { } emit SignalKeyServerImportResult(network_reply, buffer); - if (result_count_++ == keyids_.size() - 1) { + if (static_cast(result_count_++) == keyids_.size() - 1) { emit SignalTaskShouldEnd(0); } } \ No newline at end of file -- cgit v1.2.3 From 0266ff1bbce2feccec34ab789f9e378948d1b24d Mon Sep 17 00:00:00 2001 From: saturneric Date: Thu, 11 Jan 2024 11:05:45 +0800 Subject: feat: improve api and ui of keys import and export --- src/ui/thread/KeyServerImportTask.cpp | 70 +++++++++++++++++++++++++++++------ 1 file changed, 58 insertions(+), 12 deletions(-) (limited to 'src/ui/thread/KeyServerImportTask.cpp') diff --git a/src/ui/thread/KeyServerImportTask.cpp b/src/ui/thread/KeyServerImportTask.cpp index 1f9b1b92..e07473a8 100644 --- a/src/ui/thread/KeyServerImportTask.cpp +++ b/src/ui/thread/KeyServerImportTask.cpp @@ -28,7 +28,8 @@ #include "ui/thread/KeyServerImportTask.h" -#include +#include "core/function/gpg/GpgKeyImportExporter.h" +#include "ui/struct/SettingsObject.h" GpgFrontend::UI::KeyServerImportTask::KeyServerImportTask( std::string keyserver_url, std::vector keyids) @@ -37,29 +38,74 @@ GpgFrontend::UI::KeyServerImportTask::KeyServerImportTask( keyids_(std::move(keyids)), manager_(new QNetworkAccessManager(this)) { HoldOnLifeCycle(true); + + if (keyserver_url_.empty()) { + try { + SettingsObject key_server_json("key_server"); + const auto key_server_list = + key_server_json.Check("server_list", nlohmann::json::array()); + + size_t const default_key_server_index = + key_server_json.Check("default_server", 0); + if (default_key_server_index >= key_server_list.size()) { + throw std::runtime_error("default_server index out of range"); + } + auto default_key_server = + key_server_list[default_key_server_index].get(); + + keyserver_url_ = default_key_server; + } catch (...) { + GF_UI_LOG_ERROR("setting operation error", "server_list", + "default_server"); + keyserver_url_ = "https://keys.openpgp.org"; + return; + } + + GF_UI_LOG_DEBUG("key server import task sets key server url: {}", + keyserver_url_); + } } -void GpgFrontend::UI::KeyServerImportTask::run() { - QUrl keyserver_url = QUrl(keyserver_url_.c_str()); +void GpgFrontend::UI::KeyServerImportTask::Run() { + QUrl const keyserver_url = QUrl(keyserver_url_.c_str()); for (const auto& key_id : keyids_) { - QUrl req_url(keyserver_url.scheme() + "://" + keyserver_url.host() + - "/pks/lookup?op=get&search=0x" + key_id.c_str() + - "&options=mr"); + QUrl const req_url(keyserver_url.scheme() + "://" + keyserver_url.host() + + "/pks/lookup?op=get&search=0x" + key_id.c_str() + + "&options=mr"); reply_ = manager_->get(QNetworkRequest(req_url)); - connect(reply_, &QNetworkReply::finished, this, &KeyServerImportTask::dealing_reply_from_server); } } void GpgFrontend::UI::KeyServerImportTask::dealing_reply_from_server() { - QByteArray buffer; - QNetworkReply::NetworkError network_reply = reply_->error(); - if (network_reply == QNetworkReply::NoError) { - buffer = reply_->readAll(); + auto const network_reply = reply_->error(); + auto buffer = reply_->readAll(); + + if (network_reply != QNetworkReply::NoError) { + GF_UI_LOG_ERROR("key import error, message from key server reply: ", + buffer); + QString err_msg; + switch (network_reply) { + case QNetworkReply::ContentNotFoundError: + err_msg = QString(_("Key not found in the Keyserver.")); + break; + case QNetworkReply::TimeoutError: + err_msg = QString(_("Network connection timeout.")); + break; + case QNetworkReply::HostNotFoundError: + err_msg = + QString(_("Cannot resolve the address of target key server.")); + break; + default: + err_msg = QString(_("General connection error occurred.")); + } + emit SignalKeyServerImportResult(false, err_msg, buffer, nullptr); } - emit SignalKeyServerImportResult(network_reply, buffer); + + auto info = GpgKeyImportExporter::GetInstance().ImportKey(GFBuffer(buffer)); + emit SignalKeyServerImportResult(true, _("Success"), buffer, info); if (static_cast(result_count_++) == keyids_.size() - 1) { emit SignalTaskShouldEnd(0); -- cgit v1.2.3 From bf538056b24a68b8fd235b1c50991ee8eb46a776 Mon Sep 17 00:00:00 2001 From: saturneric Date: Fri, 12 Jan 2024 14:02:37 +0800 Subject: refactor: use QString instead of std::string and improve threading system --- src/ui/thread/KeyServerImportTask.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'src/ui/thread/KeyServerImportTask.cpp') diff --git a/src/ui/thread/KeyServerImportTask.cpp b/src/ui/thread/KeyServerImportTask.cpp index e07473a8..4e8a41db 100644 --- a/src/ui/thread/KeyServerImportTask.cpp +++ b/src/ui/thread/KeyServerImportTask.cpp @@ -32,14 +32,14 @@ #include "ui/struct/SettingsObject.h" GpgFrontend::UI::KeyServerImportTask::KeyServerImportTask( - std::string keyserver_url, std::vector keyids) + QString keyserver_url, std::vector keyids) : Task("key_server_import_task"), keyserver_url_(std::move(keyserver_url)), keyids_(std::move(keyids)), manager_(new QNetworkAccessManager(this)) { HoldOnLifeCycle(true); - if (keyserver_url_.empty()) { + if (keyserver_url_.isEmpty()) { try { SettingsObject key_server_json("key_server"); const auto key_server_list = @@ -53,7 +53,7 @@ GpgFrontend::UI::KeyServerImportTask::KeyServerImportTask( auto default_key_server = key_server_list[default_key_server_index].get(); - keyserver_url_ = default_key_server; + keyserver_url_ = QString::fromStdString(default_key_server); } catch (...) { GF_UI_LOG_ERROR("setting operation error", "server_list", "default_server"); @@ -67,11 +67,10 @@ GpgFrontend::UI::KeyServerImportTask::KeyServerImportTask( } void GpgFrontend::UI::KeyServerImportTask::Run() { - QUrl const keyserver_url = QUrl(keyserver_url_.c_str()); + QUrl const keyserver_url = QUrl(keyserver_url_); for (const auto& key_id : keyids_) { QUrl const req_url(keyserver_url.scheme() + "://" + keyserver_url.host() + - "/pks/lookup?op=get&search=0x" + key_id.c_str() + - "&options=mr"); + "/pks/lookup?op=get&search=0x" + key_id + "&options=mr"); reply_ = manager_->get(QNetworkRequest(req_url)); connect(reply_, &QNetworkReply::finished, this, -- cgit v1.2.3 From 6c632d70b391f8b317c68f7db8cfd217f9370995 Mon Sep 17 00:00:00 2001 From: saturneric Date: Mon, 15 Jan 2024 17:22:32 +0800 Subject: feat: use qt json support components in data object and infos gathering module --- src/ui/thread/KeyServerImportTask.cpp | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) (limited to 'src/ui/thread/KeyServerImportTask.cpp') diff --git a/src/ui/thread/KeyServerImportTask.cpp b/src/ui/thread/KeyServerImportTask.cpp index 4e8a41db..cf5c6263 100644 --- a/src/ui/thread/KeyServerImportTask.cpp +++ b/src/ui/thread/KeyServerImportTask.cpp @@ -30,6 +30,7 @@ #include "core/function/gpg/GpgKeyImportExporter.h" #include "ui/struct/SettingsObject.h" +#include "ui/struct/settings/KeyServerSO.h" GpgFrontend::UI::KeyServerImportTask::KeyServerImportTask( QString keyserver_url, std::vector keyids) @@ -40,27 +41,8 @@ GpgFrontend::UI::KeyServerImportTask::KeyServerImportTask( HoldOnLifeCycle(true); if (keyserver_url_.isEmpty()) { - try { - SettingsObject key_server_json("key_server"); - const auto key_server_list = - key_server_json.Check("server_list", nlohmann::json::array()); - - size_t const default_key_server_index = - key_server_json.Check("default_server", 0); - if (default_key_server_index >= key_server_list.size()) { - throw std::runtime_error("default_server index out of range"); - } - auto default_key_server = - key_server_list[default_key_server_index].get(); - - keyserver_url_ = QString::fromStdString(default_key_server); - } catch (...) { - GF_UI_LOG_ERROR("setting operation error", "server_list", - "default_server"); - keyserver_url_ = "https://keys.openpgp.org"; - return; - } - + KeyServerSO key_server(SettingsObject("general_settings_state")); + keyserver_url_ = key_server.GetTargetServer(); GF_UI_LOG_DEBUG("key server import task sets key server url: {}", keyserver_url_); } -- cgit v1.2.3 From 4994f4eaa1211d402b791660ad6221154a4c2405 Mon Sep 17 00:00:00 2001 From: saturneric Date: Tue, 16 Jan 2024 11:49:50 +0800 Subject: fix: make task and threading system safer --- src/ui/thread/KeyServerImportTask.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/ui/thread/KeyServerImportTask.cpp') diff --git a/src/ui/thread/KeyServerImportTask.cpp b/src/ui/thread/KeyServerImportTask.cpp index cf5c6263..89f0f45a 100644 --- a/src/ui/thread/KeyServerImportTask.cpp +++ b/src/ui/thread/KeyServerImportTask.cpp @@ -48,7 +48,7 @@ GpgFrontend::UI::KeyServerImportTask::KeyServerImportTask( } } -void GpgFrontend::UI::KeyServerImportTask::Run() { +auto GpgFrontend::UI::KeyServerImportTask::Run() -> int { QUrl const keyserver_url = QUrl(keyserver_url_); for (const auto& key_id : keyids_) { QUrl const req_url(keyserver_url.scheme() + "://" + keyserver_url.host() + @@ -58,6 +58,7 @@ void GpgFrontend::UI::KeyServerImportTask::Run() { connect(reply_, &QNetworkReply::finished, this, &KeyServerImportTask::dealing_reply_from_server); } + return 0; } void GpgFrontend::UI::KeyServerImportTask::dealing_reply_from_server() { -- cgit v1.2.3 From 620ae9e7c1a8b2db2515c080416cb592066e5fec Mon Sep 17 00:00:00 2001 From: saturneric Date: Tue, 16 Jan 2024 21:35:59 +0800 Subject: refactor: remove libgettext from project --- src/ui/thread/KeyServerImportTask.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'src/ui/thread/KeyServerImportTask.cpp') diff --git a/src/ui/thread/KeyServerImportTask.cpp b/src/ui/thread/KeyServerImportTask.cpp index 89f0f45a..63cabbcd 100644 --- a/src/ui/thread/KeyServerImportTask.cpp +++ b/src/ui/thread/KeyServerImportTask.cpp @@ -71,23 +71,22 @@ void GpgFrontend::UI::KeyServerImportTask::dealing_reply_from_server() { QString err_msg; switch (network_reply) { case QNetworkReply::ContentNotFoundError: - err_msg = QString(_("Key not found in the Keyserver.")); + err_msg = tr("Key not found in the Keyserver."); break; case QNetworkReply::TimeoutError: - err_msg = QString(_("Network connection timeout.")); + err_msg = tr("Network connection timeout."); break; case QNetworkReply::HostNotFoundError: - err_msg = - QString(_("Cannot resolve the address of target key server.")); + err_msg = tr("Cannot resolve the address of target key server."); break; default: - err_msg = QString(_("General connection error occurred.")); + err_msg = tr("General connection error occurred."); } emit SignalKeyServerImportResult(false, err_msg, buffer, nullptr); } auto info = GpgKeyImportExporter::GetInstance().ImportKey(GFBuffer(buffer)); - emit SignalKeyServerImportResult(true, _("Success"), buffer, info); + emit SignalKeyServerImportResult(true, tr("Success"), buffer, info); if (static_cast(result_count_++) == keyids_.size() - 1) { emit SignalTaskShouldEnd(0); -- cgit v1.2.3