diff --git a/src/libs/core/application.cpp b/src/libs/core/application.cpp index fc295dc9..fab5c597 100644 --- a/src/libs/core/application.cpp +++ b/src/libs/core/application.cpp @@ -66,6 +66,14 @@ Application::Application(QObject *parent) m_fileManager = new FileManager(this); m_httpServer = new HttpServer(this); + connect(m_networkManager, &QNetworkAccessManager::sslErrors, this, [this](QNetworkReply *reply, const QList &errors) + { + if (m_settings->isIgnoreSSLErrorsEnabled) { + // Ignore all SSL errors + reply->ignoreSslErrors(); + } + }); + // Extractor setup m_extractorThread = new QThread(this); m_extractor = new Extractor(); @@ -271,11 +279,13 @@ void Application::applySettings() QNetworkProxy::setApplicationProxy(proxy); - // Force NM to pick up changes. - m_networkManager->clearAccessCache(); break; } } + + // Force NM to pick up changes. + m_networkManager->clearAccessCache(); + } QString Application::userAgent() diff --git a/src/libs/core/settings.cpp b/src/libs/core/settings.cpp index 9b60f54b..93ad37ef 100644 --- a/src/libs/core/settings.cpp +++ b/src/libs/core/settings.cpp @@ -181,6 +181,7 @@ void Settings::load() proxyAuthenticate = settings->value(QStringLiteral("authenticate"), false).toBool(); proxyUserName = settings->value(QStringLiteral("username")).toString(); proxyPassword = settings->value(QStringLiteral("password")).toString(); + isIgnoreSSLErrorsEnabled = settings->value(QStringLiteral("ignore_ssl_errors"), false).toBool(); settings->endGroup(); settings->beginGroup(GroupDocsets); @@ -268,6 +269,7 @@ void Settings::save() settings->setValue(QStringLiteral("authenticate"), proxyAuthenticate); settings->setValue(QStringLiteral("username"), proxyUserName); settings->setValue(QStringLiteral("password"), proxyPassword); + settings->setValue(QStringLiteral("ignore_ssl_errors"), isIgnoreSSLErrorsEnabled); settings->endGroup(); settings->beginGroup(GroupDocsets); diff --git a/src/libs/core/settings.h b/src/libs/core/settings.h index ad26e251..66332518 100644 --- a/src/libs/core/settings.h +++ b/src/libs/core/settings.h @@ -99,6 +99,7 @@ class Settings final : public QObject Socks5 = 4 }; Q_ENUM(ProxyType) + bool isIgnoreSSLErrorsEnabled; // Internal // -------- diff --git a/src/libs/ui/docsetsdialog.cpp b/src/libs/ui/docsetsdialog.cpp index 5195454b..69910731 100644 --- a/src/libs/ui/docsetsdialog.cpp +++ b/src/libs/ui/docsetsdialog.cpp @@ -675,6 +675,7 @@ bool DocsetsDialog::updatesAvailable() const QNetworkReply *DocsetsDialog::download(const QUrl &url) { QNetworkReply *reply = m_application->download(url); + connect(reply, &QNetworkReply::downloadProgress, this, &DocsetsDialog::downloadProgress); connect(reply, &QNetworkReply::finished, this, &DocsetsDialog::downloadCompleted); m_replies.append(reply); diff --git a/src/libs/ui/settingsdialog.cpp b/src/libs/ui/settingsdialog.cpp index 8b926308..c25bccda 100644 --- a/src/libs/ui/settingsdialog.cpp +++ b/src/libs/ui/settingsdialog.cpp @@ -255,6 +255,8 @@ void SettingsDialog::loadSettings() ui->proxyRequiresAuthCheckBox->setChecked(settings->proxyAuthenticate); ui->proxyUsernameEdit->setText(settings->proxyUserName); ui->proxyPasswordEdit->setText(settings->proxyPassword); + + ui->ignoreSSLErrorsCheckBox->setChecked(settings->isIgnoreSSLErrorsEnabled); } void SettingsDialog::saveSettings() @@ -330,5 +332,7 @@ void SettingsDialog::saveSettings() settings->proxyUserName = ui->proxyUsernameEdit->text(); settings->proxyPassword = ui->proxyPasswordEdit->text(); + settings->isIgnoreSSLErrorsEnabled = ui->ignoreSSLErrorsCheckBox->isChecked(); + settings->save(); } diff --git a/src/libs/ui/settingsdialog.ui b/src/libs/ui/settingsdialog.ui index 98b57789..2caec495 100644 --- a/src/libs/ui/settingsdialog.ui +++ b/src/libs/ui/settingsdialog.ui @@ -745,6 +745,22 @@ + + + + Security + + + + + + Ignore SSL errors + + + + + +