From f14bc8316c7a6affa7da78791b863c4563295d75 Mon Sep 17 00:00:00 2001 From: sudden6 Date: Tue, 19 Jan 2016 00:19:07 +0100 Subject: [PATCH 1/3] 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); From 53330daab739d5fec01e89639c1264354fbaccb9 Mon Sep 17 00:00:00 2001 From: sudden6 Date: Fri, 29 Jan 2016 23:30:07 +0100 Subject: [PATCH 2/3] toxme now supports proxies --- src/widget/form/addfriendform.cpp | 40 ++++++++++++++----------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/src/widget/form/addfriendform.cpp b/src/widget/form/addfriendform.cpp index 03d30c2bd..e5de57e48 100644 --- a/src/widget/form/addfriendform.cpp +++ b/src/widget/form/addfriendform.cpp @@ -109,29 +109,19 @@ void AddFriendForm::onSendTriggered() { QString id = toxId.text().trimmed(); - if (ToxId::isToxId(id)) + if (!ToxId::isToxId(id)) { - if (id.toUpper() == Core::getInstance()->getSelfId().toString().toUpper()) - GUI::showWarning(tr("Couldn't add friend"), tr("You can't add yourself as a friend!","When trying to add your own Tox ID as friend")); - else - emit friendRequested(id, getMessage()); - - this->toxId.clear(); - this->message.clear(); - } - else - { - if (Settings::getInstance().getProxyType() != ProxyType::ptNone) - { - QMessageBox::StandardButton btn = QMessageBox::warning(main, "qTox", tr("qTox needs to use the Tox DNS, but can't do it through a proxy.\n\ -Ignore the proxy and connect to the Internet directly?"), QMessageBox::Yes|QMessageBox::No, QMessageBox::No); - if (btn != QMessageBox::Yes) - return; - } - ToxId toxId = Toxme::lookup(id); // Try Toxme if (toxId.toString().isEmpty()) // If it isn't supported { + qDebug() << "Toxme didn't return a ToxID, trying ToxDNS"; + if (Settings::getInstance().getProxyType() != ProxyType::ptNone) + { + QMessageBox::StandardButton btn = QMessageBox::warning(main, "qTox", tr("qTox needs to use the Tox DNS, but can't do it through a proxy.\n\ + Ignore the proxy and connect to the Internet directly?"), QMessageBox::Yes|QMessageBox::No, QMessageBox::No); + if (btn != QMessageBox::Yes) + return; + } toxId = ToxDNS::resolveToxAddress(id, true); // Use ToxDNS if (toxId.toString().isEmpty()) { @@ -139,10 +129,16 @@ Ignore the proxy and connect to the Internet directly?"), QMessageBox::Yes|QMess return; } } - emit friendRequested(toxId.toString(), getMessage()); - this->toxId.clear(); - this->message.clear(); + id = toxId.toString(); } + + if (id.toUpper() == Core::getInstance()->getSelfId().toString().toUpper()) + GUI::showWarning(tr("Couldn't add friend"), tr("You can't add yourself as a friend!","When trying to add your own Tox ID as friend")); + else + emit friendRequested(id, getMessage()); + + this->toxId.clear(); + this->message.clear(); } void AddFriendForm::onIdChanged(const QString &id) From 25359d55b588b57ddd14d51f80a69def8597e99f Mon Sep 17 00:00:00 2001 From: sudden6 Date: Sat, 30 Jan 2016 00:15:14 +0100 Subject: [PATCH 3/3] Fix proxy set only after request sent. --- src/net/autoupdate.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/net/autoupdate.cpp b/src/net/autoupdate.cpp index fe40ea143..eb13952ea 100644 --- a/src/net/autoupdate.cpp +++ b/src/net/autoupdate.cpp @@ -107,8 +107,8 @@ AutoUpdater::VersionInfo AutoUpdater::getUpdateVersion() return versionInfo; QNetworkAccessManager *manager = new QNetworkAccessManager; - QNetworkReply* reply = manager->get(QNetworkRequest(QUrl(checkURI))); manager->setProxy(Settings::getInstance().getProxy()); + QNetworkReply* reply = manager->get(QNetworkRequest(QUrl(checkURI))); while (!reply->isFinished()) { if (abortFlag) @@ -222,8 +222,8 @@ QByteArray AutoUpdater::getUpdateFlist() QByteArray flist; QNetworkAccessManager *manager = new QNetworkAccessManager; - QNetworkReply* reply = manager->get(QNetworkRequest(QUrl(flistURI))); manager->setProxy(Settings::getInstance().getProxy()); + QNetworkReply* reply = manager->get(QNetworkRequest(QUrl(flistURI))); while (!reply->isFinished()) { if (abortFlag)