File indexing completed on 2025-05-04 04:59:33

0001 /*
0002    SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "checkphishingurlgui.h"
0008 
0009 #include <QApplication>
0010 #include <QLabel>
0011 #include <QLineEdit>
0012 #include <QPlainTextEdit>
0013 #include <QPushButton>
0014 #include <QStandardPaths>
0015 #include <QVBoxLayout>
0016 
0017 extern WEBENGINEVIEWER_EXPORT bool webengineview_useCompactJson;
0018 
0019 CheckPhishingUrlGui::CheckPhishingUrlGui(QWidget *parent)
0020     : QWidget(parent)
0021 {
0022     webengineview_useCompactJson = false;
0023     auto layout = new QVBoxLayout(this);
0024 
0025     auto checkUrlLayout = new QHBoxLayout;
0026     layout->addLayout(checkUrlLayout);
0027     auto lab = new QLabel(QStringLiteral("Url to Check:"), this);
0028     checkUrlLayout->addWidget(lab);
0029     mCheckUrlLineEdit = new QLineEdit(this);
0030     checkUrlLayout->addWidget(mCheckUrlLineEdit);
0031     auto button = new QPushButton(QStringLiteral("Check"), this);
0032     checkUrlLayout->addWidget(button);
0033     connect(button, &QPushButton::clicked, this, &CheckPhishingUrlGui::slotCheckUrl);
0034     connect(mCheckUrlLineEdit, &QLineEdit::returnPressed, this, &CheckPhishingUrlGui::slotCheckUrl);
0035 
0036     mResult = new QPlainTextEdit(this);
0037     mResult->setReadOnly(true);
0038     layout->addWidget(mResult);
0039 
0040     mJson = new QPlainTextEdit(this);
0041     mJson->setReadOnly(true);
0042     layout->addWidget(mJson);
0043 }
0044 
0045 CheckPhishingUrlGui::~CheckPhishingUrlGui() = default;
0046 
0047 void CheckPhishingUrlGui::slotCheckUrl()
0048 {
0049     const QString urlStr = mCheckUrlLineEdit->text().trimmed();
0050     if (urlStr.isEmpty()) {
0051         return;
0052     }
0053     mResult->clear();
0054 
0055     auto job = new WebEngineViewer::CheckPhishingUrlJob(this);
0056     connect(job, &WebEngineViewer::CheckPhishingUrlJob::result, this, &CheckPhishingUrlGui::slotGetResult);
0057     connect(job, &WebEngineViewer::CheckPhishingUrlJob::debugJson, this, &CheckPhishingUrlGui::slotJSonDebug);
0058     job->setUrl(QUrl::fromUserInput(urlStr));
0059     job->start();
0060 }
0061 
0062 void CheckPhishingUrlGui::slotJSonDebug(const QByteArray &debug)
0063 {
0064     mJson->setPlainText(QString::fromLatin1(debug));
0065 }
0066 
0067 void CheckPhishingUrlGui::slotGetResult(WebEngineViewer::CheckPhishingUrlUtil::UrlStatus result, const QUrl &url, uint verifyCacheAfterThisTime)
0068 {
0069     QString resultStr;
0070     switch (result) {
0071     case WebEngineViewer::CheckPhishingUrlUtil::Ok:
0072         resultStr = QStringLiteral("Url ok");
0073         break;
0074     case WebEngineViewer::CheckPhishingUrlUtil::MalWare:
0075         resultStr = QStringLiteral("Url MalWare");
0076         break;
0077     case WebEngineViewer::CheckPhishingUrlUtil::Unknown:
0078         resultStr = QStringLiteral("Url Unknown state");
0079         break;
0080     case WebEngineViewer::CheckPhishingUrlUtil::BrokenNetwork:
0081         resultStr = QStringLiteral("Broken Network");
0082         break;
0083     case WebEngineViewer::CheckPhishingUrlUtil::InvalidUrl:
0084         resultStr = QStringLiteral("Invalid Url");
0085         break;
0086     }
0087     const QString str = QStringLiteral("\nurl: %1, verifyCacheAfterThisTime: %2").arg(url.toDisplayString()).arg(verifyCacheAfterThisTime);
0088     mResult->setPlainText(resultStr + str);
0089 }
0090 
0091 int main(int argc, char **argv)
0092 {
0093     QApplication app(argc, argv);
0094     QStandardPaths::setTestModeEnabled(true);
0095     auto w = new CheckPhishingUrlGui;
0096 
0097     w->show();
0098     app.exec();
0099     delete w;
0100     return 0;
0101 }
0102 
0103 #include "moc_checkphishingurlgui.cpp"