diff --git a/src/librssguard/gui/litehtml/litehtmlviewer.cpp b/src/librssguard/gui/litehtml/litehtmlviewer.cpp index 72fe8627f..b0bdc0ec5 100755 --- a/src/librssguard/gui/litehtml/litehtmlviewer.cpp +++ b/src/librssguard/gui/litehtml/litehtmlviewer.cpp @@ -6,23 +6,17 @@ #include "gui/webbrowser.h" #include "miscellaneous/application.h" #include "miscellaneous/skinfactory.h" +#include "network-web/adblock/adblockmanager.h" +#include "network-web/adblock/adblockrequestinfo.h" #include "network-web/networkfactory.h" +#include "network-web/webfactory.h" #include #include LiteHtmlViewer::LiteHtmlViewer(QWidget* parent) : QLiteHtmlWidget(parent) { setResourceHandler([this](const QUrl& url) { - QByteArray output; - - NetworkFactory::performNetworkOperation( - url.toString(), - 5000, - {}, - output, - QNetworkAccessManager::Operation::GetOperation); - - return output; + return handleResource(url); }); } @@ -204,3 +198,31 @@ void LiteHtmlViewer::wheelEvent(QWheelEvent* event) { QLiteHtmlWidget::wheelEvent(event); } + +QByteArray LiteHtmlViewer::handleResource(const QUrl& url) { + AdblockRequestInfo block_request(url); + + if (url.path().endsWith(QSL("css"))) { + block_request.setResourceType(QSL("stylesheet")); + } + else { + block_request.setResourceType(QSL("image")); + } + + if (qApp->web()->adBlock()->block(block_request).m_blocked) { + qWarningNN << LOGSEC_ADBLOCK << "Blocked request:" << QUOTE_W_SPACE_DOT(block_request.requestUrl().toString()); + return {}; + } + else { + QByteArray output; + + NetworkFactory::performNetworkOperation( + url.toString(), + 5000, + {}, + output, + QNetworkAccessManager::Operation::GetOperation); + + return output; + } +} diff --git a/src/librssguard/gui/litehtml/litehtmlviewer.h b/src/librssguard/gui/litehtml/litehtmlviewer.h index 22640f5f4..8736be1d2 100755 --- a/src/librssguard/gui/litehtml/litehtmlviewer.h +++ b/src/librssguard/gui/litehtml/litehtmlviewer.h @@ -38,6 +38,9 @@ class LiteHtmlViewer : public QLiteHtmlWidget, public WebViewer { protected: virtual void wheelEvent(QWheelEvent* event); + + private: + QByteArray handleResource(const QUrl& url); }; #endif // LITEHTMLVIEWER_H diff --git a/src/librssguard/miscellaneous/nodejs.cpp b/src/librssguard/miscellaneous/nodejs.cpp index 7785f8ef5..e025ffd8a 100644 --- a/src/librssguard/miscellaneous/nodejs.cpp +++ b/src/librssguard/miscellaneous/nodejs.cpp @@ -9,6 +9,7 @@ #include "miscellaneous/settings.h" #include +#include #include #include #include @@ -58,6 +59,15 @@ QString NodeJs::processedPackageFolder() const { qCriticalNN << LOGSEC_NODEJS << "Failed to create package folder structure" << QUOTE_W_SPACE_DOT(path); } + if (!QDir(path).exists(QSL("package.json"))) { + QFile fl(path + QDir::separator() + QSL("package.json")); + + fl.open(QIODevice::OpenModeFlag::WriteOnly); + fl.write(QString("{}").toUtf8()); + fl.flush(); + fl.close(); + } + return QDir::toNativeSeparators(path); } @@ -80,7 +90,9 @@ QString NodeJs::npmVersion(const QString& npm_exe) const { NodeJs::PackageStatus NodeJs::packageStatus(const PackageMetadata& pkg) const { QString npm_ls = IOFactory::startProcessGetOutput(npmExecutable(), { QSL("ls"), QSL("--unicode"), QSL("--json"), QSL("--prefix"), - processedPackageFolder() }); + processedPackageFolder() }, + {}, + processedPackageFolder()); QJsonDocument json = QJsonDocument::fromJson(npm_ls.toUtf8()); QJsonObject deps = json.object()["dependencies"].toObject(); @@ -180,10 +192,11 @@ void NodeJs::installPackages(const QList& pkgs) { to_install.prepend(QSL("--production")); to_install.prepend(QSL("install")); - to_install.append(QSL("--prefix")); - to_install.append(processedPackageFolder()); - IOFactory::startProcess(proc, npmExecutable(), to_install); + //to_install.append(QSL("--prefix")); + //to_install.append(processedPackageFolder()); + + IOFactory::startProcess(proc, npmExecutable(), to_install, {}, processedPackageFolder()); } catch (const ProcessException& ex) { qCriticalNN << LOGSEC_NODEJS << "Packages" << QUOTE_W_SPACE(to_install) diff --git a/src/librssguard/network-web/adblock/adblockrequestinfo.cpp b/src/librssguard/network-web/adblock/adblockrequestinfo.cpp index 53b860d18..33c3dd0d9 100644 --- a/src/librssguard/network-web/adblock/adblockrequestinfo.cpp +++ b/src/librssguard/network-web/adblock/adblockrequestinfo.cpp @@ -103,6 +103,6 @@ void AdblockRequestInfo::initialize(const QUrl& url) { #if defined(USE_WEBENGINE) setResourceType(convertResourceType(QWebEngineUrlRequestInfo::ResourceType::ResourceTypeMainFrame)); #else - setResourceType(QSL("image")); + setResourceType(QSL("main_frame")); #endif }