Finished handling of LoginStart: Now sending EncryptionRequest back
This commit is contained in:
parent
887a82564f
commit
4b25fafbe5
29
main.go
29
main.go
@ -30,11 +30,16 @@ type HandshakePacket struct {
|
|||||||
NextState int
|
NextState int
|
||||||
}
|
}
|
||||||
|
|
||||||
type LoginStartPacket struct {
|
type EncryptionPacket struct {
|
||||||
SharedSecret PrefixedByteArray
|
SharedSecret PrefixedByteArray
|
||||||
VerifyToken PrefixedByteArray
|
VerifyToken PrefixedByteArray
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type LoginStartPacket struct {
|
||||||
|
Name string
|
||||||
|
UUID string
|
||||||
|
}
|
||||||
|
|
||||||
type StatusResponse struct {
|
type StatusResponse struct {
|
||||||
Version VersionInfo `json:"version"`
|
Version VersionInfo `json:"version"`
|
||||||
Players PlayerInfo `json:"players"`
|
Players PlayerInfo `json:"players"`
|
||||||
@ -106,6 +111,8 @@ func handleConnection(client *ClientState) {
|
|||||||
|
|
||||||
reader := bytes.NewReader(buf[:n])
|
reader := bytes.NewReader(buf[:n])
|
||||||
|
|
||||||
|
fmt.Println("Received data:", buf[:n])
|
||||||
|
|
||||||
// Read packet length
|
// Read packet length
|
||||||
packetLength, err := readVarInt(reader)
|
packetLength, err := readVarInt(reader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -230,17 +237,16 @@ func handleLoginStart(reader *bytes.Reader) (LoginStartPacket, error) {
|
|||||||
var packet LoginStartPacket
|
var packet LoginStartPacket
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
packet.SharedSecret, err = readPrefixedByteArray(reader)
|
packet.Name, err = readString(reader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return packet, err
|
return packet, err
|
||||||
}
|
}
|
||||||
|
|
||||||
packet.VerifyToken, err = readPrefixedByteArray(reader)
|
packet.UUID, err = readUUID(reader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return packet, err
|
return packet, err
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("Login Start received: %+v\n", packet)
|
|
||||||
return packet, nil
|
return packet, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -331,15 +337,12 @@ func readString(reader *bytes.Reader) (string, error) {
|
|||||||
return string(strBuf), nil
|
return string(strBuf), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func readPrefixedByteArray(reader *bytes.Reader) (PrefixedByteArray, error) {
|
func readUUID(reader *bytes.Reader) (string, error) {
|
||||||
length, err := readVarInt(reader)
|
// UUID is 16 bytes
|
||||||
if err != nil {
|
uuid := make([]byte, 16)
|
||||||
return PrefixedByteArray{}, err
|
if _, err := reader.Read(uuid); err != nil {
|
||||||
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
data := make([]byte, length)
|
return fmt.Sprintf("%x-%x-%x-%x-%x", uuid[0:4], uuid[4:6], uuid[6:8], uuid[8:10], uuid[10:]), nil
|
||||||
if _, err := reader.Read(data); err != nil {
|
|
||||||
return PrefixedByteArray{}, err
|
|
||||||
}
|
|
||||||
return PrefixedByteArray{Length: length, Data: data}, nil
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user