plugin/forward: Split setup to reuse it from external plugins (#2034)

This commit is contained in:
Eugen Kleiner 2018-08-16 00:24:47 +03:00 committed by Yong Tang
parent 81d0949159
commit b87ed01bb2

View file

@ -13,6 +13,7 @@ import (
pkgtls "github.com/coredns/coredns/plugin/pkg/tls" pkgtls "github.com/coredns/coredns/plugin/pkg/tls"
"github.com/mholt/caddy" "github.com/mholt/caddy"
"github.com/mholt/caddy/caddyfile"
) )
func init() { func init() {
@ -70,16 +71,29 @@ func (f *Forward) OnShutdown() error {
func (f *Forward) Close() { f.OnShutdown() } func (f *Forward) Close() { f.OnShutdown() }
func parseForward(c *caddy.Controller) (*Forward, error) { func parseForward(c *caddy.Controller) (*Forward, error) {
f := New() var (
f *Forward
protocols := map[int]int{} err error
i int
i := 0 )
for c.Next() { for c.Next() {
if i > 0 { if i > 0 {
return nil, plugin.ErrOnce return nil, plugin.ErrOnce
} }
i++ i++
f, err = ParseForwardStanza(&c.Dispenser)
if err != nil {
return nil, err
}
}
return f, nil
}
// ParseForwardStanza parses one forward stanza
func ParseForwardStanza(c *caddyfile.Dispenser) (*Forward, error) {
f := New()
protocols := map[int]int{}
if !c.Args(&f.from) { if !c.Args(&f.from) {
return f, c.ArgErr() return f, c.ArgErr()
@ -133,7 +147,6 @@ func parseForward(c *caddy.Controller) (*Forward, error) {
return f, err return f, err
} }
} }
}
if f.tlsServerName != "" { if f.tlsServerName != "" {
f.tlsConfig.ServerName = f.tlsServerName f.tlsConfig.ServerName = f.tlsServerName
@ -148,7 +161,7 @@ func parseForward(c *caddy.Controller) (*Forward, error) {
return f, nil return f, nil
} }
func parseBlock(c *caddy.Controller, f *Forward) error { func parseBlock(c *caddyfile.Dispenser, f *Forward) error {
switch c.Val() { switch c.Val() {
case "except": case "except":
ignore := c.RemainingArgs() ignore := c.RemainingArgs()