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
|
||||
}
|
||||
|
||||
type LoginStartPacket struct {
|
||||
type EncryptionPacket struct {
|
||||
SharedSecret PrefixedByteArray
|
||||
VerifyToken PrefixedByteArray
|
||||
}
|
||||
|
||||
type LoginStartPacket struct {
|
||||
Name string
|
||||
UUID string
|
||||
}
|
||||
|
||||
type StatusResponse struct {
|
||||
Version VersionInfo `json:"version"`
|
||||
Players PlayerInfo `json:"players"`
|
||||
@ -106,6 +111,8 @@ func handleConnection(client *ClientState) {
|
||||
|
||||
reader := bytes.NewReader(buf[:n])
|
||||
|
||||
fmt.Println("Received data:", buf[:n])
|
||||
|
||||
// Read packet length
|
||||
packetLength, err := readVarInt(reader)
|
||||
if err != nil {
|
||||
@ -230,17 +237,16 @@ func handleLoginStart(reader *bytes.Reader) (LoginStartPacket, error) {
|
||||
var packet LoginStartPacket
|
||||
var err error
|
||||
|
||||
packet.SharedSecret, err = readPrefixedByteArray(reader)
|
||||
packet.Name, err = readString(reader)
|
||||
if err != nil {
|
||||
return packet, err
|
||||
}
|
||||
|
||||
packet.VerifyToken, err = readPrefixedByteArray(reader)
|
||||
packet.UUID, err = readUUID(reader)
|
||||
if err != nil {
|
||||
return packet, err
|
||||
}
|
||||
|
||||
fmt.Printf("Login Start received: %+v\n", packet)
|
||||
return packet, nil
|
||||
}
|
||||
|
||||
@ -331,15 +337,12 @@ func readString(reader *bytes.Reader) (string, error) {
|
||||
return string(strBuf), nil
|
||||
}
|
||||
|
||||
func readPrefixedByteArray(reader *bytes.Reader) (PrefixedByteArray, error) {
|
||||
length, err := readVarInt(reader)
|
||||
if err != nil {
|
||||
return PrefixedByteArray{}, err
|
||||
func readUUID(reader *bytes.Reader) (string, error) {
|
||||
// UUID is 16 bytes
|
||||
uuid := make([]byte, 16)
|
||||
if _, err := reader.Read(uuid); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
data := make([]byte, length)
|
||||
if _, err := reader.Read(data); err != nil {
|
||||
return PrefixedByteArray{}, err
|
||||
}
|
||||
return PrefixedByteArray{Length: length, Data: data}, nil
|
||||
return fmt.Sprintf("%x-%x-%x-%x-%x", uuid[0:4], uuid[4:6], uuid[6:8], uuid[8:10], uuid[10:]), nil
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user