This commit is contained in:
Miek Gieben 2011-07-05 20:01:17 +02:00
parent 5d6b1bad8e
commit 73cad7898b
3 changed files with 39 additions and 37 deletions

View File

@ -24,6 +24,8 @@ import (
"strconv" "strconv"
) )
var dom = "whoami.miek.nl"
func handleReflect(w dns.ResponseWriter, r *dns.Msg) { func handleReflect(w dns.ResponseWriter, r *dns.Msg) {
m := new(dns.Msg) m := new(dns.Msg)
m.SetReply(r) m.SetReply(r)
@ -49,16 +51,16 @@ func handleReflect(w dns.ResponseWriter, r *dns.Msg) {
if v4 { if v4 {
rr = new(dns.RR_A) rr = new(dns.RR_A)
rr.(*dns.RR_A).Hdr = dns.RR_Header{Name: "whoami.miek.nl.", Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: 0} rr.(*dns.RR_A).Hdr = dns.RR_Header{Name: dom, Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: 0}
rr.(*dns.RR_A).A = a rr.(*dns.RR_A).A = a
} else { } else {
rr = new(dns.RR_AAAA) rr = new(dns.RR_AAAA)
rr.(*dns.RR_AAAA).Hdr = dns.RR_Header{Name: "whoami.miek.nl.", Rrtype: dns.TypeAAAA, Class: dns.ClassINET, Ttl: 0} 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.(*dns.RR_AAAA).AAAA = a
} }
t := new(dns.RR_TXT) t := new(dns.RR_TXT)
t.Hdr = dns.RR_Header{Name: "whoami.miek.nl.", Rrtype: dns.TypeTXT, Class: dns.ClassINET, Ttl: 0} t.Hdr = dns.RR_Header{Name: dom, Rrtype: dns.TypeTXT, Class: dns.ClassINET, Ttl: 0}
t.Txt = str t.Txt = str
m.Extra[0] = t m.Extra[0] = t
m.Answer[0] = rr m.Answer[0] = rr
@ -71,7 +73,7 @@ func handleReflect(w dns.ResponseWriter, r *dns.Msg) {
func serve(net string) { func serve(net string) {
err := dns.ListenAndServe(":8053", net, nil) err := dns.ListenAndServe(":8053", net, nil)
if err != nil { if err != nil {
fmt.Printf("Failed to setup the " + net + " server: %s", err.String()) fmt.Printf("Failed to setup the " + net + " server: %s\n", err.String())
} }
} }
@ -85,7 +87,7 @@ forever:
for { for {
select { select {
case <-signal.Incoming: case <-signal.Incoming:
fmt.Printf("Signal received, stopping") fmt.Printf("Signal received, stopping\n")
break forever break forever
} }
} }

View File

@ -6,10 +6,10 @@ import (
func TestClientSync(t *testing.T) { func TestClientSync(t *testing.T) {
m := new(Msg) m := new(Msg)
m.SetQuestion("miek.nl", TypeSOA) m.SetQuestion("miek.nl", TypeSOA)
c := NewClient() c := NewClient()
r := c.Exchange(m, "85.223.71.124:53") r := c.Exchange(m, "85.223.71.124:53")
if r != nil && r.Rcode != RcodeSuccess { if r != nil && r.Rcode != RcodeSuccess {
t.Log("Failed to get an valid answer") t.Log("Failed to get an valid answer")
@ -20,33 +20,33 @@ func TestClientSync(t *testing.T) {
func helloMiek(w RequestWriter, r *Msg) { func helloMiek(w RequestWriter, r *Msg) {
w.Send(r) w.Send(r)
reply, _ := w.Receive() reply, _ := w.Receive()
w.Write(reply) w.Write(reply)
} }
func TestClientASync(t *testing.T) { func TestClientASync(t *testing.T) {
HandleQueryFunc("miek.nl", helloMiek) // All queries for miek.nl will be handled by HelloMiek HandleQueryFunc("miek.nl", helloMiek) // All queries for miek.nl will be handled by HelloMiek
ListenAndQuery(nil, nil) // Detect if this isn't running ListenAndQuery(nil, nil) // Detect if this isn't running
m := new(Msg) m := new(Msg)
m.SetQuestion("miek.nl", TypeSOA) m.SetQuestion("miek.nl", TypeSOA)
c := NewClient() c := NewClient()
c.Do(m, "85.223.71.124:53") c.Do(m, "85.223.71.124:53")
forever: forever:
for { for {
select { select {
case n := <-DefaultReplyChan: case n := <-DefaultReplyChan:
if n[1] != nil && n[1].Rcode != RcodeSuccess { if n[1] != nil && n[1].Rcode != RcodeSuccess {
t.Log("Failed to get an valid answer") t.Log("Failed to get an valid answer")
t.Fail() t.Fail()
t.Logf("%v\n", n[1]) t.Logf("%v\n", n[1])
} }
break forever break forever
} }
} }
} }
// TestClientEDNS // TestClientEDNS

View File

@ -5,15 +5,15 @@ import (
) )
func TestPackNsec3(t *testing.T) { func TestPackNsec3(t *testing.T) {
nsec3 := hashName("dnsex.nl",HashSHA1 , 0, "DEAD") nsec3 := hashName("dnsex.nl", HashSHA1, 0, "DEAD")
if nsec3 != "ROCCJAE8BJJU7HN6T7NG3TNM8ACRS87J" { if nsec3 != "ROCCJAE8BJJU7HN6T7NG3TNM8ACRS87J" {
t.Logf("%v\n", nsec3) t.Logf("%v\n", nsec3)
t.Fail() t.Fail()
} }
nsec3 = hashName("a.b.c.example.org",HashSHA1 , 2, "DEAD") nsec3 = hashName("a.b.c.example.org", HashSHA1, 2, "DEAD")
if nsec3 != "6LQ07OAHBTOOEU2R9ANI2AT70K5O0RCG" { if nsec3 != "6LQ07OAHBTOOEU2R9ANI2AT70K5O0RCG" {
t.Logf("%v\n", nsec3) t.Logf("%v\n", nsec3)
t.Fail() t.Fail()
} }
} }