From baaafd8c9a2f357fbf1a696b937ccd7d0c8b93ed Mon Sep 17 00:00:00 2001 From: Michael Neves Date: Tue, 31 Jan 2012 15:01:50 +0100 Subject: registerCACertificates function --- src/fbgui/fbgui.cpp | 25 +++++++++++++++---------- src/fbgui/fbgui.h | 7 ++++++- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/fbgui/fbgui.cpp b/src/fbgui/fbgui.cpp index fcc652c..9c9efcd 100644 --- a/src/fbgui/fbgui.cpp +++ b/src/fbgui/fbgui.cpp @@ -243,7 +243,7 @@ void fbgui::loadURL() { // Generate POST identification data needed by PBS. QByteArray postData = generatePOSTData(); - QNetworkRequest req(baseURL); + _qnr = new QNetworkRequest(baseURL); //Connect webViews NetworkAccessManager to SSLErrorHandler SLOT QObject::connect(_webView->page()->networkAccessManager(), @@ -259,9 +259,9 @@ void fbgui::loadURL() { // show cursor again since user is about to interact. //QWSServer::instance()->setCursorVisible(true); //TODO: ?enabled in original - req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); + _qnr->setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); QObject::connect(_webView, SIGNAL(loadFinished(bool)), this, SLOT(loadURLDone(bool))); - _webView->load(req, QNetworkAccessManager::PostOperation, postData); + _webView->load(*_qnr, QNetworkAccessManager::PostOperation, postData); } // TODO: error page if no host. } @@ -279,8 +279,7 @@ void fbgui::loadURLDone(bool success) { //Handles QNetworkReply SSL Errors -void fbgui::sslErrorHandler(QNetworkReply* reply, const QList & errlist) -{ +void fbgui::sslErrorHandler(QNetworkReply* reply, const QList & errlist) { foreach (QSslError err, errlist) LOG4CXX_DEBUG(coreLogger, "SSL Error: " << err.errorString()); @@ -289,15 +288,21 @@ void fbgui::sslErrorHandler(QNetworkReply* reply, const QList & errli } //Handles QNetworkReply Errors -void fbgui::errorHandler(QNetworkReply* reply) -{ - +void fbgui::httpErrorHandler(QNetworkReply* reply) { LOG4CXX_DEBUG(coreLogger, "HTTP Error: " << reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString()); - - } +//Saves Certificates to SslConfiguration +void fbgui::registerCACertificate(QSslCertificate& cert){ + LOG4CXX_DEBUG(coreLogger,"Is cert valid: " << cert.isValid()); + LOG4CXX_DEBUG(coreLogger,"Cert info: " << cert.issuerInfo(QSslCertificate::Organization)); + QSslConfiguration sslConfig = _qnr->sslConfiguration(); + QList caCerts = sslConfig.caCertificates(); + caCerts.append(cert); + sslConfig.setCaCertificates(caCerts); + _qnr->setSslConfiguration(sslConfig); +} //------------------------------------------------------------------------------------------- /** * This method generates the POST data body. diff --git a/src/fbgui/fbgui.h b/src/fbgui/fbgui.h index 04aa38b..57f4a34 100644 --- a/src/fbgui/fbgui.h +++ b/src/fbgui/fbgui.h @@ -88,6 +88,8 @@ private: //---------------------------------- // QWebView for displaying internet content QWebView* _webView; + // QNetworkRequest for the Network Request + QNetworkRequest* _qnr; // QSplitter to split the main window in two resizable frames. QSplitter* _splitter; // QTextEdit implementing a minimalistic debug console. @@ -120,7 +122,10 @@ private slots: void sslErrorHandler(QNetworkReply* reply, const QList & errlist); //Error Handler for http Requests - void errorHandler(QNetworkReply* reply); + void httpErrorHandler(QNetworkReply* reply); + + //Sets CaCertificate in QSslConfiguration + void registerCACertificate(QSslCertificate& cert); // shut off the system void performShutDown(); -- cgit v1.2.3-55-g7522