Documentation
¶
Index ¶
- Constants
- Variables
- func FixedResponse(id uint16, question dns.Question, addresses []netip.Addr, timeToLive uint32) *dns.Msg
- func MessageToAddresses(response *dns.Msg) ([]netip.Addr, error)
- func NewDialerWrapper(dialer N.Dialer, client *Client, transport Transport, strategy DomainStrategy, ...) N.Dialer
- func RegisterTransport(schemes []string, constructor TransportConstructor)
- func SetClientSubnet(message *dns.Msg, clientSubnet netip.Prefix, override bool) *dns.Msg
- func TruncateDNSMessage(request *dns.Msg, response *dns.Msg, headroom int) (*buf.Buffer, error)
- type Client
- func (c *Client) ClearCache()
- func (c *Client) Exchange(ctx context.Context, transport Transport, message *dns.Msg, ...) (*dns.Msg, error)
- func (c *Client) ExchangeCache(ctx context.Context, message *dns.Msg) (*dns.Msg, bool)
- func (c *Client) ExchangeWithResponseCheck(ctx context.Context, transport Transport, message *dns.Msg, ...) (*dns.Msg, error)
- func (c *Client) Lookup(ctx context.Context, transport Transport, domain string, options QueryOptions) ([]netip.Addr, error)
- func (c *Client) LookupCache(ctx context.Context, domain string, strategy DomainStrategy) ([]netip.Addr, bool)
- func (c *Client) LookupWithResponseCheck(ctx context.Context, transport Transport, domain string, options QueryOptions, ...) ([]netip.Addr, error)
- func (c *Client) Start()
- type ClientOptions
- type DialerWrapper
- type DomainStrategy
- type HTTPSTransport
- func (t *HTTPSTransport) Close() error
- func (t *HTTPSTransport) Exchange(ctx context.Context, message *dns.Msg) (*dns.Msg, error)
- func (t *HTTPSTransport) Lookup(ctx context.Context, domain string, strategy DomainStrategy) ([]netip.Addr, error)
- func (t *HTTPSTransport) Name() string
- func (t *HTTPSTransport) Raw() bool
- func (t *HTTPSTransport) Reset()
- func (t *HTTPSTransport) Start() error
- type LocalTransport
- func (t *LocalTransport) Close() error
- func (t *LocalTransport) Exchange(ctx context.Context, message *dns.Msg) (*dns.Msg, error)
- func (t *LocalTransport) Lookup(ctx context.Context, domain string, strategy DomainStrategy) ([]netip.Addr, error)
- func (t *LocalTransport) Name() string
- func (t *LocalTransport) Raw() bool
- func (t *LocalTransport) Reset()
- func (t *LocalTransport) Start() error
- type QueryOptions
- type RCodeError
- type RCodeTransport
- func (t *RCodeTransport) Close() error
- func (t *RCodeTransport) Exchange(ctx context.Context, message *dns.Msg) (*dns.Msg, error)
- func (t *RCodeTransport) Lookup(ctx context.Context, domain string, strategy DomainStrategy) ([]netip.Addr, error)
- func (t *RCodeTransport) Name() string
- func (t *RCodeTransport) Raw() bool
- func (t *RCodeTransport) Reset()
- func (t *RCodeTransport) Start() error
- type RDRCStore
- type TCPTransport
- func (t *TCPTransport) Close() error
- func (t *TCPTransport) Exchange(ctx context.Context, message *dns.Msg) (*dns.Msg, error)
- func (t *TCPTransport) Lookup(ctx context.Context, domain string, strategy DomainStrategy) ([]netip.Addr, error)
- func (t *TCPTransport) Name() string
- func (t *TCPTransport) Raw() bool
- func (t *TCPTransport) Reset()
- func (t *TCPTransport) Start() error
- type TLSTransport
- func (t *TLSTransport) Close() error
- func (t *TLSTransport) Exchange(ctx context.Context, message *dns.Msg) (*dns.Msg, error)
- func (t *TLSTransport) Lookup(ctx context.Context, domain string, strategy DomainStrategy) ([]netip.Addr, error)
- func (t *TLSTransport) Name() string
- func (t *TLSTransport) Raw() bool
- func (t *TLSTransport) Reset()
- func (t *TLSTransport) Start() error
- type Transport
- type TransportConstructor
- type TransportOptions
- type UDPTransport
- func (t *UDPTransport) Close() error
- func (t *UDPTransport) Exchange(ctx context.Context, message *dns.Msg) (*dns.Msg, error)
- func (t *UDPTransport) Lookup(ctx context.Context, domain string, strategy DomainStrategy) ([]netip.Addr, error)
- func (t *UDPTransport) Name() string
- func (t *UDPTransport) Raw() bool
- func (t *UDPTransport) Reset()
- func (t *UDPTransport) Start() error
Constants ¶
View Source
const ( DefaultTTL = 600 DefaultTimeout = 10 * time.Second )
View Source
const MimeType = "application/dns-message"
Variables ¶
View Source
var ( ErrNoRawSupport = E.New("no raw query support by current transport") ErrNotCached = E.New("not cached") ErrResponseRejected = E.New("response rejected") ErrResponseRejectedCached = E.Extend(ErrResponseRejected, "cached") )
Functions ¶
func FixedResponse ¶ added in v0.3.0
func MessageToAddresses ¶ added in v0.2.0
func NewDialerWrapper ¶
func RegisterTransport ¶
func RegisterTransport(schemes []string, constructor TransportConstructor)
func SetClientSubnet ¶ added in v0.2.0
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
func NewClient ¶
func NewClient(options ClientOptions) *Client
func (*Client) ClearCache ¶ added in v0.1.9
func (c *Client) ClearCache()
func (*Client) ExchangeCache ¶ added in v0.1.5
func (*Client) ExchangeWithResponseCheck ¶ added in v0.2.0
func (*Client) LookupCache ¶ added in v0.2.0
func (*Client) LookupWithResponseCheck ¶ added in v0.2.0
type ClientOptions ¶ added in v0.1.5
type DialerWrapper ¶
type DialerWrapper struct {
// contains filtered or unexported fields
}
func (*DialerWrapper) DialContext ¶
func (*DialerWrapper) ListenPacket ¶
func (d *DialerWrapper) ListenPacket(ctx context.Context, destination M.Socksaddr) (net.PacketConn, error)
func (*DialerWrapper) Upstream ¶
func (d *DialerWrapper) Upstream() any
type DomainStrategy ¶
type DomainStrategy = uint8
const ( DomainStrategyAsIS DomainStrategy = iota DomainStrategyPreferIPv4 DomainStrategyPreferIPv6 DomainStrategyUseIPv4 DomainStrategyUseIPv6 )
type HTTPSTransport ¶
type HTTPSTransport struct {
// contains filtered or unexported fields
}
func NewHTTPSTransport ¶
func NewHTTPSTransport(options TransportOptions) *HTTPSTransport
func (*HTTPSTransport) Close ¶
func (t *HTTPSTransport) Close() error
func (*HTTPSTransport) Lookup ¶
func (t *HTTPSTransport) Lookup(ctx context.Context, domain string, strategy DomainStrategy) ([]netip.Addr, error)
func (*HTTPSTransport) Name ¶ added in v0.1.5
func (t *HTTPSTransport) Name() string
func (*HTTPSTransport) Raw ¶
func (t *HTTPSTransport) Raw() bool
func (*HTTPSTransport) Reset ¶ added in v0.1.9
func (t *HTTPSTransport) Reset()
func (*HTTPSTransport) Start ¶
func (t *HTTPSTransport) Start() error
type LocalTransport ¶
type LocalTransport struct {
// contains filtered or unexported fields
}
func NewLocalTransport ¶
func NewLocalTransport(options TransportOptions) *LocalTransport
func (*LocalTransport) Close ¶
func (t *LocalTransport) Close() error
func (*LocalTransport) Lookup ¶
func (t *LocalTransport) Lookup(ctx context.Context, domain string, strategy DomainStrategy) ([]netip.Addr, error)
func (*LocalTransport) Name ¶ added in v0.1.5
func (t *LocalTransport) Name() string
func (*LocalTransport) Raw ¶
func (t *LocalTransport) Raw() bool
func (*LocalTransport) Reset ¶ added in v0.1.9
func (t *LocalTransport) Reset()
func (*LocalTransport) Start ¶
func (t *LocalTransport) Start() error
type QueryOptions ¶ added in v0.4.0
type QueryOptions struct { Strategy DomainStrategy DisableCache bool RewriteTTL *uint32 ClientSubnet netip.Prefix }
type RCodeError ¶
type RCodeError uint16
const ( RCodeSuccess RCodeError = 0 // NoError RCodeFormatError RCodeError = 1 // FormErr RCodeServerFailure RCodeError = 2 // ServFail RCodeNameError RCodeError = 3 // NXDomain RCodeNotImplemented RCodeError = 4 // NotImp RCodeRefused RCodeError = 5 // Refused )
func (RCodeError) Error ¶
func (e RCodeError) Error() string
type RCodeTransport ¶
type RCodeTransport struct {
// contains filtered or unexported fields
}
func NewRCodeTransport ¶
func NewRCodeTransport(options TransportOptions) (*RCodeTransport, error)
func (*RCodeTransport) Close ¶
func (t *RCodeTransport) Close() error
func (*RCodeTransport) Lookup ¶
func (t *RCodeTransport) Lookup(ctx context.Context, domain string, strategy DomainStrategy) ([]netip.Addr, error)
func (*RCodeTransport) Name ¶ added in v0.1.5
func (t *RCodeTransport) Name() string
func (*RCodeTransport) Raw ¶
func (t *RCodeTransport) Raw() bool
func (*RCodeTransport) Reset ¶ added in v0.1.9
func (t *RCodeTransport) Reset()
func (*RCodeTransport) Start ¶
func (t *RCodeTransport) Start() error
type TCPTransport ¶
type TCPTransport struct {
// contains filtered or unexported fields
}
func NewTCPTransport ¶
func NewTCPTransport(options TransportOptions) (*TCPTransport, error)
func (*TCPTransport) Close ¶
func (t *TCPTransport) Close() error
func (*TCPTransport) Lookup ¶
func (t *TCPTransport) Lookup(ctx context.Context, domain string, strategy DomainStrategy) ([]netip.Addr, error)
func (*TCPTransport) Name ¶ added in v0.1.5
func (t *TCPTransport) Name() string
func (*TCPTransport) Raw ¶
func (t *TCPTransport) Raw() bool
func (*TCPTransport) Reset ¶ added in v0.1.9
func (t *TCPTransport) Reset()
func (*TCPTransport) Start ¶
func (t *TCPTransport) Start() error
type TLSTransport ¶
type TLSTransport struct {
// contains filtered or unexported fields
}
func NewTLSTransport ¶
func NewTLSTransport(options TransportOptions) (*TLSTransport, error)
func (*TLSTransport) Close ¶
func (t *TLSTransport) Close() error
func (*TLSTransport) Lookup ¶
func (t *TLSTransport) Lookup(ctx context.Context, domain string, strategy DomainStrategy) ([]netip.Addr, error)
func (*TLSTransport) Name ¶ added in v0.1.5
func (t *TLSTransport) Name() string
func (*TLSTransport) Raw ¶
func (t *TLSTransport) Raw() bool
func (*TLSTransport) Reset ¶ added in v0.1.9
func (t *TLSTransport) Reset()
func (*TLSTransport) Start ¶
func (t *TLSTransport) Start() error
type Transport ¶
type Transport interface { Name() string Start() error Reset() Close() error Raw() bool Exchange(ctx context.Context, message *dns.Msg) (*dns.Msg, error) Lookup(ctx context.Context, domain string, strategy DomainStrategy) ([]netip.Addr, error) }
func CreateTransport ¶
func CreateTransport(options TransportOptions) (Transport, error)
type TransportConstructor ¶
type TransportConstructor = func(options TransportOptions) (Transport, error)
type TransportOptions ¶ added in v0.2.0
type UDPTransport ¶
type UDPTransport struct {
// contains filtered or unexported fields
}
func NewUDPTransport ¶
func NewUDPTransport(options TransportOptions) (*UDPTransport, error)
func (*UDPTransport) Close ¶
func (t *UDPTransport) Close() error
func (*UDPTransport) Lookup ¶
func (t *UDPTransport) Lookup(ctx context.Context, domain string, strategy DomainStrategy) ([]netip.Addr, error)
func (*UDPTransport) Name ¶ added in v0.1.5
func (t *UDPTransport) Name() string
func (*UDPTransport) Raw ¶
func (t *UDPTransport) Raw() bool
func (*UDPTransport) Reset ¶ added in v0.1.9
func (t *UDPTransport) Reset()
func (*UDPTransport) Start ¶
func (t *UDPTransport) Start() error
Source Files
¶
Click to show internal directories.
Click to hide internal directories.