[sailfish] added a minSSLVersion option, regards #117
This commit is contained in:
parent
9366775b9f
commit
ddc766e5cc
4 changed files with 115 additions and 1 deletions
|
|
@ -71,9 +71,21 @@ 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()) {
|
||||
|
||||
QSslConfiguration sslConfig = request.sslConfiguration();
|
||||
QSsl::SslProtocol protocol = sslConfig.protocol();
|
||||
|
||||
Settings* settings = Settings::instance();
|
||||
if (settings->isMinSSlVersionGreaterThan(protocol)) {
|
||||
sslConfig.setProtocol(settings->getMinSSLVersion());
|
||||
qDebug() << "ssl protocol is now " << sslConfig.protocol();
|
||||
}
|
||||
request.setSslConfiguration(sslConfig);
|
||||
|
||||
if (settings->ignoreSSLErrors()) {
|
||||
reply->ignoreSslErrors();
|
||||
}
|
||||
|
||||
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onError(QNetworkReply::NetworkError)));
|
||||
return reply;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,6 +74,22 @@ Dialog {
|
|||
checked: settings.useAllFeedsOnStartup
|
||||
}
|
||||
|
||||
ComboBox {
|
||||
id: minimumSSLVersionSetting
|
||||
label: qsTr("Minimum Ssl Version")
|
||||
currentIndex: settings.minSSLVersion
|
||||
description: qsTr('Specify a minimum protocol version for your SSL connection. This might be neseccary when your server does not allow connections with older (insecure) protocols.')
|
||||
|
||||
menu: ContextMenu {
|
||||
MenuItem { text: qsTr("Any") }
|
||||
MenuItem { text: qsTr("SslV2") }
|
||||
MenuItem { text: qsTr("SslV3") }
|
||||
MenuItem { text: qsTr("TlsV1.0") }
|
||||
MenuItem { text: qsTr("TlsV1.1") }
|
||||
MenuItem { text: qsTr("TlsV1.2") }
|
||||
}
|
||||
}
|
||||
|
||||
// -- Feeds --
|
||||
SectionHeader {
|
||||
text: qsTr("Feeds")
|
||||
|
|
@ -226,6 +242,7 @@ Dialog {
|
|||
// Startup
|
||||
settings.useAutologin = autoLoginSetting.checked
|
||||
settings.useAllFeedsOnStartup = useAllFeedsOnStartupSetting.checked
|
||||
settings.minSSLVersion = minimumSSLVersionSetting.currentIndex
|
||||
|
||||
// Feeds
|
||||
settings.displayIcons = showIconsSetting.checked
|
||||
|
|
|
|||
74
settings.cpp
74
settings.cpp
|
|
@ -81,6 +81,79 @@ void Settings::setIgnoreSSLErrors(bool ignoreSSLErrors) {
|
|||
}
|
||||
}
|
||||
|
||||
void Settings::setMinSSLVersion(int minSSLVersion) {
|
||||
if (_minSSLVersion != minSSLVersion) {
|
||||
_minSSLVersion = minSSLVersion;
|
||||
m_settings->setValue("minSSLVersion", _minSSLVersion);
|
||||
emit minSSLVersionChanged();
|
||||
}
|
||||
}
|
||||
QSsl::SslProtocol Settings::getMinSSLVersion() const {
|
||||
QSsl::SslProtocol minSSLVersionProtocol;
|
||||
switch (_minSSLVersion) {
|
||||
default:
|
||||
case 0:
|
||||
minSSLVersionProtocol = QSsl::AnyProtocol;
|
||||
break;
|
||||
case 1:
|
||||
minSSLVersionProtocol = QSsl::SslV2;
|
||||
break;
|
||||
case 2:
|
||||
minSSLVersionProtocol = QSsl::SslV3;
|
||||
break;
|
||||
case 3:
|
||||
minSSLVersionProtocol = QSsl::TlsV1_0;
|
||||
break;
|
||||
case 4:
|
||||
minSSLVersionProtocol = QSsl::TlsV1_1;
|
||||
break;
|
||||
case 5:
|
||||
minSSLVersionProtocol = QSsl::TlsV1_2;
|
||||
break;
|
||||
}
|
||||
return minSSLVersionProtocol;
|
||||
}
|
||||
bool Settings::isMinSSlVersionGreaterThan(QSsl::SslProtocol otherVersion) const {
|
||||
QSsl::SslProtocol currentVersion = this->getMinSSLVersion();
|
||||
|
||||
bool result = false;
|
||||
switch (otherVersion) {
|
||||
case QSsl::SslV2:
|
||||
result = currentVersion == QSsl::SslV3 ||
|
||||
currentVersion == QSsl::TlsV1_0 ||
|
||||
currentVersion == QSsl::TlsV1_1 ||
|
||||
currentVersion == QSsl::TlsV1_2
|
||||
;
|
||||
break;
|
||||
case QSsl::SslV3:
|
||||
case QSsl::TlsV1SslV3:
|
||||
case QSsl::SecureProtocols:
|
||||
result = currentVersion == QSsl::TlsV1_0 ||
|
||||
currentVersion == QSsl::TlsV1_1 ||
|
||||
currentVersion == QSsl::TlsV1_2
|
||||
;
|
||||
break;
|
||||
case QSsl::TlsV1_0:
|
||||
result = currentVersion == QSsl::TlsV1_1 ||
|
||||
currentVersion == QSsl::TlsV1_2
|
||||
;
|
||||
break;
|
||||
case QSsl::TlsV1_1:
|
||||
result = currentVersion == QSsl::TlsV1_2
|
||||
;
|
||||
break;
|
||||
case QSsl::TlsV1_2:
|
||||
case QSsl::UnknownProtocol:
|
||||
result = false;
|
||||
break;
|
||||
case QSsl::AnyProtocol:
|
||||
result = currentVersion != QSsl::AnyProtocol;
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// Startup
|
||||
void Settings::setAutologin(bool autologin) {
|
||||
if (_autologin != autologin) {
|
||||
|
|
@ -239,6 +312,7 @@ Settings::Settings(QObject *parent) : QObject(parent), m_settings(new QSettings(
|
|||
_httpauthuser = m_settings->value("httpauthusername", "").toString();
|
||||
_httpauthpasswd = m_settings->value("httpauthpassword", "").toString();
|
||||
_ignoreSSLErrors = m_settings->value("ignoreSSLErrors", false).toBool();
|
||||
_minSSLVersion = m_settings->value("minSSLVersion", 0).toInt();
|
||||
|
||||
// Startup
|
||||
_autologin = m_settings->value("autologin", false).toBool();
|
||||
|
|
|
|||
11
settings.hh
11
settings.hh
|
|
@ -25,6 +25,7 @@
|
|||
#include <QtCore/QObject>
|
||||
#include <QtCore/QScopedPointer>
|
||||
#include <QtCore/qstring.h>
|
||||
#include <QtNetwork/QSsl>
|
||||
|
||||
class QSettings;
|
||||
|
||||
|
|
@ -39,6 +40,7 @@ class Settings : public QObject
|
|||
Q_PROPERTY(QString httpauthusername READ httpauthUsername WRITE setHttpauthUsername NOTIFY httpauthUsernameChanged)
|
||||
Q_PROPERTY(QString httpauthpassword READ httpauthPassword WRITE setHttpauthPassword NOTIFY httpauthPasswordChanged)
|
||||
Q_PROPERTY(bool ignoreSSLErrors READ ignoreSSLErrors WRITE setIgnoreSSLErrors NOTIFY ignoreSSLErrorsChanged)
|
||||
Q_PROPERTY(int minSSLVersion READ minSSLVersion WRITE setMinSSLVersion NOTIFY minSSLVersionChanged)
|
||||
|
||||
// Startup
|
||||
Q_PROPERTY(bool autologin READ hasAutologin WRITE setAutologin NOTIFY autologinChanged)
|
||||
|
|
@ -104,6 +106,13 @@ public:
|
|||
}
|
||||
void setIgnoreSSLErrors(bool ignoreSSLErrors);
|
||||
|
||||
int minSSLVersion() const {
|
||||
return this->_minSSLVersion;
|
||||
}
|
||||
void setMinSSLVersion(int minSSLVersion);
|
||||
QSsl::SslProtocol getMinSSLVersion() const;
|
||||
bool isMinSSlVersionGreaterThan(QSsl::SslProtocol otherVersion) const;
|
||||
|
||||
// Startup
|
||||
bool hasAutologin() const {
|
||||
return this->_autologin;
|
||||
|
|
@ -208,6 +217,7 @@ signals:
|
|||
void httpauthUsernameChanged();
|
||||
void httpauthPasswordChanged();
|
||||
void ignoreSSLErrorsChanged();
|
||||
void minSSLVersionChanged();
|
||||
|
||||
// Startup
|
||||
void autologinChanged();
|
||||
|
|
@ -254,6 +264,7 @@ private:
|
|||
QString _httpauthuser;
|
||||
QString _httpauthpasswd;
|
||||
bool _ignoreSSLErrors;
|
||||
int _minSSLVersion;
|
||||
|
||||
// Startup
|
||||
bool _autologin;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue