From f57b3a3d151e18da88ae61885b266c2bcf091f62 Mon Sep 17 00:00:00 2001 From: Andrew Wason Date: Wed, 28 Sep 2011 12:09:11 -0400 Subject: [PATCH] Make ignoring SSL errors an option. webkit_server takes an --ignore-ssl-errors argument. --- src/Server.cpp | 3 ++- src/Server.h | 2 +- src/WebPage.cpp | 12 +++++++++++- src/WebPage.h | 3 +++ src/main.cpp | 7 ++++++- 5 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/Server.cpp b/src/Server.cpp index 82a1bc6..d7ab4c1 100644 --- a/src/Server.cpp +++ b/src/Server.cpp @@ -4,9 +4,10 @@ #include -Server::Server(QObject *parent) : QObject(parent) { +Server::Server(QObject *parent, bool ignoreSslErrors) : QObject(parent) { m_tcp_server = new QTcpServer(this); m_page = new WebPage(this); + m_page->setIgnoreSslErrors(ignoreSslErrors); } bool Server::start() { diff --git a/src/Server.h b/src/Server.h index 69f881b..677097f 100644 --- a/src/Server.h +++ b/src/Server.h @@ -7,7 +7,7 @@ class Server : public QObject { Q_OBJECT public: - Server(QObject *parent = 0); + Server(QObject *parent, bool ignoreSslErrors); bool start(); quint16 server_port() const; diff --git a/src/WebPage.cpp b/src/WebPage.cpp index 6729a8c..0a410c1 100644 --- a/src/WebPage.cpp +++ b/src/WebPage.cpp @@ -194,9 +194,19 @@ void WebPage::replyFinished(QNetworkReply *reply) { } void WebPage::ignoreSslErrors(QNetworkReply *reply, const QList &errors) { - reply->ignoreSslErrors(errors); + if (m_ignoreSslErrors) + reply->ignoreSslErrors(errors); } +void WebPage::setIgnoreSslErrors(bool ignore) { + m_ignoreSslErrors = ignore; +} + +bool WebPage::ignoreSslErrors() { + return m_ignoreSslErrors; +} + + int WebPage::getLastStatus() { return m_lastStatus; } diff --git a/src/WebPage.h b/src/WebPage.h index 44f7d3a..79a50d2 100644 --- a/src/WebPage.h +++ b/src/WebPage.h @@ -15,6 +15,8 @@ class WebPage : public QWebPage { void setCustomNetworkAccessManager(); bool render(const QString &fileName); virtual bool extension (Extension extension, const ExtensionOption *option=0, ExtensionReturn *output=0); + void setIgnoreSslErrors(bool ignore); + bool ignoreSslErrors(); public slots: bool shouldInterruptJavaScript(); @@ -47,5 +49,6 @@ class WebPage : public QWebPage { void setUserStylesheet(); int m_lastStatus; QString m_pageHeaders; + bool m_ignoreSslErrors; }; diff --git a/src/main.cpp b/src/main.cpp index f009d64..f329845 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -18,10 +18,15 @@ int main(int argc, char **argv) { app.setOrganizationName("thoughtbot, inc"); app.setOrganizationDomain("thoughtbot.com"); - Server server; + QStringList args = app.arguments(); + bool ignoreSslErrors = args.contains("--ignore-ssl-errors"); + + Server server(0, ignoreSslErrors); if (server.start()) { std::cout << "Capybara-webkit server started, listening on port: " << server.server_port() << std::endl; + if (ignoreSslErrors) + std::cout << "Ignoring SSL errors" << std::endl; return app.exec(); } else { std::cerr << "Couldn't start capybara-webkit server" << std::endl;