netil

package module
v1.1.10 Latest Latest
Warning

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

Go to latest
Published: Dec 18, 2025 License: MIT Imports: 11 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CopyToTCPAddr

func CopyToTCPAddr(addr net.Addr) (*net.TCPAddr, error)

func CopyToUDPAddr

func CopyToUDPAddr(addr net.Addr) (*net.UDPAddr, error)

func DialOrDirect

func DialOrDirect(addr net.Addr, dial func(addr net.Addr) (net.Conn, error)) (net.Conn, error)

func Forward

func Forward(src, dst net.Conn, buf []byte)

func ForwardHalfTimeout added in v1.0.8

func ForwardHalfTimeout(src, dst net.Conn, buf []byte, halfIdleTimeout time.Duration)

func ForwardPacket

func ForwardPacket(pfc PacketForwardConn, buf []byte, listenPubToken string, listenPub func() (net.PacketConn, error), pubPool *PacketConnPool) error

func IPFromAddr

func IPFromAddr(addr net.Addr) net.IP

func ListenPacketOrDirect

func ListenPacketOrDirect(listenPacket func() (net.PacketConn, error)) (net.PacketConn, error)

func ListenTLS added in v1.1.10

func ListenTLS(addr string, email string, domains []string) (net.Listener, error)

func NarrowIP

func NarrowIP(ip net.IP) net.IP

func NewTLSConfig added in v1.1.10

func NewTLSConfig(email string, domains []string) (*tls.Config, error)

func PublicAddr

func PublicAddr(mayPrivAddr, refPubAddr net.Addr) (net.Addr, error)

func ReadFull

func ReadFull(r io.Reader, b []byte) error

func ReplaceAddrPort added in v1.1.10

func ReplaceAddrPort(addr net.Addr, port int) (net.Addr, error)

func ToTCPAddr

func ToTCPAddr(addr net.Addr) (*net.TCPAddr, error)

func ToUDPAddr

func ToUDPAddr(addr net.Addr) (*net.UDPAddr, error)

func WriteAll

func WriteAll(w io.Writer, b []byte) error

Types

type AtomicDuration

type AtomicDuration int64

func (*AtomicDuration) Get

func (ad *AtomicDuration) Get() time.Duration

func (*AtomicDuration) Set

func (ad *AtomicDuration) Set(d time.Duration)

type AtomicTime

type AtomicTime int64

func (*AtomicTime) Get

func (at *AtomicTime) Get() time.Time

func (*AtomicTime) IsZero

func (at *AtomicTime) IsZero() bool

func (*AtomicTime) Set

func (at *AtomicTime) Set(t time.Time)

type DomainAddr

type DomainAddr string

func (DomainAddr) Network

func (a DomainAddr) Network() string

func (DomainAddr) String

func (a DomainAddr) String() string

type EavesdroppedConn

type EavesdroppedConn struct {
	*Eavesdropper
	net.Conn
}

func EavesdropConn

func EavesdropConn(con net.Conn) *EavesdroppedConn

func (*EavesdroppedConn) Close

func (ec *EavesdroppedConn) Close() error

func (*EavesdroppedConn) GetEavesdropper

func (ec *EavesdroppedConn) GetEavesdropper() *Eavesdropper

func (*EavesdroppedConn) Read

func (ec *EavesdroppedConn) Read(buf []byte) (int, error)

func (*EavesdroppedConn) Write

func (ec *EavesdroppedConn) Write(data []byte) (int, error)

type EavesdroppedPacketConn

type EavesdroppedPacketConn struct {
	*Eavesdropper
	net.PacketConn
}

func EavesdropPacketConn

func EavesdropPacketConn(pcon net.PacketConn) *EavesdroppedPacketConn

func (*EavesdroppedPacketConn) Close

func (epc *EavesdroppedPacketConn) Close() error

func (*EavesdroppedPacketConn) GetEavesdropper

func (epc *EavesdroppedPacketConn) GetEavesdropper() *Eavesdropper

func (*EavesdroppedPacketConn) ReadFrom

func (epc *EavesdroppedPacketConn) ReadFrom(buf []byte) (int, net.Addr, error)

func (*EavesdroppedPacketConn) WriteTo

func (epc *EavesdroppedPacketConn) WriteTo(data []byte, addr net.Addr) (int, error)

type Eavesdropper

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

func (*Eavesdropper) EavesdropConn

func (edr *Eavesdropper) EavesdropConn(con net.Conn) *EavesdroppedConn

func (*Eavesdropper) EavesdropPacketConn

func (edr *Eavesdropper) EavesdropPacketConn(pcon net.PacketConn) *EavesdroppedPacketConn

func (*Eavesdropper) EnableReadWriteTime

func (edr *Eavesdropper) EnableReadWriteTime() bool

func (*Eavesdropper) LimitReadSpeed

func (edr *Eavesdropper) LimitReadSpeed(limiter *SpeedLimiter) bool

func (*Eavesdropper) LimitWriteSpeed

func (edr *Eavesdropper) LimitWriteSpeed(limiter *SpeedLimiter) bool

func (*Eavesdropper) NotifyAnyReadAfter

func (edr *Eavesdropper) NotifyAnyReadAfter(data []byte)

func (*Eavesdropper) NotifyAnyReadBefore

func (edr *Eavesdropper) NotifyAnyReadBefore(bn int)

func (*Eavesdropper) NotifyAnyWriteAfter

func (edr *Eavesdropper) NotifyAnyWriteAfter(wn int)

func (*Eavesdropper) NotifyAnyWriteBefore

func (edr *Eavesdropper) NotifyAnyWriteBefore(data []byte)

func (*Eavesdropper) NotifyClose

func (edr *Eavesdropper) NotifyClose()

func (*Eavesdropper) NotifyPacketReadAfter

func (edr *Eavesdropper) NotifyPacketReadAfter(data []byte, from net.Addr)

func (*Eavesdropper) NotifyPacketReadBefore

func (edr *Eavesdropper) NotifyPacketReadBefore(bn int)

func (*Eavesdropper) NotifyPacketWriteAfter

func (edr *Eavesdropper) NotifyPacketWriteAfter(wn int)

func (*Eavesdropper) NotifyPacketWriteBefore

func (edr *Eavesdropper) NotifyPacketWriteBefore(data []byte, to net.Addr)

func (*Eavesdropper) NotifyStreamReadAfter

func (edr *Eavesdropper) NotifyStreamReadAfter(data []byte)

func (*Eavesdropper) NotifyStreamReadBefore

func (edr *Eavesdropper) NotifyStreamReadBefore(bn int)

func (*Eavesdropper) NotifyStreamWriteAfter

func (edr *Eavesdropper) NotifyStreamWriteAfter(wn int)

func (*Eavesdropper) NotifyStreamWriteBefore

func (edr *Eavesdropper) NotifyStreamWriteBefore(data []byte)

func (*Eavesdropper) OnAnyReadAfter

func (edr *Eavesdropper) OnAnyReadAfter(onAnyReadAfter func(data []byte))

func (*Eavesdropper) OnAnyReadBefore

func (edr *Eavesdropper) OnAnyReadBefore(onAnyReadBefore func(bn int))

func (*Eavesdropper) OnAnyWriteAfter

func (edr *Eavesdropper) OnAnyWriteAfter(onAnyWriteAfter func(wn int))

func (*Eavesdropper) OnAnyWriteBefore

func (edr *Eavesdropper) OnAnyWriteBefore(onAnyWriteBefore func(data []byte))

func (*Eavesdropper) OnClose

func (edr *Eavesdropper) OnClose(onClose func())

func (*Eavesdropper) OnPacketReadAfter

func (edr *Eavesdropper) OnPacketReadAfter(onPacketReadAfter func(data []byte, from net.Addr))

func (*Eavesdropper) OnPacketReadBefore

func (edr *Eavesdropper) OnPacketReadBefore(onPacketReadBefore func(bn int))

func (*Eavesdropper) OnPacketWriteAfter

func (edr *Eavesdropper) OnPacketWriteAfter(onPacketWriteAfter func(wn int))

func (*Eavesdropper) OnPacketWriteBefore

func (edr *Eavesdropper) OnPacketWriteBefore(onPacketWriteBefore func(data []byte, to net.Addr))

func (*Eavesdropper) OnStreamReadAfter

func (edr *Eavesdropper) OnStreamReadAfter(onStreamReadAfter func(data []byte))

func (*Eavesdropper) OnStreamReadBefore

func (edr *Eavesdropper) OnStreamReadBefore(onStreamReadBefore func(bn int))

func (*Eavesdropper) OnStreamWriteAfter

func (edr *Eavesdropper) OnStreamWriteAfter(onStreamWriteAfter func(wn int))

func (*Eavesdropper) OnStreamWriteBefore

func (edr *Eavesdropper) OnStreamWriteBefore(onStreamWriteBefore func(data []byte))

func (*Eavesdropper) ReadTime

func (edr *Eavesdropper) ReadTime() int64

func (*Eavesdropper) ReadWriteTime

func (edr *Eavesdropper) ReadWriteTime() int64

func (*Eavesdropper) TryEavesdropConn

func (edr *Eavesdropper) TryEavesdropConn(con net.Conn) net.Conn

func (*Eavesdropper) TryEavesdropPacketConn

func (edr *Eavesdropper) TryEavesdropPacketConn(pcon net.PacketConn) net.PacketConn

func (*Eavesdropper) UpdateReadTime

func (edr *Eavesdropper) UpdateReadTime()

func (*Eavesdropper) UpdateReadWriteTime

func (edr *Eavesdropper) UpdateReadWriteTime()

func (*Eavesdropper) UpdateWriteTime

func (edr *Eavesdropper) UpdateWriteTime()

func (*Eavesdropper) WriteTime

func (edr *Eavesdropper) WriteTime() int64

type IPPortAddr

type IPPortAddr struct {
	IP   net.IP
	Port int
	Zone string // IPv6 scoped addressing zone
}

func CopyToIPPortAddr

func CopyToIPPortAddr(addr net.Addr) (*IPPortAddr, error)

func ToIPPortAddr

func ToIPPortAddr(addr net.Addr) (*IPPortAddr, error)

func (*IPPortAddr) Network

func (a *IPPortAddr) Network() string

func (*IPPortAddr) String

func (a *IPPortAddr) String() string

type LimitedPool

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

func NewLimitedPool

func NewLimitedPool(max uint64, new func() any) *LimitedPool

func (*LimitedPool) Alloc

func (lp *LimitedPool) Alloc() (val any)

func (*LimitedPool) Limit

func (lp *LimitedPool) Limit(max uint64)

func (*LimitedPool) Recycle

func (lp *LimitedPool) Recycle(val any)

type PacketConnPool

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

func NewPacketConnPool

func NewPacketConnPool(max int) *PacketConnPool

func (*PacketConnPool) Close

func (pool *PacketConnPool) Close() error

func (*PacketConnPool) Del

func (pool *PacketConnPool) Del(vaddr string, listenToken string) error

func (*PacketConnPool) DelByListenToken

func (pool *PacketConnPool) DelByListenToken(listenToken string)

func (*PacketConnPool) Get

func (pool *PacketConnPool) Get(vaddr string, listenToken string, listenPubCon func() (net.PacketConn, error)) (pubCon *PoolPacketConn, err error)

type PacketForwardConn

type PacketForwardConn interface {
	ReadFromForward(b []byte) (n int, raddr, faddr net.Addr, err error)
	WriteToForward(data []byte, raddr, faddr net.Addr) (int, error)
	LocalAddr() net.Addr
	Close() error
}

type PoolPacketConn

type PoolPacketConn struct {
	*EavesdroppedPacketConn
	// contains filtered or unexported fields
}

func (*PoolPacketConn) Close

func (pubCon *PoolPacketConn) Close() error

type QuantityLimiter

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

func NewQuantityLimiter

func NewQuantityLimiter(max uint64) *QuantityLimiter

func (*QuantityLimiter) Limit

func (ql *QuantityLimiter) Limit(max uint64)

func (*QuantityLimiter) LimitWith

func (ql *QuantityLimiter) LimitWith(max uint64, f func(n uint64))

func (*QuantityLimiter) Lock

func (ql *QuantityLimiter) Lock()

func (*QuantityLimiter) LockWith

func (ql *QuantityLimiter) LockWith(f func(n, max uint64))

func (*QuantityLimiter) Unlock

func (ql *QuantityLimiter) Unlock()

func (*QuantityLimiter) UnlockWith

func (ql *QuantityLimiter) UnlockWith(f func(n, max uint64))

type SpeedLimiter

type SpeedLimiter struct {
	*SpeedValve
	// contains filtered or unexported fields
}

func NewSpeedLimiter

func NewSpeedLimiter(bytesPerSecond uint64) *SpeedLimiter

func (*SpeedLimiter) Wait

func (slr *SpeedLimiter) Wait(n int)

type SpeedValve

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

func NewSpeedValve

func NewSpeedValve(bytesPerSecond uint64) *SpeedValve

func (*SpeedValve) GetSpeed

func (sv *SpeedValve) GetSpeed() uint64

func (*SpeedValve) NewLimiter

func (sv *SpeedValve) NewLimiter() *SpeedLimiter

func (*SpeedValve) SetSpeed

func (sv *SpeedValve) SetSpeed(bytesPerSecond uint64)

type WaterWall

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

func NewWaterWall

func NewWaterWall() *WaterWall

func (*WaterWall) Fail

func (ww *WaterWall) Fail(ip net.IP, user string) bool

func (*WaterWall) FailAddr

func (ww *WaterWall) FailAddr(addr net.Addr, user string) bool

func (*WaterWall) IsBlock

func (ww *WaterWall) IsBlock(ip net.IP) bool

func (*WaterWall) IsBlockAddr

func (ww *WaterWall) IsBlockAddr(addr net.Addr) bool

func (*WaterWall) Success

func (ww *WaterWall) Success(ip net.IP, user string)

func (*WaterWall) SuccessAddr

func (ww *WaterWall) SuccessAddr(addr net.Addr, user string)

Jump to

Keyboard shortcuts

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