mirror of
https://github.com/DNSCrypt/dnscrypt-proxy.git
synced 2025-03-04 02:14:40 +01:00
-resolve: use TXT records to get resolver information
This commit is contained in:
parent
0465cd35ef
commit
49c17f8e98
1 changed files with 10 additions and 6 deletions
|
@ -71,7 +71,7 @@ func Resolve(server string, name string, singleResolver bool) {
|
|||
cname := name
|
||||
|
||||
for once := true; once; once = false {
|
||||
response, err := resolveQuery(server, myResolverHost, dns.TypeA)
|
||||
response, err := resolveQuery(server, myResolverHost, dns.TypeTXT)
|
||||
if err != nil {
|
||||
fmt.Printf("Unable to resolve: [%s]\n", err)
|
||||
os.Exit(1)
|
||||
|
@ -79,14 +79,18 @@ func Resolve(server string, name string, singleResolver bool) {
|
|||
fmt.Printf("Resolver : ")
|
||||
res := make([]string, 0)
|
||||
for _, answer := range response.Answer {
|
||||
if answer.Header().Class != dns.ClassINET {
|
||||
if answer.Header().Class != dns.ClassINET || answer.Header().Rrtype != dns.TypeTXT {
|
||||
continue
|
||||
}
|
||||
var ip string
|
||||
if answer.Header().Rrtype == dns.TypeA {
|
||||
ip = answer.(*dns.A).A.String()
|
||||
} else if answer.Header().Rrtype == dns.TypeAAAA {
|
||||
ip = answer.(*dns.AAAA).AAAA.String()
|
||||
for _, txt := range answer.(*dns.TXT).Txt {
|
||||
if strings.HasPrefix(txt, "Resolver IP: ") {
|
||||
ip = strings.TrimPrefix(txt, "Resolver IP: ")
|
||||
break
|
||||
}
|
||||
}
|
||||
if ip == "" {
|
||||
continue
|
||||
}
|
||||
if rev, err := dns.ReverseAddr(ip); err == nil {
|
||||
response, err = resolveQuery(server, rev, dns.TypePTR)
|
||||
|
|
Loading…
Add table
Reference in a new issue