From 22308b720a2c03b69d07cf3133c34b40d04c5904 Mon Sep 17 00:00:00 2001 From: Saturneric Date: Tue, 4 Jan 2022 20:34:05 +0800 Subject: (core, ui): fixed known bugs for v2.0.4-beta.1 and add network settings. 1. proxy settings. 2. network capability. 3. fixed known bugs. 4. improve ui. --- src/ui/function/ProxyConnectionTestThread.cpp | 56 +++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/ui/function/ProxyConnectionTestThread.cpp (limited to 'src/ui/function/ProxyConnectionTestThread.cpp') diff --git a/src/ui/function/ProxyConnectionTestThread.cpp b/src/ui/function/ProxyConnectionTestThread.cpp new file mode 100644 index 00000000..f644406d --- /dev/null +++ b/src/ui/function/ProxyConnectionTestThread.cpp @@ -0,0 +1,56 @@ +/** + * 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 . + * + * 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 starting on May 12, 2021. + * + */ + +#include "ProxyConnectionTestThread.h" + +void GpgFrontend::UI::ProxyConnectionTestThread::run() { + QNetworkProxyQuery npq({QUrl(url_)}); + auto proxies_list = QNetworkProxyFactory::systemProxyForQuery(npq); + + if (proxies_list.isEmpty()) { + LOG(INFO) << "no proxy applied"; + } else { + LOG(INFO) << "proxies list hostname" + << proxies_list.front().hostName().toStdString(); + } + + LOG(INFO) << "proxies list size" << proxies_list.size(); + + auto manager = std::make_unique(nullptr); + QNetworkRequest url_request; + url_request.setUrl(QUrl(url_)); + auto _reply = manager->get(url_request); + + while (_reply->isRunning()) QApplication::processEvents(); + if (_reply->error() != QNetworkReply::NoError && + !_reply->readAll().isEmpty()) { + result_ = "Reachable"; + } else { + result_ = "Not Reachable"; + } + + _reply->deleteLater(); + + emit signalProxyConnectionTestResult(result_); +} -- cgit v1.2.3