Skip to content

Commit

Permalink
rdns mvp
Browse files Browse the repository at this point in the history
  • Loading branch information
mosajjal committed Nov 5, 2023
1 parent e70c51b commit d43b606
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 17 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.21

require (
github.com/deathowl/go-metrics-prometheus v0.0.0-20221009205350-f2a1482ba35b
github.com/folbricht/routedns v0.1.21-0.20231018071250-ad56f950afc7
github.com/folbricht/routedns v0.1.21-0.20231021081103-822f708e128c
github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3
github.com/gorilla/handlers v1.5.1
github.com/knadh/koanf v1.5.0
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBd
github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/folbricht/routedns v0.1.21-0.20231018071250-ad56f950afc7 h1:dv4WpL4soh4cncVa2eSfHkAAFhLwNzMf5Eh4KBOtvms=
github.com/folbricht/routedns v0.1.21-0.20231018071250-ad56f950afc7/go.mod h1:VflYkHNga8APcQZdm/Nh2fM27fPEit1+Rf6bHpxYimw=
github.com/folbricht/routedns v0.1.21-0.20231021081103-822f708e128c h1:CEaurOJLP9yGt8VkfTXfbONIBEpJWf1uuTuIBi8lzXk=
github.com/folbricht/routedns v0.1.21-0.20231021081103-822f708e128c/go.mod h1:VflYkHNga8APcQZdm/Nh2fM27fPEit1+Rf6bHpxYimw=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
Expand Down
12 changes: 6 additions & 6 deletions pkg/acl/acl_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,38 +20,38 @@ acl:
domain:
enabled: true
priority: 20
path: ../domains.csv
path: ../../domains.csv
refresh_interval: 1h0m0s`,
"acl_cidr.yaml": `
acl:
cidr:
enabled: true
priority: 30
path: ../cidr.csv
path: ../../cidr.csv
refresh_interval: 1h0m0s`,
"acl_domain_cidr.yaml": `
acl:
domain:
enabled: true
priority: 20
path: ../domains.csv
path: ../../domains.csv
refresh_interval: 1h0m0s
cidr:
enabled: true
priority: 30
path: ../cidr.csv
path: ../../cidr.csv
refresh_interval: 1h0m0s`,
"acl_cidr_domain.yaml": `
acl:
domain:
enabled: true
priority: 20
path: ../domains.csv
path: ../../domains.csv
refresh_interval: 1h0m0s
cidr:
enabled: true
priority: 19
path: ../cidr.csv
path: ../../cidr.csv
refresh_interval: 1h0m0s`,
}

Expand Down
16 changes: 11 additions & 5 deletions pkg/dns.go
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ func getDialerFromProxyURL(proxyURL *url.URL) (*rdns.Dialer, error) {
var dialer rdns.Dialer
// by default dialer is direct
dialer = &net.Dialer{}
if proxyURL != nil {
if proxyURL != nil && proxyURL.Host != "" {
// create a net dialer with proxy
var auth *proxy.Auth
if proxyURL.User != nil {
Expand Down Expand Up @@ -250,16 +250,22 @@ URI string could look like below:
- quic://dns.adguard.com:8853
- tcp-tls://dns.adguard.com:853
*/
func NewDNSClient(C *Config, uri string, skipVerify bool, proxyURL *url.URL) (*DNSClient, error) {
// TODO: Proxy support is not yet implemented
func NewDNSClient(C *Config, uri string, skipVerify bool, proxy string) (*DNSClient, error) {
parsedURL, err := url.Parse(uri)
if err != nil {
return nil, err
}
dialer, err := getDialerFromProxyURL(proxyURL)

var dialer *rdns.Dialer
proxyURL, err := url.Parse(proxy)
if err != nil {
return nil, err
}
dialer, err = getDialerFromProxyURL(proxyURL)
if err != nil {
return nil, err
}

switch parsedURL.Scheme {
case "udp", "udp6":
var host, port string
Expand Down Expand Up @@ -345,7 +351,7 @@ func NewDNSClient(C *Config, uri string, skipVerify bool, proxyURL *url.URL) (*D
opt := rdns.DoQClientOptions{
TLSConfig: tlsConfig,
LocalAddr: C.SourceAddr,
// Dialer: *dialer, // TODO: wait for #317 in folbricht/routedns to add DoQ
// Dialer: *dialer, // BUG: not yet supported
}
id, err := rdns.NewDoQClient("id", parsedURL.Host, opt)
if err != nil {
Expand Down
10 changes: 5 additions & 5 deletions pkg/dns_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,18 @@ package sniproxy
import (
"net"
"testing"

"github.com/mosajjal/dnsclient"
)

func TestDNSClient_lookupDomain4(t *testing.T) {
tmp, err := dnsclient.New("udp://1.1.1.1:53", true, "")
c := Config{
UpstreamDNS: "tcp://1.1.1.1:53",
}
dnsc, err := NewDNSClient(&c, c.UpstreamDNS, true, "")
if err != nil {
t.Errorf("failed to set up DNS client")
}
dnsc := DNSClient{tmp, nil}
tests := []struct {
client DNSClient
client *DNSClient
name string
domain string
want net.IP
Expand Down

0 comments on commit d43b606

Please sign in to comment.