From 9089047b0f5fac8a394ef0b4c8822ce5c7483212 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sat, 5 Aug 2017 15:05:22 +0200 Subject: Changed the filter format --- src/filter/filtercollection.cpp | 44 ++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 23 deletions(-) (limited to 'src/filter/filtercollection.cpp') diff --git a/src/filter/filtercollection.cpp b/src/filter/filtercollection.cpp index 7b07606..4c2bfce 100644 --- a/src/filter/filtercollection.cpp +++ b/src/filter/filtercollection.cpp @@ -74,27 +74,21 @@ QString FilterCollection::name() const * @param info * @return true if it should be blocked; false otherwise */ -FilterCollection::MatchResult FilterCollection::match(QWebEngineUrlRequestInfo &info) +bool FilterCollection::match(QWebEngineUrlRequestInfo &info) { - MatchResult result; - - for(Filter *rule : m_filters->filters(info.firstPartyUrl().toString())) { - if(rule->isValid()) { - result.match = rule->hasMatch(info); - if(result.match) { - result.block = rule->shouldBlock(info); - } else { - result.block = false; + for(QString domain : m_filterlist.keys()) { + if(domain.isEmpty() || info.firstPartyUrl().toString().contains(domain)) { + // domain matched + + for(QString rule : m_filterlist.value(domain).keys()) { + if(rule.isEmpty() || info.requestUrl().toString().contains(rule)) { + return m_filterlist.value(domain).value(rule); + } } - result.pattern = rule->domain() + " | " + rule->request(); - return result; } } - // request matches neither whitelist nor blacklist - result.match = false; - result.block = false; - return result; + return false; } /** @@ -108,18 +102,22 @@ int FilterCollection::load(const QJsonObject &json) ui->title->setText(json["name"].toString()); ui->homepage->setText(json["url"].toString()); - for(QJsonValue v : json["rules"].toArray()) { + QJsonObject rules = json["rules"].toObject(); + for(QString key : rules.keys()) { ++number; + qDebug("+ '%s'", qUtf8Printable(key)); - QJsonObject obj = v.toObject(); + QJsonObject domain = rules.value(key).toObject(); + QHash d; - Filter::ResourceRules r; - r.allowed = parseJsonRules(obj["allowTypes"]); - r.blocked = parseJsonRules(obj["blockTypes"]); + for(QString r : domain.keys()) { + d.insert(r, domain.value(r).toBool()); + qDebug("|-'%s': %i", qUtf8Printable(r), domain.value(r).toBool()); + } - m_filters->addFilter(obj["firstPartyUrl"].toString(), obj["requestUrl"].toString(), r, obj["shouldBlock"].toBool()); - } + m_filterlist.insert(key, d); + } return number; } -- cgit v1.2.1