Skip to content

Commit 770960c

Browse files
committed
Add a smart resolver
1 parent 40bd06a commit 770960c

File tree

2 files changed

+20
-16
lines changed

2 files changed

+20
-16
lines changed

cmd/daze/main.go

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -79,14 +79,7 @@ func main() {
7979
log.Println("main: server cipher is", *flCipher)
8080
log.Println("main: protocol is used", *flProtoc)
8181
if *flDnserv != "" {
82-
switch {
83-
case strings.HasSuffix(*flDnserv, ":53"):
84-
net.DefaultResolver = daze.ResolverDns(*flDnserv)
85-
case strings.HasSuffix(*flDnserv, ":853"):
86-
net.DefaultResolver = daze.ResolverDot(*flDnserv)
87-
case strings.HasPrefix(*flDnserv, "https://"):
88-
net.DefaultResolver = daze.ResolverDoh(*flDnserv)
89-
}
82+
net.DefaultResolver = daze.ResolverAny(*flDnserv)
9083
log.Println("main: domain server is", *flDnserv)
9184
}
9285
if *flLimits != "" {
@@ -151,14 +144,7 @@ func main() {
151144
log.Println("main: client cipher is", *flCipher)
152145
log.Println("main: protocol is used", *flProtoc)
153146
if *flDnserv != "" {
154-
switch {
155-
case strings.HasSuffix(*flDnserv, ":53"):
156-
net.DefaultResolver = daze.ResolverDns(*flDnserv)
157-
case strings.HasSuffix(*flDnserv, ":853"):
158-
net.DefaultResolver = daze.ResolverDot(*flDnserv)
159-
case strings.HasPrefix(*flDnserv, "https://"):
160-
net.DefaultResolver = daze.ResolverDoh(*flDnserv)
161-
}
147+
net.DefaultResolver = daze.ResolverAny(*flDnserv)
162148
log.Println("main: domain server is", *flDnserv)
163149
}
164150
if *flLimits != "" {

daze.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,24 @@ func ResolverDoh(addr string) *net.Resolver {
176176
}
177177
}
178178

179+
// ResolverDot returns a DoT resolver. Depending on the addr entered, the dns, dot or doh protocol will be used
180+
// automatically.
181+
//
182+
// Dns: 1.1.1.1:53
183+
// Dot: 1.1.1.1:853
184+
// Doh: https://1.1.1.1/dns-query
185+
func ResolverAny(addr string) *net.Resolver {
186+
switch {
187+
case strings.HasSuffix(addr, ":53"):
188+
return ResolverDns(addr)
189+
case strings.HasSuffix(addr, ":853"):
190+
return ResolverDot(addr)
191+
case strings.HasPrefix(addr, "https://"):
192+
return ResolverDoh(addr)
193+
}
194+
panic("unreachable")
195+
}
196+
179197
// Link copies from src to dst and dst to src until either EOF is reached.
180198
func Link(a, b io.ReadWriteCloser) {
181199
w := sync.WaitGroup{}

0 commit comments

Comments
 (0)