aboutsummaryrefslogtreecommitdiff
path: root/middleware/etcd/setup.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/etcd/setup.go')
-rw-r--r--middleware/etcd/setup.go144
1 files changed, 0 insertions, 144 deletions
diff --git a/middleware/etcd/setup.go b/middleware/etcd/setup.go
deleted file mode 100644
index 7cbcfd2ea..000000000
--- a/middleware/etcd/setup.go
+++ /dev/null
@@ -1,144 +0,0 @@
-package etcd
-
-import (
- "crypto/tls"
-
- "github.com/coredns/coredns/core/dnsserver"
- "github.com/coredns/coredns/middleware"
- "github.com/coredns/coredns/middleware/pkg/dnsutil"
- "github.com/coredns/coredns/middleware/pkg/singleflight"
- mwtls "github.com/coredns/coredns/middleware/pkg/tls"
- "github.com/coredns/coredns/middleware/proxy"
-
- etcdc "github.com/coreos/etcd/client"
- "github.com/mholt/caddy"
- "golang.org/x/net/context"
-)
-
-func init() {
- caddy.RegisterPlugin("etcd", caddy.Plugin{
- ServerType: "dns",
- Action: setup,
- })
-}
-
-func setup(c *caddy.Controller) error {
- e, stubzones, err := etcdParse(c)
- if err != nil {
- return middleware.Error("etcd", err)
- }
-
- if stubzones {
- c.OnStartup(func() error {
- e.UpdateStubZones()
- return nil
- })
- }
-
- dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
- e.Next = next
- return e
- })
-
- return nil
-}
-
-func etcdParse(c *caddy.Controller) (*Etcd, bool, error) {
- stub := make(map[string]proxy.Proxy)
- etc := Etcd{
- // Don't default to a proxy for lookups.
- // Proxy: proxy.NewLookup([]string{"8.8.8.8:53", "8.8.4.4:53"}),
- PathPrefix: "skydns",
- Ctx: context.Background(),
- Inflight: &singleflight.Group{},
- Stubmap: &stub,
- }
- var (
- tlsConfig *tls.Config
- err error
- endpoints = []string{defaultEndpoint}
- stubzones = false
- )
- for c.Next() {
- etc.Zones = c.RemainingArgs()
- if len(etc.Zones) == 0 {
- etc.Zones = make([]string, len(c.ServerBlockKeys))
- copy(etc.Zones, c.ServerBlockKeys)
- }
- for i, str := range etc.Zones {
- etc.Zones[i] = middleware.Host(str).Normalize()
- }
-
- if c.NextBlock() {
- for {
- switch c.Val() {
- case "stubzones":
- stubzones = true
- case "fallthrough":
- etc.Fallthrough = true
- case "debug":
- /* it is a noop now */
- case "path":
- if !c.NextArg() {
- return &Etcd{}, false, c.ArgErr()
- }
- etc.PathPrefix = c.Val()
- case "endpoint":
- args := c.RemainingArgs()
- if len(args) == 0 {
- return &Etcd{}, false, c.ArgErr()
- }
- endpoints = args
- case "upstream":
- args := c.RemainingArgs()
- if len(args) == 0 {
- return &Etcd{}, false, c.ArgErr()
- }
- ups, err := dnsutil.ParseHostPortOrFile(args...)
- if err != nil {
- return &Etcd{}, false, err
- }
- etc.Proxy = proxy.NewLookup(ups)
- case "tls": // cert key cacertfile
- args := c.RemainingArgs()
- tlsConfig, err = mwtls.NewTLSConfigFromArgs(args...)
- if err != nil {
- return &Etcd{}, false, err
- }
- default:
- if c.Val() != "}" {
- return &Etcd{}, false, c.Errf("unknown property '%s'", c.Val())
- }
- }
-
- if !c.Next() {
- break
- }
- }
-
- }
- client, err := newEtcdClient(endpoints, tlsConfig)
- if err != nil {
- return &Etcd{}, false, err
- }
- etc.Client = client
- etc.endpoints = endpoints
-
- return &etc, stubzones, nil
- }
- return &Etcd{}, false, nil
-}
-
-func newEtcdClient(endpoints []string, cc *tls.Config) (etcdc.KeysAPI, error) {
- etcdCfg := etcdc.Config{
- Endpoints: endpoints,
- Transport: mwtls.NewHTTPSTransport(cc),
- }
- cli, err := etcdc.New(etcdCfg)
- if err != nil {
- return nil, err
- }
- return etcdc.NewKeysAPI(cli), nil
-}
-
-const defaultEndpoint = "http://localhost:2379"