mirror of
https://github.com/coredns/coredns.git
synced 2025-10-27 00:04:15 -04:00
@@ -1,6 +1,6 @@
|
||||
# Middleware
|
||||
# Plugins
|
||||
|
||||
## Writing Middleware
|
||||
## Writing Plugins
|
||||
|
||||
From the Caddy docs:
|
||||
|
||||
@@ -136,7 +136,7 @@ compute.internal. 3600 IN MX 10 mx.compute.internal.
|
||||
|
||||
## Qualifying for main repo
|
||||
|
||||
Middleware for CoreDNS can live out-of-tree, `plugin.cfg` defaults to CoreDNS' repo but other
|
||||
Plugins for CoreDNS can live out-of-tree, `plugin.cfg` defaults to CoreDNS' repo but other
|
||||
repos work just as well. So when do we consider the inclusion of a new plugin in the main repo?
|
||||
|
||||
* First, the plugin should be useful for other people. "Useful" is a subjective term. We will
|
||||
|
||||
@@ -25,7 +25,7 @@ autopath.Func. Note the searchpath must be ending with the empty string.
|
||||
|
||||
I.e:
|
||||
|
||||
func (m Middleware ) AutoPath(state request.Request) []string {
|
||||
func (m Plugins ) AutoPath(state request.Request) []string {
|
||||
return []string{"first", "second", "last", ""}
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -49,8 +49,8 @@ func setup(c *caddy.Controller) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// allowedMiddleware has a list of plugin that can be used by autopath.
|
||||
var allowedMiddleware = map[string]bool{
|
||||
// allowedPlugins has a list of plugin that can be used by autopath.
|
||||
var allowedPlugins = map[string]bool{
|
||||
"@kubernetes": true,
|
||||
"@erratic": true,
|
||||
}
|
||||
@@ -66,7 +66,7 @@ func autoPathParse(c *caddy.Controller) (*AutoPath, string, error) {
|
||||
}
|
||||
resolv := zoneAndresolv[len(zoneAndresolv)-1]
|
||||
if resolv[0] == '@' {
|
||||
_, ok := allowedMiddleware[resolv]
|
||||
_, ok := allowedPlugins[resolv]
|
||||
if ok {
|
||||
mw = resolv[1:]
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ func TestSetupAutoPath(t *testing.T) {
|
||||
}
|
||||
|
||||
if !test.shouldErr && mw != test.expectedMw {
|
||||
t.Errorf("Test %d, Middleware not correctly set for input %s. Expected: %s, actual: %s", i, test.input, test.expectedMw, mw)
|
||||
t.Errorf("Test %d, Plugin not correctly set for input %s. Expected: %s, actual: %s", i, test.input, test.expectedMw, mw)
|
||||
}
|
||||
if !test.shouldErr && ap.search != nil {
|
||||
if !reflect.DeepEqual(test.expectedSearch, ap.search) {
|
||||
|
||||
@@ -16,7 +16,7 @@ import (
|
||||
|
||||
// Check the ordering of returned cname.
|
||||
func TestCnameLookup(t *testing.T) {
|
||||
etc := newEtcdMiddleware()
|
||||
etc := newEtcdPlugin()
|
||||
|
||||
for _, serv := range servicesCname {
|
||||
set(t, etc, serv.Key, 0, serv)
|
||||
|
||||
@@ -13,7 +13,7 @@ import (
|
||||
)
|
||||
|
||||
func TestGroupLookup(t *testing.T) {
|
||||
etc := newEtcdMiddleware()
|
||||
etc := newEtcdPlugin()
|
||||
|
||||
for _, serv := range servicesGroup {
|
||||
set(t, etc, serv.Key, 0, serv)
|
||||
|
||||
@@ -221,7 +221,7 @@ var dnsTestCases = []test.Case{
|
||||
},
|
||||
}
|
||||
|
||||
func newEtcdMiddleware() *Etcd {
|
||||
func newEtcdPlugin() *Etcd {
|
||||
ctxt = context.TODO()
|
||||
|
||||
endpoints := []string{"http://localhost:2379"}
|
||||
@@ -253,7 +253,7 @@ func delete(t *testing.T, e *Etcd, k string) {
|
||||
}
|
||||
|
||||
func TestLookup(t *testing.T) {
|
||||
etc := newEtcdMiddleware()
|
||||
etc := newEtcdPlugin()
|
||||
for _, serv := range services {
|
||||
set(t, etc, serv.Key, 0, serv)
|
||||
defer delete(t, etc, serv.Key)
|
||||
|
||||
@@ -13,7 +13,7 @@ import (
|
||||
)
|
||||
|
||||
func TestMultiLookup(t *testing.T) {
|
||||
etc := newEtcdMiddleware()
|
||||
etc := newEtcdPlugin()
|
||||
etc.Zones = []string{"skydns.test.", "miek.nl."}
|
||||
etc.Fallthrough = true
|
||||
etc.Next = test.ErrorHandler()
|
||||
|
||||
@@ -17,7 +17,7 @@ import (
|
||||
)
|
||||
|
||||
func TestOtherLookup(t *testing.T) {
|
||||
etc := newEtcdMiddleware()
|
||||
etc := newEtcdPlugin()
|
||||
|
||||
for _, serv := range servicesOther {
|
||||
set(t, etc, serv.Key, 0, serv)
|
||||
|
||||
@@ -39,7 +39,7 @@ func TestStubLookup(t *testing.T) {
|
||||
exampleNetStub := &msg.Service{Host: host, Port: port, Key: "a.example.net.stub.dns.skydns.test."}
|
||||
servicesStub = append(servicesStub, exampleNetStub)
|
||||
|
||||
etc := newEtcdMiddleware()
|
||||
etc := newEtcdPlugin()
|
||||
|
||||
for _, serv := range servicesStub {
|
||||
set(t, etc, serv.Key, 0, serv)
|
||||
|
||||
@@ -37,6 +37,6 @@ func (h *health) poll() {
|
||||
h.SetOk(true)
|
||||
}
|
||||
|
||||
// Middleware that implements the Healther interface.
|
||||
// Plugins that implements the Healther interface.
|
||||
// TODO(miek): none yet.
|
||||
var healthers = map[string]bool{}
|
||||
|
||||
@@ -49,7 +49,7 @@ func setup(c *caddy.Controller) error {
|
||||
c.OnStartup(h.Startup)
|
||||
c.OnFinalShutdown(h.Shutdown)
|
||||
|
||||
// Don't do AddMiddleware, as health is not *really* a plugin just a separate webserver running.
|
||||
// Don't do AddPlugin, as health is not *really* a plugin just a separate webserver running.
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ func TestEtcdCache(t *testing.T) {
|
||||
}
|
||||
defer ex.Stop()
|
||||
|
||||
etc := etcdMiddleware()
|
||||
etc := etcdPlugin()
|
||||
log.SetOutput(ioutil.Discard)
|
||||
|
||||
var ctx = context.TODO()
|
||||
|
||||
@@ -20,7 +20,7 @@ import (
|
||||
"golang.org/x/net/context"
|
||||
)
|
||||
|
||||
func etcdMiddleware() *etcd.Etcd {
|
||||
func etcdPlugin() *etcd.Etcd {
|
||||
etcdCfg := etcdc.Config{
|
||||
Endpoints: []string{"http://localhost:2379"},
|
||||
}
|
||||
@@ -53,7 +53,7 @@ func TestEtcdStubAndProxyLookup(t *testing.T) {
|
||||
}
|
||||
defer ex.Stop()
|
||||
|
||||
etc := etcdMiddleware()
|
||||
etc := etcdPlugin()
|
||||
log.SetOutput(ioutil.Discard)
|
||||
|
||||
var ctx = context.TODO()
|
||||
|
||||
@@ -12,8 +12,8 @@ import (
|
||||
// and check if it is really there, but running coredns -plugins.
|
||||
|
||||
// Dangerous test as it messes with your git tree, maybe use tag?
|
||||
func testExternalMiddlewareCompile(t *testing.T) {
|
||||
if err := addExampleMiddleware(); err != nil {
|
||||
func testExternalPluginCompile(t *testing.T) {
|
||||
if err := addExamplePlugin(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer run(t, gitReset)
|
||||
@@ -50,7 +50,7 @@ func run(t *testing.T, c *exec.Cmd) ([]byte, error) {
|
||||
|
||||
}
|
||||
|
||||
func addExampleMiddleware() error {
|
||||
func addExamplePlugin() error {
|
||||
f, err := os.OpenFile("../plugin.cfg", os.O_APPEND|os.O_WRONLY, os.ModeAppend)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user