all: simply registering plugins (#3287)

Abstract the caddy call and make it simpler.

See #3261 for some part of the discussion.

Go from:

~~~ go
func init() {
       caddy.RegisterPlugin("any", caddy.Plugin{
               ServerType: "dns",
               Action:     setup,
       })
}
~~~

To:

~~~ go
func init() { plugin.Register("any", setup) }
~~~

This requires some external documents in coredns.io to be updated as
well; the old way still works, so it's backwards compatible.

Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
Miek Gieben 2019-09-20 08:02:30 +01:00 committed by GitHub
parent 85e65702bd
commit 004c5fca9d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
38 changed files with 54 additions and 220 deletions

View file

@ -13,12 +13,7 @@ import (
"github.com/miekg/dns" "github.com/miekg/dns"
) )
func init() { func init() { plugin.Register("acl", setup) }
caddy.RegisterPlugin("acl", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func newDefaultFilter() *iptree.Tree { func newDefaultFilter() *iptree.Tree {
defaultFilter := iptree.NewTree() defaultFilter := iptree.NewTree()

View file

@ -7,12 +7,7 @@ import (
"github.com/caddyserver/caddy" "github.com/caddyserver/caddy"
) )
func init() { func init() { plugin.Register("any", setup) }
caddy.RegisterPlugin("any", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
a := Any{} a := Any{}

View file

@ -18,12 +18,7 @@ import (
var log = clog.NewWithPlugin("auto") var log = clog.NewWithPlugin("auto")
func init() { func init() { plugin.Register("auto", setup) }
caddy.RegisterPlugin("auto", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
a, err := autoParse(c) a, err := autoParse(c)

View file

@ -11,13 +11,7 @@ import (
"github.com/miekg/dns" "github.com/miekg/dns"
) )
func init() { func init() { plugin.Register("autopath", setup) }
caddy.RegisterPlugin("autopath", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
ap, mw, err := autoPathParse(c) ap, mw, err := autoPathParse(c)

View file

@ -17,12 +17,7 @@ import (
var log = clog.NewWithPlugin("azure") var log = clog.NewWithPlugin("azure")
func init() { func init() { plugin.Register("azure", setup) }
caddy.RegisterPlugin("azure", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
env, keys, fall, err := parse(c) env, keys, fall, err := parse(c)

View file

@ -16,12 +16,7 @@ import (
var log = clog.NewWithPlugin("cache") var log = clog.NewWithPlugin("cache")
func init() { func init() { plugin.Register("cache", setup) }
caddy.RegisterPlugin("cache", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
ca, err := cacheParse(c) ca, err := cacheParse(c)

View file

@ -11,13 +11,7 @@ import (
"github.com/caddyserver/caddy" "github.com/caddyserver/caddy"
) )
func init() { func init() { plugin.Register("chaos", setup) }
caddy.RegisterPlugin("chaos", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
version, authors, err := parse(c) version, authors, err := parse(c)

View file

@ -18,9 +18,8 @@ import (
var log = clog.NewWithPlugin("clouddns") var log = clog.NewWithPlugin("clouddns")
func init() { func init() {
caddy.RegisterPlugin("clouddns", caddy.Plugin{ plugin.Register("clouddns",
ServerType: "dns", func(c *caddy.Controller) error {
Action: func(c *caddy.Controller) error {
f := func(ctx context.Context, opt option.ClientOption) (gcpDNS, error) { f := func(ctx context.Context, opt option.ClientOption) (gcpDNS, error) {
var err error var err error
var client *gcp.Service var client *gcp.Service
@ -35,7 +34,7 @@ func init() {
} }
return setup(c, f) return setup(c, f)
}, },
}) )
} }
func setup(c *caddy.Controller, f func(ctx context.Context, opt option.ClientOption) (gcpDNS, error)) error { func setup(c *caddy.Controller, f func(ctx context.Context, opt option.ClientOption) (gcpDNS, error)) error {

View file

@ -20,7 +20,7 @@ import (
) )
// removed has the names of the plugins that need to error on startup. // removed has the names of the plugins that need to error on startup.
var removed = []string{"reverse"} var removed = []string{""}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
c.Next() c.Next()
@ -29,10 +29,7 @@ func setup(c *caddy.Controller) error {
} }
func init() { func init() {
for _, plugin := range removed { for _, plug := range removed {
caddy.RegisterPlugin(plugin, caddy.Plugin{ plugin.Register(plug, setup)
ServerType: "dns",
Action: setup,
})
} }
} }

View file

@ -17,12 +17,7 @@ import (
var log = clog.NewWithPlugin("dnssec") var log = clog.NewWithPlugin("dnssec")
func init() { func init() { plugin.Register("dnssec", setup) }
caddy.RegisterPlugin("dnssec", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
zones, keys, capacity, splitkeys, err := dnssecParse(c) zones, keys, capacity, splitkeys, err := dnssecParse(c)

View file

@ -15,12 +15,7 @@ import (
var log = clog.NewWithPlugin("dnstap") var log = clog.NewWithPlugin("dnstap")
func init() { func init() { plugin.Register("dnstap", wrapSetup) }
caddy.RegisterPlugin("dnstap", caddy.Plugin{
ServerType: "dns",
Action: wrapSetup,
})
}
func wrapSetup(c *caddy.Controller) error { func wrapSetup(c *caddy.Controller) error {
if err := setup(c); err != nil { if err := setup(c); err != nil {

View file

@ -11,12 +11,7 @@ import (
"github.com/caddyserver/caddy" "github.com/caddyserver/caddy"
) )
func init() { func init() { plugin.Register("erratic", setup) }
caddy.RegisterPlugin("erratic", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
e, err := parseErratic(c) e, err := parseErratic(c)

View file

@ -10,12 +10,7 @@ import (
"github.com/caddyserver/caddy" "github.com/caddyserver/caddy"
) )
func init() { func init() { plugin.Register("errors", setup) }
caddy.RegisterPlugin("errors", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
handler, err := errorsParse(c) handler, err := errorsParse(c)

View file

@ -15,12 +15,7 @@ import (
var log = clog.NewWithPlugin("etcd") var log = clog.NewWithPlugin("etcd")
func init() { func init() { plugin.Register("etcd", setup) }
caddy.RegisterPlugin("etcd", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
e, err := etcdParse(c) e, err := etcdParse(c)

View file

@ -13,12 +13,7 @@ import (
"github.com/caddyserver/caddy" "github.com/caddyserver/caddy"
) )
func init() { func init() { plugin.Register("file", setup) }
caddy.RegisterPlugin("file", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
zones, err := fileParse(c) zones, err := fileParse(c)

View file

@ -16,12 +16,7 @@ import (
"github.com/caddyserver/caddy/caddyfile" "github.com/caddyserver/caddy/caddyfile"
) )
func init() { func init() { plugin.Register("forward", setup) }
caddy.RegisterPlugin("forward", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
f, err := parseForward(c) f, err := parseForward(c)

View file

@ -14,12 +14,7 @@ import (
"github.com/caddyserver/caddy/caddyfile" "github.com/caddyserver/caddy/caddyfile"
) )
func init() { func init() { plugin.Register("grpc", setup) }
caddy.RegisterPlugin("grpc", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
g, err := parseGRPC(c) g, err := parseGRPC(c)

View file

@ -11,12 +11,7 @@ import (
"github.com/caddyserver/caddy" "github.com/caddyserver/caddy"
) )
func init() { func init() { plugin.Register("health", setup) }
caddy.RegisterPlugin("health", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
addr, lame, err := parse(c) addr, lame, err := parse(c)

View file

@ -17,12 +17,7 @@ import (
var log = clog.NewWithPlugin("hosts") var log = clog.NewWithPlugin("hosts")
func init() { func init() { plugin.Register("hosts", setup) }
caddy.RegisterPlugin("hosts", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func periodicHostsUpdate(h *Hosts) chan bool { func periodicHostsUpdate(h *Hosts) chan bool {
parseChan := make(chan bool) parseChan := make(chan bool)

View file

@ -9,12 +9,7 @@ import (
"github.com/caddyserver/caddy" "github.com/caddyserver/caddy"
) )
func init() { func init() { plugin.Register("k8s_external", setup) }
caddy.RegisterPlugin("k8s_external", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
e, err := parse(c) e, err := parse(c)

View file

@ -34,12 +34,7 @@ import (
var log = clog.NewWithPlugin("kubernetes") var log = clog.NewWithPlugin("kubernetes")
func init() { func init() { plugin.Register("kubernetes", setup) }
caddy.RegisterPlugin("kubernetes", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
klog.SetOutput(os.Stdout) klog.SetOutput(os.Stdout)

View file

@ -12,12 +12,7 @@ import (
var log = clog.NewWithPlugin("loadbalance") var log = clog.NewWithPlugin("loadbalance")
func init() { func init() { plugin.Register("loadbalance", setup) }
caddy.RegisterPlugin("loadbalance", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
err := parse(c) err := parse(c)

View file

@ -12,12 +12,7 @@ import (
"github.com/miekg/dns" "github.com/miekg/dns"
) )
func init() { func init() { plugin.Register("log", setup) }
caddy.RegisterPlugin("log", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
rules, err := logParse(c) rules, err := logParse(c)

View file

@ -13,12 +13,7 @@ import (
"github.com/caddyserver/caddy" "github.com/caddyserver/caddy"
) )
func init() { func init() { plugin.Register("loop", setup) }
caddy.RegisterPlugin("loop", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
l, err := parse(c) l, err := parse(c)

View file

@ -7,12 +7,7 @@ import (
"github.com/caddyserver/caddy" "github.com/caddyserver/caddy"
) )
func init() { func init() { plugin.Register("metadata", setup) }
caddy.RegisterPlugin("metadata", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
m, err := metadataParse(c) m, err := metadataParse(c)

View file

@ -20,12 +20,7 @@ var (
registry = newReg() registry = newReg()
) )
func init() { func init() { plugin.Register("prometheus", setup) }
caddy.RegisterPlugin("prometheus", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
m, err := parse(c) m, err := parse(c)

View file

@ -10,12 +10,7 @@ import (
"github.com/caddyserver/caddy" "github.com/caddyserver/caddy"
) )
func init() { func init() { plugin.Register("nsid", setup) }
caddy.RegisterPlugin("nsid", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
nsid, err := nsidParse(c) nsid, err := nsidParse(c)

View file

@ -15,12 +15,7 @@ var log = clog.NewWithPlugin("pprof")
const defaultAddr = "localhost:6053" const defaultAddr = "localhost:6053"
func init() { func init() { plugin.Register("pprof", setup) }
caddy.RegisterPlugin("pprof", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
h := &handler{addr: defaultAddr} h := &handler{addr: defaultAddr}

View file

@ -9,12 +9,7 @@ import (
"github.com/caddyserver/caddy" "github.com/caddyserver/caddy"
) )
func init() { func init() { plugin.Register("ready", setup) }
caddy.RegisterPlugin("ready", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
addr, err := parse(c) addr, err := parse(c)

11
plugin/register.go Normal file
View file

@ -0,0 +1,11 @@
package plugin
import "github.com/caddyserver/caddy"
// Register registers your plugin with CoreDNS and allows it to be called when the server is running.
func Register(name string, action caddy.SetupFunc) {
caddy.RegisterPlugin(name, caddy.Plugin{
ServerType: "dns",
Action: action,
})
}

View file

@ -14,12 +14,7 @@ import (
var log = clog.NewWithPlugin("reload") var log = clog.NewWithPlugin("reload")
func init() { func init() { plugin.Register("reload", setup) }
caddy.RegisterPlugin("reload", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
// the info reload is global to all application, whatever number of reloads. // the info reload is global to all application, whatever number of reloads.
// it is used to transmit data between Setup and start of the hook called 'onInstanceStartup' // it is used to transmit data between Setup and start of the hook called 'onInstanceStartup'

View file

@ -10,12 +10,7 @@ import (
var log = clog.NewWithPlugin("rewrite") var log = clog.NewWithPlugin("rewrite")
func init() { func init() { plugin.Register("rewrite", setup) }
caddy.RegisterPlugin("rewrite", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
rewrites, err := rewriteParse(c) rewrites, err := rewriteParse(c)

View file

@ -25,9 +25,8 @@ import (
var log = clog.NewWithPlugin("route53") var log = clog.NewWithPlugin("route53")
func init() { func init() {
caddy.RegisterPlugin("route53", caddy.Plugin{ plugin.Register("route53",
ServerType: "dns", func(c *caddy.Controller) error {
Action: func(c *caddy.Controller) error {
f := func(credential *credentials.Credentials) route53iface.Route53API { f := func(credential *credentials.Credentials) route53iface.Route53API {
return route53.New(session.Must(session.NewSession(&aws.Config{ return route53.New(session.Must(session.NewSession(&aws.Config{
Credentials: credential, Credentials: credential,
@ -35,7 +34,7 @@ func init() {
} }
return setup(c, f) return setup(c, f)
}, },
}) )
} }
func setup(c *caddy.Controller, f func(*credentials.Credentials) route53iface.Route53API) error { func setup(c *caddy.Controller, f func(*credentials.Credentials) route53iface.Route53API) error {

View file

@ -10,12 +10,7 @@ import (
"github.com/caddyserver/caddy" "github.com/caddyserver/caddy"
) )
func init() { func init() { plugin.Register("secondary", setup) }
caddy.RegisterPlugin("secondary", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
zones, err := secondaryParse(c) zones, err := secondaryParse(c)

View file

@ -12,12 +12,7 @@ import (
"github.com/caddyserver/caddy" "github.com/caddyserver/caddy"
) )
func init() { func init() { plugin.Register("sign", setup) }
caddy.RegisterPlugin("sign", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
sign, err := parse(c) sign, err := parse(c)

View file

@ -12,12 +12,7 @@ import (
"github.com/miekg/dns" "github.com/miekg/dns"
) )
func init() { func init() { plugin.Register("template", setupTemplate) }
caddy.RegisterPlugin("template", caddy.Plugin{
ServerType: "dns",
Action: setupTemplate,
})
}
func setupTemplate(c *caddy.Controller) error { func setupTemplate(c *caddy.Controller) error {
handler, err := templateParse(c) handler, err := templateParse(c)

View file

@ -11,12 +11,7 @@ import (
"github.com/caddyserver/caddy" "github.com/caddyserver/caddy"
) )
func init() { func init() { plugin.Register("trace", setup) }
caddy.RegisterPlugin("trace", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
t, err := traceParse(c) t, err := traceParse(c)

View file

@ -7,12 +7,7 @@ import (
"github.com/caddyserver/caddy" "github.com/caddyserver/caddy"
) )
func init() { func init() { plugin.Register("whoami", setup) }
caddy.RegisterPlugin("whoami", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
c.Next() // 'whoami' c.Next() // 'whoami'