Documentation
¶
Index ¶
- func CopyToTCPAddr(addr net.Addr) (*net.TCPAddr, error)
- func CopyToUDPAddr(addr net.Addr) (*net.UDPAddr, error)
- func DialOrDirect(addr net.Addr, dial func(addr net.Addr) (net.Conn, error)) (net.Conn, error)
- func Forward(src, dst net.Conn, buf []byte)
- func ForwardHalfTimeout(src, dst net.Conn, buf []byte, halfIdleTimeout time.Duration)
- func ForwardPacket(pfc PacketForwardConn, buf []byte, listenPubToken string, ...) error
- func IPFromAddr(addr net.Addr) net.IP
- func ListenPacketOrDirect(listenPacket func() (net.PacketConn, error)) (net.PacketConn, error)
- func ListenTLS(addr string, email string, domains []string) (net.Listener, error)
- func NarrowIP(ip net.IP) net.IP
- func NewTLSConfig(email string, domains []string) (*tls.Config, error)
- func PublicAddr(mayPrivAddr, refPubAddr net.Addr) (net.Addr, error)
- func ReadFull(r io.Reader, b []byte) error
- func ReplaceAddrPort(addr net.Addr, port int) (net.Addr, error)
- func ToTCPAddr(addr net.Addr) (*net.TCPAddr, error)
- func ToUDPAddr(addr net.Addr) (*net.UDPAddr, error)
- func WriteAll(w io.Writer, b []byte) error
- type AtomicDuration
- type AtomicTime
- type DomainAddr
- type EavesdroppedConn
- type EavesdroppedPacketConn
- type Eavesdropper
- func (edr *Eavesdropper) EavesdropConn(con net.Conn) *EavesdroppedConn
- func (edr *Eavesdropper) EavesdropPacketConn(pcon net.PacketConn) *EavesdroppedPacketConn
- func (edr *Eavesdropper) EnableReadWriteTime() bool
- func (edr *Eavesdropper) LimitReadSpeed(limiter *SpeedLimiter) bool
- func (edr *Eavesdropper) LimitWriteSpeed(limiter *SpeedLimiter) bool
- func (edr *Eavesdropper) NotifyAnyReadAfter(data []byte)
- func (edr *Eavesdropper) NotifyAnyReadBefore(bn int)
- func (edr *Eavesdropper) NotifyAnyWriteAfter(wn int)
- func (edr *Eavesdropper) NotifyAnyWriteBefore(data []byte)
- func (edr *Eavesdropper) NotifyClose()
- func (edr *Eavesdropper) NotifyPacketReadAfter(data []byte, from net.Addr)
- func (edr *Eavesdropper) NotifyPacketReadBefore(bn int)
- func (edr *Eavesdropper) NotifyPacketWriteAfter(wn int)
- func (edr *Eavesdropper) NotifyPacketWriteBefore(data []byte, to net.Addr)
- func (edr *Eavesdropper) NotifyStreamReadAfter(data []byte)
- func (edr *Eavesdropper) NotifyStreamReadBefore(bn int)
- func (edr *Eavesdropper) NotifyStreamWriteAfter(wn int)
- func (edr *Eavesdropper) NotifyStreamWriteBefore(data []byte)
- func (edr *Eavesdropper) OnAnyReadAfter(onAnyReadAfter func(data []byte))
- func (edr *Eavesdropper) OnAnyReadBefore(onAnyReadBefore func(bn int))
- func (edr *Eavesdropper) OnAnyWriteAfter(onAnyWriteAfter func(wn int))
- func (edr *Eavesdropper) OnAnyWriteBefore(onAnyWriteBefore func(data []byte))
- func (edr *Eavesdropper) OnClose(onClose func())
- func (edr *Eavesdropper) OnPacketReadAfter(onPacketReadAfter func(data []byte, from net.Addr))
- func (edr *Eavesdropper) OnPacketReadBefore(onPacketReadBefore func(bn int))
- func (edr *Eavesdropper) OnPacketWriteAfter(onPacketWriteAfter func(wn int))
- func (edr *Eavesdropper) OnPacketWriteBefore(onPacketWriteBefore func(data []byte, to net.Addr))
- func (edr *Eavesdropper) OnStreamReadAfter(onStreamReadAfter func(data []byte))
- func (edr *Eavesdropper) OnStreamReadBefore(onStreamReadBefore func(bn int))
- func (edr *Eavesdropper) OnStreamWriteAfter(onStreamWriteAfter func(wn int))
- func (edr *Eavesdropper) OnStreamWriteBefore(onStreamWriteBefore func(data []byte))
- func (edr *Eavesdropper) ReadTime() int64
- func (edr *Eavesdropper) ReadWriteTime() int64
- func (edr *Eavesdropper) TryEavesdropConn(con net.Conn) net.Conn
- func (edr *Eavesdropper) TryEavesdropPacketConn(pcon net.PacketConn) net.PacketConn
- func (edr *Eavesdropper) UpdateReadTime()
- func (edr *Eavesdropper) UpdateReadWriteTime()
- func (edr *Eavesdropper) UpdateWriteTime()
- func (edr *Eavesdropper) WriteTime() int64
- type IPPortAddr
- type LimitedPool
- type PacketConnPool
- func (pool *PacketConnPool) Close() error
- func (pool *PacketConnPool) Del(vaddr string, listenToken string) error
- func (pool *PacketConnPool) DelByListenToken(listenToken string)
- func (pool *PacketConnPool) Get(vaddr string, listenToken string, listenPubCon func() (net.PacketConn, error)) (pubCon *PoolPacketConn, err error)
- type PacketForwardConn
- type PoolPacketConn
- type QuantityLimiter
- func (ql *QuantityLimiter) Limit(max uint64)
- func (ql *QuantityLimiter) LimitWith(max uint64, f func(n uint64))
- func (ql *QuantityLimiter) Lock()
- func (ql *QuantityLimiter) LockWith(f func(n, max uint64))
- func (ql *QuantityLimiter) Unlock()
- func (ql *QuantityLimiter) UnlockWith(f func(n, max uint64))
- type SpeedLimiter
- type SpeedValve
- type WaterWall
- func (ww *WaterWall) Fail(ip net.IP, user string) bool
- func (ww *WaterWall) FailAddr(addr net.Addr, user string) bool
- func (ww *WaterWall) IsBlock(ip net.IP) bool
- func (ww *WaterWall) IsBlockAddr(addr net.Addr) bool
- func (ww *WaterWall) Success(ip net.IP, user string)
- func (ww *WaterWall) SuccessAddr(addr net.Addr, user string)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DialOrDirect ¶
func ForwardHalfTimeout ¶ added in v1.0.8
func ForwardPacket ¶
func ForwardPacket(pfc PacketForwardConn, buf []byte, listenPubToken string, listenPub func() (net.PacketConn, error), pubPool *PacketConnPool) error
func ListenPacketOrDirect ¶
func ListenPacketOrDirect(listenPacket func() (net.PacketConn, error)) (net.PacketConn, error)
func NewTLSConfig ¶ added in v1.1.10
func ReplaceAddrPort ¶ added in v1.1.10
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
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
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 ¶
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 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
Click to show internal directories.
Click to hide internal directories.