From 1a7ca3a227be6083a20a343a25afa595559b119b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20P=C3=A5lsson?= Date: Wed, 16 Apr 2014 10:53:29 +0200 Subject: Listen to onProxyAuthenticationRequired signal --- browser/networkmanager.cpp | 29 +++++++++++++++++++++++++++-- browser/networkmanager.h | 10 ++++++++-- 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 #include #include +#include #include #include @@ -93,6 +94,9 @@ networkmanager::networkmanager(QNetworkAccessManager *nam, QObject *parent) : this,SLOT (onAuthenticationRequired(QNetworkReply *, QAuthenticator *))); connect(nam, SIGNAL(sslErrors(QNetworkReply *, const QList &)), this,SLOT (onSslErrors(QNetworkReply *, const QList &))); + 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 & } } +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 & 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 -- cgit v1.2.1