mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-30 17:53:21 -04:00 
			
		
		
		
	more
This commit is contained in:
		| @@ -10,38 +10,53 @@ import ( | ||||
|  | ||||
| 	"github.com/miekg/coredns/middleware" | ||||
| 	"github.com/miekg/coredns/middleware/etcd" | ||||
| 	"github.com/miekg/coredns/middleware/etcd/singleflight" | ||||
| 	"github.com/miekg/coredns/middleware/proxy" | ||||
|  | ||||
| 	etcdc "github.com/coreos/etcd/client" | ||||
| 	"golang.org/x/net/context" | ||||
| ) | ||||
|  | ||||
| const defaultEndpoint = "http://127.0.0.1:2379" | ||||
|  | ||||
| // Etcd sets up the etcd middleware. | ||||
| func Etcd(c *Controller) (middleware.Middleware, error) { | ||||
| 	client, err := etcdParse(c) | ||||
| 	etcd, err := etcdParse(c) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	return func(next middleware.Handler) middleware.Handler { | ||||
| 		return etcd.NewEtcd(client, next, c.ServerBlockHosts) | ||||
| 		etcd.Next = next | ||||
| 		return etcd | ||||
| 	}, nil | ||||
| } | ||||
|  | ||||
| func etcdParse(c *Controller) (etcdc.KeysAPI, error) { | ||||
| func etcdParse(c *Controller) (etcd.Etcd, error) { | ||||
| 	etc := etcd.Etcd{ | ||||
| 		// make stuff configurable | ||||
| 		Proxy:      proxy.New([]string{"8.8.8.8:53"}), | ||||
| 		PathPrefix: "skydns", | ||||
| 		Ctx:        context.Background(), | ||||
| 		Inflight:   &singleflight.Group{}, | ||||
| 	} | ||||
| 	for c.Next() { | ||||
| 		if c.Val() == "etcd" { | ||||
| 			// etcd [address...] | ||||
| 			if !c.NextArg() { | ||||
| 				// TODO(certs) and friends, this is client side | ||||
| 				client, err := newEtcdClient([]string{defaultEndpoint}, "", "", "") | ||||
| 				return client, err | ||||
| 			// etcd [origin...] | ||||
| 			client, err := newEtcdClient([]string{defaultEndpoint}, "", "", "") | ||||
| 			if err != nil { | ||||
| 				return etcd.Etcd{}, err | ||||
| 			} | ||||
| 			client, err := newEtcdClient(c.RemainingArgs(), "", "", "") | ||||
| 			return client, err | ||||
| 			etc.Client = client | ||||
| 			etc.Zones = c.RemainingArgs() | ||||
| 			if len(etc.Zones) == 0 { | ||||
| 				etc.Zones = c.ServerBlockHosts | ||||
| 			} | ||||
| 			middleware.Zones(etc.Zones).FullyQualify() | ||||
| 			return etc, nil | ||||
| 		} | ||||
| 	} | ||||
| 	return nil, nil | ||||
| 	return etcd.Etcd{}, nil | ||||
| } | ||||
|  | ||||
| func newEtcdClient(endpoints []string, tlsCert, tlsKey, tlsCACert string) (etcdc.KeysAPI, error) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user