Add as212 thingy server as example

This commit is contained in:
Miek Gieben 2013-06-22 20:40:01 +01:00
parent 76db7d1a62
commit 93c0500dce
1 changed files with 55 additions and 21 deletions

View File

@ -9,30 +9,34 @@ package main
import (
"github.com/miekg/dns"
"log"
"os"
"os/signal"
"syscall"
)
const SOA string = "@ SOA prisoner.iana.org. hostmaster.root-servers.org. 2002040800 1800 900 0604800 604800"
var zones = map[string]dns.RR{
"10.in-addr.arpa": NewRR("$ORIGIN 10.in-addr.arpa.\n" + SOA),
"254.169.in-addr.arpa": NewRR("$ORIGIN 254.169.in-addr.arpa.\n" + SOA),
"168.192.in-addr.arpa": NewRR("$ORIGIN 168.192.in-addr.arpa.\n" + SOA),
"16.172.in-addr.arpa": NewRR("$ORIGIN 16.172.in-addr.arpa.\n" + SOA),
"17.172.in-addr.arpa": NewRR("$ORIGIN 17.172.in-addr.arpa.\n" + SOA),
"18.172.in-addr.arpa": NewRR("$ORIGIN 18.172.in-addr.arpa.\n" + SOA),
"19.172.in-addr.arpa": NewRR("$ORIGIN 19.172.in-addr.arpa.\n" + SOA),
"20.172.in-addr.arpa": NewRR("$ORIGIN 20.172.in-addr.arpa.\n" + SOA),
"21.172.in-addr.arpa": NewRR("$ORIGIN 21.172.in-addr.arpa.\n" + SOA),
"22.172.in-addr.arpa": NewRR("$ORIGIN 22.172.in-addr.arpa.\n" + SOA),
"23.172.in-addr.arpa": NewRR("$ORIGIN 23.172.in-addr.arpa.\n" + SOA),
"24.172.in-addr.arpa": NewRR("$ORIGIN 24.172.in-addr.arpa.\n" + SOA),
"25.172.in-addr.arpa": NewRR("$ORIGIN 25.172.in-addr.arpa.\n" + SOA),
"26.172.in-addr.arpa": NewRR("$ORIGIN 26.172.in-addr.arpa.\n" + SOA),
"27.172.in-addr.arpa": NewRR("$ORIGIN 27.172.in-addr.arpa.\n" + SOA),
"28.172.in-addr.arpa": NewRR("$ORIGIN 28.172.in-addr.arpa.\n" + SOA),
"29.172.in-addr.arpa": NewRR("$ORIGIN 29.172.in-addr.arpa.\n" + SOA),
"30.172.in-addr.arpa": NewRR("$ORIGIN 30.172.in-addr.arpa.\n" + SOA),
"31.172.in-addr.arpa": NewRR("$ORIGIN 31.172.in-addr.arpa.\n" + SOA),
"10.in-addr.arpa.": NewRR("$ORIGIN 10.in-addr.arpa.\n" + SOA),
"254.169.in-addr.arpa.": NewRR("$ORIGIN 254.169.in-addr.arpa.\n" + SOA),
"168.192.in-addr.arpa.": NewRR("$ORIGIN 168.192.in-addr.arpa.\n" + SOA),
"16.172.in-addr.arpa.": NewRR("$ORIGIN 16.172.in-addr.arpa.\n" + SOA),
"17.172.in-addr.arpa.": NewRR("$ORIGIN 17.172.in-addr.arpa.\n" + SOA),
"18.172.in-addr.arpa.": NewRR("$ORIGIN 18.172.in-addr.arpa.\n" + SOA),
"19.172.in-addr.arpa.": NewRR("$ORIGIN 19.172.in-addr.arpa.\n" + SOA),
"20.172.in-addr.arpa.": NewRR("$ORIGIN 20.172.in-addr.arpa.\n" + SOA),
"21.172.in-addr.arpa.": NewRR("$ORIGIN 21.172.in-addr.arpa.\n" + SOA),
"22.172.in-addr.arpa.": NewRR("$ORIGIN 22.172.in-addr.arpa.\n" + SOA),
"23.172.in-addr.arpa.": NewRR("$ORIGIN 23.172.in-addr.arpa.\n" + SOA),
"24.172.in-addr.arpa.": NewRR("$ORIGIN 24.172.in-addr.arpa.\n" + SOA),
"25.172.in-addr.arpa.": NewRR("$ORIGIN 25.172.in-addr.arpa.\n" + SOA),
"26.172.in-addr.arpa.": NewRR("$ORIGIN 26.172.in-addr.arpa.\n" + SOA),
"27.172.in-addr.arpa.": NewRR("$ORIGIN 27.172.in-addr.arpa.\n" + SOA),
"28.172.in-addr.arpa.": NewRR("$ORIGIN 28.172.in-addr.arpa.\n" + SOA),
"29.172.in-addr.arpa.": NewRR("$ORIGIN 29.172.in-addr.arpa.\n" + SOA),
"30.172.in-addr.arpa.": NewRR("$ORIGIN 30.172.in-addr.arpa.\n" + SOA),
"31.172.in-addr.arpa.": NewRR("$ORIGIN 31.172.in-addr.arpa.\n" + SOA),
}
func NewRR(s string) dns.RR {
@ -40,5 +44,35 @@ func NewRR(s string) dns.RR {
return r
}
func as212Handler(w dns.ResponseWriter, r *dns.Msg) {}
func main() {}
func main() {
go func() {
err := dns.ListenAndServe(":8053", "tcp", nil)
if err != nil {
log.Fatal("Failed to set tcp listener %s\n", err.Error())
}
}()
go func() {
err := dns.ListenAndServe(":8053", "udp", nil)
if err != nil {
log.Fatal("Failed to set tcp listener %s\n", err.Error())
}
}()
for z, rr := range zones {
dns.HandleFunc(z, func(w dns.ResponseWriter, r *dns.Msg) {
m := new(dns.Msg)
m.SetReply(r)
m.Authoritative = true
m.Ns = []dns.RR{rr}
w.WriteMsg(m)
})
}
sig := make(chan os.Signal)
signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)
for {
select {
case s := <-sig:
log.Fatalf("Signal (%d) received, stopping\n", s)
}
}
}