summaryrefslogtreecommitdiffstats
path: root/src/nam.cpp
diff options
context:
space:
mode:
authorSimon Rettberg2025-11-13 13:48:37 +0100
committerSimon Rettberg2025-11-13 14:00:03 +0100
commit2c3b026349349729141ca46bd9d292327da2dfe2 (patch)
treeaf0650430c311a319bda68c89b4fd39036a9ec2c /src/nam.cpp
parentFix: error page not showing HTTP error codes, but "Unknown Error" (diff)
downloadslxbrowser-2c3b026349349729141ca46bd9d292327da2dfe2.tar.gz
slxbrowser-2c3b026349349729141ca46bd9d292327da2dfe2.tar.xz
slxbrowser-2c3b026349349729141ca46bd9d292327da2dfe2.zip
Port to QtWebEngine (thx Junie), bump to C++20HEADmaster
Diffstat (limited to 'src/nam.cpp')
-rw-r--r--src/nam.cpp70
1 files changed, 27 insertions, 43 deletions
diff --git a/src/nam.cpp b/src/nam.cpp
index 798a8e6..3f2c252 100644
--- a/src/nam.cpp
+++ b/src/nam.cpp
@@ -1,49 +1,33 @@
#include "nam.h"
-#include <QCoreApplication>
#include <QDebug>
-SlxDisabledNetworkReply::SlxDisabledNetworkReply(QObject *parent, const QNetworkRequest &req,
- QNetworkAccessManager::Operation op)
- : QNetworkReply(parent)
+void SlxRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info)
{
- setRequest(req);
- setUrl(req.url());
- setOperation(op);
- setFinished(true);
- qRegisterMetaType<QNetworkReply::NetworkError>();
- QString msg = QCoreApplication::translate("QNetworkAccessManager",
- "Network access is disabled.");
- setError(UnknownNetworkError, msg);
- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
- Q_ARG(QNetworkReply::NetworkError, UnknownNetworkError));
- QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection);
-}
-
-QNetworkReply* SlxNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op,
- const QNetworkRequest &req, QIODevice *outgoingData)
-{
- const QUrl url(req.url());
- //qDebug() << url;
- bool ok;
- if (url.isLocalFile()) {
- ok = true;
- } else if (url.scheme() == QLatin1String("qrc") || url.scheme() == QLatin1String("data")) {
- ok = true;
- } else if (url.host().isEmpty()) {
- ok = true;
- } else {
- auto str = url.toDisplayString(QUrl::NormalizePathSegments);
- if (_white.isValid() && _white.match(str).hasMatch()) {
- ok = true;
- } else if (_black.isValid() && _black.match(str).hasMatch()) {
- ok = false;
- } else {
- ok = true;
- }
- }
- if (!ok) {
- return new SlxDisabledNetworkReply(this, req, op);
- }
- return QNetworkAccessManager::createRequest(op, req, outgoingData);
+ const QUrl url = info.requestUrl();
+ bool ok = true;
+ if (url.isLocalFile()) {
+ ok = true;
+ } else if (url.scheme() == QLatin1String("qrc") || url.scheme() == QLatin1String("data")) {
+ ok = true;
+ } else if (url.host().isEmpty()) {
+ ok = true;
+ } else if (!url.isValid()) {
+ ok = false;
+ } else {
+ auto str = url.toDisplayString(QUrl::NormalizePathSegments);
+ if (_white.isValid() && _white.match(str).hasMatch()) {
+ ok = true;
+ } else if (_black.isValid() && _black.match(str).hasMatch()) {
+ ok = false;
+ } else {
+ ok = true;
+ }
+ }
+ if (!ok) {
+ info.block(true);
+ emit urlBlocked(url);
+ } else if (!QUrl::fromUserInput(url.toString()).isValid()) {
+ emit unsupportedScheme(url);
+ }
}