diff options
| author | Andrea Diamantini <adjam7@gmail.com> | 2011-07-05 00:35:41 +0200 | 
|---|---|---|
| committer | Andrea Diamantini <adjam7@gmail.com> | 2011-07-18 11:32:09 +0200 | 
| commit | 133b8a7106b716937e24c7b47306ff8ac02efd6b (patch) | |
| tree | 90551bc2d644ce3e8318dfbbd9df842a3d910810 /src | |
| parent | Better notify SSL infos (diff) | |
| download | rekonq-133b8a7106b716937e24c7b47306ff8ac02efd6b.tar.xz | |
Added SSL Widget, first version
Diffstat (limited to 'src')
| -rw-r--r-- | src/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/urlbar/sslwidget.cpp | 137 | ||||
| -rw-r--r-- | src/urlbar/sslwidget.h | 52 | ||||
| -rw-r--r-- | src/webpage.cpp | 45 | 
4 files changed, 226 insertions, 9 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index eae0f89c..10d5b92b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -73,6 +73,7 @@ SET( rekonq_KDEINIT_SRCS      urlbar/urlresolver.cpp      urlbar/listitem.cpp      urlbar/rsswidget.cpp +    urlbar/sslwidget.cpp      urlbar/bookmarkwidget.cpp      urlbar/webshortcutwidget.cpp      #---------------------------------------- diff --git a/src/urlbar/sslwidget.cpp b/src/urlbar/sslwidget.cpp new file mode 100644 index 00000000..99e778c3 --- /dev/null +++ b/src/urlbar/sslwidget.cpp @@ -0,0 +1,137 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2011 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program.  If not, see <http://www.gnu.org/licenses/>. +* +* ============================================================ */ + + +// Auto Includes +#include "sslwidget.h" +#include "sslwidget.moc" + +// Local includes +#include "application.h" +#include "iconmanager.h" +#include "mainwindow.h" +#include "webtab.h" + +// KDE Includes + +// Qt Includes +#include <QtGui/QDialogButtonBox> +#include <QtGui/QFormLayout> +#include <QtGui/QLabel> +#include <QtGui/QPushButton> + + +SSLWidget::SSLWidget(const QUrl &url, const WebSslInfo &info, QWidget *parent) +    : QMenu(parent) +{ +    setAttribute(Qt::WA_DeleteOnClose); +    setMinimumWidth(500); + +    QFormLayout *layout = new QFormLayout(this); + +    QLabel *l; +     +    // Title +    QLabel *title = new QLabel(this); +    title->setText( QL1S("<h4>") + url.toString() + QL1S("</h4>") ); +    title->setAlignment(Qt::AlignCenter); +    layout->addRow(title); + +    QLabel *u = new QLabel(this); +    u->setText( info.url().toString() ); +    layout->addRow(u); +     +    QLabel *hAdd = new QLabel(this); +    hAdd->setText( QL1S("Peer Address: ") + info.peerAddress().toString() ); +    layout->addRow(hAdd); + +    QLabel *pAdd = new QLabel(this); +    pAdd->setText( QL1S("Parent Address: ") + info.parentAddress().toString() ); +    layout->addRow(pAdd); + +    QLabel *cip = new QLabel(this); +    cip->setText( QL1S("Cipher: ") + info.ciphers() ); +    layout->addRow(cip); + +    QLabel *pr = new QLabel(this); +    pr->setText( QL1S("Protocol: ") + info.protocol() ); +    layout->addRow(pr); + +    QLabel *epr = new QLabel(this); +    epr->setText( QL1S("CA errors: ") + info.certificateErrors() ); +    layout->addRow(epr); + +    QList<QSslCertificate> caList = info.certificateChain(); +    Q_FOREACH(const QSslCertificate &cert, caList) +    { +        QLabel *a = new QLabel(this); +        a->setText( QL1S("ORGANIZATION: ") + cert.issuerInfo(QSslCertificate::Organization) ); +        layout->addRow(a); +         +        QLabel *b = new QLabel(this); +        b->setText( QL1S("CN: ") + cert.issuerInfo(QSslCertificate::CommonName) ); +        layout->addRow(b); +         +        QLabel *c = new QLabel(this); +        c->setText( QL1S("LOCALITY NAME: ") + cert.issuerInfo(QSslCertificate::LocalityName) ); +        layout->addRow(c); +         +        QLabel *d = new QLabel(this); +        d->setText( QL1S("ORGANIZATION UNIT NAME: ") + cert.issuerInfo(QSslCertificate::OrganizationalUnitName) ); +        layout->addRow(d); +         +        QLabel *e = new QLabel(this); +        e->setText( QL1S("COUNTRY NAME: ") + cert.issuerInfo(QSslCertificate::CountryName) ); +        layout->addRow(e); +         +        QLabel *f = new QLabel(this); +        f->setText( QL1S("STATE OR PROVINCE NAME: ") + cert.issuerInfo(QSslCertificate::StateOrProvinceName) ); +        layout->addRow(f); +    } + +// ---------------------------------------------------------------- +    l = new QLabel(this); +    l->setText( QL1S("<h4>") + i18n("Site Information") + QL1S("</h4>") ); +    layout->addRow(l); +     +    setLayout(layout); +} + + +void SSLWidget::showAt(const QPoint &pos) +{ +    adjustSize(); + +    QPoint p(pos.x() - width(), pos.y() + 10); +    move(p); +    show(); +} + + +void SSLWidget::accept() +{ + +    close(); +} diff --git a/src/urlbar/sslwidget.h b/src/urlbar/sslwidget.h new file mode 100644 index 00000000..4e36d364 --- /dev/null +++ b/src/urlbar/sslwidget.h @@ -0,0 +1,52 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2011 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program.  If not, see <http://www.gnu.org/licenses/>. +* +* ============================================================ */ + + +#ifndef SSL_WIDGET_H +#define SSL_WIDGET_H + + +// Local Includes +#include "websslinfo.h" + +// Qt Includes +#include <QtGui/QMenu> +#include <QtCore/QUrl> + + +class SSLWidget : public QMenu +{ +    Q_OBJECT + +public: +    SSLWidget(const QUrl &url, const WebSslInfo &info, QWidget *parent = 0); + +    void showAt(const QPoint &pos); + +private Q_SLOTS: +    void accept(); +}; + +#endif // SSL_WIDGET_H diff --git a/src/webpage.cpp b/src/webpage.cpp index 328a4397..45c625e4 100644 --- a/src/webpage.cpp +++ b/src/webpage.cpp @@ -49,8 +49,7 @@  #include "urlbar.h"  #include "webpluginfactory.h"  #include "webtab.h" - -#include "sslinfodialog_p.h" +#include "sslwidget.h"  // KDE Includes  #include <KIO/Job> @@ -553,8 +552,13 @@ void WebPage::manageNetworkErrors(QNetworkReply *reply)      QWebFrame* frame = qobject_cast<QWebFrame *>(reply->request().originatingObject());      const bool isMainFrameRequest = (frame == mainFrame()); - -    if(isMainFrameRequest +    const bool isUrlFrameLoading = (_loadingUrl == frame->url()); +    kDebug() << "FRAME URL : " << frame->url(); +    kDebug() << "IS MAIN FRAME? " << isMainFrameRequest; +    kDebug() << "LOADING URL: " << _loadingUrl; +    kDebug() << "IS URL FRAME LOADING " << isUrlFrameLoading; +     +    if (isMainFrameRequest              && _sslInfo.isValid()              && !domainSchemeMatch(reply->url(), _sslInfo.url())        ) @@ -571,6 +575,8 @@ void WebPage::manageNetworkErrors(QNetworkReply *reply)      case QNetworkReply::NoError:                             // no error. Simple :)          if(isMainFrameRequest && !_sslInfo.isValid())          { +            kDebug() << " ---------------------------- "; +            kDebug() << "Setting SSL INFOS per URL = " << reply->url();              // Obtain and set the SSL information if any...              _sslInfo.restoreFrom(reply->attribute(static_cast<QNetworkRequest::Attribute>(KIO::AccessManager::MetaData)), reply->url());              _sslInfo.setUrl(reply->url()); @@ -723,8 +729,9 @@ void WebPage::downloadAllContentsWithKGet(QPoint)  } -void WebPage::showSSLInfo(QPoint) +void WebPage::showSSLInfo(QPoint pos)  { +<<<<<<< HEAD      if(_sslInfo.isValid())      {          QPointer<KSslInfoDialog> dlg = new KSslInfoDialog(view()); @@ -745,11 +752,31 @@ void WebPage::showSSLInfo(QPoint)      }      if(mainFrame()->url().scheme() == QL1S("https")) +======= +//     if (_sslInfo.isValid()) +//     { +//         QPointer<KSslInfoDialog> dlg = new KSslInfoDialog(view()); +//         dlg->setSslInfo(_sslInfo.certificateChain(), +//                         _sslInfo.peerAddress().toString(), +//                         mainFrame()->url().host(), +//                         _sslInfo.protocol(), +//                         _sslInfo.ciphers(), +//                         _sslInfo.usedChiperBits(), +//                         _sslInfo.supportedChiperBits(), +//                         KSslInfoDialog::errorsFromString(_sslInfo.certificateErrors()) +//                        ); +//  +//         dlg->exec(); +//         delete dlg; +//  +//         return; +//     } +//  +    if (mainFrame()->url().scheme() == QL1S("https")) +>>>>>>> Added SSL Widget, first version      { -        KMessageBox::error(view(), -                           i18n("The SSL information for this site appears to be corrupt."), -                           i18nc("Secure Sockets Layer", "SSL") -                          ); +        SSLWidget *widget = new SSLWidget(mainFrame()->url(), _sslInfo, view()); +        widget->showAt(pos);          }      else      {  | 
