aboutsummaryrefslogtreecommitdiff
path: root/middleware/erratic/setup.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/erratic/setup.go')
-rw-r--r--middleware/erratic/setup.go117
1 files changed, 0 insertions, 117 deletions
diff --git a/middleware/erratic/setup.go b/middleware/erratic/setup.go
deleted file mode 100644
index 98db02247..000000000
--- a/middleware/erratic/setup.go
+++ /dev/null
@@ -1,117 +0,0 @@
-package erratic
-
-import (
- "fmt"
- "strconv"
- "time"
-
- "github.com/coredns/coredns/core/dnsserver"
- "github.com/coredns/coredns/middleware"
-
- "github.com/mholt/caddy"
-)
-
-func init() {
- caddy.RegisterPlugin("erratic", caddy.Plugin{
- ServerType: "dns",
- Action: setupErratic,
- })
-}
-
-func setupErratic(c *caddy.Controller) error {
- e, err := parseErratic(c)
- if err != nil {
- return middleware.Error("erratic", err)
- }
-
- dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
- return e
- })
-
- return nil
-}
-
-func parseErratic(c *caddy.Controller) (*Erratic, error) {
- e := &Erratic{drop: 2}
- drop := false // true if we've seen the drop keyword
-
- for c.Next() { // 'erratic'
- for c.NextBlock() {
- switch c.Val() {
- case "drop":
- args := c.RemainingArgs()
- if len(args) > 1 {
- return nil, c.ArgErr()
- }
-
- if len(args) == 0 {
- continue
- }
-
- amount, err := strconv.ParseInt(args[0], 10, 32)
- if err != nil {
- return nil, err
- }
- if amount < 0 {
- return nil, fmt.Errorf("illegal amount value given %q", args[0])
- }
- e.drop = uint64(amount)
- drop = true
- case "delay":
- args := c.RemainingArgs()
- if len(args) > 2 {
- return nil, c.ArgErr()
- }
-
- // Defaults.
- e.delay = 2
- e.duration = 100 * time.Millisecond
- if len(args) == 0 {
- continue
- }
-
- amount, err := strconv.ParseInt(args[0], 10, 32)
- if err != nil {
- return nil, err
- }
- if amount < 0 {
- return nil, fmt.Errorf("illegal amount value given %q", args[0])
- }
- e.delay = uint64(amount)
-
- if len(args) > 1 {
- duration, err := time.ParseDuration(args[1])
- if err != nil {
- return nil, err
- }
- e.duration = duration
- }
- case "truncate":
- args := c.RemainingArgs()
- if len(args) > 1 {
- return nil, c.ArgErr()
- }
-
- if len(args) == 0 {
- continue
- }
-
- amount, err := strconv.ParseInt(args[0], 10, 32)
- if err != nil {
- return nil, err
- }
- if amount < 0 {
- return nil, fmt.Errorf("illegal amount value given %q", args[0])
- }
- e.truncate = uint64(amount)
- default:
- return nil, c.Errf("unknown property '%s'", c.Val())
- }
- }
- }
- if (e.delay > 0 || e.truncate > 0) && !drop { // delay is set, but we've haven't seen a drop keyword, remove default drop stuff
- e.drop = 0
- }
-
- return e, nil
-}