From f14bc8316c7a6affa7da78791b863c4563295d75 Mon Sep 17 00:00:00 2001 From: sudden6 Date: Tue, 19 Jan 2016 00:19:07 +0100 Subject: [PATCH] Add proxy support to toxme and autouptdate --- src/net/autoupdate.cpp | 3 +++ src/net/toxme.cpp | 3 +++ src/persistence/settings.cpp | 24 ++++++++++++++++++++++++ src/persistence/settings.h | 3 +++ 4 files changed, 33 insertions(+) diff --git a/src/net/autoupdate.cpp b/src/net/autoupdate.cpp index 0088b7b81..fe40ea143 100644 --- a/src/net/autoupdate.cpp +++ b/src/net/autoupdate.cpp @@ -108,6 +108,7 @@ AutoUpdater::VersionInfo AutoUpdater::getUpdateVersion() QNetworkAccessManager *manager = new QNetworkAccessManager; QNetworkReply* reply = manager->get(QNetworkRequest(QUrl(checkURI))); + manager->setProxy(Settings::getInstance().getProxy()); while (!reply->isFinished()) { if (abortFlag) @@ -222,6 +223,7 @@ QByteArray AutoUpdater::getUpdateFlist() QNetworkAccessManager *manager = new QNetworkAccessManager; QNetworkReply* reply = manager->get(QNetworkRequest(QUrl(flistURI))); + manager->setProxy(Settings::getInstance().getProxy()); while (!reply->isFinished()) { if (abortFlag) @@ -277,6 +279,7 @@ AutoUpdater::UpdateFile AutoUpdater::getUpdateFile(UpdateFileMeta fileMeta, file.metadata = fileMeta; QNetworkAccessManager *manager = new QNetworkAccessManager; + manager->setProxy(Settings::getInstance().getProxy()); QNetworkReply* reply = manager->get(QNetworkRequest(QUrl(filesURI+fileMeta.id))); QObject::connect(reply, &QNetworkReply::downloadProgress, progressCallback); while (!reply->isFinished()) diff --git a/src/net/toxme.cpp b/src/net/toxme.cpp index 8fdbe4fb3..2bd175061 100644 --- a/src/net/toxme.cpp +++ b/src/net/toxme.cpp @@ -19,6 +19,7 @@ #include "toxme.h" #include "src/core/core.h" +#include #include #include #include @@ -34,6 +35,7 @@ QByteArray Toxme::makeJsonRequest(QString url, QString json, QNetworkReply::Netw return QByteArray(); QNetworkAccessManager netman; + netman.setProxy(Settings::getInstance().getProxy()); QNetworkRequest request{url}; request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); QNetworkReply* reply = netman.post(request,json.toUtf8()); @@ -57,6 +59,7 @@ QByteArray Toxme::getServerPubkey(QString url, QNetworkReply::NetworkError &erro // Get key QNetworkAccessManager netman; + netman.setProxy(Settings::getInstance().getProxy()); QNetworkRequest request{url}; request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); QNetworkReply* reply = netman.get(request); diff --git a/src/persistence/settings.cpp b/src/persistence/settings.cpp index 5ea0716b2..8cc592513 100644 --- a/src/persistence/settings.cpp +++ b/src/persistence/settings.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #define SHOW_SYSTEM_TRAY_DEFAULT (bool) true @@ -770,6 +771,29 @@ void Settings::setForceTCP(bool newValue) forceTCP = newValue; } +QNetworkProxy Settings::getProxy() const +{ + QNetworkProxy proxy; + switch(Settings::getProxyType()) + { + case ProxyType::ptNone: + proxy.setType(QNetworkProxy::NoProxy); + break; + case ProxyType::ptSOCKS5: + proxy.setType(QNetworkProxy::Socks5Proxy); + break; + case ProxyType::ptHTTP: + proxy.setType(QNetworkProxy::HttpProxy); + break; + default: + proxy.setType(QNetworkProxy::NoProxy); + qWarning() << "Invalid Proxy type, setting to NoProxy"; + } + proxy.setHostName(Settings::getProxyAddr()); + proxy.setPort(Settings::getProxyPort()); + return proxy; +} + ProxyType Settings::getProxyType() const { QMutexLocker locker{&bigLock}; diff --git a/src/persistence/settings.h b/src/persistence/settings.h index 59b8cc87b..025aaf53b 100644 --- a/src/persistence/settings.h +++ b/src/persistence/settings.h @@ -26,6 +26,7 @@ #include #include #include +#include #include "src/core/corestructs.h" class ToxId; @@ -109,6 +110,8 @@ public: bool getForceTCP() const; void setForceTCP(bool newValue); + QNetworkProxy getProxy() const; + QString getProxyAddr() const; void setProxyAddr(const QString& newValue);