Skip to content

Commit

Permalink
Pull request 253: 324 refactor upstream
Browse files Browse the repository at this point in the history
Merge in GO/dnsproxy from 324-refactor-upstream to master

Closes #324.

Squashed commit of the following:

commit cceed0b
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Tue Apr 18 15:48:15 2023 +0300

    proxy: fix check

commit 3b0a231
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Tue Apr 18 13:55:34 2023 +0300

    all: imp tests again

commit eba1be6
Merge: c4e73af 5864a87
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Mon Apr 17 19:20:29 2023 +0300

    Merge branch 'master' into 324-refactor-upstream

commit c4e73af
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Mon Apr 17 15:00:58 2023 +0300

    upstream: fix tests

commit 1bc8d36
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Mon Apr 17 14:46:16 2023 +0300

    all: imp code, docs

commit c9ec31f
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Fri Apr 14 19:48:33 2023 +0300

    upstream: imp logging, field alignment

commit 418df4c
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Fri Apr 14 19:08:15 2023 +0300

    upstream: imp code

commit 92df453
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Fri Apr 14 18:45:54 2023 +0300

    upstream: bootstrap plain dns

commit 44c9e38
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Fri Apr 14 14:07:10 2023 +0300

    upstream: fix tests, imp docs

commit 4c0959d
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Fri Apr 14 12:30:00 2023 +0300

    upstream: imp code, docs

commit 3381917
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Wed Apr 12 21:27:55 2023 +0300

    upstream: refactor doq

commit 0bd11e1
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Wed Apr 12 21:01:30 2023 +0300

    upstream: refactor doh

commit 29ce52f
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Tue Apr 11 19:34:37 2023 +0300

    all: refactor dot

commit 6c9d87e
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Tue Apr 11 01:34:41 2023 +0300

    upstream: refactor dnscrypt, imp code

commit f111729
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Tue Apr 11 19:53:16 2023 +0300

    all: imp code, docs

commit 726d937
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Mon Apr 10 17:06:35 2023 +0300

    all: imp code, add tests

commit 550f1ab
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Fri Apr 7 19:42:20 2023 +0300

    all: imp docs

commit 6698663
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Fri Apr 7 19:28:54 2023 +0300

    all: introduce bootstrap pkg
  • Loading branch information
EugeneOne1 committed Apr 18, 2023
1 parent 5864a87 commit 1e3a23f
Show file tree
Hide file tree
Showing 16 changed files with 724 additions and 803 deletions.
8 changes: 2 additions & 6 deletions internal/bootstrap/bootstrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ type DialHandler func(ctx context.Context, network, addr string) (conn net.Conn,

// ResolveDialContext returns a DialHandler that uses addresses resolved from
// u using resolvers. u must not be nil.
//
// TODO(e.burkov): Use in the [upstream] package.
func ResolveDialContext(
u *url.URL,
timeout time.Duration,
Expand Down Expand Up @@ -68,9 +66,7 @@ func ResolveDialContext(
}

// NewDialContext returns a DialHandler that dials addrs and returns the first
// successful connection.
//
// TODO(e.burkov): Use in the [upstream] package.
// successful connection. At least a single addr should be specified.
func NewDialContext(timeout time.Duration, addrs ...string) (h DialHandler) {
dialer := &net.Dialer{
Timeout: timeout,
Expand All @@ -80,7 +76,7 @@ func NewDialContext(timeout time.Duration, addrs ...string) (h DialHandler) {
if l == 0 {
log.Debug("bootstrap: no addresses to dial")

return func(ctx context.Context, _, _ string) (conn net.Conn, err error) {
return func(_ context.Context, _, _ string) (conn net.Conn, err error) {
return nil, errors.Error("no addresses")
}
}
Expand Down
2 changes: 1 addition & 1 deletion internal/bootstrap/resolver.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func LookupParallel(
}

var errs []error
for n := 0; n < resolversNum; n++ {
for range resolvers {
result := <-ch
if result.err == nil {
return result.addrs, nil
Expand Down
34 changes: 13 additions & 21 deletions proxy/lookup_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,12 @@ func TestLookupIPAddr(t *testing.T) {
p := Proxy{}
upstreams := make([]upstream.Upstream, 0)
// Use AdGuard DNS here
opts := &upstream.Options{Timeout: defaultTimeout}
dnsUpstream, err := upstream.AddressToUpstream("94.140.14.14", opts)
if err != nil {
t.Fatalf("cannot prepare the upstream: %s", err)
}

dnsUpstream, err := upstream.AddressToUpstream("94.140.14.14", &upstream.Options{
Timeout: defaultTimeout,
})
require.NoError(t, err)

p.UpstreamConfig = &UpstreamConfig{}
p.UpstreamConfig.Upstreams = append(upstreams, dnsUpstream)

Expand All @@ -28,22 +29,13 @@ func TestLookupIPAddr(t *testing.T) {

// Now let's try doing some lookups
addrs, err := p.LookupIPAddr("dns.google")
assert.Nil(t, err)
assert.True(t, len(addrs) == 2 || len(addrs) == 4)
assertContainsIP(t, addrs, "8.8.8.8")
assertContainsIP(t, addrs, "8.8.4.4")
if len(addrs) == 4 {
assertContainsIP(t, addrs, "2001:4860:4860::8888")
assertContainsIP(t, addrs, "2001:4860:4860::8844")
}
}
require.NoError(t, err)
require.NotEmpty(t, addrs)

func assertContainsIP(t *testing.T, addrs []net.IPAddr, ip string) {
for _, addr := range addrs {
if addr.String() == ip {
return
}
assert.Contains(t, addrs, net.IPAddr{IP: net.IP{8, 8, 8, 8}})
assert.Contains(t, addrs, net.IPAddr{IP: net.IP{8, 8, 4, 4}})
if len(addrs) > 2 {
assert.Contains(t, addrs, net.IPAddr{IP: net.ParseIP("2001:4860:4860::8888")})
assert.Contains(t, addrs, net.IPAddr{IP: net.ParseIP("2001:4860:4860::8844")})
}

t.Fatalf("%s not found in %v", ip, addrs)
}

0 comments on commit 1e3a23f

Please sign in to comment.