return an error for multiple use of some plugins (#1559)

* plugins: Return error for multiple use of some

Return plugin.ErrOnce when a plugin that doesn't support it, is called
mutliple times.

This now adds it for: cache, dnssec, errors, forward, hosts, nsid.
And changes it slightly in kubernetes, pprof, reload, root.

* more tests
This commit is contained in:
Miek Gieben
2018-02-28 18:16:05 -08:00
committed by GitHub
parent 5faa9e7bc1
commit f697b33283
27 changed files with 150 additions and 95 deletions

View File

@@ -11,6 +11,8 @@ file that exists on disk. It checks the file for changes and updates the zones a
plugin only supports A, AAAA, and PTR records. The hosts plugin can be used with readily
available hosts files that block access to advertising servers.
This plugin can only be used once per Server Block.
## Syntax
~~~

View File

@@ -69,7 +69,13 @@ func hostsParse(c *caddy.Controller) (Hosts, error) {
config := dnsserver.GetConfig(c)
inline := []string{}
i := 0
for c.Next() {
if i > 0 {
return h, plugin.ErrOnce
}
i++
args := c.RemainingArgs()
if len(args) >= 1 {
h.path = args[0]

View File

@@ -57,6 +57,15 @@ func TestHostsParse(t *testing.T) {
}`,
false, "/etc/hosts", []string{"miek.nl.", "10.in-addr.arpa."}, fall.Root,
},
{
`hosts /etc/hosts {
fallthrough
}
hosts /etc/hosts {
fallthrough
}`,
true, "/etc/hosts", nil, fall.Root,
},
}
for i, test := range tests {