func (this *SwitchAccount) Unmarshal(data []byte) error { lenHost := int(data[0]) if len(data) < lenHost+1 { return transport.CorruptedPacket } this.Host = v2net.ParseAddress(string(data[1 : 1+lenHost])) portStart := 1 + lenHost if len(data) < portStart+2 { return transport.CorruptedPacket } this.Port = v2net.PortFromBytes(data[portStart : portStart+2]) idStart := portStart + 2 if len(data) < idStart+16 { return transport.CorruptedPacket } this.ID, _ = uuid.ParseBytes(data[idStart : idStart+16]) alterIdStart := idStart + 16 if len(data) < alterIdStart+2 { return transport.CorruptedPacket } this.AlterIds = serial.ParseUint16(data[alterIdStart : alterIdStart+2]) levelStart := alterIdStart + 2 if len(data) < levelStart { return transport.CorruptedPacket } this.Level = vmess.UserLevel(data[levelStart]) timeStart := levelStart + 1 if len(data) < timeStart { return transport.CorruptedPacket } this.ValidMin = data[timeStart] return nil }
func (this *SwitchAccount) Unmarshal(data []byte) error { lenHost := int(data[0]) if len(data) < lenHost+1 { return transport.CorruptedPacket } this.Host = v2net.ParseAddress(string(data[1 : 1+lenHost])) portStart := 1 + lenHost if len(data) < portStart+2 { return transport.CorruptedPacket } this.Port = v2net.PortFromBytes(data[portStart : portStart+2]) idStart := portStart + 2 if len(data) < idStart+16 { return transport.CorruptedPacket } this.ID, _ = uuid.ParseBytes(data[idStart : idStart+16]) alterIdStart := idStart + 16 if len(data) < alterIdStart+2 { return transport.CorruptedPacket } this.AlterIds = serial.ParseUint16(data[alterIdStart : alterIdStart+2]) timeStart := alterIdStart + 2 if len(data) < timeStart+8 { return transport.CorruptedPacket } this.ValidUntil = time.Unix(serial.BytesLiteral(data[timeStart:timeStart+8]).Int64Value(), 0) return nil }
func (this *SwitchAccount) Unmarshal(data []byte) error { if len(data) != 24 { return transport.CorruptedPacket } this.ID, _ = uuid.ParseBytes(data[0:16]) this.ValidUntil = time.Unix(serial.BytesLiteral(data[16:24]).Int64Value(), 0) return nil }
func (this *CommandSwitchAccountFactory) Unmarshal(data []byte) (interface{}, error) { cmd := new(protocol.CommandSwitchAccount) if len(data) == 0 { return nil, transport.ErrCorruptedPacket } lenHost := int(data[0]) if len(data) < lenHost+1 { return nil, transport.ErrCorruptedPacket } if lenHost > 0 { cmd.Host = v2net.ParseAddress(string(data[1 : 1+lenHost])) } portStart := 1 + lenHost if len(data) < portStart+2 { return nil, transport.ErrCorruptedPacket } cmd.Port = v2net.PortFromBytes(data[portStart : portStart+2]) idStart := portStart + 2 if len(data) < idStart+16 { return nil, transport.ErrCorruptedPacket } cmd.ID, _ = uuid.ParseBytes(data[idStart : idStart+16]) alterIdStart := idStart + 16 if len(data) < alterIdStart+2 { return nil, transport.ErrCorruptedPacket } cmd.AlterIds = serial.BytesToUint16(data[alterIdStart : alterIdStart+2]) levelStart := alterIdStart + 2 if len(data) < levelStart+1 { return nil, transport.ErrCorruptedPacket } cmd.Level = protocol.UserLevel(data[levelStart]) timeStart := levelStart + 1 if len(data) < timeStart { return nil, transport.ErrCorruptedPacket } cmd.ValidMin = data[timeStart] return cmd, nil }