From 352685c36bd7df32c690519135fee3fc5ffb9334 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 15 Mar 2019 15:22:34 +0100 Subject: Maybe add new files? --- src/nam.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/nam.cpp (limited to 'src/nam.cpp') diff --git a/src/nam.cpp b/src/nam.cpp new file mode 100644 index 0000000..2f3fdd1 --- /dev/null +++ b/src/nam.cpp @@ -0,0 +1,42 @@ +#include "nam.h" + +#include +#include + +SlxDisabledNetworkReply::SlxDisabledNetworkReply(QObject *parent, const QNetworkRequest &req, + QNetworkAccessManager::Operation op) + : QNetworkReply(parent) +{ + setRequest(req); + setUrl(req.url()); + setOperation(op); + setFinished(true); + qRegisterMetaType(); + 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 { + ok = (_list.match(url.toDisplayString(QUrl::NormalizePathSegments)).hasMatch() == _isWhitelist); + } + if (!ok) { + return new SlxDisabledNetworkReply(this, req, op); + } + return QNetworkAccessManager::createRequest(op, req, outgoingData); +} -- cgit v1.2.3-55-g7522