dns

package
v0.0.8 Latest Latest
Warning

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

Go to latest
Published: Sep 25, 2023 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FailHistoryLength    = 25
	FailHistoryThreshold = 5
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ArpaHandler

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

func NewArpaHandler

func NewArpaHandler(h DNSHandler, logger Logger) ArpaHandler

func (ArpaHandler) ServeDNS

func (a ArpaHandler) ServeDNS(w dns.ResponseWriter, req *dns.Msg)

type BuildOpts

type BuildOpts struct {
	ListenAddrs   []string // include port
	RecursorAddrs []string // include port

	DomainsMapFunc     DomainsMapFunc
	DomainsChangedFunc DomainsChangedFunc
}

type CustomHandler

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

func NewCustomHandler

func NewCustomHandler(ipResolver IPResolver, logger Logger) CustomHandler

func (CustomHandler) ServeDNS

func (d CustomHandler) ServeDNS(responseWriter dns.ResponseWriter, requestMsg *dns.Msg)

type DNSHandler

type DNSHandler interface {
	dns.Handler
}

type DomainsChangedFunc added in v0.0.3

type DomainsChangedFunc func()

type DomainsMapFunc added in v0.0.3

type DomainsMapFunc func() (map[string]IPResolver, error)

type DomainsMux added in v0.0.2

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

func NewDomainsMux added in v0.0.2

func NewDomainsMux(mux *dns.ServeMux, mapFunc DomainsMapFunc, changedFunc DomainsChangedFunc, logger Logger) *DomainsMux

func (*DomainsMux) ServeDNS added in v0.0.2

func (m *DomainsMux) ServeDNS(w dns.ResponseWriter, r *dns.Msg)

func (*DomainsMux) UpdateContiniously added in v0.0.3

func (m *DomainsMux) UpdateContiniously()

UpdateContiniously and UpdateOnce are not thread safe

func (*DomainsMux) UpdateOnce added in v0.0.3

func (m *DomainsMux) UpdateOnce() error

type Factory

type Factory struct{}

func NewFactory

func NewFactory() Factory

func (Factory) Build

func (f Factory) Build(opts BuildOpts, logger Logger) (Server, error)

type FailoverRecursorPool

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

func (*FailoverRecursorPool) PerformStrategically

func (q *FailoverRecursorPool) PerformStrategically(work func(string) error) error

type ForwardHandler

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

func NewForwardHandler

func NewForwardHandler(recursors RecursorPool, logger Logger) ForwardHandler

func (ForwardHandler) ServeDNS

func (r ForwardHandler) ServeDNS(responseWriter dns.ResponseWriter, request *dns.Msg)

type IPResolver

type IPResolver interface {
	ResolveIPv4(string) ([]net.IP, bool, error)
	ResolveIPv6(string) ([]net.IP, bool, error)
}

type Logger

type Logger interface {
	Error(tag, msg string, args ...interface{})
	Info(tag, msg string, args ...interface{})
	Debug(tag, msg string, args ...interface{})
}

type RecursorPool

type RecursorPool interface {
	PerformStrategically(func(string) error) error
}

func NewFailoverRecursorPool

func NewFailoverRecursorPool(recursors []string, logger Logger) RecursorPool

type ResolvConf

type ResolvConf struct{}

func NewResolvConf

func NewResolvConf() ResolvConf

func (ResolvConf) Nameservers

func (r ResolvConf) Nameservers() ([]net.IP, error)

type Server

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

func NewServer

func NewServer(servers []*dns.Server, logger Logger) Server

func (Server) Serve

func (s Server) Serve(startedCh chan struct{}) error

func (Server) Shutdown

func (s Server) Shutdown() error

func (Server) TCPAddr

func (s Server) TCPAddr() net.Addr

func (Server) UDPAddr

func (s Server) UDPAddr() net.Addr

type StaticIPsResolver added in v0.0.2

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

func NewStaticIPsResolver added in v0.0.2

func NewStaticIPsResolver(ips []net.IP) StaticIPsResolver

func (StaticIPsResolver) ResolveIPv4 added in v0.0.2

func (r StaticIPsResolver) ResolveIPv4(question string) ([]net.IP, bool, error)

func (StaticIPsResolver) ResolveIPv6 added in v0.0.2

func (r StaticIPsResolver) ResolveIPv6(question string) ([]net.IP, bool, error)

func (StaticIPsResolver) String added in v0.0.3

func (r StaticIPsResolver) String() string

Jump to

Keyboard shortcuts

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