summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonatan Pålsson <jonatan.palsson@pelagicore.com>2014-04-16 10:53:29 +0200
committerJonatan Pålsson <jonatan.palsson@pelagicore.com>2014-04-16 10:53:29 +0200
commit1a7ca3a227be6083a20a343a25afa595559b119b (patch)
tree6b7e735864877c4afe73d0791822ae6d5240cd2d
parent1cf006f7d1b29382af99dbd8e4bf47974749ef51 (diff)
downloadbrowser-poc-1a7ca3a227be6083a20a343a25afa595559b119b.tar.gz
Listen to onProxyAuthenticationRequired signal
-rw-r--r--browser/networkmanager.cpp29
-rw-r--r--browser/networkmanager.h10
2 files changed, 35 insertions, 4 deletions
diff --git a/browser/networkmanager.cpp b/browser/networkmanager.cpp
index e047138..05e62b3 100644
--- a/browser/networkmanager.cpp
+++ b/browser/networkmanager.cpp
@@ -17,6 +17,7 @@
#include <QAuthenticator>
#include <QEventLoop>
#include <QNetworkReply>
+#include <QNetworkProxy>
#include <QSslError>
#include <QSslSocket>
@@ -93,6 +94,9 @@ networkmanager::networkmanager(QNetworkAccessManager *nam, QObject *parent) :
this,SLOT (onAuthenticationRequired(QNetworkReply *, QAuthenticator *)));
connect(nam, SIGNAL(sslErrors(QNetworkReply *, const QList<QSslError> &)),
this,SLOT (onSslErrors(QNetworkReply *, const QList<QSslError> &)));
+ connect(nam, SIGNAL(proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *)),
+ this,SLOT (onProxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *)));
+
}
conn::brw::ERROR_IDS networkmanager::closeAuthenticationDialog(conn::brw::DIALOG_RESULT res, const conn::brw::AuthenticationData& data)
@@ -113,12 +117,12 @@ void networkmanager::onAuthenticationRequired(QNetworkReply *reply, QAuthenticat
emit onAuthenticationDialog(data);
qDebug() << "Authentication required";
QEventLoop loop;
- connect (this, SIGNAL(doCloseAuthenticationDialog(bool, const conn::brw::AuthenticationData)), this, SLOT(authenticate(bool, const conn::brw::AuthenticationData)));
+ connect (this, SIGNAL(doCloseAuthenticationDialog(bool, const conn::brw::AuthenticationData)), this, SLOT(authenticateProxy(bool, const conn::brw::AuthenticationData)));
connect (this, SIGNAL(doCloseAuthenticationDialog(bool, const conn::brw::AuthenticationData)), &loop, SLOT(quit()));
loop.exec();
qDebug() << "Authentication provided: user" << m_authData.strUserName << "password:" << m_authData.strPassword;
- if (m_authBool) {
+ if (m_authBoolProxy) {
authenticator->setUser(m_authData.strUserName);
authenticator->setPassword(m_authData.strPassword);
} else {
@@ -158,3 +162,24 @@ void networkmanager::onSslErrors(QNetworkReply *reply, const QList<QSslError> &
}
}
+void networkmanager::onProxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
+{
+ conn::brw::AuthenticationData data;
+ data.strHost = proxy.hostName();
+ emit onAuthenticationDialog(data);
+ qDebug() << "Proxy authentication required";
+ QEventLoop loop;
+ connect (this, SIGNAL(doCloseAuthenticationDialog(bool, const conn::brw::AuthenticationData)), this, SLOT(authenticate(bool, const conn::brw::AuthenticationData)));
+ connect (this, SIGNAL(doCloseAuthenticationDialog(bool, const conn::brw::AuthenticationData)), &loop, SLOT(quit()));
+ loop.exec();
+ qDebug() << "Proxy authentication provided: user" << m_authData.strUserName << "password:" << m_authData.strPassword;
+
+ if (m_authBool) {
+ authenticator->setUser(m_authData.strUserName);
+ authenticator->setPassword(m_authData.strPassword);
+ } else {
+ qDebug() << "Action was cancelled";
+ emit onAuthenticationDialogCancel(data);
+ }
+}
+
diff --git a/browser/networkmanager.h b/browser/networkmanager.h
index 7ee7229..618425b 100644
--- a/browser/networkmanager.h
+++ b/browser/networkmanager.h
@@ -46,11 +46,17 @@ public Q_SLOTS:
// Internal
void onAuthenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator);
void onSslErrors(QNetworkReply *reply, const QList<QSslError> & errors);
+ void onProxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *);
void authenticate(bool b, const conn::brw::AuthenticationData ad)
{
m_authBool = b;
m_authData = ad;
}
+ void authenticateProxy(bool b, const conn::brw::AuthenticationData ad)
+ {
+ m_authBoolProxy = b;
+ m_authDataProxy = ad;
+ }
void closeSsl(bool isOK, bool saveCert)
{
m_isSslOk = isOK;
@@ -58,8 +64,8 @@ public Q_SLOTS:
}
private:
QNetworkAccessManager *m_nam;
- bool m_authBool, m_isSslOk, m_sslSaveCert;
- conn::brw::AuthenticationData m_authData;
+ bool m_authBool, m_authBoolProxy, m_isSslOk, m_sslSaveCert;
+ conn::brw::AuthenticationData m_authData, m_authDataProxy;
};
#endif // NETWORKMAMAGER_H