aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2019-04-01 16:22:55 -0700
committerChristine Dodrill <me@christine.website>2019-04-01 16:22:55 -0700
commiteeb60c959c6652979f55dae1d34b12ac5ceaf9cb (patch)
treea80b5ce41c97d26149f934d41459f58ede64f87f /cmd
parentaca1ef5842b3d7802bd128b5365b37a925f74269 (diff)
downloadx-eeb60c959c6652979f55dae1d34b12ac5ceaf9cb.tar.xz
x-eeb60c959c6652979f55dae1d34b12ac5ceaf9cb.zip
cmd/dnsd: start prefix support, etag restarting
Diffstat (limited to 'cmd')
-rw-r--r--cmd/dnsd/main.go51
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)
}