filter

package
v0.0.0-...-5abfbfe Latest Latest
Warning

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

Go to latest
Published: Mar 22, 2022 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package filter provides different functions to filter out DNS requests (to block them)

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidFilterMethod = errors.New("filter: invalid filter method")
	ErrInvalidDomainRule   = errors.New("filter: invalid domain rule")
	ErrInvalidIPAddress    = errors.New("filter: invalid ip address")
	ErrInvalidName         = errors.New("filter: invalid name")
	ErrNoSuchRule          = errors.New("filter: no such rule")
)
View Source
var (
	ErrNoSuchFilter = errors.New("filter: no such filter")
)

Functions

This section is empty.

Types

type DefaultEngine

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

func (*DefaultEngine) AddFilter

func (e *DefaultEngine) AddFilter(f Filter) error

func (*DefaultEngine) GetFilter

func (e *DefaultEngine) GetFilter(*net.IP) (*Filter, error)

func (*DefaultEngine) Match

func (e *DefaultEngine) Match(ip net.IP, message dns.Message) (bool, dns.Message, error)

type DefaultStore

type DefaultStore struct {
}

func (*DefaultStore) Add

func (s *DefaultStore) Add(name string, f Filter) error

func (*DefaultStore) Get

func (s *DefaultStore) Get(name string) (*Filter, error)

type Engine

type Engine interface {
	AddFilter(Filter) error

	GetFilter(*net.IP) (*Filter, error)

	Match(net.IP, dns.Message) (bool, dns.Message, error)
}

func NewDefaultEngine

func NewDefaultEngine(l *logger.Logger) Engine

type Filter

type Filter struct {
	// FilterMode defines how the filter should answer a filtered request
	FilterMode FilterMode

	// TTL defines the TTL (in seconds) returned by filtered answers
	TTL int

	// Address defines the IP address of this DNS server
	Address net.IP

	// Rules stores a map of rules
	Rules map[string]net.IP
}

func (*Filter) AddRule

func (f *Filter) AddRule(t RuleType, rule string) error

func (*Filter) Match

func (f *Filter) Match(message dns.Message) (bool, dns.Message, error)

func (*Filter) Mode

func (f *Filter) Mode() FilterMode

func (*Filter) ParseRule

func (f *Filter) ParseRule(t RuleType, input string) (string, net.IP, error)

ParseRule parses a filter rule with the following format: '<ip-address> <domain>'. Example: '0.0.0.0 example.com'

func (*Filter) RemoveRule

func (f *Filter) RemoveRule(domain string) error

type FilterMode

type FilterMode int
const (
	NxDomainMode FilterMode = iota
	LocalIPMode
	NoDataMode
	NullMode
)

func MethodFromString

func MethodFromString(m string) (FilterMode, error)

func (FilterMode) String

func (m FilterMode) String() string

type RuleType

type RuleType int
const (
	DomainRule RuleType = iota
	RPZRule
)

type Store

type Store interface {
	// Add adds a new filter to the store
	Add(string, Filter) error

	// Get returns a filter by name
	Get(string) (*Filter, error)
}

func NewDefault

func NewDefault() Store

Jump to

Keyboard shortcuts

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