File tree Expand file tree Collapse file tree 2 files changed +28
-3
lines changed Expand file tree Collapse file tree 2 files changed +28
-3
lines changed Original file line number Diff line number Diff line change 3
3
package checkdns
4
4
5
5
import (
6
+ "net"
7
+ "fmt"
6
8
"github.com/miekg/dns"
7
9
)
8
10
@@ -11,5 +13,20 @@ func adapterAddress() (string, error) {
11
13
if err != nil {
12
14
return "" , err
13
15
}
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
15
32
}
Original file line number Diff line number Diff line change 9
9
"unsafe"
10
10
)
11
11
12
- // https://go.dev/src/net/interface_windows.go
12
+ // ref: https://go.dev/src/net/interface_windows.go
13
13
func adapterAddress () (string , error ) {
14
14
var b []byte
15
15
l := uint32 (15000 ) // recommended initial size
@@ -33,5 +33,13 @@ func adapterAddress() (string, error) {
33
33
for aa := (* windows .IpAdapterAddresses )(unsafe .Pointer (& b [0 ])); aa != nil ; aa = aa .Next {
34
34
aas = append (aas , aa )
35
35
}
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
37
45
}
You can’t perform that action at this time.
0 commit comments