diff options
author | Jonathan Bauer | 2012-02-02 14:47:32 +0100 |
---|---|---|
committer | Jonathan Bauer | 2012-02-02 14:47:32 +0100 |
commit | 1eaa20aa310d8784376939c2787eaf4c44ead3dc (patch) | |
tree | 5054bc22527e22bc4dca64d96122582adcd58794 /src/fbgui/fbgui.cpp | |
parent | test commit (diff) | |
parent | setLocalCertificate, readCertificate and dumpCertificate added (diff) | |
download | fbgui-1eaa20aa310d8784376939c2787eaf4c44ead3dc.tar.gz fbgui-1eaa20aa310d8784376939c2787eaf4c44ead3dc.tar.xz fbgui-1eaa20aa310d8784376939c2787eaf4c44ead3dc.zip |
Merge branch 'ssl' of git.openslx.org:openslx-ng/fbgui into ssl
Diffstat (limited to 'src/fbgui/fbgui.cpp')
-rw-r--r-- | src/fbgui/fbgui.cpp | 70 |
1 files changed, 57 insertions, 13 deletions
diff --git a/src/fbgui/fbgui.cpp b/src/fbgui/fbgui.cpp index 9c9efcd..37913b7 100644 --- a/src/fbgui/fbgui.cpp +++ b/src/fbgui/fbgui.cpp @@ -94,11 +94,11 @@ void fbgui::init() { dmThread.start(); // show "waiting for internet" page until triggered. - if (debugMode > -1) { - _webView->load(QUrl("qrc:/html/preload-debug.html")); - } else { - _webView->load(QUrl("qrc:/html/preload.html")); - } +// if (debugMode > -1) { +// _webView->load(QUrl("qrc:/html/preload-debug.html")); +// } else { +// _webView->load(QUrl("qrc:/html/preload.html")); +// } // watcher is not needed anymore since we guarantee internet connection with the networkDiscovery. // start watching for fileToTriggerURL @@ -245,11 +245,15 @@ void fbgui::loadURL() { QByteArray postData = generatePOSTData(); _qnr = new QNetworkRequest(baseURL); + QList<QSslCertificate> certList; + certList.append(readCertificate("/usr/lib/ssl/openslx/CA/certs/openslx-cert.pem")); + registerCACertificates(certList); + //Connect webViews NetworkAccessManager to SSLErrorHandler SLOT QObject::connect(_webView->page()->networkAccessManager(), SIGNAL(finished(QNetworkReply*)), this, - SLOT(errorHandler(QNetworkReply*))); + SLOT(httpErrorHandler(QNetworkReply*))); //Connect webViews NetworkAccessManager to ErrorHandler SLOT QObject::connect(_webView->page()->networkAccessManager(), @@ -274,6 +278,7 @@ void fbgui::loadURLDone(bool success) { // TODO handle failure properly... } else { LOG4CXX_DEBUG(coreLogger, "Loaded URL: " << _webView->url().toString()); + //dumpCACertificates(); } } @@ -284,25 +289,64 @@ void fbgui::sslErrorHandler(QNetworkReply* reply, const QList<QSslError> & errli foreach (QSslError err, errlist) LOG4CXX_DEBUG(coreLogger, "SSL Error: " << err.errorString()); - reply->ignoreSslErrors(); + //reply->ignoreSslErrors(); } //Handles QNetworkReply Errors void fbgui::httpErrorHandler(QNetworkReply* reply) { - LOG4CXX_DEBUG(coreLogger, "HTTP Error: " << reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString()); + if(reply->error() != QNetworkReply::NoError ) + LOG4CXX_DEBUG(coreLogger, "HTTP Error: " << reply->errorString()); +} + +//test function to read Certificates +QSslCertificate fbgui::readCertificate(const QString& fileName){ + QFile certFile(fileName); + Q_ASSERT(certFile.open(QIODevice::ReadOnly)); + QByteArray certContent = certFile.readAll(); + LOG4CXX_DEBUG(coreLogger,"Is cert valid: " << certContent); + QSslCertificate cert(certContent, QSsl::Pem); + return cert; +} + +//Dump all Certificates in SSLConfiguration +void fbgui::dumpCACertificates(){ + QSslConfiguration sslConfig = _qnr->sslConfiguration(); + QList<QSslCertificate> caCerts = sslConfig.caCertificates(); + + foreach (QSslCertificate cert, caCerts){ + LOG4CXX_DEBUG(coreLogger,"Is cert valid: " << cert.isValid()); + LOG4CXX_DEBUG(coreLogger,"Cert info: " << cert.issuerInfo(QSslCertificate::Organization)); + } +} + +//Saves CACertificates to SslConfiguration +void fbgui::registerCACertificates(const QList<QSslCertificate> & certificates){ + + foreach (QSslCertificate cert, certificates){ + LOG4CXX_DEBUG(coreLogger,"Is cert valid: " << cert.isValid()); + LOG4CXX_DEBUG(coreLogger,"Cert info: " << cert.issuerInfo(QSslCertificate::Organization)); + } + + QSslConfiguration sslConfig = _qnr->sslConfiguration(); + + QList<QSslCertificate> caCerts = sslConfig.caCertificates(); + caCerts.append(certificates); + sslConfig.setCaCertificates(caCerts); + _qnr->setSslConfiguration(sslConfig); + } -//Saves Certificates to SslConfiguration -void fbgui::registerCACertificate(QSslCertificate& cert){ +//Saves PrivateKey to SslConfiguration +void fbgui::setLocalCertificate(QSslCertificate& cert){ LOG4CXX_DEBUG(coreLogger,"Is cert valid: " << cert.isValid()); LOG4CXX_DEBUG(coreLogger,"Cert info: " << cert.issuerInfo(QSslCertificate::Organization)); QSslConfiguration sslConfig = _qnr->sslConfiguration(); - QList<QSslCertificate> caCerts = sslConfig.caCertificates(); - caCerts.append(cert); - sslConfig.setCaCertificates(caCerts); + sslConfig.setLocalCertificate(cert); _qnr->setSslConfiguration(sslConfig); + } + //------------------------------------------------------------------------------------------- /** * This method generates the POST data body. |