madns

package
v0.0.6 Latest Latest
Warning

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

Go to latest
Published: Jan 22, 2025 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ResolvableProtocols = []ma.Protocol{dnsaddrProtocol, dns4Protocol, dns6Protocol, dnsProtocol}
	DefaultResolver     = &Resolver{def: net.DefaultResolver}
)

Functions

func Matches

func Matches(maddr ma.Multiaddr) (matches bool)

func Resolve

func Resolve(ctx context.Context, maddr ma.Multiaddr) ([]ma.Multiaddr, error)

Types

type BasicResolver

type BasicResolver interface {
	LookupIPAddr(context.Context, string) ([]net.IPAddr, error)
	LookupTXT(context.Context, string) ([]string, error)
}

BasicResolver is a low level interface for DNS resolution

type MockResolver

type MockResolver struct {
	IP  map[string][]net.IPAddr
	TXT map[string][]string
}

func (*MockResolver) LookupIPAddr

func (r *MockResolver) LookupIPAddr(ctx context.Context, name string) ([]net.IPAddr, error)

func (*MockResolver) LookupTXT

func (r *MockResolver) LookupTXT(ctx context.Context, name string) ([]string, error)

type Option

type Option func(*Resolver) error

func WithDefaultResolver

func WithDefaultResolver(def BasicResolver) Option

WithDefaultResolver is an option that specifies the default basic resolver, which resolves any TLD that doesn't have a custom resolver. Defaults to net.DefaultResolver

func WithDomainResolver

func WithDomainResolver(domain string, rslv BasicResolver) Option

WithDomainResolver specifies a custom resolver for a domain/TLD. Custom resolver selection matches domains left to right, with more specific resolvers superseding generic ones.

type Resolver

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

Resolver is an object capable of resolving dns multiaddrs by using one or more BasicResolvers; it supports custom per domain/TLD resolvers. It also implements the BasicResolver interface so that it can act as a custom per domain/TLD resolver.

func NewResolver

func NewResolver(opts ...Option) (*Resolver, error)

NewResolver creates a new Resolver instance with the specified options

func (*Resolver) LookupIPAddr

func (r *Resolver) LookupIPAddr(ctx context.Context, domain string) ([]net.IPAddr, error)

func (*Resolver) LookupTXT

func (r *Resolver) LookupTXT(ctx context.Context, txt string) ([]string, error)

func (*Resolver) Resolve

func (r *Resolver) Resolve(ctx context.Context, maddr ma.Multiaddr) ([]ma.Multiaddr, error)

Resolve resolves a DNS multiaddr. It will only resolve the first DNS component in the multiaddr. If you need to resolve multiple DNS components, you may call this function again with each returned address.

Jump to

Keyboard shortcuts

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