summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Diamantini <adjam7@gmail.com>2011-07-05 00:35:41 +0200
committerAndrea Diamantini <adjam7@gmail.com>2011-07-18 11:32:09 +0200
commit133b8a7106b716937e24c7b47306ff8ac02efd6b (patch)
tree90551bc2d644ce3e8318dfbbd9df842a3d910810
parentBetter notify SSL infos (diff)
downloadrekonq-133b8a7106b716937e24c7b47306ff8ac02efd6b.tar.xz
Added SSL Widget, first version
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/urlbar/sslwidget.cpp137
-rw-r--r--src/urlbar/sslwidget.h52
-rw-r--r--src/webpage.cpp45
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
{