conn

package
v0.33.12 Latest Latest
Warning

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

Go to latest
Published: Dec 26, 2025 License: GPL-3.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const MaxFramePayload = 65535

Variables

View Source
var ErrFrameTooLarge = errors.New("framed: frame size exceeds MaxFramePayload")
View Source
var LocalTCPAddr = &net.TCPAddr{IP: net.ParseIP("127.0.0.1")}

Functions

func Accept

func Accept(l net.Listener, f func(c net.Conn))

func BuildProxyProtocolHeader

func BuildProxyProtocolHeader(c net.Conn, proxyProtocol int) []byte

func BuildProxyProtocolHeaderByAddr

func BuildProxyProtocolHeaderByAddr(clientAddr, targetAddr net.Addr, proxyProtocol int) []byte

func BuildProxyProtocolV1Header

func BuildProxyProtocolV1Header(clientAddr, targetAddr net.Addr) []byte

func BuildProxyProtocolV2Header

func BuildProxyProtocolV2Header(clientAddr, targetAddr net.Addr) []byte

func CheckFlowLimits added in v0.33.12

func CheckFlowLimits(f *file.Flow, label string, now time.Time) error

func CopyWaitGroup

func CopyWaitGroup(conn1, conn2 net.Conn, crypt bool, snappy bool, rate *rate.Rate,
	flows []*file.Flow, isServer bool, proxyProtocol int, rb []byte, task *file.Tunnel, isLocal, isFramed bool)

CopyWaitGroup conn1 mux conn

func DialWS

func DialWS(rawConn net.Conn, urlStr, host string, timeout time.Duration) (*websocket.Conn, *http.Response, error)

func DialWSS

func DialWSS(rawConn net.Conn, urlStr, host, sni string, timeout time.Duration) (*websocket.Conn, *http.Response, error)

func GetConn

func GetConn(conn net.Conn, cpt, snappy bool, rt *rate.Rate, isServer, isLocal bool) io.ReadWriteCloser

GetConn get crypt or snappy conn

func GetLenBytes

func GetLenBytes(buf []byte) (b []byte, err error)

GetLenBytes get the assembled amount data(len 4 and content)

func GetRealIP added in v0.33.12

func GetRealIP(r *http.Request, header string) string

func GetTlsConn added in v0.33.12

func GetTlsConn(c net.Conn, sni string) (net.Conn, error)

func HandleUdp5 added in v0.33.12

func HandleUdp5(ctx context.Context, serverConn net.Conn, timeout time.Duration)

func IsTempOrTimeout added in v0.33.12

func IsTempOrTimeout(err error) bool

func NewKcpListenerAndProcess

func NewKcpListenerAndProcess(addr string, f func(c net.Conn)) error

func NewQuicListenerAndProcess added in v0.33.12

func NewQuicListenerAndProcess(addr string, tlsConfig *tls.Config, quicConfig *quic.Config, f func(c net.Conn)) error

func NewTcpListenerAndProcess

func NewTcpListenerAndProcess(addr string, f func(c net.Conn), listener *net.Listener) error

func NewTimeoutConn added in v0.33.12

func NewTimeoutConn(c net.Conn, idle time.Duration) net.Conn

func NewTimeoutTLSConn added in v0.33.12

func NewTimeoutTLSConn(raw net.Conn, cfg *tls.Config, idle, handshakeTimeout time.Duration) (net.Conn, error)

func NewUdpConnByAddr added in v0.33.12

func NewUdpConnByAddr(addr string) (net.PacketConn, error)

func NewWSListener

func NewWSListener(base net.Listener, path, trustedIps, realIpHeader string) net.Listener

func NewWSSListener

func NewWSSListener(base net.Listener, path string, cert tls.Certificate, trustedIps, realIpHeader string) net.Listener

func ParseAddr added in v0.33.12

func ParseAddr(addr string) net.Addr

func ReadACK added in v0.33.12

func ReadACK(c net.Conn, timeout time.Duration) error

func SetUdpSession

func SetUdpSession(sess *kcp.UDPSession)

SetUdpSession udp connection setting

func WrapConn added in v0.33.12

func WrapConn(rwc io.ReadWriteCloser, parent net.Conn) net.Conn

func WriteACK added in v0.33.12

func WriteACK(c net.Conn, timeout time.Duration) error

Types

type AddrOverrideConn added in v0.33.12

type AddrOverrideConn struct {
	net.Conn
	// contains filtered or unexported fields
}

func NewAddrOverrideConn added in v0.33.12

func NewAddrOverrideConn(base net.Conn, remote, local string) (*AddrOverrideConn, error)

func NewAddrOverrideFromAddr added in v0.33.12

func NewAddrOverrideFromAddr(base net.Conn, remote, local net.Addr) *AddrOverrideConn

func (*AddrOverrideConn) LocalAddr added in v0.33.12

func (c *AddrOverrideConn) LocalAddr() net.Addr

func (*AddrOverrideConn) RemoteAddr added in v0.33.12

func (c *AddrOverrideConn) RemoteAddr() net.Addr

type Conn

type Conn struct {
	Conn net.Conn
	// contains filtered or unexported fields
}

func NewConn

func NewConn(conn net.Conn) *Conn

NewConn new conn

func (*Conn) BufferWrite added in v0.33.12

func (s *Conn) BufferWrite(b []byte) (int, error)

func (*Conn) Close

func (s *Conn) Close() error

func (*Conn) FlushBuf added in v0.33.12

func (s *Conn) FlushBuf() error

func (*Conn) GetAddStatus

func (s *Conn) GetAddStatus() (b bool)

GetAddStatus get task or host result of add

func (*Conn) GetConfigInfo

func (s *Conn) GetConfigInfo() (c *file.Client, err error)

GetConfigInfo get task info

func (*Conn) GetHealthInfo

func (s *Conn) GetHealthInfo() (info string, status bool, err error)

GetHealthInfo get health info from conn

func (*Conn) GetHost

func (s *Conn) GetHost() (method, address string, rb []byte, err error, r *http.Request)

GetHost get host 、connection type、method...from connection

func (*Conn) GetHostInfo

func (s *Conn) GetHostInfo() (h *file.Host, err error)

GetHostInfo get task info

func (*Conn) GetLen

func (s *Conn) GetLen() (int, error)

func (*Conn) GetLinkInfo

func (s *Conn) GetLinkInfo() (lk *Link, err error)

GetLinkInfo get link info from conn

func (*Conn) GetShortContent

func (s *Conn) GetShortContent(l int) (b []byte, err error)

func (*Conn) GetShortLenContent

func (s *Conn) GetShortLenContent() (b []byte, err error)

func (*Conn) GetTaskInfo

func (s *Conn) GetTaskInfo() (t *file.Tunnel, err error)

GetTaskInfo get task info

func (*Conn) IsClosed added in v0.33.12

func (s *Conn) IsClosed() bool

func (*Conn) LocalAddr

func (s *Conn) LocalAddr() net.Addr

func (*Conn) OnClose added in v0.33.12

func (s *Conn) OnClose(fn func(*Conn)) *Conn

func (*Conn) Read

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

read

func (*Conn) ReadFlag

func (s *Conn) ReadFlag() (string, error)

ReadFlag read flag

func (*Conn) ReadLen

func (s *Conn) ReadLen(cLen int, buf []byte) (int, error)

func (*Conn) RemoteAddr

func (s *Conn) RemoteAddr() net.Addr

func (*Conn) SendHealthInfo

func (s *Conn) SendHealthInfo(info, status string) (int, error)

SendHealthInfo send info for link

func (*Conn) SendInfo

func (s *Conn) SendInfo(t interface{}, flag string) (int, error)

SendInfo send info

func (*Conn) SetAlive

func (s *Conn) SetAlive()

SetAlive set alive

func (*Conn) SetDeadline

func (s *Conn) SetDeadline(t time.Time) error

func (*Conn) SetRb added in v0.33.12

func (s *Conn) SetRb(rbs ...[]byte) *Conn

func (*Conn) SetReadDeadline

func (s *Conn) SetReadDeadline(t time.Time) error

func (*Conn) SetReadDeadlineBySecond

func (s *Conn) SetReadDeadlineBySecond(t time.Duration)

SetReadDeadlineBySecond set read deadline

func (*Conn) SetWriteDeadline

func (s *Conn) SetWriteDeadline(t time.Time) error

func (*Conn) Write

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

write

func (*Conn) WriteAddFail

func (s *Conn) WriteAddFail() error

func (*Conn) WriteAddOk

func (s *Conn) WriteAddOk() error

func (*Conn) WriteChan

func (s *Conn) WriteChan() (int, error)

WriteChan write chan

func (*Conn) WriteClose

func (s *Conn) WriteClose() (int, error)

WriteClose write sign flag

func (*Conn) WriteConfig

func (s *Conn) WriteConfig() (int, error)

WriteConfig write config

func (*Conn) WriteLenContent

func (s *Conn) WriteLenContent(buf []byte) (err error)

func (*Conn) WriteMain

func (s *Conn) WriteMain() (int, error)

WriteMain write main

type FlowConn

type FlowConn struct {
	*RWConn
	// contains filtered or unexported fields
}

func NewFlowConn

func NewFlowConn(conn io.ReadWriteCloser, task, client *file.Flow) *FlowConn

func (*FlowConn) Read

func (c *FlowConn) Read(p []byte) (int, error)

func (*FlowConn) Write

func (c *FlowConn) Write(p []byte) (int, error)

type FramedConn added in v0.33.12

type FramedConn struct {
	net.Conn
	// contains filtered or unexported fields
}

func WrapFramed added in v0.33.12

func WrapFramed(c net.Conn) *FramedConn

func (*FramedConn) Close added in v0.33.12

func (fc *FramedConn) Close() error

func (*FramedConn) LocalAddr added in v0.33.12

func (fc *FramedConn) LocalAddr() net.Addr

func (*FramedConn) Read added in v0.33.12

func (fc *FramedConn) Read(p []byte) (int, error)

func (*FramedConn) RemoteAddr added in v0.33.12

func (fc *FramedConn) RemoteAddr() net.Addr

func (*FramedConn) SetDeadline added in v0.33.12

func (fc *FramedConn) SetDeadline(t time.Time) error

func (*FramedConn) SetReadDeadline added in v0.33.12

func (fc *FramedConn) SetReadDeadline(t time.Time) error

func (*FramedConn) SetWriteDeadline added in v0.33.12

func (fc *FramedConn) SetWriteDeadline(t time.Time) error

func (*FramedConn) Write added in v0.33.12

func (fc *FramedConn) Write(p []byte) (int, error)

type LenConn

type LenConn struct {
	Len int
	// contains filtered or unexported fields
}

func NewLenConn

func NewLenConn(conn io.Writer) *LenConn

func (*LenConn) Write

func (c *LenConn) Write(p []byte) (n int, err error)
type Link struct {
	ConnType   string //连接类型
	Host       string //目标
	Crypt      bool   //加密
	Compress   bool
	LocalProxy bool
	RemoteAddr string
	Option     Options
}
func NewLink(connType string, host string, crypt bool, compress bool, remoteAddr string, localProxy bool, opts ...Option) *Link

type OneConnListener

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

func NewOneConnListener

func NewOneConnListener(c net.Conn) *OneConnListener

func (*OneConnListener) Accept

func (l *OneConnListener) Accept() (net.Conn, error)

func (*OneConnListener) Addr

func (l *OneConnListener) Addr() net.Addr

func (*OneConnListener) Close

func (l *OneConnListener) Close() error

type Option

type Option func(*Options)

func LinkTimeout

func LinkTimeout(t time.Duration) Option

func WithAck added in v0.33.12

func WithAck(enabled bool) Option

type Options

type Options struct {
	Timeout time.Duration
	NeedAck bool
}

type QuicAutoCloseConn added in v0.33.12

type QuicAutoCloseConn struct{ *QuicStreamConn }

func NewQuicAutoCloseConn added in v0.33.12

func NewQuicAutoCloseConn(stream *quic.Stream, sess *quic.Conn) *QuicAutoCloseConn

func (*QuicAutoCloseConn) Close added in v0.33.12

func (q *QuicAutoCloseConn) Close() error

type QuicStreamConn added in v0.33.12

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

func NewQuicStreamConn added in v0.33.12

func NewQuicStreamConn(stream *quic.Stream, sess *quic.Conn) *QuicStreamConn

func (*QuicStreamConn) Close added in v0.33.12

func (q *QuicStreamConn) Close() error

func (*QuicStreamConn) GetSession added in v0.33.12

func (q *QuicStreamConn) GetSession() *quic.Conn

func (*QuicStreamConn) LocalAddr added in v0.33.12

func (q *QuicStreamConn) LocalAddr() net.Addr

func (*QuicStreamConn) Read added in v0.33.12

func (q *QuicStreamConn) Read(p []byte) (int, error)

func (*QuicStreamConn) RemoteAddr added in v0.33.12

func (q *QuicStreamConn) RemoteAddr() net.Addr

func (*QuicStreamConn) SetDeadline added in v0.33.12

func (q *QuicStreamConn) SetDeadline(t time.Time) error

func (*QuicStreamConn) SetReadDeadline added in v0.33.12

func (q *QuicStreamConn) SetReadDeadline(t time.Time) error

func (*QuicStreamConn) SetWriteDeadline added in v0.33.12

func (q *QuicStreamConn) SetWriteDeadline(t time.Time) error

func (*QuicStreamConn) Write added in v0.33.12

func (q *QuicStreamConn) Write(p []byte) (int, error)

type RWConn

type RWConn struct {
	io.ReadWriteCloser
	FakeAddr net.Addr
}

func NewRWConn

func NewRWConn(conn io.ReadWriteCloser) *RWConn

func (*RWConn) LocalAddr

func (c *RWConn) LocalAddr() net.Addr

func (*RWConn) RemoteAddr

func (c *RWConn) RemoteAddr() net.Addr

func (*RWConn) SetDeadline

func (c *RWConn) SetDeadline(_ time.Time) error

func (*RWConn) SetReadDeadline

func (c *RWConn) SetReadDeadline(_ time.Time) error

func (*RWConn) SetWriteDeadline

func (c *RWConn) SetWriteDeadline(_ time.Time) error

type Secret

type Secret struct {
	//Type     string // tcp/udp
	Password string
	Conn     *Conn
}

func NewSecret

func NewSecret(p string, conn *Conn) *Secret

type SmartUdpConn added in v0.33.12

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

func NewSmartUdpConn added in v0.33.12

func NewSmartUdpConn(conns []net.PacketConn, addr *net.UDPAddr) *SmartUdpConn

func (*SmartUdpConn) Close added in v0.33.12

func (s *SmartUdpConn) Close() error

func (*SmartUdpConn) LocalAddr added in v0.33.12

func (s *SmartUdpConn) LocalAddr() net.Addr

func (*SmartUdpConn) ReadFrom added in v0.33.12

func (s *SmartUdpConn) ReadFrom(p []byte) (int, net.Addr, error)

func (*SmartUdpConn) SetDeadline added in v0.33.12

func (s *SmartUdpConn) SetDeadline(t time.Time) error

func (*SmartUdpConn) SetReadDeadline added in v0.33.12

func (s *SmartUdpConn) SetReadDeadline(t time.Time) error

func (*SmartUdpConn) SetWriteDeadline added in v0.33.12

func (s *SmartUdpConn) SetWriteDeadline(t time.Time) error

func (*SmartUdpConn) WriteTo added in v0.33.12

func (s *SmartUdpConn) WriteTo(p []byte, addr net.Addr) (int, error)

type SnappyConn

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

func NewSnappyConn

func NewSnappyConn(conn io.ReadWriteCloser) *SnappyConn

func (*SnappyConn) Close

func (s *SnappyConn) Close() error

func (*SnappyConn) Read

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

snappy压缩读

func (*SnappyConn) Write

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

snappy压缩写

type TeeConn added in v0.33.12

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

func NewTeeConn added in v0.33.12

func NewTeeConn(conn net.Conn, maxBufBytes ...int) *TeeConn

func (*TeeConn) Buffered added in v0.33.12

func (t *TeeConn) Buffered() []byte

func (*TeeConn) Close added in v0.33.12

func (t *TeeConn) Close() error

func (*TeeConn) ExtractAndReset added in v0.33.12

func (t *TeeConn) ExtractAndReset() []byte

func (*TeeConn) LocalAddr added in v0.33.12

func (t *TeeConn) LocalAddr() net.Addr

func (*TeeConn) Read added in v0.33.12

func (t *TeeConn) Read(p []byte) (n int, err error)

func (*TeeConn) Release added in v0.33.12

func (t *TeeConn) Release() (net.Conn, []byte)

func (*TeeConn) RemoteAddr added in v0.33.12

func (t *TeeConn) RemoteAddr() net.Addr

func (*TeeConn) ResetBuffer added in v0.33.12

func (t *TeeConn) ResetBuffer()

func (*TeeConn) SetDeadline added in v0.33.12

func (t *TeeConn) SetDeadline(deadline time.Time) error

func (*TeeConn) SetReadDeadline added in v0.33.12

func (t *TeeConn) SetReadDeadline(deadline time.Time) error

func (*TeeConn) SetWriteDeadline added in v0.33.12

func (t *TeeConn) SetWriteDeadline(deadline time.Time) error

func (*TeeConn) StopAndClean added in v0.33.12

func (t *TeeConn) StopAndClean()

func (*TeeConn) StopBuffering added in v0.33.12

func (t *TeeConn) StopBuffering()

func (*TeeConn) Write added in v0.33.12

func (t *TeeConn) Write(p []byte) (n int, err error)

type TimeoutConn added in v0.33.12

type TimeoutConn struct {
	net.Conn
	// contains filtered or unexported fields
}

func (*TimeoutConn) Read added in v0.33.12

func (c *TimeoutConn) Read(b []byte) (int, error)

func (*TimeoutConn) Write added in v0.33.12

func (c *TimeoutConn) Write(b []byte) (int, error)

type TlsConn

type TlsConn struct {
	*tls.Conn
	// contains filtered or unexported fields
}

func NewTlsConn

func NewTlsConn(rawConn net.Conn, timeout time.Duration, tlsConfig *tls.Config) (*TlsConn, error)

func (*TlsConn) Close

func (c *TlsConn) Close() error

func (*TlsConn) GetRawConn

func (c *TlsConn) GetRawConn() net.Conn

func (*TlsConn) LocalAddr

func (c *TlsConn) LocalAddr() net.Addr

func (*TlsConn) Read

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

func (*TlsConn) RemoteAddr

func (c *TlsConn) RemoteAddr() net.Addr

func (*TlsConn) SetDeadline

func (c *TlsConn) SetDeadline(t time.Time) error

func (*TlsConn) SetReadDeadline

func (c *TlsConn) SetReadDeadline(t time.Time) error

func (*TlsConn) SetWriteDeadline

func (c *TlsConn) SetWriteDeadline(t time.Time) error

func (*TlsConn) Write

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

type VirtualListener added in v0.33.12

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

func NewVirtualListener added in v0.33.12

func NewVirtualListener(addr net.Addr) *VirtualListener

func (*VirtualListener) Accept added in v0.33.12

func (l *VirtualListener) Accept() (net.Conn, error)

func (*VirtualListener) Addr added in v0.33.12

func (l *VirtualListener) Addr() net.Addr

func (*VirtualListener) Close added in v0.33.12

func (l *VirtualListener) Close() error

func (*VirtualListener) DialVirtual added in v0.33.12

func (l *VirtualListener) DialVirtual(rAddr string) (net.Conn, error)

func (*VirtualListener) ServeVirtual added in v0.33.12

func (l *VirtualListener) ServeVirtual(c net.Conn)

func (*VirtualListener) SetAddr added in v0.33.12

func (l *VirtualListener) SetAddr(addr net.Addr)

type WsConn

type WsConn struct {
	*websocket.Conn
	RealIP string
	// contains filtered or unexported fields
}

func NewWsConn

func NewWsConn(ws *websocket.Conn) *WsConn

func (*WsConn) Close

func (c *WsConn) Close() error

func (*WsConn) LocalAddr

func (c *WsConn) LocalAddr() net.Addr

func (*WsConn) Read

func (c *WsConn) Read(p []byte) (int, error)

func (*WsConn) RemoteAddr

func (c *WsConn) RemoteAddr() net.Addr

func (*WsConn) SetDeadline

func (c *WsConn) SetDeadline(t time.Time) error

func (*WsConn) SetReadDeadline

func (c *WsConn) SetReadDeadline(t time.Time) error

func (*WsConn) SetWriteDeadline

func (c *WsConn) SetWriteDeadline(t time.Time) error

func (*WsConn) Write

func (c *WsConn) Write(p []byte) (int, error)

Jump to

Keyboard shortcuts

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