@@ -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