From 21dfb5ffe8352c55bdb2899c5885dae4fd2e61b0 Mon Sep 17 00:00:00 2001 From: Simon Zolin <s.zolin@adguard.com> Date: Fri, 3 Jul 2020 12:21:09 +0300 Subject: [PATCH] * querylog: case-insensitive search by domain name Close #1828 Squashed commit of the following: commit 347aff1f8c5293bd06ecc0693970fe447b6e2c75 Merge: f07c8dc0 9df7aba9 Author: Simon Zolin <s.zolin@adguard.com> Date: Fri Jul 3 12:10:02 2020 +0300 Merge remote-tracking branch 'origin/master' into 1828-qlog-case-insens commit f07c8dc0665585ce00c415293c47c5a8c9724881 Author: Simon Zolin <s.zolin@adguard.com> Date: Fri Jul 3 12:09:49 2020 +0300 minor commit 512c7acd48f649a0d11b4fef66a1351fcd19635b Author: Simon Zolin <s.zolin@adguard.com> Date: Thu Jul 2 19:01:43 2020 +0300 minor commit 9f5700af56340c38a2d892101e32959702816205 Author: Simon Zolin <s.zolin@adguard.com> Date: Thu Jul 2 16:53:56 2020 +0300 * querylog: case-insensitive search by domain name --- querylog/qlog_test.go | 4 ++-- querylog/search_criteria.go | 12 ++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/querylog/qlog_test.go b/querylog/qlog_test.go index c087fa4d..c4f34e75 100644 --- a/querylog/qlog_test.go +++ b/querylog/qlog_test.go @@ -59,7 +59,7 @@ func TestQueryLog(t *testing.T) { params.searchCriteria = append(params.searchCriteria, searchCriteria{ criteriaType: ctDomainOrClient, strict: true, - value: "test.example.org", + value: "TEST.example.org", }) entries, _ = l.search(params) assert.Equal(t, 1, len(entries)) @@ -70,7 +70,7 @@ func TestQueryLog(t *testing.T) { params.searchCriteria = append(params.searchCriteria, searchCriteria{ criteriaType: ctDomainOrClient, strict: false, - value: "example.org", + value: "example.ORG", }) entries, _ = l.search(params) assert.Equal(t, 3, len(entries)) diff --git a/querylog/search_criteria.go b/querylog/search_criteria.go index 3c1ee0de..382cd9bc 100644 --- a/querylog/search_criteria.go +++ b/querylog/search_criteria.go @@ -62,11 +62,13 @@ func (c *searchCriteria) quickMatchJSONValue(line string, propertyName string) b if len(val) == 0 { return false } + val = strings.ToLower(val) + searchVal := strings.ToLower(c.value) - if c.strict && c.value == val { + if c.strict && searchVal == val { return true } - if !c.strict && strings.Contains(val, c.value) { + if !c.strict && strings.Contains(val, searchVal) { return true } @@ -78,10 +80,12 @@ func (c *searchCriteria) quickMatchJSONValue(line string, propertyName string) b func (c *searchCriteria) match(entry *logEntry) bool { switch c.criteriaType { case ctDomainOrClient: - if c.strict && entry.QHost == c.value { + qhost := strings.ToLower(entry.QHost) + searchVal := strings.ToLower(c.value) + if c.strict && qhost == searchVal { return true } - if !c.strict && strings.Contains(entry.QHost, c.value) { + if !c.strict && strings.Contains(qhost, searchVal) { return true }