diff options
| author | Christine Dodrill <me@christine.website> | 2019-04-01 16:22:55 -0700 |
|---|---|---|
| committer | Christine Dodrill <me@christine.website> | 2019-04-01 16:22:55 -0700 |
| commit | eeb60c959c6652979f55dae1d34b12ac5ceaf9cb (patch) | |
| tree | a80b5ce41c97d26149f934d41459f58ede64f87f /cmd | |
| parent | aca1ef5842b3d7802bd128b5365b37a925f74269 (diff) | |
| download | x-eeb60c959c6652979f55dae1d34b12ac5ceaf9cb.tar.xz x-eeb60c959c6652979f55dae1d34b12ac5ceaf9cb.zip | |
cmd/dnsd: start prefix support, etag restarting
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/dnsd/main.go | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/cmd/dnsd/main.go b/cmd/dnsd/main.go index 314c86d..6e25be8 100644 --- a/cmd/dnsd/main.go +++ b/cmd/dnsd/main.go @@ -5,11 +5,12 @@ import ( "flag" "log" "net/http" - "os" + "time" "os/signal" "syscall" + "go.chromium.org/luci/common/flag/stringmapflag" "github.com/Xe/x/internal" "github.com/miekg/dns" "github.com/mmikulicic/stringlist" @@ -19,6 +20,8 @@ var ( port = flag.String("port", "53", "UDP port to listen on for DNS") server = flag.String("forward-server", "1.1.1.1:53", "forward DNS server") + prefixes = new(stringmapflag.Value) + zoneURLs = stringlist.Flag("zone-url", "DNS zonefiles to load") ) @@ -27,15 +30,61 @@ var ( "https://xena.greedo.xeserv.us/files/akua.zone", "https://xena.greedo.xeserv.us/files/adblock.zone", } + + defaultPrefixes = map[string]string { + "eq": "10.88.0.1:53", + } ) +func monitorURLs(urls []string) { + etags := make(map[string]string) + + t := time.NewTicker(time.Minute) + defer t.Stop() + + for { + select { + case <- t.C: + for _, urli := range urls { + resp, err := http.Get(urli) + if err != nil { + panic(err) + } + + et := resp.Header.Get("ETag") + + ot, ok := etags[urli] + if !ok { + log.Printf("stored %s:%s", urli, et) + etags[urli] = et + } + if ok && et != ot { + log.Fatalf("url %s has new etag %s and wanted old etag %s", urli, et, ot) + } + } + } + } +} + func main() { + flag.Var(prefixes, "prefix", "sets prefix=host:port to forward DNS requests to") internal.HandleStartup() + if len(*prefixes) == 0 { + v := stringmapflag.Value(defaultPrefixes) + prefixes = &v + } + + for k, v := range *prefixes { + log.Printf("conf: -prefix %s=%s", k, v) + } + if len(*zoneURLs) == 0 { *zoneURLs = defaultZoneURLS } + go monitorURLs(*zoneURLs) + for _, zurl := range *zoneURLs { log.Printf("conf: -zone-url=%s", zurl) } |
