From 863da92c57a5d6245bac3885936f59da88041e75 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Wed, 24 May 2017 15:29:25 +0200 Subject: Improved filter rules --- src/blocker/blockersubscription.cpp | 104 ------------------------------------ 1 file changed, 104 deletions(-) delete mode 100644 src/blocker/blockersubscription.cpp (limited to 'src/blocker/blockersubscription.cpp') diff --git a/src/blocker/blockersubscription.cpp b/src/blocker/blockersubscription.cpp deleted file mode 100644 index c452511..0000000 --- a/src/blocker/blockersubscription.cpp +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************* - ** - ** smolbote: yet another qute browser - ** Copyright (C) 2017 Xian Nox - ** - ** This program is free software: you can redistribute it and/or modify - ** it under the terms of the GNU General Public License as published by - ** the Free Software Foundation, either version 3 of the License, or - ** (at your option) any later version. - ** - ** This program is distributed in the hope that it will be useful, - ** but WITHOUT ANY WARRANTY; without even the implied warranty of - ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - ** GNU General Public License for more details. - ** - ** You should have received a copy of the GNU General Public License - ** along with this program. If not, see . - ** - ******************************************************************************/ - -#include "blockersubscription.h" -#include "ui_subscriptionform.h" - -#include "browser.h" -#include -#include - -#include -#include -#include - -FilterCollection::FilterCollection(const QString path, QWidget *parent) : - QWidget(parent), - ui(new Ui::SubscriptionForm) -{ - ui->setupUi(this); - - m_name = "TODO"; - m_path = path; - - qDebug("Adding subscription [%s]", qUtf8Printable(m_path)); - - - QFile filterFile(m_path); - if(!filterFile.open(QIODevice::ReadOnly)) { - qWarning("Could not open filter!"); - return; - } - - QJsonDocument filters(QJsonDocument::fromJson(filterFile.readAll())); - load(filters.object()); - - qDebug("Added %i rules", m_rules.size()); -} - -FilterCollection::~FilterCollection() -{ - delete ui; -} - -QString FilterCollection::name() const -{ - return m_name; -} - -/** - * Check if a URL request should be blocked or not - * @param info - * @return true if it should be blocked; false otherwise - */ -FilterCollection::MatchResult FilterCollection::match(QWebEngineUrlRequestInfo &info) -{ - MatchResult result; - - for(auto rule : qAsConst(m_rules)) { - result.match = true; - result.block = rule->match(info); - result.pattern = rule->filter(); - return result; - } - - // request matches neither whitelist nor blacklist - result.match = false; - result.block = false; - return result; -} - -void FilterCollection::load(const QJsonObject &json) -{ - for(QJsonValue v : json["rules"].toArray()) { - m_rules.append(createRule(v.toObject())); - } -} - -BlockerRule* FilterCollection::createRule(const QJsonObject &obj) -{ - BlockerRule *rule; - - BlockerRule::NavigationType n; - BlockerRule::ResourceType r; - rule = new BlockerRule(RegExp(obj["firstPartyUrl"].toString()), RegExp(obj["requestUrl"].toString()), n, r, obj["shouldBlock"].toBool(), this); - - return rule; -} -- cgit v1.2.1