resolver

package
v0.0.0-...-686dedc Latest Latest
Warning

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

Go to latest
Published: Jun 29, 2024 License: GPL-3.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultDnsReadTimeout = time.Second * 10
View Source
const DefaultDnsRelayTimeout = time.Second * 5
View Source
const SafeDnsPacketSize = 2 * 1024 // safe size which is 1232 from https://dnsflagday.net/2020/, so 2048 is enough

Variables

View Source
var (
	DisableSystemHosts, _ = strconv.ParseBool(os.Getenv("DISABLE_SYSTEM_HOSTS"))
	UseSystemHosts        bool
)
View Source
var (
	// DefaultResolver aim to resolve ip
	DefaultResolver Resolver

	// ProxyServerHostResolver resolve ip to proxies server host
	ProxyServerHostResolver Resolver

	// DisableIPv6 means don't resolve ipv6 host
	// default value is true
	DisableIPv6 = true

	// DefaultHosts aim to resolve hosts
	DefaultHosts = NewHosts(trie.New[HostValue]())

	// DefaultDNSTimeout defined the default dns request timeout
	DefaultDNSTimeout = time.Second * 5
)
View Source
var (
	ErrIPNotFound   = errors.New("couldn't find ip")
	ErrIPVersion    = errors.New("ip version error")
	ErrIPv6Disabled = errors.New("ipv6 disabled")
)

Functions

func AddSystemDnsBlacklist

func AddSystemDnsBlacklist(names ...string)

func FakeIPEnabled

func FakeIPEnabled() bool

func FindHostByIP

func FindHostByIP(ip netip.Addr) (string, bool)

func FlushFakeIP

func FlushFakeIP() error

func InsertHostByIP

func InsertHostByIP(ip netip.Addr, host string)

func IsExistFakeIP

func IsExistFakeIP(ip netip.Addr) bool

func IsFakeBroadcastIP

func IsFakeBroadcastIP(ip netip.Addr) bool

func IsFakeIP

func IsFakeIP(ip netip.Addr) bool

func IsSystemDnsBlacklisted

func IsSystemDnsBlacklisted(names ...string) bool

func LookupIP

func LookupIP(ctx context.Context, host string) ([]netip.Addr, error)

LookupIP with a host, return ip

func LookupIPProxyServerHost

func LookupIPProxyServerHost(ctx context.Context, host string) ([]netip.Addr, error)

func LookupIPWithResolver

func LookupIPWithResolver(ctx context.Context, host string, r Resolver) ([]netip.Addr, error)

LookupIPWithResolver same as LookupIP, but with a resolver

func LookupIPv4

func LookupIPv4(ctx context.Context, host string) ([]netip.Addr, error)

LookupIPv4 with a host, return ipv4 list

func LookupIPv4ProxyServerHost

func LookupIPv4ProxyServerHost(ctx context.Context, host string) ([]netip.Addr, error)

func LookupIPv4WithResolver

func LookupIPv4WithResolver(ctx context.Context, host string, r Resolver) ([]netip.Addr, error)

LookupIPv4WithResolver same as LookupIPv4, but with a resolver

func LookupIPv6

func LookupIPv6(ctx context.Context, host string) ([]netip.Addr, error)

LookupIPv6 with a host, return ipv6 list

func LookupIPv6ProxyServerHost

func LookupIPv6ProxyServerHost(ctx context.Context, host string) ([]netip.Addr, error)

func LookupIPv6WithResolver

func LookupIPv6WithResolver(ctx context.Context, host string, r Resolver) ([]netip.Addr, error)

LookupIPv6WithResolver same as LookupIPv6, but with a resolver

func MappingEnabled

func MappingEnabled() bool

func RelayDnsConn

func RelayDnsConn(ctx context.Context, conn net.Conn, readTimeout time.Duration) error

func RelayDnsPacket

func RelayDnsPacket(ctx context.Context, payload []byte, target []byte) ([]byte, error)

RelayDnsPacket will truncate udp message up to SafeDnsPacketSize

func RemoveSystemDnsBlacklist

func RemoveSystemDnsBlacklist(names ...string)

func ResolveIP

func ResolveIP(ctx context.Context, host string) (netip.Addr, error)

ResolveIP with a host, return ip and priority return TypeA

func ResolveIPWithResolver

func ResolveIPWithResolver(ctx context.Context, host string, r Resolver) (netip.Addr, error)

ResolveIPWithResolver same as ResolveIP, but with a resolver

func ResolveIPv4

func ResolveIPv4(ctx context.Context, host string) (netip.Addr, error)

ResolveIPv4 with a host, return ipv4

func ResolveIPv4ProxyServerHost

func ResolveIPv4ProxyServerHost(ctx context.Context, host string) (netip.Addr, error)

ResolveIPv4ProxyServerHost proxies server host only

func ResolveIPv4WithResolver

func ResolveIPv4WithResolver(ctx context.Context, host string, r Resolver) (netip.Addr, error)

ResolveIPv4WithResolver same as ResolveIPv4, but with a resolver

func ResolveIPv6

func ResolveIPv6(ctx context.Context, host string) (netip.Addr, error)

func ResolveIPv6ProxyServerHost

func ResolveIPv6ProxyServerHost(ctx context.Context, host string) (netip.Addr, error)

ResolveIPv6ProxyServerHost proxies server host only

func ResolveIPv6WithResolver

func ResolveIPv6WithResolver(ctx context.Context, host string, r Resolver) (netip.Addr, error)

ResolveIPv6WithResolver same as ResolveIPv6, but with a resolver

func ResolveProxyServerHost

func ResolveProxyServerHost(ctx context.Context, host string) (netip.Addr, error)

ResolveProxyServerHost proxies server host only

func ServeMsg

func ServeMsg(ctx context.Context, msg *D.Msg) (*D.Msg, error)

ServeMsg with a dns.Msg, return resolve dns.Msg

func SortationAddr

func SortationAddr(ips []netip.Addr) (ipv4s, ipv6s []netip.Addr)

func StoreFakePoolState

func StoreFakePoolState()

Types

type Enhancer

type Enhancer interface {
	FakeIPEnabled() bool
	MappingEnabled() bool
	IsFakeIP(netip.Addr) bool
	IsFakeBroadcastIP(netip.Addr) bool
	IsExistFakeIP(netip.Addr) bool
	FindHostByIP(netip.Addr) (string, bool)
	FlushFakeIP() error
	InsertHostByIP(netip.Addr, string)
	StoreFakePoolState()
}
var DefaultHostMapper Enhancer

type HostValue

type HostValue struct {
	IsDomain bool
	IPs      []netip.Addr
	Domain   string
}

func NewHostValue

func NewHostValue(value any) (HostValue, error)

func NewHostValueByDomain

func NewHostValueByDomain(domain string) (HostValue, error)

func NewHostValueByIPs

func NewHostValueByIPs(ips []netip.Addr) (HostValue, error)

func (HostValue) RandIP

func (hv HostValue) RandIP() (netip.Addr, error)

type Hosts

type Hosts struct {
	*trie.DomainTrie[HostValue]
}

func NewHosts

func NewHosts(hosts *trie.DomainTrie[HostValue]) Hosts

func (*Hosts) Search

func (h *Hosts) Search(domain string, isDomain bool) (*HostValue, bool)

Return the search result and whether to match the parameter `isDomain`

type LocalServer

type LocalServer interface {
	ServeMsg(ctx context.Context, msg *D.Msg) (*D.Msg, error)
}
var DefaultLocalServer LocalServer

type Resolver

type Resolver interface {
	LookupIP(ctx context.Context, host string) (ips []netip.Addr, err error)
	LookupIPv4(ctx context.Context, host string) (ips []netip.Addr, err error)
	LookupIPv6(ctx context.Context, host string) (ips []netip.Addr, err error)
	ExchangeContext(ctx context.Context, m *dns.Msg) (msg *dns.Msg, err error)
	Invalid() bool
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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