mirror of
https://invent.kde.org/network/falkon.git
synced 2024-12-20 18:56:34 +01:00
Fixed small bug with domain matching
- accounts.youtube.com won't be matched by s.youtube.com anymore - fixes ||s.youtube.com^ AdBlock rule matching anything from https://accounts.youtube.com
This commit is contained in:
parent
575b211997
commit
b442492c27
@ -204,7 +204,7 @@ bool AdBlockRule::networkMatch(const QNetworkRequest &request, const QString &do
|
|||||||
bool matched = false;
|
bool matched = false;
|
||||||
|
|
||||||
if (m_useDomainMatch) {
|
if (m_useDomainMatch) {
|
||||||
matched = domain.endsWith(m_matchString);
|
matched = _matchDomain(domain, m_matchString);
|
||||||
}
|
}
|
||||||
else if (m_useEndsMatch) {
|
else if (m_useEndsMatch) {
|
||||||
matched = encodedUrl.endsWith(m_matchString, m_caseSensitivity);
|
matched = encodedUrl.endsWith(m_matchString, m_caseSensitivity);
|
||||||
@ -270,14 +270,14 @@ bool AdBlockRule::matchDomain(const QString &domain) const
|
|||||||
|
|
||||||
if (m_blockedDomains.isEmpty()) {
|
if (m_blockedDomains.isEmpty()) {
|
||||||
foreach(const QString & d, m_allowedDomains) {
|
foreach(const QString & d, m_allowedDomains) {
|
||||||
if (domain.endsWith(d)) {
|
if (_matchDomain(domain, d)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (m_allowedDomains.isEmpty()) {
|
else if (m_allowedDomains.isEmpty()) {
|
||||||
foreach(const QString & d, m_blockedDomains) {
|
foreach(const QString & d, m_blockedDomains) {
|
||||||
if (domain.endsWith(d)) {
|
if (_matchDomain(domain, d)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -285,13 +285,13 @@ bool AdBlockRule::matchDomain(const QString &domain) const
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
foreach(const QString & d, m_blockedDomains) {
|
foreach(const QString & d, m_blockedDomains) {
|
||||||
if (domain.endsWith(d)) {
|
if (_matchDomain(domain, d)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach(const QString & d, m_allowedDomains) {
|
foreach(const QString & d, m_allowedDomains) {
|
||||||
if (domain.endsWith(d)) {
|
if (_matchDomain(domain, d)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -520,3 +520,18 @@ void AdBlockRule::parseDomains(const QString &domains, const QChar &separator)
|
|||||||
|
|
||||||
m_domainRestricted = (!m_blockedDomains.isEmpty() || !m_allowedDomains.isEmpty());
|
m_domainRestricted = (!m_blockedDomains.isEmpty() || !m_allowedDomains.isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AdBlockRule::_matchDomain(const QString &domain, const QString &filter) const
|
||||||
|
{
|
||||||
|
if (!domain.endsWith(filter)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int index = domain.indexOf(filter);
|
||||||
|
|
||||||
|
if (index == 0 || filter[0] == '.') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return domain[index - 1] == '.';
|
||||||
|
}
|
||||||
|
@ -97,6 +97,8 @@ private:
|
|||||||
void parseFilter();
|
void parseFilter();
|
||||||
void parseDomains(const QString &domains, const QChar &separator);
|
void parseDomains(const QString &domains, const QChar &separator);
|
||||||
|
|
||||||
|
bool _matchDomain(const QString &domain, const QString &filter) const;
|
||||||
|
|
||||||
AdBlockSubscription* m_subscription;
|
AdBlockSubscription* m_subscription;
|
||||||
QString m_filter;
|
QString m_filter;
|
||||||
|
|
||||||
|
@ -25,7 +25,22 @@
|
|||||||
|
|
||||||
//#define COOKIE_DEBUG
|
//#define COOKIE_DEBUG
|
||||||
|
|
||||||
bool containsDomain(QString string, QString domain)
|
bool _matchDomain(const QString &domain, const QString &filter)
|
||||||
|
{
|
||||||
|
if (!domain.endsWith(filter)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int index = domain.indexOf(filter);
|
||||||
|
|
||||||
|
if (index == 0 || filter[0] == '.') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return domain[index - 1] == '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
bool containsDomain(QString string, const QString &domain)
|
||||||
{
|
{
|
||||||
if (string.isEmpty()) {
|
if (string.isEmpty()) {
|
||||||
// Some cookies have empty domain() ... bug?
|
// Some cookies have empty domain() ... bug?
|
||||||
@ -36,7 +51,7 @@ bool containsDomain(QString string, QString domain)
|
|||||||
string = string.mid(1);
|
string = string.mid(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return domain.endsWith(string);
|
return _matchDomain(domain, string);
|
||||||
}
|
}
|
||||||
|
|
||||||
int listContainsDomain(const QStringList &list, const QString &domain)
|
int listContainsDomain(const QStringList &list, const QString &domain)
|
||||||
@ -46,7 +61,7 @@ int listContainsDomain(const QStringList &list, const QString &domain)
|
|||||||
}
|
}
|
||||||
|
|
||||||
foreach(const QString & d, list) {
|
foreach(const QString & d, list) {
|
||||||
if (domain.endsWith(d)) {
|
if (_matchDomain(domain, d)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user