Skip to content

Commit 49c17f8

Browse files
committed
-resolve: use TXT records to get resolver information
1 parent 0465cd3 commit 49c17f8

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

dnscrypt-proxy/resolve.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,22 +71,26 @@ func Resolve(server string, name string, singleResolver bool) {
7171
cname := name
7272

7373
for once := true; once; once = false {
74-
response, err := resolveQuery(server, myResolverHost, dns.TypeA)
74+
response, err := resolveQuery(server, myResolverHost, dns.TypeTXT)
7575
if err != nil {
7676
fmt.Printf("Unable to resolve: [%s]\n", err)
7777
os.Exit(1)
7878
}
7979
fmt.Printf("Resolver : ")
8080
res := make([]string, 0)
8181
for _, answer := range response.Answer {
82-
if answer.Header().Class != dns.ClassINET {
82+
if answer.Header().Class != dns.ClassINET || answer.Header().Rrtype != dns.TypeTXT {
8383
continue
8484
}
8585
var ip string
86-
if answer.Header().Rrtype == dns.TypeA {
87-
ip = answer.(*dns.A).A.String()
88-
} else if answer.Header().Rrtype == dns.TypeAAAA {
89-
ip = answer.(*dns.AAAA).AAAA.String()
86+
for _, txt := range answer.(*dns.TXT).Txt {
87+
if strings.HasPrefix(txt, "Resolver IP: ") {
88+
ip = strings.TrimPrefix(txt, "Resolver IP: ")
89+
break
90+
}
91+
}
92+
if ip == "" {
93+
continue
9094
}
9195
if rev, err := dns.ReverseAddr(ip); err == nil {
9296
response, err = resolveQuery(server, rev, dns.TypePTR)

0 commit comments

Comments
 (0)