Skip to content

Commit 3644be5

Browse files
author
wafuwafu13
committed
update nameserver
1 parent f94f150 commit 3644be5

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

check-dns/lib/nameserver.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
package checkdns
44

55
import (
6+
"net"
7+
"fmt"
68
"github.com/miekg/dns"
79
)
810

@@ -11,5 +13,20 @@ func adapterAddress() (string, error) {
1113
if err != nil {
1214
return "", err
1315
}
14-
return conf.Servers[0], nil
16+
nameserver := conf.Servers[0]
17+
// ref: https://github.com/miekg/exdns/blob/d851fa434ad51cb84500b3e18b8aa7d3bead2c51/q/q.go#L148-L153
18+
// if the nameserver is from /etc/resolv.conf the [ and ] are already
19+
// added, thereby breaking net.ParseIP. Check for this and don't
20+
// fully qualify such a name
21+
if nameserver[0] == '[' && nameserver[len(nameserver)-1] == ']' {
22+
nameserver = nameserver[1 : len(nameserver)-1]
23+
}
24+
// ref: https://github.com/miekg/exdns/blob/d851fa434ad51cb84500b3e18b8aa7d3bead2c51/q/q.go#L154-L158
25+
if net.ParseIP(nameserver) == nil {
26+
nameserver = dns.Fqdn(nameserver)
27+
}
28+
if net.ParseIP(nameserver) == nil {
29+
return "", fmt.Errorf("invalid nameserver: %s", nameserver)
30+
}
31+
return nameserver, nil
1532
}

check-dns/lib/nameserver_windows.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"unsafe"
1010
)
1111

12-
// https://go.dev/src/net/interface_windows.go
12+
// ref: https://go.dev/src/net/interface_windows.go
1313
func adapterAddress() (string, error) {
1414
var b []byte
1515
l := uint32(15000) // recommended initial size
@@ -33,5 +33,13 @@ func adapterAddress() (string, error) {
3333
for aa := (*windows.IpAdapterAddresses)(unsafe.Pointer(&b[0])); aa != nil; aa = aa.Next {
3434
aas = append(aas, aa)
3535
}
36-
return aas[0].FirstDnsServerAddress.Address.IP().String(), nil
36+
nameserver := aas[0].FirstDnsServerAddress.Address.IP().String()
37+
// ref: https://github.com/miekg/exdns/blob/d851fa434ad51cb84500b3e18b8aa7d3bead2c51/q/q.go#L154-L158
38+
if net.ParseIP(nameserver) == nil {
39+
nameserver = dns.Fqdn(nameserver)
40+
}
41+
if net.ParseIP(nameserver) == nil {
42+
return "", fmt.Errorf("invalid nameserver: %s", nameserver)
43+
}
44+
return nameserver, nil
3745
}

0 commit comments

Comments
 (0)