diff --git a/_examples/funkensturm/config.go b/_examples/funkensturm/config.go index 0261fb03..c1c94128 100644 --- a/_examples/funkensturm/config.go +++ b/_examples/funkensturm/config.go @@ -20,7 +20,7 @@ func NewFunkenSturm() *FunkenSturm { f.Default = send f.Funk = make([]*Funk, 1) // 1 Funk chain - f.Funk[0] = NewFunk() + f.Funk[0] = new(Funk) f.Funk[0].Match = func(m *dns.Msg) (*dns.Msg, bool) { return m, true } f.Funk[0].Action = send return f diff --git a/_examples/funkensturm/config_delay.go b/_examples/funkensturm/config_delay.go index 4acb3193..79f7e032 100644 --- a/_examples/funkensturm/config_delay.go +++ b/_examples/funkensturm/config_delay.go @@ -52,7 +52,7 @@ func NewFunkenSturm() *FunkenSturm { f.Setup = func() bool { previous = time.Nanoseconds(); return true } f.Funk = make([]*Funk, 1) - f.Funk[0] = NewFunk() + f.Funk[0] = new(Funk) f.Funk[0].Match = match f.Funk[0].Action = delay return f diff --git a/_examples/funkensturm/config_rproxy.go b/_examples/funkensturm/config_rproxy.go index 6860b95f..80fd790b 100644 --- a/_examples/funkensturm/config_rproxy.go +++ b/_examples/funkensturm/config_rproxy.go @@ -91,7 +91,7 @@ func NewFunkenSturm() *FunkenSturm { f := new(FunkenSturm) f.Funk = make([]*Funk, 1) f.Setup = func() bool { cache = NewCache(); return true } - f.Funk[0] = NewFunk() + f.Funk[0] = new(Funk) f.Funk[0].Match = func(m *dns.Msg) (*dns.Msg, bool) { return m, true } f.Funk[0].Action = checkcache return f diff --git a/_examples/funkensturm/config_sign.go b/_examples/funkensturm/config_sign.go index dc51a8f8..438bd3d7 100644 --- a/_examples/funkensturm/config_sign.go +++ b/_examples/funkensturm/config_sign.go @@ -7,52 +7,52 @@ package main // We could also use one 1 key for multiple domains. import ( "dns" - "strings" - "crypto/rsa" + "strings" + "crypto/rsa" ) func sign(m *dns.Msg) *dns.Msg { - sg := new(dns.RR_RRSIG) - sg.Hdr = dns.RR_Header{"www.example.org.", dns.TypeRRSIG, dns.ClassINET, 14400, 0} - sg.Expiration = 1296534305 // date -u '+%s' -d"2011-02-01 04:25:05" - sg.Inception = 1293942305 // date -u '+%s' -d"2011-01-02 04:25:05" - sg.KeyTag = pubkey.KeyTag() // Get the keyfrom the Key - sg.SignerName = pubkey.Hdr.Name - sg.Algorithm = dns.RSASHA256 + sg := new(dns.RR_RRSIG) + sg.Hdr = dns.RR_Header{"www.example.org.", dns.TypeRRSIG, dns.ClassINET, 14400, 0} + sg.Expiration = 1296534305 // date -u '+%s' -d"2011-02-01 04:25:05" + sg.Inception = 1293942305 // date -u '+%s' -d"2011-01-02 04:25:05" + sg.KeyTag = pubkey.KeyTag() // Get the keyfrom the Key + sg.SignerName = pubkey.Hdr.Name + sg.Algorithm = dns.RSASHA256 - if len(m.Answer) > 0 { - // sign the first record - an := m.Answer[0] - sg.TypeCovered = an.Header().Rrtype - sg.Labels = dns.Labels(an.Header().Name) - sg.OrigTtl = an.Header().Ttl - switch p:=privkey.(type) { - case *rsa.PrivateKey: - sg.Sign(p, []dns.RR{an}) - } - } - m.Answer = append(m.Answer, sg) - return m + if len(m.Answer) > 0 { + // sign the first record + an := m.Answer[0] + sg.TypeCovered = an.Header().Rrtype + sg.Labels = dns.Labels(an.Header().Name) + sg.OrigTtl = an.Header().Ttl + switch p := privkey.(type) { + case *rsa.PrivateKey: + sg.Sign(p, []dns.RR{an}) + } + } + m.Answer = append(m.Answer, sg) + return m } func match(m *dns.Msg) (*dns.Msg, bool) { - return m, m.Question[0].Name == "www.example.org." + return m, m.Question[0].Name == "www.example.org." } func send(m *dns.Msg) (o []byte) { - var p *dns.Msg - for _, c := range qr { - p = c.Client.Exchange(m, c.Addr) - } - o, _ = sign(p).Pack() - return + var p *dns.Msg + for _, c := range qr { + p = c.Client.Exchange(m, c.Addr) + } + o, _ = sign(p).Pack() + return } var pubkey *dns.RR_DNSKEY var privkey dns.PrivateKey func setup() bool { - privdata := `Private-key-format: v1.3 + privdata := `Private-key-format: v1.3 Algorithm: 5 (RSASHA1) Modulus: AaTnz33zSgSIWzUBSJwerZiUdsTmfQNaB+AKpN8FnVlhGOfabJ6ZCi123hjOr3ucE/LWfPGtmEppuFf2dmuJW/yO6s8td5q5b81PUOt+uPMNBGJ1T4DUO8sOQQp4SXw76Q7KIgcrj2RSuNt9qv3JC4VlQB6j7bgVF8er2gbKxbvR PublicExponent: AQAB @@ -65,22 +65,23 @@ Coefficient: AZX3xIGzo/3fw4ouA6nAjpiWGpTK+OdFRkZtvbmzwgqnFDQopB0SweVnd1shpKCXkPT Created: 20110122104659 Publish: 20110122104659 Activate: 20110122104659` - pubkey = new(dns.RR_DNSKEY) - privkey, _ = pubkey.ReadPrivateKey(strings.NewReader(privdata)) - pubkey.Hdr = dns.RR_Header{"miek.nl.", dns.TypeDNSKEY, dns.ClassINET, 3600, 0} - pubkey.Protocol = 3 - pubkey.Flags = 256 - return true + pubkey = new(dns.RR_DNSKEY) + privkey, _ = pubkey.ReadPrivateKey(strings.NewReader(privdata)) + pubkey.Hdr = dns.RR_Header{"miek.nl.", dns.TypeDNSKEY, dns.ClassINET, 3600, 0} + pubkey.Protocol = 3 + pubkey.Flags = 256 + return true } // Return the configration func NewFunkenSturm() *FunkenSturm { f := new(FunkenSturm) - f.Funk = make([]*Funk, 1) // 1 Chain + f.Funk = make([]*Funk, 1) f.Setup = setup + f.Default = send - f.Funk[0] = NewFunk(1) - f.Funk[0].Matches[0].Func = match + f.Funk[0] = new(Funk) + f.Funk[0].Match = func(m *dns.Msg) (*dns.Msg, bool) { return m, m.Question[0].Name == "www.example.org." } f.Funk[0].Action = send return f } diff --git a/_examples/funkensturm/funkensturm.go b/_examples/funkensturm/funkensturm.go index 87b29c97..ffdd88a5 100644 --- a/_examples/funkensturm/funkensturm.go +++ b/_examples/funkensturm/funkensturm.go @@ -35,11 +35,6 @@ type Funk struct { Action func(*dns.Msg) []byte } -func NewFunk() *Funk { - f := new(Funk) - return f -} - // Hold the information. type FunkenSturm struct { Setup func() bool // Inital setup (for extra resolvers, or loading keys, or ...) @@ -60,6 +55,10 @@ func doFunkenSturm(pkt *dns.Msg) (ret []byte) { return } } + if f.Default == nil { + println("No f.Default set!") + return + } ret = f.Default(pkt) return }