File tree 4 files changed +8
-14
lines changed
4 files changed +8
-14
lines changed Original file line number Diff line number Diff line change @@ -66,13 +66,17 @@ func main() {
66
66
// not all the root nameservers allow AXFR, try them until we find one that does
67
67
for _ , ns := range rootNameservers {
68
68
v ("trying root nameserver %s" , ns )
69
+ startTime := time .Now ()
69
70
z , err = zone .RootAXFR (ns )
70
71
if err == nil {
72
+ took := time .Since (startTime ).Round (time .Millisecond )
73
+ log .Printf ("ROOT %s xfr size: %d records in %s \n " , ns , z .Records , took .String ())
71
74
break
72
75
}
73
76
}
74
77
} else {
75
78
// zone file is provided
79
+ v ("parsing zonefile: %q\n " , * zonefile )
76
80
z , err = zone .ParseZoneFile (* zonefile )
77
81
check (err )
78
82
}
Original file line number Diff line number Diff line change @@ -3,7 +3,6 @@ package zone
3
3
import (
4
4
"compress/gzip"
5
5
"io"
6
- "log"
7
6
"os"
8
7
"strings"
9
8
@@ -28,7 +27,6 @@ func ParseZoneFile(filename string) (Zone, error) {
28
27
fileReader = gz
29
28
defer gz .Close ()
30
29
}
31
- log .Printf ("parsing zonefile: %q\n " , filename )
32
30
zp := dns .NewZoneParser (fileReader , "" , "" )
33
31
for rr , ok := zp .Next (); ok ; rr , ok = zp .Next () {
34
32
z .AddRecord (rr )
@@ -37,6 +35,5 @@ func ParseZoneFile(filename string) (Zone, error) {
37
35
if err := zp .Err (); err != nil {
38
36
return z , err
39
37
}
40
- //log.Printf("zonefile parsing done")
41
38
return z , nil
42
39
}
Original file line number Diff line number Diff line change @@ -2,8 +2,6 @@ package zone
2
2
3
3
import (
4
4
"fmt"
5
- "log"
6
- "time"
7
5
8
6
"github.com/miekg/dns"
9
7
)
@@ -34,29 +32,20 @@ func GetRootServers(nameserver string) ([]string, error) {
34
32
func RootAXFR (ns string ) (Zone , error ) {
35
33
m := new (dns.Msg )
36
34
m .SetQuestion ("." , dns .TypeAXFR )
37
-
38
35
t := new (dns.Transfer )
39
36
40
37
var root Zone
41
- startTime := time .Now ()
42
-
43
38
env , err := t .In (m , fmt .Sprintf ("%s:53" , ns ))
44
39
if err != nil {
45
40
return root , fmt .Errorf ("transfer error from %v: %w" , ns , err )
46
41
}
47
- var envelope , record int
48
42
for e := range env {
49
43
if e .Error != nil {
50
44
return root , fmt .Errorf ("transfer envelope error from %v: %w" , ns , e .Error )
51
45
}
52
46
for _ , r := range e .RR {
53
47
root .AddRecord (r )
54
48
}
55
- record += len (e .RR )
56
- envelope ++
57
49
}
58
- took := time .Since (startTime ).Round (time .Millisecond )
59
- log .Printf ("ROOT %s xfr size: %d records in %s \n " , ns , record , took .String ())
60
-
61
50
return root , nil
62
51
}
Original file line number Diff line number Diff line change @@ -14,6 +14,8 @@ type Zone struct {
14
14
NS map [string ][]string
15
15
// map of nameservers to ipv4 and ipv6
16
16
IP map [string ][]net.IP
17
+ // number of records added to the zone
18
+ Records int64
17
19
}
18
20
19
21
// AddRecord adds NS, A, AAAA records to the zone
@@ -66,6 +68,7 @@ func (z *Zone) AddNS(domain, nameserver string) {
66
68
if len (nameserver ) > 0 {
67
69
nameserver = strings .ToLower (nameserver )
68
70
z .NS [domain ] = append (z .NS [domain ], nameserver )
71
+ z .Records ++
69
72
}
70
73
}
71
74
@@ -80,6 +83,7 @@ func (z *Zone) AddIP(nameserver string, ip net.IP) {
80
83
z .IP [nameserver ] = make ([]net.IP , 0 , 4 )
81
84
}
82
85
z .IP [nameserver ] = append (z .IP [nameserver ], ip )
86
+ z .Records ++
83
87
}
84
88
85
89
// Print prints the zone to stdout
You can’t perform that action at this time.
0 commit comments