diff options
Diffstat (limited to 'src/nam.cpp')
| -rw-r--r-- | src/nam.cpp | 70 |
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); + } } |
