Update the utils too
This commit is contained in:
parent
235e892dfc
commit
617c8bde18
|
@ -75,12 +75,12 @@ forever:
|
|||
if d.Rcode == dns.RcodeSuccess {
|
||||
for _, a := range d.Answer {
|
||||
switch a.(type) {
|
||||
case *dns.RR_A:
|
||||
case *dns.A:
|
||||
ips = append(ips,
|
||||
net.JoinHostPort(a.(*dns.RR_A).A.String(), "53"))
|
||||
case *dns.RR_AAAA:
|
||||
net.JoinHostPort(a.(*dns.A).A.String(), "53"))
|
||||
case *dns.AAAA:
|
||||
ips = append(ips,
|
||||
net.JoinHostPort(a.(*dns.RR_AAAA).AAAA.String(), "53"))
|
||||
net.JoinHostPort(a.(*dns.AAAA).AAAA.String(), "53"))
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -66,8 +66,8 @@ func main() {
|
|||
numNS := 0
|
||||
for _, ans := range r.Answer {
|
||||
switch ans.(type) {
|
||||
case *dns.RR_NS:
|
||||
nameserver := ans.(*dns.RR_NS).Ns
|
||||
case *dns.NS:
|
||||
nameserver := ans.(*dns.NS).Ns
|
||||
numNS += 1
|
||||
ips := make([]string, 0)
|
||||
fmt.Printf("%s : ", nameserver)
|
||||
|
@ -82,8 +82,8 @@ func main() {
|
|||
}
|
||||
for _, ansa := range ra.Answer {
|
||||
switch ansa.(type) {
|
||||
case *dns.RR_A:
|
||||
ips = append(ips, ansa.(*dns.RR_A).A.String())
|
||||
case *dns.A:
|
||||
ips = append(ips, ansa.(*dns.A).A.String())
|
||||
}
|
||||
}
|
||||
raaaa, err := localQuery(nameserver, dns.TypeAAAA)
|
||||
|
@ -97,8 +97,8 @@ func main() {
|
|||
}
|
||||
for _, ansaaaa := range raaaa.Answer {
|
||||
switch ansaaaa.(type) {
|
||||
case *dns.RR_AAAA:
|
||||
ips = append(ips, ansaaaa.(*dns.RR_AAAA).AAAA.String())
|
||||
case *dns.AAAA:
|
||||
ips = append(ips, ansaaaa.(*dns.AAAA).AAAA.String())
|
||||
}
|
||||
}
|
||||
if len(ips) == 0 {
|
||||
|
@ -133,10 +133,10 @@ func main() {
|
|||
}
|
||||
rsoa := soa.Answer[0]
|
||||
switch rsoa.(type) {
|
||||
case *dns.RR_SOA:
|
||||
case *dns.SOA:
|
||||
if soa.MsgHdr.Authoritative {
|
||||
// TODO: test if all name servers have the same serial ?
|
||||
fmt.Printf("%s (%d) ", ips, rsoa.(*dns.RR_SOA).Serial)
|
||||
fmt.Printf("%s (%d) ", ips, rsoa.(*dns.SOA).Serial)
|
||||
} else {
|
||||
success = false
|
||||
fmt.Printf("%s (not authoritative) ", ips)
|
||||
|
|
36
ex/q/q.go
36
ex/q/q.go
|
@ -18,7 +18,7 @@ import (
|
|||
// TODO: serial in ixfr
|
||||
|
||||
var (
|
||||
dnskey *dns.RR_DNSKEY
|
||||
dnskey *dns.DNSKEY
|
||||
short *bool
|
||||
)
|
||||
|
||||
|
@ -63,7 +63,7 @@ func main() {
|
|||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failure to read an RR from %s: %s\n", *anchor, err.Error())
|
||||
}
|
||||
if k, ok := r.(*dns.RR_DNSKEY); !ok {
|
||||
if k, ok := r.(*dns.DNSKEY); !ok {
|
||||
fmt.Fprintf(os.Stderr, "No DNSKEY read from %s\n", *anchor)
|
||||
} else {
|
||||
dnskey = k
|
||||
|
@ -148,7 +148,7 @@ Flags:
|
|||
m.Question = make([]dns.Question, 1)
|
||||
|
||||
if *dnssec || *nsid || *client != "" {
|
||||
o := new(dns.RR_OPT)
|
||||
o := new(dns.OPT)
|
||||
o.Hdr.Name = "."
|
||||
o.Hdr.Rrtype = dns.TypeOPT
|
||||
if *dnssec {
|
||||
|
@ -229,7 +229,7 @@ Flags:
|
|||
if c.Net != "tcp" {
|
||||
if !*dnssec {
|
||||
fmt.Printf(";; Truncated, trying %d bytes bufsize\n", dns.DefaultMsgSize)
|
||||
o := new(dns.RR_OPT)
|
||||
o := new(dns.OPT)
|
||||
o.Hdr.Name = "."
|
||||
o.Hdr.Rrtype = dns.TypeOPT
|
||||
o.SetUDPSize(dns.DefaultMsgSize)
|
||||
|
@ -280,28 +280,28 @@ func tsigKeyParse(s string) (algo, name, secret string, ok bool) {
|
|||
}
|
||||
|
||||
func sectionCheck(set []dns.RR, server string, tcp bool) {
|
||||
var key *dns.RR_DNSKEY
|
||||
var key *dns.DNSKEY
|
||||
for _, rr := range set {
|
||||
if rr.Header().Rrtype == dns.TypeRRSIG {
|
||||
rrset := getRRset(set, rr.Header().Name, rr.(*dns.RR_RRSIG).TypeCovered)
|
||||
rrset := getRRset(set, rr.Header().Name, rr.(*dns.RRSIG).TypeCovered)
|
||||
if dnskey == nil {
|
||||
key = getKey(rr.(*dns.RR_RRSIG).SignerName, rr.(*dns.RR_RRSIG).KeyTag, server, tcp)
|
||||
key = getKey(rr.(*dns.RRSIG).SignerName, rr.(*dns.RRSIG).KeyTag, server, tcp)
|
||||
} else {
|
||||
key = dnskey
|
||||
}
|
||||
if key == nil {
|
||||
fmt.Printf(";? DNSKEY %s/%d not found\n", rr.(*dns.RR_RRSIG).SignerName, rr.(*dns.RR_RRSIG).KeyTag)
|
||||
fmt.Printf(";? DNSKEY %s/%d not found\n", rr.(*dns.RRSIG).SignerName, rr.(*dns.RRSIG).KeyTag)
|
||||
continue
|
||||
}
|
||||
where := "net"
|
||||
if dnskey != nil {
|
||||
where = "disk"
|
||||
}
|
||||
if err := rr.(*dns.RR_RRSIG).Verify(key, rrset); err != nil {
|
||||
if err := rr.(*dns.RRSIG).Verify(key, rrset); err != nil {
|
||||
fmt.Printf(";- Bogus signature, %s does not validate (DNSKEY %s/%d/%s) [%s]\n",
|
||||
shortSig(rr.(*dns.RR_RRSIG)), key.Header().Name, key.KeyTag(), where, err.Error())
|
||||
shortSig(rr.(*dns.RRSIG)), key.Header().Name, key.KeyTag(), where, err.Error())
|
||||
} else {
|
||||
fmt.Printf(";+ Secure signature, %s validates (DNSKEY %s/%d/%s)\n", shortSig(rr.(*dns.RR_RRSIG)), key.Header().Name, key.KeyTag(), where)
|
||||
fmt.Printf(";+ Secure signature, %s validates (DNSKEY %s/%d/%s)\n", shortSig(rr.(*dns.RRSIG)), key.Header().Name, key.KeyTag(), where)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -328,7 +328,7 @@ func getRRset(l []dns.RR, name string, t uint16) []dns.RR {
|
|||
|
||||
// Get the key from the DNS (uses the local resolver) and return them.
|
||||
// If nothing is found we return nil
|
||||
func getKey(name string, keytag uint16, server string, tcp bool) *dns.RR_DNSKEY {
|
||||
func getKey(name string, keytag uint16, server string, tcp bool) *dns.DNSKEY {
|
||||
c := new(dns.Client)
|
||||
if tcp {
|
||||
c.Net = "tcp"
|
||||
|
@ -341,7 +341,7 @@ func getKey(name string, keytag uint16, server string, tcp bool) *dns.RR_DNSKEY
|
|||
return nil
|
||||
}
|
||||
for _, k := range r.Answer {
|
||||
if k1, ok := k.(*dns.RR_DNSKEY); ok {
|
||||
if k1, ok := k.(*dns.DNSKEY); ok {
|
||||
if k1.KeyTag() == keytag {
|
||||
return k1
|
||||
}
|
||||
|
@ -351,7 +351,7 @@ func getKey(name string, keytag uint16, server string, tcp bool) *dns.RR_DNSKEY
|
|||
}
|
||||
|
||||
// shorten RRSIG to "miek.nl RRSIG(NS)"
|
||||
func shortSig(sig *dns.RR_RRSIG) string {
|
||||
func shortSig(sig *dns.RRSIG) string {
|
||||
return sig.Header().Name + " RRSIG(" + dns.TypeToString[sig.TypeCovered] + ")"
|
||||
}
|
||||
|
||||
|
@ -371,13 +371,13 @@ func shortMsg(in *dns.Msg) *dns.Msg {
|
|||
|
||||
func shortRR(r dns.RR) dns.RR {
|
||||
switch t := r.(type) {
|
||||
case *dns.RR_DS:
|
||||
case *dns.DS:
|
||||
t.Digest = "..."
|
||||
case *dns.RR_DNSKEY:
|
||||
case *dns.DNSKEY:
|
||||
t.PublicKey = "..."
|
||||
case *dns.RR_RRSIG:
|
||||
case *dns.RRSIG:
|
||||
t.Signature = "..."
|
||||
case *dns.RR_NSEC3:
|
||||
case *dns.NSEC3:
|
||||
t.Salt = "." // Nobody cares
|
||||
if len(t.TypeBitMap) > 5 {
|
||||
t.TypeBitMap = t.TypeBitMap[1:5]
|
||||
|
|
|
@ -73,16 +73,16 @@ func handleReflect(w dns.ResponseWriter, r *dns.Msg) {
|
|||
}
|
||||
|
||||
if v4 {
|
||||
rr = new(dns.RR_A)
|
||||
rr.(*dns.RR_A).Hdr = dns.RR_Header{Name: dom, Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: 0}
|
||||
rr.(*dns.RR_A).A = a.To4()
|
||||
rr = new(dns.A)
|
||||
rr.(*dns.A).Hdr = dns.RR_Header{Name: dom, Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: 0}
|
||||
rr.(*dns.A).A = a.To4()
|
||||
} else {
|
||||
rr = new(dns.RR_AAAA)
|
||||
rr.(*dns.RR_AAAA).Hdr = dns.RR_Header{Name: dom, Rrtype: dns.TypeAAAA, Class: dns.ClassINET, Ttl: 0}
|
||||
rr.(*dns.RR_AAAA).AAAA = a
|
||||
rr = new(dns.AAAA)
|
||||
rr.(*dns.AAAA).Hdr = dns.RR_Header{Name: dom, Rrtype: dns.TypeAAAA, Class: dns.ClassINET, Ttl: 0}
|
||||
rr.(*dns.AAAA).AAAA = a
|
||||
}
|
||||
|
||||
t := new(dns.RR_TXT)
|
||||
t := new(dns.TXT)
|
||||
t.Hdr = dns.RR_Header{Name: dom, Rrtype: dns.TypeTXT, Class: dns.ClassINET, Ttl: 0}
|
||||
t.Txt = []string{str}
|
||||
|
||||
|
@ -117,7 +117,7 @@ func handleReflect(w dns.ResponseWriter, r *dns.Msg) {
|
|||
|
||||
if r.IsTsig() != nil {
|
||||
if w.TsigStatus() == nil {
|
||||
m.SetTsig(r.Extra[len(r.Extra)-1].(*dns.RR_TSIG).Hdr.Name, dns.HmacMD5, 300, time.Now().Unix())
|
||||
m.SetTsig(r.Extra[len(r.Extra)-1].(*dns.TSIG).Hdr.Name, dns.HmacMD5, 300, time.Now().Unix())
|
||||
} else {
|
||||
println("Status", w.TsigStatus().Error())
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue