1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-07-02 12:05:23 +00:00

Output debug info when parsing VMess request

This commit is contained in:
v2ray 2016-01-05 00:08:00 +01:00
parent 3e76c3f307
commit 7c64093a7a

View File

@ -72,6 +72,7 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
nBytes, err := v2net.ReadAllBytes(reader, buffer.Value[:vmess.IDBytesLen]) nBytes, err := v2net.ReadAllBytes(reader, buffer.Value[:vmess.IDBytesLen])
if err != nil { if err != nil {
log.Debug("VMess: Failed to read request ID (%d bytes): %v", nBytes, err)
return nil, err return nil, err
} }
@ -82,6 +83,7 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
aesStream, err := v2crypto.NewAesDecryptionStream(userObj.ID().CmdKey(), user.Int64Hash(timeSec)) aesStream, err := v2crypto.NewAesDecryptionStream(userObj.ID().CmdKey(), user.Int64Hash(timeSec))
if err != nil { if err != nil {
log.Debug("VMess: Failed to create AES stream: %v", err)
return nil, err return nil, err
} }
@ -89,6 +91,7 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
nBytes, err = v2net.ReadAllBytes(decryptor, buffer.Value[:41]) nBytes, err = v2net.ReadAllBytes(decryptor, buffer.Value[:41])
if err != nil { if err != nil {
log.Debug("VMess: Failed to read request header (%d bytes): %v", nBytes, err)
return nil, err return nil, err
} }
bufferLen := nBytes bufferLen := nBytes
@ -99,7 +102,7 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
} }
if request.Version != Version { if request.Version != Version {
log.Warning("Invalid protocol version %d", request.Version) log.Warning("VMess: Invalid protocol version %d", request.Version)
return nil, proxy.InvalidProtocolVersion return nil, proxy.InvalidProtocolVersion
} }
@ -112,30 +115,34 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
switch buffer.Value[40] { switch buffer.Value[40] {
case addrTypeIPv4: case addrTypeIPv4:
_, err = v2net.ReadAllBytes(decryptor, buffer.Value[41:45]) // 4 bytes nBytes, err = v2net.ReadAllBytes(decryptor, buffer.Value[41:45]) // 4 bytes
bufferLen += 4 bufferLen += 4
if err != nil { if err != nil {
log.Debug("VMess: Failed to read target IPv4 (%d bytes): %v", nBytes, err)
return nil, err return nil, err
} }
request.Address = v2net.IPAddress(buffer.Value[41:45]) request.Address = v2net.IPAddress(buffer.Value[41:45])
case addrTypeIPv6: case addrTypeIPv6:
_, err = v2net.ReadAllBytes(decryptor, buffer.Value[41:57]) // 16 bytes nBytes, err = v2net.ReadAllBytes(decryptor, buffer.Value[41:57]) // 16 bytes
bufferLen += 16 bufferLen += 16
if err != nil { if err != nil {
log.Debug("VMess: Failed to read target IPv6 (%d bytes): %v", nBytes, err)
return nil, err return nil, err
} }
request.Address = v2net.IPAddress(buffer.Value[41:57]) request.Address = v2net.IPAddress(buffer.Value[41:57])
case addrTypeDomain: case addrTypeDomain:
_, err = v2net.ReadAllBytes(decryptor, buffer.Value[41:42]) nBytes, err = v2net.ReadAllBytes(decryptor, buffer.Value[41:42])
if err != nil { if err != nil {
log.Debug("VMess: Failed to read target domain (%d bytes): %v", nBytes, err)
return nil, err return nil, err
} }
domainLength := int(buffer.Value[41]) domainLength := int(buffer.Value[41])
if domainLength == 0 { if domainLength == 0 {
return nil, transport.CorruptedPacket return nil, transport.CorruptedPacket
} }
_, err = v2net.ReadAllBytes(decryptor, buffer.Value[42:42+domainLength]) nBytes, err = v2net.ReadAllBytes(decryptor, buffer.Value[42:42+domainLength])
if err != nil { if err != nil {
log.Debug("VMess: Failed to read target domain (%d bytes): %v", nBytes, err)
return nil, err return nil, err
} }
bufferLen += 1 + domainLength bufferLen += 1 + domainLength
@ -143,8 +150,9 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
request.Address = v2net.DomainAddress(string(domainBytes)) request.Address = v2net.DomainAddress(string(domainBytes))
} }
_, err = v2net.ReadAllBytes(decryptor, buffer.Value[bufferLen:bufferLen+4]) nBytes, err = v2net.ReadAllBytes(decryptor, buffer.Value[bufferLen:bufferLen+4])
if err != nil { if err != nil {
log.Debug("VMess: Failed to read checksum (%d bytes): %v", nBytes, err)
return nil, err return nil, err
} }