mirror of
https://github.com/AdguardTeam/dnsproxy.git
synced 2026-10-12 10:09:55 +00:00
Pull request 349: 6744 Fix TLD subdomain
Updates AdguardTeam/AdGuardHome#6744. Squashed commit of the following: commit d0fe7b6abf05d486c2ac128305d7847cc10fb5cf Author: Eugene Burkov <[email protected]> Date: Thu May 2 15:55:50 2024 +0300 all: imp doc commit ecc72430e8433db31b5e928bddfd9871709c1a04 Author: Eugene Burkov <[email protected]> Date: Thu May 2 15:18:44 2024 +0300 proxy: imp code commit a51959447110c1b53a0d3b4368bb5cdf3aac20f1 Author: Eugene Burkov <[email protected]> Date: Sat Apr 27 18:12:19 2024 +0300 all: fix tld exclusions
This commit is contained in:
@@ -338,11 +338,12 @@ which are sent to `8.8.8.8:53` (along with other requests):
|
||||
```
|
||||
|
||||
Sends requests for `*.host.com` to `1.1.1.1:53` except for `host.com` which is
|
||||
sent to `8.8.8.8:53` (along with other requests):
|
||||
sent to `9.9.9.10:53`, and all other requests are sent to `8.8.8.8:53`:
|
||||
|
||||
```sh
|
||||
./dnsproxy\
|
||||
-u "8.8.8.8:53"
|
||||
-u "8.8.8.8:53"\
|
||||
-u "[/host.com/]9.9.9.10:53"\
|
||||
-u "[/*.host.com/]1.1.1.1:53"
|
||||
```
|
||||
|
||||
|
||||
+10
-9
@@ -383,19 +383,20 @@ func (uc *UpstreamConfig) getUpstreamsForDomain(fqdn string) (ups []upstream.Ups
|
||||
return uc.Upstreams
|
||||
}
|
||||
|
||||
var ok bool
|
||||
fqdn = strings.ToLower(fqdn)
|
||||
if strings.Count(fqdn, ".") < 2 {
|
||||
ups, ok = uc.lookupUpstreams(fqdn)
|
||||
if ok {
|
||||
return ups
|
||||
}
|
||||
|
||||
fqdn = UnqualifiedNames
|
||||
} else if uc.SubdomainExclusions.Has(fqdn) {
|
||||
if uc.SubdomainExclusions.Has(fqdn) {
|
||||
return uc.lookupSubdomainExclusion(fqdn)
|
||||
}
|
||||
|
||||
ups, ok := uc.lookupUpstreams(fqdn)
|
||||
if ok {
|
||||
return ups
|
||||
}
|
||||
|
||||
if _, fqdn, _ = strings.Cut(fqdn, "."); fqdn == "" {
|
||||
fqdn = UnqualifiedNames
|
||||
}
|
||||
|
||||
for fqdn != "" {
|
||||
if ups, ok = uc.lookupUpstreams(fqdn); ok {
|
||||
return ups
|
||||
|
||||
@@ -22,8 +22,9 @@ const (
|
||||
topLevelDomain = "example"
|
||||
topLevelFQDN = topLevelDomain + "."
|
||||
|
||||
firstLevelDomain = "name." + topLevelDomain
|
||||
firstLevelFQDN = firstLevelDomain + "."
|
||||
firstLevelDomain = "name." + topLevelDomain
|
||||
firstLevelFQDN = firstLevelDomain + "."
|
||||
wildcardFirstLevelDomain = "*." + topLevelDomain
|
||||
|
||||
subDomain = "sub." + firstLevelDomain
|
||||
subFQDN = subDomain + "."
|
||||
@@ -51,6 +52,7 @@ var testUpstreamConfigLines = []string{
|
||||
generalUpstream,
|
||||
"[//]" + unqualifiedUpstream,
|
||||
"[/" + topLevelDomain + "/]" + tldUpstream,
|
||||
"[/" + wildcardFirstLevelDomain + "/]#",
|
||||
"[/" + firstLevelDomain + "/]" + domainUpstream,
|
||||
"[/" + wildcardDomain + "/]" + wildcardUpstream,
|
||||
"[/" + generalDomain + "/]#",
|
||||
@@ -82,7 +84,7 @@ func TestUpstreamConfig_GetUpstreamsForDomain(t *testing.T) {
|
||||
}, {
|
||||
name: "unspecified_subdomain",
|
||||
in: unspecifiedFQDN + topLevelFQDN,
|
||||
want: []string{tldUpstream},
|
||||
want: []string{generalUpstream},
|
||||
}, {
|
||||
name: "domain",
|
||||
in: firstLevelFQDN,
|
||||
@@ -136,7 +138,7 @@ func TestUpstreamConfig_GetUpstreamsForDS(t *testing.T) {
|
||||
}, {
|
||||
name: "unspecified_subdomain",
|
||||
in: unspecifiedFQDN + topLevelFQDN,
|
||||
want: []string{tldUpstream},
|
||||
want: []string{generalUpstream},
|
||||
}, {
|
||||
name: "domain",
|
||||
in: firstLevelFQDN,
|
||||
|
||||
@@ -93,7 +93,7 @@ func startTestDNSCryptServer(
|
||||
|
||||
func TestUpstreamDNSCrypt(t *testing.T) {
|
||||
// AdGuard DNS (DNSCrypt)
|
||||
address := "sdns://AQIAAAAAAAAAFDE3Ni4xMDMuMTMwLjEzMDo1NDQzINErR_JS3PLCu_iZEIbq95zkSV2LFsigxDIuUso_OQhzIjIuZG5zY3J5cHQuZGVmYXVsdC5uczEuYWRndWFyZC5jb20"
|
||||
address := "sdns://AQMAAAAAAAAAETk0LjE0MC4xNC4xNDo1NDQzINErR_JS3PLCu_iZEIbq95zkSV2LFsigxDIuUso_OQhzIjIuZG5zY3J5cHQuZGVmYXVsdC5uczEuYWRndWFyZC5jb20"
|
||||
u, err := AddressToUpstream(address, &Options{Timeout: dialTimeout})
|
||||
require.NoError(t, err)
|
||||
testutil.CleanupAndRequireSuccess(t, u.Close)
|
||||
|
||||
@@ -63,7 +63,7 @@ func TestNewUpstreamResolver_validity(t *testing.T) {
|
||||
wantErrMsg: "",
|
||||
}, {
|
||||
name: "sdns",
|
||||
addr: "sdns://AQIAAAAAAAAAFDE3Ni4xMDMuMTMwLjEzMDo1NDQzINErR_JS3PLCu_iZEIbq95zkSV2LFsigxDIuUso_OQhzIjIuZG5zY3J5cHQuZGVmYXVsdC5uczEuYWRndWFyZC5jb20",
|
||||
addr: "sdns://AQMAAAAAAAAAETk0LjE0MC4xNC4xNDo1NDQzINErR_JS3PLCu_iZEIbq95zkSV2LFsigxDIuUso_OQhzIjIuZG5zY3J5cHQuZGVmYXVsdC5uczEuYWRndWFyZC5jb20",
|
||||
wantErrMsg: "",
|
||||
}, {
|
||||
name: "tcp",
|
||||
|
||||
@@ -159,11 +159,11 @@ func TestUpstreams(t *testing.T) {
|
||||
}, {
|
||||
// AdGuard DNS (DNSCrypt)
|
||||
bootstrap: nil,
|
||||
address: "sdns://AQIAAAAAAAAAFDE3Ni4xMDMuMTMwLjEzMDo1NDQzINErR_JS3PLCu_iZEIbq95zkSV2LFsigxDIuUso_OQhzIjIuZG5zY3J5cHQuZGVmYXVsdC5uczEuYWRndWFyZC5jb20",
|
||||
address: "sdns://AQMAAAAAAAAAETk0LjE0MC4xNC4xNDo1NDQzINErR_JS3PLCu_iZEIbq95zkSV2LFsigxDIuUso_OQhzIjIuZG5zY3J5cHQuZGVmYXVsdC5uczEuYWRndWFyZC5jb20",
|
||||
}, {
|
||||
// AdGuard Family (DNSCrypt)
|
||||
bootstrap: googleBoot,
|
||||
address: "sdns://AQIAAAAAAAAAFDE3Ni4xMDMuMTMwLjEzMjo1NDQzILgxXdexS27jIKRw3C7Wsao5jMnlhvhdRUXWuMm1AFq6ITIuZG5zY3J5cHQuZmFtaWx5Lm5zMS5hZGd1YXJkLmNvbQ",
|
||||
address: "sdns://AQMAAAAAAAAAETk0LjE0MC4xNC4xNTo1NDQzILgxXdexS27jIKRw3C7Wsao5jMnlhvhdRUXWuMm1AFq6ITIuZG5zY3J5cHQuZmFtaWx5Lm5zMS5hZGd1YXJkLmNvbQ",
|
||||
}, {
|
||||
// Cloudflare DNS (DNS-over-HTTPS)
|
||||
bootstrap: googleBoot,
|
||||
|
||||
Reference in New Issue
Block a user