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"