mirror of
https://github.com/miekg/dns.git
synced 2025-08-20 00:11:00 +02:00
51 lines
1008 B
Go
51 lines
1008 B
Go
package main
|
|
|
|
import (
|
|
"dns"
|
|
"flag"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
var (
|
|
z = flag.String("zone", "", "zonefile to read")
|
|
o = flag.String("origin", "", "origin of the zone")
|
|
l = flag.Bool("log", false, "log incoming queries")
|
|
)
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
if *z == "" {
|
|
log.Fatal("fksd: no zone")
|
|
}
|
|
if *o == "" {
|
|
log.Fatal("fksd: origin")
|
|
}
|
|
Z := make(map[string]*dns.Zone)
|
|
if e := addZone(Z, *o, *z); e != nil {
|
|
log.Fatal("fksd: %s\n", e.Error())
|
|
}
|
|
if e := addZone(Z, "nl.", "z/nl.db"); e != nil {
|
|
log.Fatal("fksd: %s\n", e.Error())
|
|
}
|
|
|
|
dns.HandleFunc(*o, func(w dns.ResponseWriter, req *dns.Msg) { serve(w, req, Z[dns.Fqdn(*o)]) })
|
|
dns.HandleFunc("nl.", func(w dns.ResponseWriter, req *dns.Msg) { serve(w, req, Z["nl."]) })
|
|
|
|
go func() {
|
|
err := dns.ListenAndServe(":8053", "udp", nil)
|
|
if err != nil {
|
|
log.Fatal("fksd: could not start")
|
|
}
|
|
}()
|
|
sig := make(chan os.Signal)
|
|
forever:
|
|
for {
|
|
select {
|
|
case <-sig:
|
|
log.Printf("fksd: signal received, stopping\n")
|
|
break forever
|
|
}
|
|
}
|
|
}
|