doh

package
v2.0.0-rc4 Latest Latest
Warning

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

Go to latest
Published: Aug 11, 2023 License: MIT Imports: 22 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 Logger

type Logger interface {
	Debug(s string)
	Info(s string)
	Warner
	Error(s string)
}

type Metrics

type Metrics interface {
	DoHDialInc(url string)
	DoTDialInc(provider, address, outcome string)
	DNSDialInc(address, outcome string)
}

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 Warner
	// Metrics is the metrics interface to record metric data.
	// It defaults to a No-Op metrics implementation.
	Metrics Metrics
	// 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
	// Logger is the logger to log information.
	// It defaults to a No-Op logger implementation.
	Logger 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)

type Warner

type Warner interface {
	Warn(s string)
}

Directories

Path Synopsis
metrics
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