Pull request: 2508 ip conversion vol.1
Merge in DNS/adguard-home from 2508-ip-conversion to master Updates #2508. Squashed commit of the following: commit 3f64709fbc73ef74c11b910997be1e9bc337193c Merge: 5ac7faaaa0d67aa251Author: Eugene Burkov <e.burkov@adguard.com> Date: Wed Jan 13 16:21:34 2021 +0300 Merge branch 'master' into 2508-ip-conversion commit 5ac7faaaa9dda570fdb872acad5d13d078f46b64 Author: Eugene Burkov <e.burkov@adguard.com> Date: Wed Jan 13 12:00:11 2021 +0300 all: replace conditions with appropriate functions in tests commit 9e3fa9a115ed23024c57dd5192d5173477ddbf71 Merge: db992a42abba74859eAuthor: Eugene Burkov <e.burkov@adguard.com> Date: Wed Jan 13 10:47:10 2021 +0300 Merge branch 'master' into 2508-ip-conversion commit db992a42a2c6f315421e78a6a0492e2bfb3ce89d Author: Eugene Burkov <e.burkov@adguard.com> Date: Tue Jan 12 18:55:53 2021 +0300 sysutil: fix linux tests commit f629b15d62349323ce2da05e68dc9cc0b5f6e194 Author: Eugene Burkov <e.burkov@adguard.com> Date: Tue Jan 12 18:41:20 2021 +0300 all: improve code quality commit 3bf03a75524040738562298bd1de6db536af130f Author: Eugene Burkov <e.burkov@adguard.com> Date: Tue Jan 12 17:33:26 2021 +0300 sysutil: fix linux net.IP conversion commit 5d5b6994916923636e635588631b63b7e7b74e5f Author: Eugene Burkov <e.burkov@adguard.com> Date: Tue Jan 12 14:57:26 2021 +0300 dnsforward: remove redundant net.IP <-> string conversion commit 0b955d99b7fad40942f21d1dd8734adb99126195 Author: Eugene Burkov <e.burkov@adguard.com> Date: Mon Jan 11 18:04:25 2021 +0300 dhcpd: remove net.IP <-> string conversion
This commit is contained in:
@@ -4,7 +4,6 @@ import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"net"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/AdguardTeam/AdGuardHome/internal/testutil"
|
||||
@@ -135,7 +134,7 @@ func TestEtcHostsMatching(t *testing.T) {
|
||||
assert.True(t, res.IsFiltered)
|
||||
if assert.Len(t, res.Rules, 1) {
|
||||
assert.Equal(t, "0.0.0.0 block.com", res.Rules[0].Text)
|
||||
assert.Len(t, res.Rules[0].IP, 0)
|
||||
assert.Empty(t, res.Rules[0].IP)
|
||||
}
|
||||
|
||||
// IPv6
|
||||
@@ -147,7 +146,7 @@ func TestEtcHostsMatching(t *testing.T) {
|
||||
assert.True(t, res.IsFiltered)
|
||||
if assert.Len(t, res.Rules, 1) {
|
||||
assert.Equal(t, "::1 ipv6.com", res.Rules[0].Text)
|
||||
assert.Len(t, res.Rules[0].IP, 0)
|
||||
assert.Empty(t, res.Rules[0].IP)
|
||||
}
|
||||
|
||||
// 2 IPv4 (return only the first one)
|
||||
@@ -180,7 +179,7 @@ func TestSafeBrowsing(t *testing.T) {
|
||||
defer d.Close()
|
||||
d.checkMatch(t, "wmconvirus.narod.ru")
|
||||
|
||||
assert.True(t, strings.Contains(logOutput.String(), "SafeBrowsing lookup for wmconvirus.narod.ru"))
|
||||
assert.Contains(t, logOutput.String(), "SafeBrowsing lookup for wmconvirus.narod.ru")
|
||||
|
||||
d.checkMatch(t, "test.wmconvirus.narod.ru")
|
||||
d.checkMatchEmpty(t, "yandex.ru")
|
||||
@@ -268,7 +267,7 @@ func TestSafeSearchCacheYandex(t *testing.T) {
|
||||
res, err := d.CheckHost(domain, dns.TypeA, &setts)
|
||||
assert.Nil(t, err)
|
||||
assert.False(t, res.IsFiltered)
|
||||
assert.Len(t, res.Rules, 0)
|
||||
assert.Empty(t, res.Rules)
|
||||
|
||||
d = NewForTest(&Config{SafeSearchEnabled: true}, nil)
|
||||
defer d.Close()
|
||||
@@ -298,7 +297,7 @@ func TestSafeSearchCacheGoogle(t *testing.T) {
|
||||
res, err := d.CheckHost(domain, dns.TypeA, &setts)
|
||||
assert.Nil(t, err)
|
||||
assert.False(t, res.IsFiltered)
|
||||
assert.Len(t, res.Rules, 0)
|
||||
assert.Empty(t, res.Rules)
|
||||
|
||||
d = NewForTest(&Config{SafeSearchEnabled: true}, nil)
|
||||
defer d.Close()
|
||||
@@ -346,7 +345,7 @@ func TestParentalControl(t *testing.T) {
|
||||
d := NewForTest(&Config{ParentalEnabled: true}, nil)
|
||||
defer d.Close()
|
||||
d.checkMatch(t, "pornhub.com")
|
||||
assert.True(t, strings.Contains(logOutput.String(), "Parental lookup for pornhub.com"))
|
||||
assert.Contains(t, logOutput.String(), "Parental lookup for pornhub.com")
|
||||
d.checkMatch(t, "www.pornhub.com")
|
||||
d.checkMatchEmpty(t, "www.yandex.ru")
|
||||
d.checkMatchEmpty(t, "yandex.ru")
|
||||
@@ -468,18 +467,20 @@ func TestWhitelist(t *testing.T) {
|
||||
|
||||
// matched by white filter
|
||||
res, err := d.CheckHost("host1", dns.TypeA, &setts)
|
||||
assert.True(t, err == nil)
|
||||
assert.True(t, !res.IsFiltered && res.Reason == NotFilteredAllowList)
|
||||
assert.Nil(t, err)
|
||||
assert.False(t, res.IsFiltered)
|
||||
assert.Equal(t, res.Reason, NotFilteredAllowList)
|
||||
if assert.Len(t, res.Rules, 1) {
|
||||
assert.True(t, res.Rules[0].Text == "||host1^")
|
||||
assert.Equal(t, "||host1^", res.Rules[0].Text)
|
||||
}
|
||||
|
||||
// not matched by white filter, but matched by block filter
|
||||
res, err = d.CheckHost("host2", dns.TypeA, &setts)
|
||||
assert.True(t, err == nil)
|
||||
assert.True(t, res.IsFiltered && res.Reason == FilteredBlockList)
|
||||
assert.Nil(t, err)
|
||||
assert.True(t, res.IsFiltered)
|
||||
assert.Equal(t, res.Reason, FilteredBlockList)
|
||||
if assert.Len(t, res.Rules, 1) {
|
||||
assert.True(t, res.Rules[0].Text == "||host2^")
|
||||
assert.Equal(t, "||host2^", res.Rules[0].Text)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -529,7 +530,7 @@ func TestClientSettings(t *testing.T) {
|
||||
|
||||
// not blocked
|
||||
r, _ = d.CheckHost("facebook.com", dns.TypeA, &setts)
|
||||
assert.True(t, !r.IsFiltered)
|
||||
assert.False(t, r.IsFiltered)
|
||||
|
||||
// override client settings:
|
||||
applyClientSettings(&setts)
|
||||
@@ -554,7 +555,8 @@ func TestClientSettings(t *testing.T) {
|
||||
|
||||
// blocked by additional rules
|
||||
r, _ = d.CheckHost("facebook.com", dns.TypeA, &setts)
|
||||
assert.True(t, r.IsFiltered && r.Reason == FilteredBlockedService)
|
||||
assert.True(t, r.IsFiltered)
|
||||
assert.Equal(t, r.Reason, FilteredBlockedService)
|
||||
}
|
||||
|
||||
// BENCHMARKS
|
||||
|
||||
@@ -171,7 +171,7 @@ func TestDNSFilter_CheckHostRules_dnsrewrite(t *testing.T) {
|
||||
|
||||
res, err := f.CheckHostRules(host, dtyp, setts)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, "", res.CanonName)
|
||||
assert.Empty(t, res.CanonName)
|
||||
|
||||
if dnsrr := res.DNSRewriteResult; assert.NotNil(t, dnsrr) {
|
||||
assert.Equal(t, dns.RcodeSuccess, dnsrr.RCode)
|
||||
@@ -197,7 +197,7 @@ func TestDNSFilter_CheckHostRules_dnsrewrite(t *testing.T) {
|
||||
|
||||
res, err := f.CheckHostRules(host, dtyp, setts)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, "", res.CanonName)
|
||||
assert.Len(t, res.Rules, 0)
|
||||
assert.Empty(t, res.CanonName)
|
||||
assert.Empty(t, res.Rules)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -27,14 +27,14 @@ func TestRewrites(t *testing.T) {
|
||||
r = d.processRewrites("www.host.com", dns.TypeA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.Equal(t, "host.com", r.CanonName)
|
||||
assert.Equal(t, 2, len(r.IPList))
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
assert.True(t, r.IPList[1].Equal(net.ParseIP("1.2.3.5")))
|
||||
assert.Len(t, r.IPList, 2)
|
||||
assert.True(t, r.IPList[0].Equal(net.IP{1, 2, 3, 4}))
|
||||
assert.True(t, r.IPList[1].Equal(net.IP{1, 2, 3, 5}))
|
||||
|
||||
r = d.processRewrites("www.host.com", dns.TypeAAAA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.Equal(t, "host.com", r.CanonName)
|
||||
assert.Equal(t, 1, len(r.IPList))
|
||||
assert.Len(t, r.IPList, 1)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1:2:3::4")))
|
||||
|
||||
// wildcard
|
||||
@@ -45,11 +45,11 @@ func TestRewrites(t *testing.T) {
|
||||
d.prepareRewrites()
|
||||
r = d.processRewrites("host.com", dns.TypeA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
assert.True(t, r.IPList[0].Equal(net.IP{1, 2, 3, 4}))
|
||||
|
||||
r = d.processRewrites("www.host.com", dns.TypeA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.5")))
|
||||
assert.True(t, r.IPList[0].Equal(net.IP{1, 2, 3, 5}))
|
||||
|
||||
r = d.processRewrites("www.host2.com", dns.TypeA)
|
||||
assert.Equal(t, NotFilteredNotFound, r.Reason)
|
||||
@@ -62,8 +62,8 @@ func TestRewrites(t *testing.T) {
|
||||
d.prepareRewrites()
|
||||
r = d.processRewrites("a.host.com", dns.TypeA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.True(t, len(r.IPList) == 1)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
assert.Len(t, r.IPList, 1)
|
||||
assert.True(t, r.IPList[0].Equal(net.IP{1, 2, 3, 4}))
|
||||
|
||||
// wildcard + CNAME
|
||||
d.Rewrites = []RewriteEntry{
|
||||
@@ -74,7 +74,7 @@ func TestRewrites(t *testing.T) {
|
||||
r = d.processRewrites("www.host.com", dns.TypeA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.Equal(t, "host.com", r.CanonName)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
assert.True(t, r.IPList[0].Equal(net.IP{1, 2, 3, 4}))
|
||||
|
||||
// 2 CNAMEs
|
||||
d.Rewrites = []RewriteEntry{
|
||||
@@ -86,8 +86,8 @@ func TestRewrites(t *testing.T) {
|
||||
r = d.processRewrites("b.host.com", dns.TypeA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.Equal(t, "host.com", r.CanonName)
|
||||
assert.True(t, len(r.IPList) == 1)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
assert.Len(t, r.IPList, 1)
|
||||
assert.True(t, r.IPList[0].Equal(net.IP{1, 2, 3, 4}))
|
||||
|
||||
// 2 CNAMEs + wildcard
|
||||
d.Rewrites = []RewriteEntry{
|
||||
@@ -99,8 +99,8 @@ func TestRewrites(t *testing.T) {
|
||||
r = d.processRewrites("b.host.com", dns.TypeA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.Equal(t, "x.somehost.com", r.CanonName)
|
||||
assert.True(t, len(r.IPList) == 1)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
assert.Len(t, r.IPList, 1)
|
||||
assert.True(t, r.IPList[0].Equal(net.IP{1, 2, 3, 4}))
|
||||
}
|
||||
|
||||
func TestRewritesLevels(t *testing.T) {
|
||||
@@ -116,19 +116,19 @@ func TestRewritesLevels(t *testing.T) {
|
||||
// match exact
|
||||
r := d.processRewrites("host.com", dns.TypeA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.Equal(t, 1, len(r.IPList))
|
||||
assert.Len(t, r.IPList, 1)
|
||||
assert.Equal(t, "1.1.1.1", r.IPList[0].String())
|
||||
|
||||
// match L2
|
||||
r = d.processRewrites("sub.host.com", dns.TypeA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.Equal(t, 1, len(r.IPList))
|
||||
assert.Len(t, r.IPList, 1)
|
||||
assert.Equal(t, "2.2.2.2", r.IPList[0].String())
|
||||
|
||||
// match L3
|
||||
r = d.processRewrites("my.sub.host.com", dns.TypeA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.Equal(t, 1, len(r.IPList))
|
||||
assert.Len(t, r.IPList, 1)
|
||||
assert.Equal(t, "3.3.3.3", r.IPList[0].String())
|
||||
}
|
||||
|
||||
@@ -144,7 +144,7 @@ func TestRewritesExceptionCNAME(t *testing.T) {
|
||||
// match sub-domain
|
||||
r := d.processRewrites("my.host.com", dns.TypeA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.Equal(t, 1, len(r.IPList))
|
||||
assert.Len(t, r.IPList, 1)
|
||||
assert.Equal(t, "2.2.2.2", r.IPList[0].String())
|
||||
|
||||
// match sub-domain, but handle exception
|
||||
@@ -164,7 +164,7 @@ func TestRewritesExceptionWC(t *testing.T) {
|
||||
// match sub-domain
|
||||
r := d.processRewrites("my.host.com", dns.TypeA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.Equal(t, 1, len(r.IPList))
|
||||
assert.Len(t, r.IPList, 1)
|
||||
assert.Equal(t, "2.2.2.2", r.IPList[0].String())
|
||||
|
||||
// match sub-domain, but handle exception
|
||||
@@ -187,7 +187,7 @@ func TestRewritesExceptionIP(t *testing.T) {
|
||||
// match domain
|
||||
r := d.processRewrites("host.com", dns.TypeA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.Equal(t, 1, len(r.IPList))
|
||||
assert.Len(t, r.IPList, 1)
|
||||
assert.Equal(t, "1.2.3.4", r.IPList[0].String())
|
||||
|
||||
// match exception
|
||||
@@ -201,7 +201,7 @@ func TestRewritesExceptionIP(t *testing.T) {
|
||||
// match domain
|
||||
r = d.processRewrites("host2.com", dns.TypeAAAA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.Equal(t, 1, len(r.IPList))
|
||||
assert.Len(t, r.IPList, 1)
|
||||
assert.Equal(t, "::1", r.IPList[0].String())
|
||||
|
||||
// match exception
|
||||
@@ -211,5 +211,5 @@ func TestRewritesExceptionIP(t *testing.T) {
|
||||
// match domain
|
||||
r = d.processRewrites("host3.com", dns.TypeAAAA)
|
||||
assert.Equal(t, Rewritten, r.Reason)
|
||||
assert.Equal(t, 0, len(r.IPList))
|
||||
assert.Empty(t, r.IPList)
|
||||
}
|
||||
|
||||
@@ -37,8 +37,8 @@ func (d *DNSFilter) initSecurityServices() error {
|
||||
opts := upstream.Options{
|
||||
Timeout: dnsTimeout,
|
||||
ServerIPAddrs: []net.IP{
|
||||
net.ParseIP("94.140.14.15"),
|
||||
net.ParseIP("94.140.15.16"),
|
||||
{94, 140, 14, 15},
|
||||
{94, 140, 15, 16},
|
||||
net.ParseIP("2a10:50c0::bad1:ff"),
|
||||
net.ParseIP("2a10:50c0::bad2:ff"),
|
||||
},
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
func TestSafeBrowsingHash(t *testing.T) {
|
||||
// test hostnameToHashes()
|
||||
hashes := hostnameToHashes("1.2.3.sub.host.com")
|
||||
assert.Equal(t, 3, len(hashes))
|
||||
assert.Len(t, hashes, 3)
|
||||
_, ok := hashes[sha256.Sum256([]byte("3.sub.host.com"))]
|
||||
assert.True(t, ok)
|
||||
_, ok = hashes[sha256.Sum256([]byte("sub.host.com"))]
|
||||
@@ -31,9 +31,9 @@ func TestSafeBrowsingHash(t *testing.T) {
|
||||
|
||||
q := c.getQuestion()
|
||||
|
||||
assert.True(t, strings.Contains(q, "7a1b."))
|
||||
assert.True(t, strings.Contains(q, "af5a."))
|
||||
assert.True(t, strings.Contains(q, "eb11."))
|
||||
assert.Contains(t, q, "7a1b.")
|
||||
assert.Contains(t, q, "af5a.")
|
||||
assert.Contains(t, q, "eb11.")
|
||||
assert.True(t, strings.HasSuffix(q, "sb.dns.adguard.com."))
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ func TestSafeBrowsingCache(t *testing.T) {
|
||||
c.hashToHost[hash] = "sub.host.com"
|
||||
hash = sha256.Sum256([]byte("nonexisting.com"))
|
||||
c.hashToHost[hash] = "nonexisting.com"
|
||||
assert.Equal(t, 0, c.getCached())
|
||||
assert.Empty(t, c.getCached())
|
||||
|
||||
hash = sha256.Sum256([]byte("sub.host.com"))
|
||||
_, ok := c.hashToHost[hash]
|
||||
@@ -103,7 +103,7 @@ func TestSafeBrowsingCache(t *testing.T) {
|
||||
c.hashToHost[hash] = "sub.host.com"
|
||||
|
||||
c.cache.Set(hash[0:2], make([]byte, 32))
|
||||
assert.Equal(t, 0, c.getCached())
|
||||
assert.Empty(t, c.getCached())
|
||||
}
|
||||
|
||||
// testErrUpstream implements upstream.Upstream interface for replacing real
|
||||
|
||||
Reference in New Issue
Block a user