From 6219f2aa1e2bd47e11c59e90b875525e8880c6e9 Mon Sep 17 00:00:00 2001 From: kh1 Date: Wed, 19 Jun 2013 11:31:48 +0200 Subject: Once we acknowledged to ignore ssl errors, do it always. Change-Id: I5131a3f93b48878fa287161517c4ca2b224a28a5 Reviewed-by: Tim Jenssen --- src/libs/kdtools/kdupdaterfiledownloader.cpp | 21 +++++++++++++++++---- src/libs/kdtools/kdupdaterfiledownloader.h | 3 +++ src/libs/kdtools/kdupdaterfiledownloaderfactory.cpp | 12 ++++++++++++ src/libs/kdtools/kdupdaterfiledownloaderfactory.h | 3 +++ 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/src/libs/kdtools/kdupdaterfiledownloader.cpp b/src/libs/kdtools/kdupdaterfiledownloader.cpp index b858e2301..129268216 100644 --- a/src/libs/kdtools/kdupdaterfiledownloader.cpp +++ b/src/libs/kdtools/kdupdaterfiledownloader.cpp @@ -93,6 +93,7 @@ struct KDUpdater::FileDownloader::Private , m_sampleIndex(0) , m_downloadSpeed(0) , m_factory(0) + , m_ignoreSslErrors(false) { memset(m_samples, 0, sizeof(m_samples)); } @@ -125,6 +126,7 @@ struct KDUpdater::FileDownloader::Private QAuthenticator m_authenticator; FileDownloaderProxyFactory *m_factory; + bool m_ignoreSslErrors; }; KDUpdater::FileDownloader::FileDownloader(const QString &scheme, QObject *parent) @@ -413,6 +415,16 @@ void KDUpdater::FileDownloader::setAuthenticator(const QAuthenticator &authentic } } +bool KDUpdater::FileDownloader::ignoreSslErrors() +{ + return d->m_ignoreSslErrors; +} + +void KDUpdater::FileDownloader::setIgnoreSslErrors(bool ignore) +{ + d->m_ignoreSslErrors = ignore; +} + // -- KDUpdater::LocalFileDownloader /* @@ -1038,7 +1050,6 @@ void KDUpdater::HttpDownloader::onAuthenticationRequired(QNetworkReply *reply, Q void KDUpdater::HttpDownloader::onSslErrors(QNetworkReply* reply, const QList &errors) { Q_UNUSED(reply) - QString errorString; foreach (const QSslError &error, errors) { if (!errorString.isEmpty()) @@ -1048,9 +1059,10 @@ void KDUpdater::HttpDownloader::onSslErrors(QNetworkReply* reply, const QListignoreSslErrors(); - return; + if (arguments.contains(QLatin1String("--script")) || arguments.contains(QLatin1String("Script")) + || ignoreSslErrors()) { + reply->ignoreSslErrors(); + return; } // TODO: Remove above code once we have a proper implementation for message box handler supporting // methods used in the following code, right now we return here cause the message box is not scriptable. @@ -1075,6 +1087,7 @@ void KDUpdater::HttpDownloader::onSslErrors(QNetworkReply* reply, const QListignoreSslErrors(); + KDUpdater::FileDownloaderFactory::instance()->setIgnoreSslErrors(true); } } #endif diff --git a/src/libs/kdtools/kdupdaterfiledownloader.h b/src/libs/kdtools/kdupdaterfiledownloader.h index b6e65fa3e..0f22991be 100644 --- a/src/libs/kdtools/kdupdaterfiledownloader.h +++ b/src/libs/kdtools/kdupdaterfiledownloader.h @@ -78,6 +78,9 @@ public: QAuthenticator authenticator() const; void setAuthenticator(const QAuthenticator &authenticator); + bool ignoreSslErrors(); + void setIgnoreSslErrors(bool ignore); + public Q_SLOTS: virtual void cancelDownload(); diff --git a/src/libs/kdtools/kdupdaterfiledownloaderfactory.cpp b/src/libs/kdtools/kdupdaterfiledownloaderfactory.cpp index 2b7d89d0d..40b91c73f 100644 --- a/src/libs/kdtools/kdupdaterfiledownloaderfactory.cpp +++ b/src/libs/kdtools/kdupdaterfiledownloaderfactory.cpp @@ -46,6 +46,7 @@ struct FileDownloaderFactory::FileDownloaderFactoryData ~FileDownloaderFactoryData() { delete m_factory; } bool m_followRedirects; + bool m_ignoreSslErrors; FileDownloaderProxyFactory *m_factory; }; @@ -94,6 +95,16 @@ void FileDownloaderFactory::setProxyFactory(FileDownloaderProxyFactory *factory) FileDownloaderFactory::instance().d->m_factory = factory; } +bool FileDownloaderFactory::ignoreSslErrors() +{ + return FileDownloaderFactory::instance().d->m_ignoreSslErrors; +} + +void FileDownloaderFactory::setIgnoreSslErrors(bool ignore) +{ + FileDownloaderFactory::instance().d->m_ignoreSslErrors = ignore; +} + FileDownloaderFactory::~FileDownloaderFactory() { delete d; @@ -111,6 +122,7 @@ FileDownloader *FileDownloaderFactory::create(const QString &scheme, QObject *pa downloader->setParent(parent); downloader->setScheme(scheme); downloader->setFollowRedirects(d->m_followRedirects); + downloader->setIgnoreSslErrors(d->m_ignoreSslErrors); if (d->m_factory) downloader->setProxyFactory(d->m_factory->clone()); } diff --git a/src/libs/kdtools/kdupdaterfiledownloaderfactory.h b/src/libs/kdtools/kdupdaterfiledownloaderfactory.h index e27cb6f7e..b5cb55607 100644 --- a/src/libs/kdtools/kdupdaterfiledownloaderfactory.h +++ b/src/libs/kdtools/kdupdaterfiledownloaderfactory.h @@ -66,6 +66,9 @@ public: static void setProxyFactory(FileDownloaderProxyFactory *factory); + static bool ignoreSslErrors(); + static void setIgnoreSslErrors(bool ignore); + private: FileDownloaderFactory(); -- cgit v1.2.3