diff options
Diffstat (limited to 'middleware/erratic/setup.go')
-rw-r--r-- | middleware/erratic/setup.go | 117 |
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 -} |