| 
									
										
										
										
											2019-10-05 11:45:45 +01:00
										 |  |  | package traffic | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"math/rand" | 
					
						
							|  |  |  | 	"time" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/coredns/coredns/core/dnsserver" | 
					
						
							|  |  |  | 	"github.com/coredns/coredns/plugin" | 
					
						
							|  |  |  | 	clog "github.com/coredns/coredns/plugin/pkg/log" | 
					
						
							| 
									
										
										
										
											2020-01-13 11:21:20 +01:00
										 |  |  | 	"github.com/coredns/coredns/plugin/traffic/xds" | 
					
						
							| 
									
										
										
										
											2019-10-05 11:45:45 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/caddyserver/caddy" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var log = clog.NewWithPlugin("traffic") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func init() { plugin.Register("traffic", setup) } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func setup(c *caddy.Controller) error { | 
					
						
							|  |  |  | 	rand.Seed(int64(time.Now().Nanosecond())) | 
					
						
							|  |  |  | 	if err := parse(c); err != nil { | 
					
						
							|  |  |  | 		return plugin.Error("traffic", err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-12 16:06:06 +01:00
										 |  |  | 	t, err := New() | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return plugin.Error("traffic", err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-05 11:45:45 +01:00
										 |  |  | 	dnsserver.GetConfig(c).AddPlugin(func(next plugin.Handler) plugin.Handler { | 
					
						
							| 
									
										
										
										
											2020-01-12 16:06:06 +01:00
										 |  |  | 		t.Next = next | 
					
						
							|  |  |  | 		return t | 
					
						
							| 
									
										
										
										
											2019-10-05 11:45:45 +01:00
										 |  |  | 	}) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-13 11:21:20 +01:00
										 |  |  | 	t.c.WatchCluster("xds_experimental", func(xds.CDSUpdate, error) {}) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-05 11:45:45 +01:00
										 |  |  | 	return nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func parse(c *caddy.Controller) error { | 
					
						
							|  |  |  | 	for c.Next() { | 
					
						
							|  |  |  | 		args := c.RemainingArgs() | 
					
						
							|  |  |  | 		if len(args) != 0 { | 
					
						
							|  |  |  | 			return c.ArgErr() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return nil | 
					
						
							|  |  |  | } |