mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-31 02:03:20 -04:00 
			
		
		
		
	plugin/dnstap: remove config struct (#4258)
* plugin/dnstap: remove config struct this struct is an uneeded intermidiate to get a dnstap it can be removed. Remove the dnstapio subpkg: it's also not needed. Make *many* functions and structs private now that we can. Signed-off-by: Miek Gieben <miek@miek.nl> * correct logging Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
		| @@ -6,64 +6,62 @@ import ( | ||||
| 	"github.com/coredns/caddy" | ||||
| 	"github.com/coredns/coredns/core/dnsserver" | ||||
| 	"github.com/coredns/coredns/plugin" | ||||
| 	"github.com/coredns/coredns/plugin/dnstap/dnstapio" | ||||
| 	clog "github.com/coredns/coredns/plugin/pkg/log" | ||||
| 	"github.com/coredns/coredns/plugin/pkg/parse" | ||||
| ) | ||||
|  | ||||
| var log = clog.NewWithPlugin("dnstap") | ||||
|  | ||||
| func init() { plugin.Register("dnstap", setup) } | ||||
|  | ||||
| type config struct { | ||||
| 	proto  string | ||||
| 	target string | ||||
| 	full   bool | ||||
| } | ||||
| func parseConfig(c *caddy.Controller) (Dnstap, error) { | ||||
| 	c.Next() // directive name | ||||
| 	d := Dnstap{} | ||||
| 	endpoint := "" | ||||
|  | ||||
| func parseConfig(d *caddy.Controller) (c config, err error) { | ||||
| 	d.Next() // directive name | ||||
|  | ||||
| 	if !d.Args(&c.target) { | ||||
| 		return c, d.ArgErr() | ||||
| 	if !c.Args(&endpoint) { | ||||
| 		return d, c.ArgErr() | ||||
| 	} | ||||
|  | ||||
| 	if strings.HasPrefix(c.target, "tcp://") { | ||||
| 	if strings.HasPrefix(endpoint, "tcp://") { | ||||
| 		// remote IP endpoint | ||||
| 		servers, err := parse.HostPortOrFile(c.target[6:]) | ||||
| 		servers, err := parse.HostPortOrFile(endpoint[6:]) | ||||
| 		if err != nil { | ||||
| 			return c, d.ArgErr() | ||||
| 			return d, c.ArgErr() | ||||
| 		} | ||||
| 		c.target = servers[0] | ||||
| 		c.proto = "tcp" | ||||
| 		dio := newIO("tcp", servers[0]) | ||||
| 		d = Dnstap{io: dio} | ||||
| 	} else { | ||||
| 		c.target = strings.TrimPrefix(c.target, "unix://") | ||||
| 		c.proto = "unix" | ||||
| 		endpoint = strings.TrimPrefix(endpoint, "unix://") | ||||
| 		dio := newIO("unix", endpoint) | ||||
| 		d = Dnstap{io: dio} | ||||
| 	} | ||||
|  | ||||
| 	c.full = d.NextArg() && d.Val() == "full" | ||||
| 	d.IncludeRawMessage = c.NextArg() && c.Val() == "full" | ||||
|  | ||||
| 	return | ||||
| 	return d, nil | ||||
| } | ||||
|  | ||||
| func setup(c *caddy.Controller) error { | ||||
| 	conf, err := parseConfig(c) | ||||
| 	dnstap, err := parseConfig(c) | ||||
| 	if err != nil { | ||||
| 		return plugin.Error("dnstap", err) | ||||
| 	} | ||||
|  | ||||
| 	dio := dnstapio.New(conf.proto, conf.target) | ||||
| 	dnstap := Dnstap{io: dio, IncludeRawMessage: conf.full} | ||||
|  | ||||
| 	c.OnStartup(func() error { | ||||
| 		dio.Connect() | ||||
| 		if err := dnstap.io.(*dio).connect(); err != nil { | ||||
| 			log.Errorf("No connection to dnstap endpoint: %s", err) | ||||
| 		} | ||||
| 		return nil | ||||
| 	}) | ||||
|  | ||||
| 	c.OnRestart(func() error { | ||||
| 		dio.Close() | ||||
| 		dnstap.io.(*dio).close() | ||||
| 		return nil | ||||
| 	}) | ||||
|  | ||||
| 	c.OnFinalShutdown(func() error { | ||||
| 		dio.Close() | ||||
| 		dnstap.io.(*dio).close() | ||||
| 		return nil | ||||
| 	}) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user