|
|
|
@ -4,7 +4,9 @@ import (
|
|
|
|
|
"net" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
// VMessInput implements the input message of VMess protocol.
|
|
|
|
|
// VMessInput implements the input message of VMess protocol. It only contains
|
|
|
|
|
// the header of a input message. The data part will be handled by conection
|
|
|
|
|
// handler directly, in favor of data streaming.
|
|
|
|
|
type VMessInput struct { |
|
|
|
|
version byte |
|
|
|
|
userHash [16]byte |
|
|
|
@ -14,19 +16,20 @@ type VMessInput struct {
|
|
|
|
|
command byte |
|
|
|
|
port uint16 |
|
|
|
|
target [256]byte |
|
|
|
|
data []byte |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
type VMessReader struct { |
|
|
|
|
conn *net.Conn |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// NewVMessReader creates a new VMessReader
|
|
|
|
|
func NewVMessReader(conn *net.Conn) (VMessReader, error) { |
|
|
|
|
var reader VMessReader |
|
|
|
|
reader.conn = conn |
|
|
|
|
return reader, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Read reads data from current connection and form a VMessInput if possible.
|
|
|
|
|
func (*VMessReader) Read() (VMessInput, error) { |
|
|
|
|
var input VMessInput |
|
|
|
|
return input, nil |
|
|
|
|