Documentation
¶
Index ¶
- func Name(resolver Resolver) string
- func TestDOHUpstream(fn func(request *dns.Msg) (response *dns.Msg), ...) config.Upstream
- func TestUDPUpstream(fn func(request *dns.Msg) (response *dns.Msg)) config.Upstream
- type BlockingResolver
- type CachingResolver
- type ChainedResolver
- func NewBlockingResolver(router *chi.Mux, cfg config.BlockingConfig) ChainedResolver
- func NewCachingResolver(cfg config.CachingConfig) ChainedResolver
- func NewClientNamesResolver(cfg config.ClientLookupConfig) ChainedResolver
- func NewCnameResolver(cfg config.CnameConfig) ChainedResolver
- func NewConditionalUpstreamResolver(cfg config.ConditionalUpstreamConfig) ChainedResolver
- func NewCustomDNSResolver(cfg config.CustomDNSConfig) ChainedResolver
- func NewMetricsResolver(cfg config.PrometheusConfig) ChainedResolver
- func NewQueryLoggingResolver(cfg config.QueryLogConfig) ChainedResolver
- func NewStatsResolver() ChainedResolver
- type ClientNamesResolver
- type CnameResolver
- type ConditionalUpstreamResolver
- type CustomDNSResolver
- type MetricsResolver
- type NextResolver
- type ParallelBestResolver
- type QueryLoggingResolver
- type Request
- type Resolver
- type Response
- type ResponseType
- type StatsResolver
- type UpstreamResolver
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func TestDOHUpstream ¶
Types ¶
type BlockingResolver ¶
type BlockingResolver struct { NextResolver // contains filtered or unexported fields }
checks request's question (domain name) against black and white lists
func (*BlockingResolver) Configuration ¶
func (r *BlockingResolver) Configuration() (result []string)
type CachingResolver ¶
type CachingResolver struct { NextResolver // contains filtered or unexported fields }
caches answers from dns queries with their TTL time, to avoid external resolver calls for recurrent queries
func (*CachingResolver) Configuration ¶
func (r *CachingResolver) Configuration() (result []string)
type ChainedResolver ¶
func NewBlockingResolver ¶
func NewBlockingResolver(router *chi.Mux, cfg config.BlockingConfig) ChainedResolver
func NewCachingResolver ¶
func NewCachingResolver(cfg config.CachingConfig) ChainedResolver
func NewClientNamesResolver ¶
func NewClientNamesResolver(cfg config.ClientLookupConfig) ChainedResolver
func NewCnameResolver ¶
func NewCnameResolver(cfg config.CnameConfig) ChainedResolver
NewCnameResolver resturns a new restriction resolver
func NewConditionalUpstreamResolver ¶
func NewConditionalUpstreamResolver(cfg config.ConditionalUpstreamConfig) ChainedResolver
func NewCustomDNSResolver ¶
func NewCustomDNSResolver(cfg config.CustomDNSConfig) ChainedResolver
func NewMetricsResolver ¶
func NewMetricsResolver(cfg config.PrometheusConfig) ChainedResolver
NewMetricsResolver creates a new intance of the MetricsResolver type
func NewQueryLoggingResolver ¶
func NewQueryLoggingResolver(cfg config.QueryLogConfig) ChainedResolver
func NewStatsResolver ¶
func NewStatsResolver() ChainedResolver
type ClientNamesResolver ¶
type ClientNamesResolver struct { NextResolver // contains filtered or unexported fields }
ClientNamesResolver tries to determine client name by asking responsible DNS server vie rDNS (reverse lookup)
func (*ClientNamesResolver) Configuration ¶
func (r *ClientNamesResolver) Configuration() (result []string)
func (*ClientNamesResolver) FlushCache ¶
func (r *ClientNamesResolver) FlushCache()
reset client name cache
type CnameResolver ¶
type CnameResolver struct { NextResolver // contains filtered or unexported fields }
func (*CnameResolver) Configuration ¶
func (cr *CnameResolver) Configuration() (result []string)
Configuration returns the string representation of the configuration
type ConditionalUpstreamResolver ¶
type ConditionalUpstreamResolver struct { NextResolver // contains filtered or unexported fields }
ConditionalUpstreamResolver delegates DNS question to other DNS resolver dependent on domain name in question
func (*ConditionalUpstreamResolver) Configuration ¶
func (r *ConditionalUpstreamResolver) Configuration() (result []string)
type CustomDNSResolver ¶
type CustomDNSResolver struct { NextResolver // contains filtered or unexported fields }
CustomDNSResolver resolves passed domain name to ip address defined in domain-IP map
func (*CustomDNSResolver) Configuration ¶
func (r *CustomDNSResolver) Configuration() (result []string)
type MetricsResolver ¶
type MetricsResolver struct { NextResolver // contains filtered or unexported fields }
MetricsResolver resolver that records metrics about requests/response
func (*MetricsResolver) Configuration ¶
func (m *MetricsResolver) Configuration() (result []string)
Configuration gets the config of this resolver in a string slice
type NextResolver ¶
type NextResolver struct {
// contains filtered or unexported fields
}
func (*NextResolver) GetNext ¶
func (r *NextResolver) GetNext() Resolver
func (*NextResolver) Next ¶
func (r *NextResolver) Next(n Resolver)
type ParallelBestResolver ¶
type ParallelBestResolver struct {
// contains filtered or unexported fields
}
ParallelBestResolver delegates the DNS message to 2 upstream resolvers and returns the fastest answer
func (*ParallelBestResolver) Configuration ¶
func (r *ParallelBestResolver) Configuration() (result []string)
type QueryLoggingResolver ¶
type QueryLoggingResolver struct { NextResolver // contains filtered or unexported fields }
QueryLoggingResolver writes query information (question, answer, duration, ...) into log file or as log entry (if log directory is not configured)
func (*QueryLoggingResolver) Configuration ¶
func (r *QueryLoggingResolver) Configuration() (result []string)
type Resolver ¶
func NewParallelBestResolver ¶
func NewParallelBestResolver(cfg config.UpstreamConfig) Resolver
func NewUpstreamResolver ¶
type ResponseType ¶
type ResponseType int
const ( RESOLVED ResponseType = iota CACHED BLOCKED CONDITIONAL CUSTOMDNS )
func (ResponseType) String ¶
func (r ResponseType) String() string
type StatsResolver ¶
type StatsResolver struct { NextResolver // contains filtered or unexported fields }
func (*StatsResolver) Configuration ¶
func (r *StatsResolver) Configuration() (result []string)
type UpstreamResolver ¶
type UpstreamResolver struct { NextResolver // contains filtered or unexported fields }
UpstreamResolver sends request to external DNS server
func (*UpstreamResolver) Configuration ¶
func (r *UpstreamResolver) Configuration() (result []string)
func (*UpstreamResolver) Resolve ¶
func (r *UpstreamResolver) Resolve(request *Request) (response *Response, err error)
func (UpstreamResolver) String ¶
func (r UpstreamResolver) String() string
Source Files
¶
- blocking_resolver.go
- caching_resolver.go
- client_names_resolver.go
- cname_resolver.go
- conditionall_upstream_resolver.go
- custom_dns_resolver.go
- metrics_resolver.go
- mocks.go
- parallel_best_resolver.go
- private_dns.go
- query_logging_resolver.go
- resolver.go
- stats_resolver.go
- stats_resolver_trigger.go
- upstream_resolver.go