mirror of
https://github.com/v2fly/v2ray-core.git
synced 2025-02-20 23:47:21 -05:00
Output debug info when parsing VMess request
This commit is contained in:
parent
3e76c3f307
commit
7c64093a7a
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user