diff options
Diffstat (limited to 'src/blocker/blockersubscription.cpp')
-rw-r--r-- | src/blocker/blockersubscription.cpp | 104 |
1 files changed, 0 insertions, 104 deletions
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 <http://www.gnu.org/licenses/>. - ** - ******************************************************************************/ - -#include "blockersubscription.h" -#include "ui_subscriptionform.h" - -#include "browser.h" -#include <QNetworkRequest> -#include <QNetworkReply> - -#include <QJsonDocument> -#include <QJsonObject> -#include <QJsonArray> - -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; -} |