Documentation ¶
Index ¶
- Constants
- Variables
- func ContextWithDisableCache(ctx context.Context, val bool) context.Context
- func ContextWithRewriteTTL(ctx context.Context, val uint32) context.Context
- func DisableCacheFromContext(ctx context.Context) bool
- func NewDialerWrapper(dialer N.Dialer, client *Client, transport Transport, strategy DomainStrategy, ...) N.Dialer
- func RegisterTransport(schemes []string, constructor TransportConstructor)
- func RewriteTTLFromContext(ctx context.Context) (uint32, bool)
- 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) Lookup(ctx context.Context, transport Transport, domain string, ...) ([]netip.Addr, error)
- 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 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 TCPTransport
- func (t *TCPTransport) Close() error
- func (t *TCPTransport) DialContext(ctx context.Context) (net.Conn, 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) ReadMessage(conn net.Conn) (*dns.Msg, error)
- func (t *TCPTransport) Reset()
- func (t *TCPTransport) Start() error
- func (t *TCPTransport) WriteMessage(conn net.Conn, message *dns.Msg) error
- type TLSTransport
- func (t *TLSTransport) Close() error
- func (t *TLSTransport) DialContext(ctx context.Context) (net.Conn, 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) ReadMessage(conn net.Conn) (*dns.Msg, error)
- func (t *TLSTransport) Reset()
- func (t *TLSTransport) Start() error
- func (t *TLSTransport) WriteMessage(conn net.Conn, message *dns.Msg) error
- type Transport
- func CreateHTTPSTransport(name string, ctx context.Context, logger logger.ContextLogger, dialer N.Dialer, ...) (Transport, error)
- func CreateLocalTransport(name string, ctx context.Context, logger logger.ContextLogger, dialer N.Dialer, ...) (Transport, error)
- func CreateRCodeTransport(name string, ctx context.Context, logger logger.ContextLogger, dialer N.Dialer, ...) (Transport, error)
- func CreateTCPTransport(name string, ctx context.Context, logger logger.ContextLogger, dialer N.Dialer, ...) (Transport, error)
- func CreateTLSTransport(name string, ctx context.Context, logger logger.ContextLogger, dialer N.Dialer, ...) (Transport, error)
- func CreateTransport(name string, ctx context.Context, logger logger.ContextLogger, dialer N.Dialer, ...) (Transport, error)
- func CreateUDPTransport(name string, ctx context.Context, logger logger.ContextLogger, dialer N.Dialer, ...) (Transport, error)
- type TransportConstructor
- type UDPTransport
- func (t *UDPTransport) Close() error
- func (t *UDPTransport) DialContext(ctx context.Context) (net.Conn, 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) ReadMessage(conn net.Conn) (*dns.Msg, error)
- func (t *UDPTransport) Reset()
- func (t *UDPTransport) Start() error
- func (t *UDPTransport) WriteMessage(conn net.Conn, message *dns.Msg) error
Constants ¶
View Source
const DefaultTTL = 600
View Source
const FixedPacketSize = 16384
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") )
Functions ¶
func ContextWithDisableCache ¶
func ContextWithRewriteTTL ¶ added in v0.1.5
func DisableCacheFromContext ¶
func NewDialerWrapper ¶
func RegisterTransport ¶
func RegisterTransport(schemes []string, constructor TransportConstructor)
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
type ClientOptions ¶ added in v0.1.5
type ClientOptions struct { DisableCache bool DisableExpire bool IndependentCache bool Logger logger.ContextLogger }
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(name string, dialer N.Dialer, serverURL string) *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(name string, dialer N.Dialer) *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 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(name string, code string) (*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 (*TCPTransport) DialContext ¶
func (*TCPTransport) ReadMessage ¶
func (*TCPTransport) WriteMessage ¶
type TLSTransport ¶
type TLSTransport struct {
// contains filtered or unexported fields
}
func NewTLSTransport ¶
func (*TLSTransport) DialContext ¶
func (*TLSTransport) ReadMessage ¶
func (*TLSTransport) WriteMessage ¶
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 CreateHTTPSTransport ¶
func CreateLocalTransport ¶
func CreateRCodeTransport ¶
func CreateTCPTransport ¶
func CreateTLSTransport ¶
func CreateTransport ¶
type TransportConstructor ¶
type UDPTransport ¶
type UDPTransport struct {
// contains filtered or unexported fields
}
func NewUDPTransport ¶
func (*UDPTransport) DialContext ¶
func (*UDPTransport) ReadMessage ¶
func (*UDPTransport) WriteMessage ¶
Source Files ¶
Click to show internal directories.
Click to hide internal directories.