Documentation
¶
Index ¶
- func ParseHeader(reader io.Reader) (dst net.Destination, err error)
- type Client
- func (c *Client) HandleFlow(ctx context.Context, dst net.Destination, rw buf.ReaderWriter) error
- func (c Client) HandlePacketConn(ctx context.Context, dst net.Destination, pc udp.PacketReaderWriter) error
- func (c *Client) ListenPacket(ctx context.Context, dst net.Destination) (udp.UdpConn, error)
- func (c *Client) ProxyDial(ctx context.Context, dst net.Destination, initialData buf.MultiBuffer) (i.FlowConn, error)
- type ClientSettings
- type ConnWriter
- type MemoryAccount
- type PacketPayload
- type PacketReader
- type PacketWriter
- type Validator
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ParseHeader ¶
func ParseHeader(reader io.Reader) (dst net.Destination, err error)
ParseHeader parses the trojan protocol header
Types ¶
type Client ¶
type Client struct {
ClientSettings
}
Client is an inbound handler for trojan protocol
func NewClient ¶
func NewClient(settings ClientSettings) *Client
NewClient create a new trojan client.
func (*Client) HandleFlow ¶
func (c *Client) HandleFlow(ctx context.Context, dst net.Destination, rw buf.ReaderWriter) error
func (Client) HandlePacketConn ¶
func (c Client) HandlePacketConn(ctx context.Context, dst net.Destination, pc udp.PacketReaderWriter) error
func (*Client) ListenPacket ¶
type ClientSettings ¶
type ClientSettings struct {
Address net.Address
PortPicker i.PortSelector
Account *MemoryAccount
Dialer i.Dialer
Vision bool
}
type ConnWriter ¶
type ConnWriter struct {
io.Writer
Target net.Destination
Account *MemoryAccount
// contains filtered or unexported fields
}
ConnWriter is TCP Connection Writer Wrapper for trojan protocol
func (*ConnWriter) CloseWrite ¶
func (c *ConnWriter) CloseWrite() error
func (*ConnWriter) OkayToUnwrapWriter ¶
func (c *ConnWriter) OkayToUnwrapWriter() int
func (*ConnWriter) UnwrapWriter ¶
func (c *ConnWriter) UnwrapWriter() any
func (*ConnWriter) Write ¶
func (c *ConnWriter) Write(p []byte) (n int, err error)
Write implements io.Writer
func (*ConnWriter) WriteHeader ¶
func (c *ConnWriter) WriteHeader() error
func (*ConnWriter) WriteMultiBuffer ¶
func (c *ConnWriter) WriteMultiBuffer(mb buf.MultiBuffer) error
WriteMultiBuffer implements buf.Writer
type MemoryAccount ¶
MemoryAccount is an account type converted from Account.
func NewMemoryAccount ¶
func NewMemoryAccount(u string, password string) *MemoryAccount
type PacketPayload ¶
type PacketPayload struct {
Target net.Destination
Buffer buf.MultiBuffer
}
PacketPayload combines udp payload and destination
type PacketReader ¶
type PacketReader struct {
// contains filtered or unexported fields
}
PacketReader is UDP Connection Reader Wrapper for trojan protocol
func (*PacketReader) ReadMultiBuffer ¶
func (r *PacketReader) ReadMultiBuffer() (buf.MultiBuffer, error)
ReadMultiBuffer implements buf.Reader
func (*PacketReader) ReadPacket ¶
func (r *PacketReader) ReadPacket() (*udp.Packet, error)
ReadMultiBufferWithMetadata reads udp packet with destination
type PacketWriter ¶
type PacketWriter struct {
Dest net.Destination
// contains filtered or unexported fields
}
PacketWriter UDP Connection Writer Wrapper for trojan protocol
func (*PacketWriter) CloseWrite ¶
func (w *PacketWriter) CloseWrite() error
func (*PacketWriter) WriteMultiBuffer ¶
func (w *PacketWriter) WriteMultiBuffer(mb buf.MultiBuffer) error
WriteMultiBuffer implements buf.Writer
func (*PacketWriter) WritePacket ¶
func (w *PacketWriter) WritePacket(p *udp.Packet) error
WritePacket writes udp packet with destination specified
type Validator ¶
type Validator struct {
// contains filtered or unexported fields
}
Validator stores valid trojan users.
func (*Validator) Add ¶
func (v *Validator) Add(u *MemoryAccount)
Add a trojan user, Email must be empty or unique.
func (*Validator) Get ¶
func (v *Validator) Get(hash string) *MemoryAccount
Get a trojan user with hashed key, nil if user doesn't exist.