Documentation
¶
Index ¶
- Variables
- func Get[T any](ctx context.Context, k any) (t T, _ bool)
- func GetDefault[T any](ctx context.Context, k any, Default T) T
- func MergeBufioReaderConn(c net.Conn, r *bufio.Reader) (net.Conn, error)
- func NewBlockError(network statistic.Type, hostname string) error
- func NewMultipleReaderConn(c net.Conn, r io.Reader) net.Conn
- func NewPrefixBytesConn(c net.Conn, prefix ...*pool.Bytes) net.Conn
- func NewStore(ctx context.Context) context.Context
- func PaseNetwork(s string) statistic.Type
- type Address
- func ParseAddrPort(net statistic.Type, addrPort netip.AddrPort) Address
- func ParseAddress(network statistic.Type, addr string) (ad Address, _ error)
- func ParseAddressPort(network statistic.Type, addr string, port Port) (ad Address)
- func ParseIPAddr(ad *net.IPAddr) Address
- func ParseSysAddr(ad net.Addr) (Address, error)
- func ParseTCPAddress(ad *net.TCPAddr) Address
- func ParseUDPAddr(ad *net.UDPAddr) Address
- func ParseUnixAddr(ad *net.UnixAddr) Address
- func ReadFrom(pc net.PacketConn) (*pool.Bytes, Address, error)
- type ChannelListener
- type CurrentKey
- type DNSErrCode
- type DNSHandler
- type DestinationKey
- type DomainAddr
- func (d *DomainAddr) AddrPort(ctx context.Context) (netip.AddrPort, error)
- func (d *DomainAddr) Hostname() string
- func (d *DomainAddr) IP(ctx context.Context) (net.IP, error)
- func (d DomainAddr) Network() string
- func (d DomainAddr) NetworkType() statistic.Type
- func (d *DomainAddr) OverrideHostname(s string) Address
- func (d *DomainAddr) OverridePort(p Port) Address
- func (d *DomainAddr) Port() Port
- func (d DomainAddr) PreferIPv6(b bool)
- func (d DomainAddr) Resolver() Resolver
- func (d *DomainAddr) String() string
- func (d *DomainAddr) TCPAddr(ctx context.Context) (*net.TCPAddr, error)
- func (d *DomainAddr) Type() Type
- func (d *DomainAddr) UDPAddr(ctx context.Context) (*net.UDPAddr, error)
- func (d DomainAddr) WithResolver(resolver Resolver, canCover bool) bool
- type DropResolver
- type DynamicProxy
- type EmptyDispatch
- type EmptyPacketListener
- type ErrorResolver
- type FakeIPKey
- type ForceFakeIP
- type IPAddrPort
- func (d *IPAddrPort) AddrPort(context.Context) (netip.AddrPort, error)
- func (d *IPAddrPort) Hostname() string
- func (d *IPAddrPort) IP(context.Context) (net.IP, error)
- func (d IPAddrPort) Network() string
- func (d IPAddrPort) NetworkType() statistic.Type
- func (d *IPAddrPort) OverrideHostname(s string) Address
- func (d *IPAddrPort) OverridePort(p Port) Address
- func (d *IPAddrPort) Port() Port
- func (d IPAddrPort) PreferIPv6(b bool)
- func (d IPAddrPort) Resolver() Resolver
- func (d *IPAddrPort) String() string
- func (d *IPAddrPort) TCPAddr(context.Context) (*net.TCPAddr, error)
- func (d *IPAddrPort) Type() Type
- func (d *IPAddrPort) UDPAddr(context.Context) (*net.UDPAddr, error)
- func (d IPAddrPort) WithResolver(resolver Resolver, canCover bool) bool
- type InboundKey
- type Listener
- type LogConn
- type Packet
- type PacketProxy
- type Port
- type PortUint16
- type PreferIPv6
- type ProtocolServer
- type Proxy
- type Reader
- type Resolver
- type Server
- type SourceKey
- type Store
- type StreamMeta
- type StreamProxy
- type System
- type Type
- type WrapListener
- type WriteBack
- type Writer
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrBlocked = errors.New("BLOCK")
Functions ¶
func MergeBufioReaderConn ¶ added in v0.3.3
func PaseNetwork ¶
Types ¶
type Address ¶
type Address interface { // Hostname return hostname of address, eg: www.example.com, 127.0.0.1, ff::ff Hostname() string // IP return net.IP, if address is ip else resolve the domain and return one of ips IP(context.Context) (net.IP, error) AddrPort(context.Context) (netip.AddrPort, error) UDPAddr(context.Context) (*net.UDPAddr, error) TCPAddr(context.Context) (*net.TCPAddr, error) // Port return port of address Port() Port // Type return type of address, domain or ip Type() Type NetworkType() statistic.Type net.Addr // WithResolver will use call IP(), IPHost(), UDPAddr(), TCPAddr() // return the current resolver is applied, if can't apply return false WithResolver(_ Resolver, canCover bool) bool PreferIPv6(b bool) // OverrideHostname clone address(exclude Values) and change hostname OverrideHostname(string) Address OverridePort(Port) Address }
var EmptyAddr Address = &emptyAddr{}
func ParseAddressPort ¶
func ParseIPAddr ¶
func ParseTCPAddress ¶
func ParseUDPAddr ¶
func ParseUnixAddr ¶
type ChannelListener ¶
type ChannelListener struct {
// contains filtered or unexported fields
}
func NewChannelListener ¶
func NewChannelListener(addr net.Addr) *ChannelListener
func (*ChannelListener) Addr ¶
func (c *ChannelListener) Addr() net.Addr
func (*ChannelListener) Close ¶
func (c *ChannelListener) Close() error
func (*ChannelListener) NewConn ¶
func (c *ChannelListener) NewConn(conn net.Conn)
type CurrentKey ¶
type CurrentKey struct{}
type DNSErrCode ¶ added in v0.3.3
type DNSErrCode struct {
// contains filtered or unexported fields
}
func NewDNSErrCode ¶ added in v0.3.3
func NewDNSErrCode(code dnsmessage.RCode) *DNSErrCode
func (*DNSErrCode) As ¶ added in v0.3.3
func (d *DNSErrCode) As(err any) bool
func (*DNSErrCode) Code ¶ added in v0.3.3
func (d *DNSErrCode) Code() dnsmessage.RCode
func (DNSErrCode) Error ¶ added in v0.3.3
func (d DNSErrCode) Error() string
type DNSHandler ¶
type DNSHandler interface { Server HandleUDP(context.Context, net.PacketConn) error HandleTCP(context.Context, net.Conn) error Do(context.Context, *pool.Bytes, func([]byte) error) error }
var EmptyDNSServer DNSHandler = &emptyHandler{}
type DestinationKey ¶
type DestinationKey struct{}
func (DestinationKey) String ¶
func (DestinationKey) String() string
type DomainAddr ¶
type DomainAddr struct {
// contains filtered or unexported fields
}
func (*DomainAddr) Hostname ¶
func (d *DomainAddr) Hostname() string
func (DomainAddr) NetworkType ¶
func (*DomainAddr) OverrideHostname ¶
func (d *DomainAddr) OverrideHostname(s string) Address
func (*DomainAddr) OverridePort ¶
func (d *DomainAddr) OverridePort(p Port) Address
func (*DomainAddr) Port ¶
func (d *DomainAddr) Port() Port
func (DomainAddr) PreferIPv6 ¶
func (d DomainAddr) PreferIPv6(b bool)
func (*DomainAddr) String ¶
func (d *DomainAddr) String() string
func (*DomainAddr) Type ¶
func (d *DomainAddr) Type() Type
func (DomainAddr) WithResolver ¶
type DropResolver ¶ added in v0.3.3
type DropResolver struct{}
func (DropResolver) Close ¶ added in v0.3.3
func (e DropResolver) Close() error
func (DropResolver) Raw ¶ added in v0.3.3
func (e DropResolver) Raw(_ context.Context, req dnsmessage.Question) (dnsmessage.Message, error)
type DynamicProxy ¶
type DynamicProxy struct {
// contains filtered or unexported fields
}
func NewDynamicProxy ¶
func NewDynamicProxy(p Proxy) *DynamicProxy
func (*DynamicProxy) PacketConn ¶
func (d *DynamicProxy) PacketConn(ctx context.Context, a Address) (net.PacketConn, error)
func (*DynamicProxy) Set ¶
func (d *DynamicProxy) Set(p Proxy)
type EmptyDispatch ¶
type EmptyDispatch struct{}
type EmptyPacketListener ¶ added in v0.3.3
func (EmptyPacketListener) Packet ¶ added in v0.3.3
func (EmptyPacketListener) Packet(context.Context) (net.PacketConn, error)
type ErrorResolver ¶
func (ErrorResolver) Close ¶
func (e ErrorResolver) Close() error
func (ErrorResolver) Raw ¶
func (e ErrorResolver) Raw(_ context.Context, req dnsmessage.Question) (dnsmessage.Message, error)
type ForceFakeIP ¶
type ForceFakeIP struct{}
type IPAddrPort ¶
type IPAddrPort struct {
// contains filtered or unexported fields
}
func (*IPAddrPort) Hostname ¶
func (d *IPAddrPort) Hostname() string
func (IPAddrPort) NetworkType ¶
func (*IPAddrPort) OverrideHostname ¶
func (d *IPAddrPort) OverrideHostname(s string) Address
func (*IPAddrPort) OverridePort ¶
func (d *IPAddrPort) OverridePort(p Port) Address
func (*IPAddrPort) Port ¶
func (d *IPAddrPort) Port() Port
func (IPAddrPort) PreferIPv6 ¶
func (d IPAddrPort) PreferIPv6(b bool)
func (*IPAddrPort) String ¶
func (d *IPAddrPort) String() string
func (*IPAddrPort) Type ¶
func (d *IPAddrPort) Type() Type
func (IPAddrPort) WithResolver ¶
type InboundKey ¶
type InboundKey struct{}
func (InboundKey) String ¶
func (InboundKey) String() string
type Listener ¶ added in v0.3.3
type Listener interface { Stream(context.Context) (net.Listener, error) Packet(context.Context) (net.PacketConn, error) Server }
func NewEmptyPacketListener ¶ added in v0.3.3
type PacketProxy ¶
type Port ¶
var EmptyPort Port = PortUint16(0)
func ParsePort ¶
func ParsePort[T constraints.Integer](p T) Port
func ParsePortStr ¶
type PortUint16 ¶
type PortUint16 uint16
func (PortUint16) Port ¶
func (p PortUint16) Port() uint16
func (PortUint16) String ¶
func (p PortUint16) String() string
type PreferIPv6 ¶
type PreferIPv6 struct{}
type ProtocolServer ¶ added in v0.3.3
type ProtocolServer interface { Server AcceptStream() (*StreamMeta, error) AcceptPacket() (*Packet, error) }
type Proxy ¶
type Proxy interface { StreamProxy PacketProxy Dispatch(context.Context, Address) (Address, error) }
func NewErrProxy ¶
func NewWrapStoreProxy ¶
type Resolver ¶
type Store ¶
type Store interface { Add(k, v any) Store Get(k any) (any, bool) Range(func(k, v any) bool) Map() map[any]any }
func StoreFromContext ¶
type StreamMeta ¶
type System ¶
type System struct{ DisableIPv6 bool }
func (*System) Raw ¶
func (d *System) Raw(context.Context, dnsmessage.Question) (dnsmessage.Message, error)
type WrapListener ¶ added in v0.3.3
type WrapListener struct { Listener // contains filtered or unexported fields }
func ListenWrap ¶ added in v0.3.3
func ListenWrap(lis net.Listener, inbound Listener) *WrapListener
func (*WrapListener) Close ¶ added in v0.3.3
func (w *WrapListener) Close() error
Click to show internal directories.
Click to hide internal directories.