summaryrefslogtreecommitdiffstats
path: root/src/nam.cpp
diff options
context:
space:
mode:
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);
+ }
}