doh

package
v2.0.0-rc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 29, 2023 License: MIT Imports: 29 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrHTTPStatus = errors.New("bad HTTP status")
)
View Source
var (
	ErrListeningAddressNotValid = errors.New("listening address is not valid")
)

Functions

func NewResolver

func NewResolver(settings ResolverSettings) (
	resolver *net.Resolver, err error)

NewResolver creates a DNS over HTTPs resolver.

Types

type Middleware

type Middleware interface {
	Wrap(next dns.Handler) dns.Handler
}

type Picker

type Picker interface {
	DoHServer(servers []provider.DoHServer) provider.DoHServer
}

type ResolverSettings

type ResolverSettings struct {
	DoHProviders []string
	SelfDNS      SelfDNS
	Timeout      time.Duration
	// Warner is the warning logger to log dial errors.
	// It defaults to a No-Op warner implementation.
	Warner log.Warner
	// Metrics is the metrics interface to record metric data.
	// It defaults to a No-Op metrics implementation.
	Metrics metrics.DialMetrics
	// Picker is the picker to use for each upstream call to pick
	// a server from a pool of servers. It must be thread safe.
	// It defaults to a fast thread safe pseudo random picker
	// with uniform distribution.
	Picker Picker
}

func (*ResolverSettings) SetDefaults

func (s *ResolverSettings) SetDefaults()

func (*ResolverSettings) String

func (s *ResolverSettings) String() string

func (*ResolverSettings) ToLinesNode

func (s *ResolverSettings) ToLinesNode() (node *gotree.Node)

func (ResolverSettings) Validate

func (s ResolverSettings) Validate() (err error)

type SelfDNS

type SelfDNS struct {
	// for the internal HTTP client to resolve the DoH url hostname.
	DoTProviders []string
	DNSProviders []string
	Timeout      time.Duration
	IPv6         bool
}

func (*SelfDNS) SetDefaults

func (s *SelfDNS) SetDefaults()

func (*SelfDNS) String

func (s *SelfDNS) String() string

func (*SelfDNS) ToLinesNode

func (s *SelfDNS) ToLinesNode() (node *gotree.Node)

func (SelfDNS) Validate

func (s SelfDNS) Validate() (err error)

type Server

type Server struct {
	// contains filtered or unexported fields
}

func NewServer

func NewServer(settings ServerSettings) (server *Server, err error)

func (*Server) Start

func (s *Server) Start() (runError <-chan error, startErr error)

func (*Server) Stop

func (s *Server) Stop() (err error)

func (*Server) String

func (s *Server) String() string

type ServerSettings

type ServerSettings struct {
	Resolver         ResolverSettings
	ListeningAddress string
	// Middlewares is a list of middlewares to use.
	// The first one is the first wrapper, and the last one
	// is the last wrapper of the handlers in the chain.
	Middlewares []Middleware
	// Cache is the cache to use in the server.
	// It defaults to a No-Op cache implementation with
	// a No-Op cache metrics implementation.
	Cache cache.Interface
	// Filter is the filter for DNS requests and responses.
	// It defaults to a No-Op filter implementation.
	Filter filter.Interface
	// Logger is the logger to log information.
	// It defaults to a No-Op logger implementation.
	Logger log.Logger
}

func (*ServerSettings) SetDefaults

func (s *ServerSettings) SetDefaults()

func (*ServerSettings) String

func (s *ServerSettings) String() string

func (*ServerSettings) ToLinesNode

func (s *ServerSettings) ToLinesNode() (node *gotree.Node)

func (ServerSettings) Validate

func (s ServerSettings) Validate() (err error)

Directories

Path Synopsis
Package metrics defines metric interfaces for the DoH server and resolver.
Package metrics defines metric interfaces for the DoH server and resolver.
noop
Package noop defines a No-op metric implementation for DoH.
Package noop defines a No-op metric implementation for DoH.
prometheus
Package prometheus defines a Prometheus metric implementation for DoH.
Package prometheus defines a Prometheus metric implementation for DoH.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL