aboutsummaryrefslogtreecommitdiff
path: root/middleware/errors
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2017-09-14 09:36:06 +0100
committerGravatar GitHub <noreply@github.com> 2017-09-14 09:36:06 +0100
commitd8714e64e400ef873c2adc4d929a07d7890727b9 (patch)
treec9fa4c157e6af12eb1517654f8d23ca5d5619513 /middleware/errors
parentb984aa45595dc95253b91191afe7d3ee29e71b48 (diff)
downloadcoredns-d8714e64e400ef873c2adc4d929a07d7890727b9.tar.gz
coredns-d8714e64e400ef873c2adc4d929a07d7890727b9.tar.zst
coredns-d8714e64e400ef873c2adc4d929a07d7890727b9.zip
Remove the word middleware (#1067)
* Rename middleware to plugin first pass; mostly used 'sed', few spots where I manually changed text. This still builds a coredns binary. * fmt error * Rename AddMiddleware to AddPlugin * Readd AddMiddleware to remain backwards compat
Diffstat (limited to 'middleware/errors')
-rw-r--r--middleware/errors/README.md22
-rw-r--r--middleware/errors/errors.go79
-rw-r--r--middleware/errors/errors_test.go73
-rw-r--r--middleware/errors/setup.go55
-rw-r--r--middleware/errors/setup_test.go45
5 files changed, 0 insertions, 274 deletions
diff --git a/middleware/errors/README.md b/middleware/errors/README.md
deleted file mode 100644
index 21b8f4848..000000000
--- a/middleware/errors/README.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# errors
-
-*errors* enables error logging.
-
-Any errors encountered during the query processing will be printed to standard output.
-
-## Syntax
-
-~~~
-errors
-~~~
-
-## Examples
-
-Use the *whoami* to respond to queries and Log errors to standard output.
-
-~~~ corefile
-. {
- whoami
- errors
-}
-~~~
diff --git a/middleware/errors/errors.go b/middleware/errors/errors.go
deleted file mode 100644
index 9b0bfa946..000000000
--- a/middleware/errors/errors.go
+++ /dev/null
@@ -1,79 +0,0 @@
-// Package errors implements an HTTP error handling middleware.
-package errors
-
-import (
- "fmt"
- "log"
- "runtime"
- "strings"
- "time"
-
- "github.com/coredns/coredns/middleware"
- "github.com/coredns/coredns/request"
-
- "github.com/miekg/dns"
- "golang.org/x/net/context"
-)
-
-// errorHandler handles DNS errors (and errors from other middleware).
-type errorHandler struct {
- Next middleware.Handler
- LogFile string
- Log *log.Logger
-}
-
-// ServeDNS implements the middleware.Handler interface.
-func (h errorHandler) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
- defer h.recovery(ctx, w, r)
-
- rcode, err := middleware.NextOrFailure(h.Name(), h.Next, ctx, w, r)
-
- if err != nil {
- state := request.Request{W: w, Req: r}
- errMsg := fmt.Sprintf("%s [ERROR %d %s %s] %v", time.Now().Format(timeFormat), rcode, state.Name(), state.Type(), err)
-
- h.Log.Println(errMsg)
- }
-
- return rcode, err
-}
-
-func (h errorHandler) Name() string { return "errors" }
-
-func (h errorHandler) recovery(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) {
- rec := recover()
- if rec == nil {
- return
- }
-
- // Obtain source of panic
- // From: https://gist.github.com/swdunlop/9629168
- var name, file string // function name, file name
- var line int
- var pc [16]uintptr
- n := runtime.Callers(3, pc[:])
- for _, pc := range pc[:n] {
- fn := runtime.FuncForPC(pc)
- if fn == nil {
- continue
- }
- file, line = fn.FileLine(pc)
- name = fn.Name()
- if !strings.HasPrefix(name, "runtime.") {
- break
- }
- }
-
- // Trim file path
- delim := "/coredns/"
- pkgPathPos := strings.Index(file, delim)
- if pkgPathPos > -1 && len(file) > pkgPathPos+len(delim) {
- file = file[pkgPathPos+len(delim):]
- }
-
- panicMsg := fmt.Sprintf("%s [PANIC %s %s] %s:%d - %v", time.Now().Format(timeFormat), r.Question[0].Name, dns.Type(r.Question[0].Qtype), file, line, rec)
- // Currently we don't use the function name, since file:line is more conventional
- h.Log.Printf(panicMsg)
-}
-
-const timeFormat = "02/Jan/2006:15:04:05 -0700"
diff --git a/middleware/errors/errors_test.go b/middleware/errors/errors_test.go
deleted file mode 100644
index 5e565964c..000000000
--- a/middleware/errors/errors_test.go
+++ /dev/null
@@ -1,73 +0,0 @@
-package errors
-
-import (
- "bytes"
- "errors"
- "fmt"
- "log"
- "strings"
- "testing"
-
- "github.com/coredns/coredns/middleware"
- "github.com/coredns/coredns/middleware/pkg/dnsrecorder"
- "github.com/coredns/coredns/middleware/test"
-
- "github.com/miekg/dns"
- "golang.org/x/net/context"
-)
-
-func TestErrors(t *testing.T) {
- buf := bytes.Buffer{}
- em := errorHandler{Log: log.New(&buf, "", 0)}
-
- testErr := errors.New("test error")
- tests := []struct {
- next middleware.Handler
- expectedCode int
- expectedLog string
- expectedErr error
- }{
- {
- next: genErrorHandler(dns.RcodeSuccess, nil),
- expectedCode: dns.RcodeSuccess,
- expectedLog: "",
- expectedErr: nil,
- },
- {
- next: genErrorHandler(dns.RcodeNotAuth, testErr),
- expectedCode: dns.RcodeNotAuth,
- expectedLog: fmt.Sprintf("[ERROR %d %s] %v\n", dns.RcodeNotAuth, "example.org. A", testErr),
- expectedErr: testErr,
- },
- }
-
- ctx := context.TODO()
- req := new(dns.Msg)
- req.SetQuestion("example.org.", dns.TypeA)
-
- for i, tc := range tests {
- em.Next = tc.next
- buf.Reset()
- rec := dnsrecorder.New(&test.ResponseWriter{})
- code, err := em.ServeDNS(ctx, rec, req)
-
- if err != tc.expectedErr {
- t.Errorf("Test %d: Expected error %v, but got %v",
- i, tc.expectedErr, err)
- }
- if code != tc.expectedCode {
- t.Errorf("Test %d: Expected status code %d, but got %d",
- i, tc.expectedCode, code)
- }
- if log := buf.String(); !strings.Contains(log, tc.expectedLog) {
- t.Errorf("Test %d: Expected log %q, but got %q",
- i, tc.expectedLog, log)
- }
- }
-}
-
-func genErrorHandler(rcode int, err error) middleware.Handler {
- return middleware.HandlerFunc(func(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
- return rcode, err
- })
-}
diff --git a/middleware/errors/setup.go b/middleware/errors/setup.go
deleted file mode 100644
index af9a7bbff..000000000
--- a/middleware/errors/setup.go
+++ /dev/null
@@ -1,55 +0,0 @@
-package errors
-
-import (
- "fmt"
- "log"
- "os"
-
- "github.com/coredns/coredns/core/dnsserver"
- "github.com/coredns/coredns/middleware"
-
- "github.com/mholt/caddy"
-)
-
-func init() {
- caddy.RegisterPlugin("errors", caddy.Plugin{
- ServerType: "dns",
- Action: setup,
- })
-}
-
-func setup(c *caddy.Controller) error {
- handler, err := errorsParse(c)
- if err != nil {
- return middleware.Error("errors", err)
- }
-
- handler.Log = log.New(os.Stdout, "", 0)
-
- dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
- handler.Next = next
- return handler
- })
-
- return nil
-}
-
-func errorsParse(c *caddy.Controller) (errorHandler, error) {
- handler := errorHandler{}
-
- for c.Next() {
- args := c.RemainingArgs()
- switch len(args) {
- case 0:
- handler.LogFile = "stdout"
- case 1:
- if args[0] != "stdout" {
- return handler, fmt.Errorf("invalid log file: %s", args[0])
- }
- handler.LogFile = args[0]
- default:
- return handler, c.ArgErr()
- }
- }
- return handler, nil
-}
diff --git a/middleware/errors/setup_test.go b/middleware/errors/setup_test.go
deleted file mode 100644
index bae85da32..000000000
--- a/middleware/errors/setup_test.go
+++ /dev/null
@@ -1,45 +0,0 @@
-package errors
-
-import (
- "testing"
-
- "github.com/mholt/caddy"
-)
-
-func TestErrorsParse(t *testing.T) {
- tests := []struct {
- inputErrorsRules string
- shouldErr bool
- expectedErrorHandler errorHandler
- }{
- {`errors`, false, errorHandler{
- LogFile: "stdout",
- }},
- {`errors stdout`, false, errorHandler{
- LogFile: "stdout",
- }},
- {`errors errors.txt`, true, errorHandler{
- LogFile: "",
- }},
- {`errors visible`, true, errorHandler{
- LogFile: "",
- }},
- {`errors { log visible }`, true, errorHandler{
- LogFile: "stdout",
- }},
- }
- for i, test := range tests {
- c := caddy.NewTestController("dns", test.inputErrorsRules)
- actualErrorsRule, err := errorsParse(c)
-
- if err == nil && test.shouldErr {
- t.Errorf("Test %d didn't error, but it should have", i)
- } else if err != nil && !test.shouldErr {
- t.Errorf("Test %d errored, but it shouldn't have; got '%v'", i, err)
- }
- if actualErrorsRule.LogFile != test.expectedErrorHandler.LogFile {
- t.Errorf("Test %d expected LogFile to be %s, but got %s",
- i, test.expectedErrorHandler.LogFile, actualErrorsRule.LogFile)
- }
- }
-}