server

package
v2.43.3+incompatible Latest Latest
Warning

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

Go to latest
Published: Oct 26, 2017 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultTTL       = uint32(3600)
	CleanupInterval  = time.Second * 120
	CleanupThreshold = 512
)
View Source
const (
	QueryTimeout = time.Second * 8
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ARecord

type ARecord struct {
	IPs    []net.IP
	Expire time.Time
}

type CacheServer

type CacheServer struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func NewCacheServer

func NewCacheServer(ctx context.Context, config *dns.Config) (*CacheServer, error)

func (*CacheServer) Close

func (*CacheServer) Close()

func (*CacheServer) Get

func (s *CacheServer) Get(domain string) []net.IP

func (*CacheServer) GetCached

func (s *CacheServer) GetCached(domain string) []net.IP

func (*CacheServer) Interface

func (*CacheServer) Interface() interface{}

func (*CacheServer) Start

func (*CacheServer) Start() error

type DomainRecord

type DomainRecord struct {
	A *ARecord
}

type IPResult

type IPResult struct {
	IP  []net.IP
	TTL time.Duration
}

type LocalNameServer

type LocalNameServer struct {
}

func (*LocalNameServer) QueryA

func (v *LocalNameServer) QueryA(domain string) <-chan *ARecord

type NameServer

type NameServer interface {
	QueryA(domain string) <-chan *ARecord
}

type PendingRequest

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

type Querier

type Querier interface {
	QueryDomain(domain string) <-chan *IPResult
}

type Record

type Record struct {
	IP         []net.IP
	Expire     time.Time
	LastAccess time.Time
}

func (*Record) Expired

func (r *Record) Expired() bool

type UDPNameServer

type UDPNameServer struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewUDPNameServer

func NewUDPNameServer(address net.Destination, dispatcher dispatcher.Interface) *UDPNameServer

func (*UDPNameServer) AssignUnusedID

func (v *UDPNameServer) AssignUnusedID(response chan<- *ARecord) uint16

Private: Visible for testing.

func (*UDPNameServer) BuildQueryA

func (v *UDPNameServer) BuildQueryA(domain string, id uint16) *buf.Buffer

func (*UDPNameServer) Cleanup

func (v *UDPNameServer) Cleanup()

Private: Visible for testing.

func (*UDPNameServer) HandleResponse

func (v *UDPNameServer) HandleResponse(payload *buf.Buffer)

Private: Visible for testing.

func (*UDPNameServer) QueryA

func (v *UDPNameServer) QueryA(domain string) <-chan *ARecord

type UDPQuerier

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

Jump to

Keyboard shortcuts

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