 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Overview ¶
Package proxy is plugin that proxies requests.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( RequestCount = prometheus.NewCounterVec(prometheus.CounterOpts{ Namespace: plugin.Namespace, Subsystem: "proxy", Name: "request_count_total", Help: "Counter of requests made per protocol, proxy protocol, family and upstream.", }, []string{"server", "proto", "proxy_proto", "family", "to"}) RequestDuration = prometheus.NewHistogramVec(prometheus.HistogramOpts{ Namespace: plugin.Namespace, Subsystem: "proxy", Name: "request_duration_seconds", Buckets: plugin.TimeBuckets, Help: "Histogram of the time (in seconds) each request took.", }, []string{"server", "proto", "proxy_proto", "family", "to"}) )
Metrics the proxy plugin exports.
Functions ¶
This section is empty.
Types ¶
type Exchanger ¶
type Exchanger interface {
	Exchange(ctx context.Context, addr string, state request.Request) (*dns.Msg, error)
	Protocol() string
	// Transport returns the only transport protocol used by this Exchanger or "".
	// If the return value is "", Exchange must use `state.Proto()`.
	Transport() string
	OnStartup(*Proxy) error
	OnShutdown(*Proxy) error
}
    Exchanger is an interface that specifies a type implementing a DNS resolver that can use whatever transport it likes.
type Options ¶
type Options struct {
	ForceTCP bool // If true use TCP for upstream no matter what
}
    Options define the options understood by dns.Exchange.
type Proxy ¶
type Proxy struct {
	Next plugin.Handler
	Upstreams *[]Upstream
	// Trace is the Trace plugin, if it is installed
	// This is used by the grpc exchanger to trace through the grpc calls
	Trace plugin.Handler
}
    Proxy represents a plugin instance that can proxy requests to another (DNS) server.
func NewLookupWithOption ¶
NewLookupWithOption process creates a simple round robin forward with potentially forced proto for upstream.
func (Proxy) Forward ¶
Forward forward the request in state as-is. Unlike Lookup that adds EDNS0 suffix to the message.
type Upstream ¶
type Upstream interface {
	// The domain name this upstream host should be routed on.
	From() string
	// Selects an upstream host to be routed to.
	Select() *healthcheck.UpstreamHost
	// Checks if subpdomain is not an ignored.
	IsAllowedDomain(string) bool
	// Exchanger returns the exchanger to be used for this upstream.
	Exchanger() Exchanger
	// Stops the upstream from proxying requests to shutdown goroutines cleanly.
	Stop() error
}
    Upstream manages a pool of proxy upstream hosts. Select should return a suitable upstream host, or nil if no such hosts are available.
func NewStaticUpstream ¶ added in v1.0.6
NewStaticUpstream parses the configuration of a single upstream starting from the FROM