added an option to enable/disable SSLErrorIgnoring, regards #70

This commit is contained in:
Hauke Schade 2014-04-10 18:51:51 +02:00
parent 3ee847b6c3
commit 3e4d30cf66
4 changed files with 34 additions and 2 deletions

View file

@ -13,6 +13,7 @@
#include <QtNetwork/QNetworkDiskCache>
#include <QDesktopServices>
#include <QDebug>
#include "settings.hh"
QScopedPointer<MyNetworkManager> MyNetworkManager::m_instance(0);
@ -47,12 +48,16 @@ QNetworkReply *MyNetworkAccessManager::createRequest( QNetworkAccessManager::Ope
QNetworkRequest request(req);
request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
QNetworkReply *reply = QNetworkAccessManager::createRequest(op, request, outgoingData);
if (Settings::instance()->ignoreSSLErrors()) {
reply->ignoreSslErrors();
}
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onError(QNetworkReply::NetworkError)));
return reply;
}
void MyNetworkAccessManager::onError(QNetworkReply::NetworkError e) {
qDebug() << "got network error " << (int)e;
if (e < QNetworkReply::ContentAccessDenied && e != QNetworkReply::TemporaryNetworkFailureError)
this->error();
}
@ -62,8 +67,12 @@ void MyNetworkManager::onError() {
}
void MyNetworkManager::onSslErrors(QNetworkReply *reply, const QList<QSslError> &errors) {
qDebug("onSslErrors");
reply->ignoreSslErrors(errors);
if (Settings::instance()->ignoreSSLErrors()) {
qDebug("onSslErrors");
reply->ignoreSslErrors(errors);
}
else
qDebug("not ignoring onSslErrors, since this is not specified in settings");
}
void MyNetworkManager::onStarted() {

View file

@ -82,6 +82,12 @@ Page {
width: parent.width
// enabled: !network.loading
}
TextSwitch {
text: qsTr('Ignore SSL Errors')
visible: server.text.substring(0, 5) === "https"
checked: settings.ignoreSSLErrors
onCheckedChanged: settings.ignoreSSLErrors = checked
}
Button {
id: loginButton
text: qsTr("Login")

View file

@ -78,6 +78,14 @@ void Settings::setUseAutologin(bool useAutologin) {
}
}
void Settings::setIgnoreSSLErrors(bool ignoreSSLErrors) {
if (_ignoreSSLErrors != ignoreSSLErrors) {
_ignoreSSLErrors = ignoreSSLErrors;
m_settings->setValue("ignoreSSLErrors", _ignoreSSLErrors);
emit ignoreSSLErrorsChanged();
}
}
void Settings::setWhiteTheme(bool whiteTheme) {
if (_whiteTheme != whiteTheme) {
_whiteTheme = whiteTheme;
@ -140,6 +148,7 @@ Settings::Settings(QObject *parent) : QObject(parent), m_settings(new QSettings(
_password = m_settings->value("password", "").toString();
_autologin = m_settings->value("autologin", false).toBool();
_useAutologin = m_settings->value("useAutologin", true).toBool();
_ignoreSSLErrors = m_settings->value("ignoreSSLErrors", false).toBool();
_httpauthuser = m_settings->value("httpauthusername", "").toString();
_httpauthpasswd = m_settings->value("httpauthpassword", "").toString();

View file

@ -16,6 +16,7 @@ class Settings : public QObject
Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged)
Q_PROPERTY(bool autologin READ hasAutologin WRITE setAutologin NOTIFY autologinChanged)
Q_PROPERTY(bool useAutologin READ hasUseAutologin WRITE setUseAutologin NOTIFY useAutologinChanged)
Q_PROPERTY(bool ignoreSSLErrors READ ignoreSSLErrors WRITE setIgnoreSSLErrors NOTIFY ignoreSSLErrorsChanged)
Q_PROPERTY(QString httpauthusername READ httpauthUsername WRITE setHttpauthUsername NOTIFY httpauthUsernameChanged)
Q_PROPERTY(QString httpauthpassword READ httpauthPassword WRITE setHttpauthPassword NOTIFY httpauthPasswordChanged)
@ -55,6 +56,11 @@ public:
}
void setUseAutologin(bool useAutologin);
bool ignoreSSLErrors() const {
return this->_ignoreSSLErrors;
}
void setIgnoreSSLErrors(bool ignoreSSLErrors);
QString httpauthUsername() const {
return this->_httpauthuser;
}
@ -106,6 +112,7 @@ signals:
void passwordChanged();
void autologinChanged();
void useAutologinChanged();
void ignoreSSLErrorsChanged();
void httpauthUsernameChanged();
void httpauthPasswordChanged();
@ -131,6 +138,7 @@ private:
QString _password;
bool _autologin;
bool _useAutologin;
bool _ignoreSSLErrors;
QString _httpauthuser;
QString _httpauthpasswd;