diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml index 27d94511c..5a11f9741 100644 --- a/resources/desktop/com.github.rssguard.appdata.xml +++ b/resources/desktop/com.github.rssguard.appdata.xml @@ -30,7 +30,7 @@ https://martinrotter.github.io/donate/ - + none diff --git a/resources/scripts/github-actions/build-windows.ps1 b/resources/scripts/github-actions/build-windows.ps1 index e718ab761..7efccbf6a 100755 --- a/resources/scripts/github-actions/build-windows.ps1 +++ b/resources/scripts/github-actions/build-windows.ps1 @@ -23,7 +23,7 @@ $qt_version = "5.15.2" $qt_link = "https://github.com/qt/qtbase/archive/$qt_version.zip" $qt_output = "qt.zip" -$maria_version = "10.5.8" +$maria_version = "10.5.9" $maria_link = "https://downloads.mariadb.org/f/mariadb-$maria_version/winx64-packages/mariadb-$maria_version-winx64.zip/from/https%3A//mirror.vpsfree.cz/mariadb/?serve" $maria_output = "maria.zip" diff --git a/src/librssguard/network-web/adblock/adblockmanager.cpp b/src/librssguard/network-web/adblock/adblockmanager.cpp index 29619761c..af3f75450 100644 --- a/src/librssguard/network-web/adblock/adblockmanager.cpp +++ b/src/librssguard/network-web/adblock/adblockmanager.cpp @@ -58,8 +58,9 @@ BlockingResult AdBlockManager::block(const AdblockRequestInfo& request) const { } catch (const ApplicationException& ex) { qCriticalNN << LOGSEC_ADBLOCK - << "HTTP error when calling server:" + << "HTTP error when calling server for blocking rules:" << QUOTE_W_SPACE_DOT(ex.message()); + return { false }; } } else { @@ -105,8 +106,22 @@ bool AdBlockManager::canRunOnScheme(const QString& scheme) const { } QString AdBlockManager::elementHidingRulesForDomain(const QUrl& url) const { - // TODO: call service for cosmetic rules. - return {}; + if (m_serverProcess->state() == QProcess::ProcessState::Running) { + try { + auto result = askServerForCosmeticRules(url.toString()); + + return result; + } + catch (const ApplicationException& ex) { + qCriticalNN << LOGSEC_ADBLOCK + << "HTTP error when calling server for cosmetic rules:" + << QUOTE_W_SPACE_DOT(ex.message()); + return {}; + } + } + else { + return {}; + } } QStringList AdBlockManager::filterLists() const { @@ -168,7 +183,7 @@ BlockingResult AdBlockManager::askServerIfBlocked(const QString& url) const { if (network_res.first == QNetworkReply::NetworkError::NoError) { qDebugNN << LOGSEC_ADBLOCK - << "Query to server took " + << "Query for blocking info to server took " << tmr.elapsed() << " ms."; @@ -187,6 +202,41 @@ BlockingResult AdBlockManager::askServerIfBlocked(const QString& url) const { } } +QString AdBlockManager::askServerForCosmeticRules(const QString& url) const { + QJsonObject req_obj; + QByteArray out; + QElapsedTimer tmr; + + req_obj["url"] = url; + req_obj["cosmetic"] = true; + + tmr.start(); + + auto network_res = NetworkFactory::performNetworkOperation(QSL("http://%1:%2").arg(QHostAddress(QHostAddress::SpecialAddress::LocalHost).toString(), + ADBLOCK_SERVER_PORT), + 500, + QJsonDocument(req_obj).toJson(), + out, + QNetworkAccessManager::Operation::PostOperation, + { { + QSL(HTTP_HEADERS_CONTENT_TYPE).toLocal8Bit(), + QSL("application/json").toLocal8Bit() } }); + + if (network_res.first == QNetworkReply::NetworkError::NoError) { + qDebugNN << LOGSEC_ADBLOCK + << "Query for cosmetic rules to server took " + << tmr.elapsed() + << " ms."; + + QJsonObject out_obj = QJsonDocument::fromJson(out).object(); + + return out_obj["cosmetic"].toObject()["styles"].toString(); + } + else { + throw NetworkException(network_res.first); + } +} + void AdBlockManager::restartServer() { if (m_serverProcess->state() == QProcess::ProcessState::Running) { m_serverProcess->kill(); diff --git a/src/librssguard/network-web/adblock/adblockmanager.h b/src/librssguard/network-web/adblock/adblockmanager.h index 161fd8a41..b7859d4ef 100644 --- a/src/librssguard/network-web/adblock/adblockmanager.h +++ b/src/librssguard/network-web/adblock/adblockmanager.h @@ -59,6 +59,7 @@ class AdBlockManager : public QObject { private: BlockingResult askServerIfBlocked(const QString& url) const; + QString askServerForCosmeticRules(const QString& url) const; void restartServer(); diff --git a/src/librssguard/network-web/webpage.cpp b/src/librssguard/network-web/webpage.cpp index 059695512..4202604b0 100644 --- a/src/librssguard/network-web/webpage.cpp +++ b/src/librssguard/network-web/webpage.cpp @@ -38,7 +38,7 @@ void WebPage::hideUnwantedElements() { auto js = qApp->web()->adBlock()->generateJsForElementHiding(css); runJavaScript(js); - qDebugNN << LOGSEC_JS << "Running domain-specific JS for element hiding rules."; + qDebugNN << LOGSEC_ADBLOCK << "Running domain-specific JS for element hiding rules."; } }