package core import ( "bufio" "fmt" "net" "time" ) type Conn struct { Conn net.Conn Reader *bufio.Reader Tag [16]byte Protocol string Dest *FwdAddr Auth *AuthContext } func (c Conn) Read(b []byte) (n int, err error) { return c.Reader.Read(b) } func (c Conn) Write(b []byte) (n int, err error) { return c.Conn.Write(b) } func (c Conn) Close() error { return c.Conn.Close() } func (c Conn) LocalAddr() net.Addr { return c.Conn.LocalAddr() } func (c Conn) RemoteAddr() net.Addr { return c.Conn.RemoteAddr() } func (c Conn) SetDeadline(t time.Time) error { return c.Conn.SetDeadline(t) } func (c Conn) SetReadDeadline(t time.Time) error { return c.Conn.SetReadDeadline(t) } func (c Conn) SetWriteDeadline(t time.Time) error { return c.Conn.SetWriteDeadline(t) } type FwdAddr struct { IP net.IP Port int Domain string } func (a FwdAddr) Network() string { return "tcp" } func (a FwdAddr) String() string { return fmt.Sprintf("%s:%d", a.IP, a.Port) } type AuthContext struct { Payload Payload Meta map[string]any } type Payload struct { ID int32 }