aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/function
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/function')
-rw-r--r--src/ui/function/TestListedKeyServerThread.cpp47
-rw-r--r--src/ui/function/TestListedKeyServerThread.h55
-rw-r--r--src/ui/function/VersionCheckThread.cpp13
3 files changed, 107 insertions, 8 deletions
diff --git a/src/ui/function/TestListedKeyServerThread.cpp b/src/ui/function/TestListedKeyServerThread.cpp
new file mode 100644
index 00000000..4f816860
--- /dev/null
+++ b/src/ui/function/TestListedKeyServerThread.cpp
@@ -0,0 +1,47 @@
+/**
+ * This file is part of GpgFrontend.
+ *
+ * GpgFrontend is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Foobar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Foobar. If not, see <https://www.gnu.org/licenses/>.
+ *
+ * The initial version of the source code is inherited from gpg4usb-team.
+ * Their source code version also complies with GNU General Public License.
+ *
+ * The source code version of this software was modified and released
+ * by Saturneric<[email protected]><[email protected]> starting on May 12, 2021.
+ *
+ */
+
+#include "TestListedKeyServerThread.h"
+
+void GpgFrontend::UI::TestListedKeyServerThread::run() {
+ for (const auto& url : urls_) {
+ const auto keyserver_url = url;
+
+ auto key_url = QUrl{keyserver_url};
+
+ LOG(INFO) << "key server domain" << key_url.host().toStdString();
+
+ QTcpSocket socket(nullptr);
+ socket.abort();
+ socket.connectToHost(key_url.host(), 80);
+ if (socket.waitForConnected(timeout_)) {
+ result_.push_back("Reachable");
+ } else {
+ result_.push_back("Not Reachable");
+ }
+ socket.close();
+ }
+
+ emit signalKeyServerListTestResult(result_);
+}
diff --git a/src/ui/function/TestListedKeyServerThread.h b/src/ui/function/TestListedKeyServerThread.h
new file mode 100644
index 00000000..99fd6c6d
--- /dev/null
+++ b/src/ui/function/TestListedKeyServerThread.h
@@ -0,0 +1,55 @@
+/**
+ * This file is part of GpgFrontend.
+ *
+ * GpgFrontend is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Foobar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Foobar. If not, see <https://www.gnu.org/licenses/>.
+ *
+ * The initial version of the source code is inherited from gpg4usb-team.
+ * Their source code version also complies with GNU General Public License.
+ *
+ * The source code version of this software was modified and released
+ * by Saturneric<[email protected]><[email protected]> starting on May 12, 2021.
+ *
+ */
+
+#ifndef GPGFRONTEND_TESTLISTEDKEYSERVERTHREAD_H
+#define GPGFRONTEND_TESTLISTEDKEYSERVERTHREAD_H
+
+#include "GpgFrontendUI.h"
+
+namespace GpgFrontend::UI {
+
+class TestListedKeyServerThread : public QThread {
+ Q_OBJECT
+ public:
+ explicit TestListedKeyServerThread(const QStringList& urls, int timeout,
+ QWidget* parent = nullptr)
+ : QThread(parent), urls_(urls), timeout_(timeout) {}
+
+ signals:
+ void signalKeyServerListTestResult(const QStringList& result);
+
+ protected:
+ void run() override;
+
+ private:
+ QStringList urls_;
+ QStringList result_;
+ int timeout_ = 500;
+};
+
+} // namespace GpgFrontend::UI
+
+class TestListedKeyServerThread {};
+
+#endif // GPGFRONTEND_TESTLISTEDKEYSERVERTHREAD_H
diff --git a/src/ui/function/VersionCheckThread.cpp b/src/ui/function/VersionCheckThread.cpp
index 52d1b22a..bfd6ea46 100644
--- a/src/ui/function/VersionCheckThread.cpp
+++ b/src/ui/function/VersionCheckThread.cpp
@@ -39,16 +39,14 @@ void VersionCheckThread::run() {
SoftwareVersion version;
version.current_version = current_version;
- auto manager = new QNetworkAccessManager(nullptr);
+ auto manager = std::make_unique<QNetworkAccessManager>(nullptr);
try {
using namespace nlohmann;
-
LOG(INFO) << "current version" << current_version;
std::string latest_version_url =
"https://api.github.com/repos/saturneric/gpgfrontend/releases/latest";
-
std::string current_version_url =
"https://api.github.com/repos/saturneric/gpgfrontend/releases/tags/" +
current_version;
@@ -59,7 +57,7 @@ void VersionCheckThread::run() {
auto _reply = manager->get(latest_request);
while (_reply->isRunning()) QApplication::processEvents();
if (_reply->error() != QNetworkReply::NoError) {
- LOG(ERROR) << "network error";
+ LOG(ERROR) << "current version request error";
version.latest_version = current_version;
} else {
latest_reply_bytes_ = _reply->readAll();
@@ -95,10 +93,10 @@ void VersionCheckThread::run() {
while (_reply->isRunning()) QApplication::processEvents();
current_reply_bytes_ = _reply->readAll();
if (_reply->error() != QNetworkReply::NoError) {
- LOG(ERROR) << "network error";
- manager->deleteLater();
- return;
+ LOG(ERROR) << "current version request network error";
+ version.current_version_found = false;
} else {
+ version.current_version_found = true;
auto current_reply_json =
nlohmann::json::parse(current_reply_bytes_.toStdString());
bool current_prerelease = current_reply_json["prerelease"],
@@ -114,7 +112,6 @@ void VersionCheckThread::run() {
LOG(INFO) << "error occurred";
version.load_info_done = false;
}
- manager->deleteLater();
emit upgradeVersion(version);
}