aboutsummaryrefslogtreecommitdiff
path: root/middleware/dnstap/setup.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/dnstap/setup.go')
-rw-r--r--middleware/dnstap/setup.go98
1 files changed, 0 insertions, 98 deletions
diff --git a/middleware/dnstap/setup.go b/middleware/dnstap/setup.go
deleted file mode 100644
index 63a3eb099..000000000
--- a/middleware/dnstap/setup.go
+++ /dev/null
@@ -1,98 +0,0 @@
-package dnstap
-
-import (
- "fmt"
- "io"
- "log"
- "strings"
-
- "github.com/coredns/coredns/core/dnsserver"
- "github.com/coredns/coredns/middleware"
- "github.com/coredns/coredns/middleware/dnstap/out"
- "github.com/coredns/coredns/middleware/pkg/dnsutil"
-
- "github.com/mholt/caddy"
- "github.com/mholt/caddy/caddyfile"
-)
-
-func init() {
- caddy.RegisterPlugin("dnstap", caddy.Plugin{
- ServerType: "dns",
- Action: wrapSetup,
- })
-}
-
-func wrapSetup(c *caddy.Controller) error {
- if err := setup(c); err != nil {
- return middleware.Error("dnstap", err)
- }
- return nil
-}
-
-type config struct {
- target string
- socket bool
- full bool
-}
-
-func parseConfig(d *caddyfile.Dispenser) (c config, err error) {
- d.Next() // directive name
-
- if !d.Args(&c.target) {
- return c, d.ArgErr()
- }
-
- if strings.HasPrefix(c.target, "tcp://") {
- // remote IP endpoint
- servers, err := dnsutil.ParseHostPortOrFile(c.target[6:])
- if err != nil {
- return c, d.ArgErr()
- }
- c.target = servers[0]
- } else {
- // default to UNIX socket
- if strings.HasPrefix(c.target, "unix://") {
- c.target = c.target[7:]
- }
- c.socket = true
- }
-
- c.full = d.NextArg() && d.Val() == "full"
-
- return
-}
-
-func setup(c *caddy.Controller) error {
- conf, err := parseConfig(&c.Dispenser)
- if err != nil {
- return err
- }
-
- dnstap := Dnstap{Pack: conf.full}
-
- var o io.WriteCloser
- if conf.socket {
- o, err = out.NewSocket(conf.target)
- if err != nil {
- log.Printf("[WARN] Can't connect to %s at the moment: %s", conf.target, err)
- }
- } else {
- o = out.NewTCP(conf.target)
- }
- dnstap.Out = o
-
- c.OnShutdown(func() error {
- if err := o.Close(); err != nil {
- return fmt.Errorf("output: %s", err)
- }
- return nil
- })
-
- dnsserver.GetConfig(c).AddMiddleware(
- func(next middleware.Handler) middleware.Handler {
- dnstap.Next = next
- return dnstap
- })
-
- return nil
-}