diff options
Diffstat (limited to 'middleware/proxy')
-rw-r--r-- | middleware/proxy/setup.go | 26 | ||||
-rw-r--r-- | middleware/proxy/upstream.go | 9 |
2 files changed, 31 insertions, 4 deletions
diff --git a/middleware/proxy/setup.go b/middleware/proxy/setup.go new file mode 100644 index 000000000..81dc7777c --- /dev/null +++ b/middleware/proxy/setup.go @@ -0,0 +1,26 @@ +package proxy + +import ( + "github.com/miekg/coredns/core/dnsserver" + + "github.com/mholt/caddy" +) + +func init() { + caddy.RegisterPlugin("proxy", caddy.Plugin{ + ServerType: "dns", + Action: setup, + }) +} + +func setup(c *caddy.Controller) error { + upstreams, err := NewStaticUpstreams(c.Dispenser) + if err != nil { + return err + } + dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler { + return Proxy{Next: next, Client: Clients(), Upstreams: upstreams} + }) + + return nil +} diff --git a/middleware/proxy/upstream.go b/middleware/proxy/upstream.go index 76c27a45a..12ec00d76 100644 --- a/middleware/proxy/upstream.go +++ b/middleware/proxy/upstream.go @@ -11,8 +11,9 @@ import ( "sync/atomic" "time" - "github.com/miekg/coredns/core/parse" "github.com/miekg/coredns/middleware" + + "github.com/mholt/caddy/caddyfile" "github.com/miekg/dns" ) @@ -43,7 +44,7 @@ type Options struct { // NewStaticUpstreams parses the configuration input and sets up // static upstreams for the proxy middleware. -func NewStaticUpstreams(c parse.Dispenser) ([]Upstream, error) { +func NewStaticUpstreams(c caddyfile.Dispenser) ([]Upstream, error) { var upstreams []Upstream for c.Next() { upstream := &staticUpstream{ @@ -73,7 +74,7 @@ func NewStaticUpstreams(c parse.Dispenser) ([]Upstream, error) { } for c.NextBlock() { - if err := parseBlock(&c, upstream); err != nil { + if err := parseBlock(c, upstream); err != nil { return upstreams, err } } @@ -125,7 +126,7 @@ func (u *staticUpstream) Options() Options { return u.options } -func parseBlock(c *parse.Dispenser, u *staticUpstream) error { +func parseBlock(c caddyfile.Dispenser, u *staticUpstream) error { switch c.Val() { case "policy": if !c.NextArg() { |