aboutsummaryrefslogtreecommitdiff
path: root/plugin/hosts
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/hosts')
-rw-r--r--plugin/hosts/README.md2
-rw-r--r--plugin/hosts/setup.go6
-rw-r--r--plugin/hosts/setup_test.go9
3 files changed, 17 insertions, 0 deletions
diff --git a/plugin/hosts/README.md b/plugin/hosts/README.md
index b435e0a88..3be25661a 100644
--- a/plugin/hosts/README.md
+++ b/plugin/hosts/README.md
@@ -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
~~~
diff --git a/plugin/hosts/setup.go b/plugin/hosts/setup.go
index 57413feed..ca4635f0a 100644
--- a/plugin/hosts/setup.go
+++ b/plugin/hosts/setup.go
@@ -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]
diff --git a/plugin/hosts/setup_test.go b/plugin/hosts/setup_test.go
index d23170f1f..78b1cff86 100644
--- a/plugin/hosts/setup_test.go
+++ b/plugin/hosts/setup_test.go
@@ -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 {