dns_event_stream

package
v0.0.4 Latest Latest
Warning

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

Go to latest
Published: Apr 26, 2023 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func KeySubject

func KeySubject(q dns.Question) string

Types

type ActionItem

type ActionItem struct {
	Action  string
	Idx     int
	Current dns.RR
	Prev    dns.RR
}

func CurrentToActions

func CurrentToActions(dnsrr []*DnsResult) []ActionItem

func ToActions

func ToActions(new, old []dns.RR) []ActionItem

type ActiveSubject

type ActiveSubject struct {
	Subject Subject
	Log     *zerolog.Logger
	// contains filtered or unexported fields
}

func NewActiveSubject

func NewActiveSubject(subject Subject, dnsEventStream *DnsEventStream) (*ActiveSubject, error)

func (*ActiveSubject) Activate

func (as *ActiveSubject) Activate() error

func (*ActiveSubject) Bind

func (as *ActiveSubject) Bind(fn func(history []*DnsResult)) func()

func (*ActiveSubject) Deactivate

func (as *ActiveSubject) Deactivate() error

func (*ActiveSubject) Refresh

func (as *ActiveSubject) Refresh()

func (*ActiveSubject) Resolve

func (as *ActiveSubject) Resolve() DnsResult

type DNSObserver

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

func NewDNSObserver

func NewDNSObserver(logs ...*log.Logger) (*DNSObserver, error)

func (*DNSObserver) AddSubject

func (o *DNSObserver) AddSubject(name string, resolver resolvers.Resolver) XSubject

func (*DNSObserver) GetSubjects

func (o *DNSObserver) GetSubjects() []XSubject

func (*DNSObserver) RemoveSubject

func (o *DNSObserver) RemoveSubject(name string) *XSubject

func (*DNSObserver) Start

func (o *DNSObserver) Start() error

func (*DNSObserver) Stop

func (o *DNSObserver) Stop() error

type DnsEventStream

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

func NewDnsEventStream

func NewDnsEventStream(zlog *zerolog.Logger) *DnsEventStream

func (*DnsEventStream) Bind

func (s *DnsEventStream) Bind(sub Subject, fn func(history []*DnsResult)) (func(), error)

func (*DnsEventStream) CreateSubject

func (s *DnsEventStream) CreateSubject(sub Subject) (*ActiveSubject, error)

func (*DnsEventStream) HistoryLimit

func (s *DnsEventStream) HistoryLimit() int

func (*DnsEventStream) RemoveSubject

func (s *DnsEventStream) RemoveSubject(q dns.Question) error

func (*DnsEventStream) Resolve

func (s *DnsEventStream) Resolve(sub Subject) ([]dns.RR, error)

func (*DnsEventStream) Start

func (s *DnsEventStream) Start() error

func (*DnsEventStream) Stop

func (s *DnsEventStream) Stop() error

type DnsResult

type DnsResult struct {
	Rrs         []dns.RR
	Err         error
	Created     time.Time
	ResolveTime time.Duration
}

func NewestValidHistory

func NewestValidHistory(history []*DnsResult) *DnsResult

type FixResolverSubject

type FixResolverSubject struct {
	Question dns.Question
	Result   []dns.RR
}

func (*FixResolverSubject) ConnectActiveSubject

func (r *FixResolverSubject) ConnectActiveSubject(as *ActiveSubject)

func (*FixResolverSubject) Key

func (r *FixResolverSubject) Key() dns.Question

func (*FixResolverSubject) Resolve

func (r *FixResolverSubject) Resolve() ([]dns.RR, error)

type RefreshTimes

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

type Subject

type Subject interface {
	ConnectActiveSubject(as *ActiveSubject)
	Key() dns.Question
	Resolve() ([]dns.RR, error)
}

type SysResolverSubject

type SysResolverSubject struct {
	NameServers []string
	Log         *zerolog.Logger
	ResolvConf  *string
	Timeout     time.Duration
	Question    dns.Question
	// contains filtered or unexported fields
}

func (*SysResolverSubject) ConnectActiveSubject

func (r *SysResolverSubject) ConnectActiveSubject(as *ActiveSubject)

func (*SysResolverSubject) Key

func (r *SysResolverSubject) Key() dns.Question

func (*SysResolverSubject) Resolve

func (r *SysResolverSubject) Resolve() ([]dns.RR, error)

type XSubject

type XSubject struct {
	Name       string
	Resolver   resolvers.Resolver
	LastUpdate time.Time
}

Jump to

Keyboard shortcuts

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