proxy

package
v0.3.1-rc.5 Latest Latest
Warning

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

Go to latest
Published: Jan 15, 2023 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DiscardNetConn net.Conn = &DiscardConn{}
View Source
var DiscardNetPacketConn net.PacketConn = &DiscardPacketConn{}

Functions

func ParseIPZone

func ParseIPZone(s string) (net.IP, string)

func PaseNetwork

func PaseNetwork(s string) statistic.Type

func Value

func Value[T any](s interface{ Value(any) (any, bool) }, k any, Default T) T

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() (net.IP, 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 cover return false
	WithResolver(_ dns.DNS, canCover bool) bool
	// OverrideHostname clone address(exclude Values) and change hostname
	OverrideHostname(string) Address
	OverridePort(Port) Address

	Zone() string // IPv6 scoped addressing zone
	UDPAddr() (*net.UDPAddr, error)
	TCPAddr() (*net.TCPAddr, error)
	// IPHost if address is ip, return host, else resolve domain to ip and return JoinHostPort(ip,port)
	IPHost() (string, error)

	WithValue(key, value any)
	Value(key any) (any, bool)
	RangeValue(func(k, v any) bool)
}
var EmptyAddr Address = &emptyAddr{}

func ParseAddress

func ParseAddress(network statistic.Type, addr string) (ad Address, _ error)

func ParseAddressSplit

func ParseAddressSplit(network statistic.Type, addr string, port Port) (ad Address)

func ParseIPAddr

func ParseIPAddr(ad *net.IPAddr) Address

func ParseSysAddr

func ParseSysAddr(ad net.Addr) (Address, error)

func ParseTCPAddress

func ParseTCPAddress(ad *net.TCPAddr) Address

func ParseUDPAddr

func ParseUDPAddr(ad *net.UDPAddr) Address

func ParseUnixAddr

func ParseUnixAddr(ad *net.UnixAddr) Address

type CurrentKey

type CurrentKey struct{}

type DestinationKey

type DestinationKey struct{}

func (DestinationKey) String

func (DestinationKey) String() string

type DialerResolverProxy

type DialerResolverProxy interface {
	Proxy
	ResolverProxy
}

type Discard

type Discard struct{}

func (Discard) Conn

func (Discard) Conn(Address) (net.Conn, error)

func (Discard) PacketConn

func (Discard) PacketConn(Address) (net.PacketConn, error)

type DiscardConn

type DiscardConn struct{}

func (*DiscardConn) Close

func (*DiscardConn) Close() error

func (*DiscardConn) LocalAddr

func (*DiscardConn) LocalAddr() net.Addr

func (*DiscardConn) Read

func (*DiscardConn) Read(b []byte) (n int, err error)

func (*DiscardConn) RemoteAddr

func (*DiscardConn) RemoteAddr() net.Addr

func (*DiscardConn) SetDeadline

func (*DiscardConn) SetDeadline(t time.Time) error

func (*DiscardConn) SetReadDeadline

func (*DiscardConn) SetReadDeadline(t time.Time) error

func (*DiscardConn) SetWriteDeadline

func (*DiscardConn) SetWriteDeadline(t time.Time) error

func (*DiscardConn) Write

func (*DiscardConn) Write(b []byte) (n int, err error)

type DiscardPacketConn

type DiscardPacketConn struct{}

func (*DiscardPacketConn) Close

func (*DiscardPacketConn) Close() error

func (*DiscardPacketConn) LocalAddr

func (*DiscardPacketConn) LocalAddr() net.Addr

func (*DiscardPacketConn) ReadFrom

func (*DiscardPacketConn) ReadFrom(p []byte) (n int, addr net.Addr, err error)

func (*DiscardPacketConn) SetDeadline

func (*DiscardPacketConn) SetDeadline(t time.Time) error

func (*DiscardPacketConn) SetReadDeadline

func (*DiscardPacketConn) SetReadDeadline(t time.Time) error

func (*DiscardPacketConn) SetWriteDeadline

func (*DiscardPacketConn) SetWriteDeadline(t time.Time) error

func (*DiscardPacketConn) WriteTo

func (*DiscardPacketConn) WriteTo(p []byte, addr net.Addr) (n int, err error)

type DomainAddr

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

func (*DomainAddr) Hostname

func (d *DomainAddr) Hostname() string

func (*DomainAddr) IP

func (d *DomainAddr) IP() (net.IP, error)

func (*DomainAddr) IPHost

func (d *DomainAddr) IPHost() (string, error)

func (*DomainAddr) Network

func (d *DomainAddr) Network() string

func (*DomainAddr) NetworkType

func (d *DomainAddr) NetworkType() statistic.Type

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) RangeValue

func (s *DomainAddr) RangeValue(f func(k, v any) bool)

func (*DomainAddr) String

func (d *DomainAddr) String() string

func (*DomainAddr) TCPAddr

func (d *DomainAddr) TCPAddr() (*net.TCPAddr, error)

func (*DomainAddr) Type

func (d *DomainAddr) Type() Type

func (*DomainAddr) UDPAddr

func (d *DomainAddr) UDPAddr() (*net.UDPAddr, error)

func (*DomainAddr) Value

func (s *DomainAddr) Value(key any) (any, bool)

func (*DomainAddr) WithResolver

func (d *DomainAddr) WithResolver(resolver dns.DNS, canCover bool) bool

func (*DomainAddr) WithValue

func (s *DomainAddr) WithValue(key, value any)

func (*DomainAddr) Zone

func (d *DomainAddr) Zone() string

type FakeIPKey

type FakeIPKey struct{}

func (FakeIPKey) String

func (FakeIPKey) String() string

type IPAddr

type IPAddr struct {
	Address
	// contains filtered or unexported fields
}

func (IPAddr) IP

func (i IPAddr) IP() (net.IP, error)

func (IPAddr) IPHost

func (i IPAddr) IPHost() (string, error)

func (IPAddr) OverridePort

func (i IPAddr) OverridePort(p Port) Address

func (IPAddr) TCPAddr

func (i IPAddr) TCPAddr() (*net.TCPAddr, error)

func (IPAddr) Type

func (i IPAddr) Type() Type

func (IPAddr) UDPAddr

func (i IPAddr) UDPAddr() (*net.UDPAddr, error)

func (IPAddr) Zone

func (i IPAddr) Zone() string

type InboundKey

type InboundKey struct{}

func (InboundKey) String

func (InboundKey) String() string

type PacketProxy

type PacketProxy interface {
	PacketConn(Address) (net.PacketConn, error)
}

type Port

type Port interface {
	Port() uint16
	String() string
}
var EmptyPort Port = PortUint16(0)

func ParsePort

func ParsePort[T constraints.Integer](p T) Port

func ParsePortStr

func ParsePortStr(p string) (Port, error)

type PortUint16

type PortUint16 uint16

func (PortUint16) Port

func (p PortUint16) Port() uint16

func (PortUint16) String

func (p PortUint16) String() string

type Proxy

type Proxy interface {
	StreamProxy
	PacketProxy
}
var DiscardProxy Proxy = &Discard{}

func NewErrProxy

func NewErrProxy(err error) Proxy

type ResolverProxy

type ResolverProxy interface {
	Resolver(Address) dns.DNS
}

func WrapDNS

func WrapDNS(d dns.DNS) ResolverProxy

type SourceKey

type SourceKey struct{}

func (SourceKey) String

func (SourceKey) String() string

type StreamProxy

type StreamProxy interface {
	Conn(Address) (net.Conn, error)
}

type Type

type Type uint8
const (
	DOMAIN Type = 1
	IP     Type = 2
	UNIX   Type = 3
	EMPTY  Type = 4
)

func (Type) String

func (t Type) String() string

Jump to

Keyboard shortcuts

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