Versions in this module Expand all Collapse all v0 v0.0.1 Feb 26, 2024 Changes in this version + const DefaultTimeout + var DefaultNetDialer = &NetDialer + var DefaultTlsDialer = &TlsDialer + var ErrInvalidResolver = errors.New("invalid resolver") + func ContextWithClientID(ctx context.Context, clientID ClientID) context.Context + func ContextWithProxyAuthorization(ctx context.Context, auth *url.Userinfo) context.Context + func NetTransport(rw1, rw2 io.ReadWriter) error + func ProxyAuthorizationFromContext(ctx context.Context) *url.Userinfo + func Resolve(ctx context.Context, network, addr string, r Resolver, hosts HostMapper, ...) (string, error) + type AuthOption func(opts *authOptions) + type Authenticator interface + Authenticate func(ctx context.Context, user, password string, opts ...AuthOption) (id string, ok bool) + type Bypass interface + Contains func(ctx context.Context, network, addr string, opts ...BypassOption) bool + func BypassGroup(bypasses ...Bypass) Bypass + type BypassOption func(opts *BypassOptions) + func WithBypassHost(host string) BypassOption + func WithBypassPath(path string) BypassOption + type BypassOptions struct + Host string + Path string + type Chain struct + func NewChain(name string, opts ...ChainOption) *Chain + func (c *Chain) AddNode(node *Node) + func (c *Chain) Name() string + func (c *Chain) Route(ctx context.Context, network, address string, opts ...ChainerOption) Route + type ChainOption func(*chainOptions) + func WithChainLogger(logger *logger.Logger) ChainOption + type ChainRouteOption func(*chainRouteOptions) + func WithChainRouteChainerOption(c Chainer) ChainRouteOption + type Chainer interface + Route func(ctx context.Context, network, address string, opts ...ChainerOption) Route + type ChainerOption func(opts *ChainerOptions) + func ChainerHostOption(host string) ChainerOption + type ChainerOptions struct + Host string + type ClientID string + func ClientIDFromContext(ctx context.Context) ClientID + type ConnectOption func(opts *connectOptions) + func NetDialerConnectOption(netd *NetDialer) ConnectOption + type Connector interface + Connect func(ctx context.Context, conn net.Conn, network, address string, ...) (net.Conn, error) + func NewHttpConnector(opts ...ConnectorOption) Connector + type ConnectorAuth interface + Auth func(ctx context.Context) *url.Userinfo + type ConnectorOption func(opts *connectorOptions) + func WithConnectorAuth(auth ConnectorAuth) ConnectorOption + func WithConnectorConnectTimeout(connectTimeout time.Duration) ConnectorOption + func WithConnectorLogger(logger *logger.Logger) ConnectorOption + func WithConnectorTLSConfig(tlsConfig *tls.Config) ConnectorOption + type DialOptions struct + Host string + NetDialer *NetDialer + type Dialer interface + Dial func(ctx context.Context, addr string, opts ...DialerOption) (net.Conn, error) + func NewTcpDialer(opts ...TcpDialerOption) Dialer + type DialerOption func(opts *DialOptions) + func WithDialerHostOption(host string) DialerOption + func WithDialerNetDialer(netd *NetDialer) DialerOption + type HandleOption func(opts *HandleOptions) + type HandleOptions struct + type Handler interface + Handle func(context.Context, net.Conn, ...HandleOption) error + func NewHttpHandler(opts ...HandlerOption) Handler + type HandlerOption func(opts *handlerOptions) + func WithHandlerAuth(auth *url.Userinfo) HandlerOption + func WithHandlerAuther(auther Authenticator) HandlerOption + func WithHandlerBypass(bypass Bypass) HandlerOption + func WithHandlerLogger(logger *logger.Logger) HandlerOption + func WithHandlerRouter(router *Router) HandlerOption + func WithHandlerTLSConfig(tlsConfig *tls.Config) HandlerOption + func WithProxyOnly() HandlerOption + type HostMapper interface + Lookup func(ctx context.Context, network, host string, opts ...HostsOption) ([]net.IP, bool) + type HostsOption func(opts *hostsOptions) + type Listener interface + Accept func() (net.Conn, error) + Addr func() net.Addr + Close func() error + Init func(ctx context.Context) error + func NewTcpListener(opts ...ListenerOption) Listener + type ListenerOption func(opts *listenerOptions) + func WithListenerAddr(addr string) ListenerOption + func WithListenerLogger(logger *logger.Logger) ListenerOption + func WithListenerTLSConfig(tlsConfig *tls.Config) ListenerOption + type NetDialer struct + DialFunc func(ctx context.Context, network, addr string) (net.Conn, error) + Logger *logger.Logger + Timeout time.Duration + func (d *NetDialer) Dial(ctx context.Context, network, addr string) (conn net.Conn, err error) + type Node struct + Addr string + Name string + func NewNode(name string, addr string, opts ...NodeOption) *Node + func (node *Node) Copy() *Node + func (node *Node) Options() *NodeOptions + type NodeOption func(*NodeOptions) + func WithNodeHostMapper(m HostMapper) NodeOption + func WithNodeResolver(resolver Resolver) NodeOption + func WithNodeTransport(tr *Transport) NodeOption + type NodeOptions struct + HostMapper HostMapper + Resolver Resolver + Transport *Transport + type Resolver interface + Resolve func(ctx context.Context, network, host string, opts ...ResolverOption) ([]net.IP, error) + type ResolverOption func(opts *resolverOptions) + type Route interface + Dial func(ctx context.Context, network, address string, opts ...RouteDialOption) (net.Conn, error) + Nodes func() []*Node + var DefaultRoute Route = &defaultRoute{} + type RouteDialOption func(opts *routeDialOptions) + func WithRouteDialLogger(logger *logger.Logger) RouteDialOption + func WithRouteDialTimeout(d time.Duration) RouteDialOption + type Router struct + func NewRouter(opts ...RouterOption) *Router + func (r *Router) Dial(ctx context.Context, network, address string) (conn net.Conn, err error) + func (r *Router) Options() *RouterOptions + type RouterOption func(*RouterOptions) + func WithRouterChainer(chain Chainer) RouterOption + func WithRouterHostMapper(m HostMapper) RouterOption + func WithRouterLogger(logger *logger.Logger) RouterOption + func WithRouterResolver(resolver Resolver) RouterOption + func WithRouterRetriesOption(retries int) RouterOption + func WithRouterTimeout(timeout time.Duration) RouterOption + type RouterOptions struct + Chain Chainer + HostMapper HostMapper + Logger *logger.Logger + Resolver Resolver + Retries int + Timeout time.Duration + type Service interface + Addr func() net.Addr + Close func() error + Serve func() error + func NewService(ln Listener, h Handler, opts ...ServiceOption) Service + type ServiceOption func(opts *serviceOptions) + func WithServiceLogger(logger *logger.Logger) ServiceOption + type TcpDialerOption func(opts *tcpDialerOptions) + func WithTcpDialerLogger(logger *logger.Logger) TcpDialerOption + type TlsDialer struct + Logger *logger.Logger + TLSConfigFunc func() *tls.Config + Timeout time.Duration + func (d *TlsDialer) Dial(ctx context.Context, network, addr string) (conn net.Conn, err error) + type Transport struct + func NewTransport(d Dialer, c Connector, opts ...TransportOption) *Transport + func (tr *Transport) Connect(ctx context.Context, conn net.Conn, network, address string) (net.Conn, error) + func (tr *Transport) Copy() *Transport + func (tr *Transport) Dial(ctx context.Context, addr string) (net.Conn, error) + func (tr *Transport) Options() *TransportOptions + type TransportOption func(*TransportOptions) + func WithTransportAddr(addr string) TransportOption + func WithTransportRoute(route Route) TransportOption + func WithTransportTimeout(timeout time.Duration) TransportOption + type TransportOptions struct + Addr string + Route Route + Timeout time.Duration