init commit
This commit is contained in:
72
internal/handlers/auth.go
Normal file
72
internal/handlers/auth.go
Normal file
@@ -0,0 +1,72 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"customServer/internal/protocol"
|
||||
"customServer/internal/state"
|
||||
"fmt"
|
||||
"net"
|
||||
"time"
|
||||
)
|
||||
|
||||
func HandleAsyncAuthRequest(conn net.Conn, requestData []byte) ([]byte, int) {
|
||||
fmt.Println("[TCP] Handling AsyncAuthRequest")
|
||||
|
||||
// Session Message
|
||||
sessionData := make([]byte, 0)
|
||||
// field 1 (Id), Varint (WireType 0)
|
||||
sessionData = append(sessionData, 0x08)
|
||||
sessionData = append(sessionData, protocol.EncodeVarint(uint64(time.Now().UnixNano()))...)
|
||||
|
||||
// Player Message
|
||||
player := state.GetMockPlayerBytes()
|
||||
|
||||
// AsyncConnectedRequest
|
||||
asyncConnected := make([]byte, 0)
|
||||
// field 1 (Session), message
|
||||
asyncConnected = append(asyncConnected, 0x0a)
|
||||
asyncConnected = append(asyncConnected, protocol.EncodeVarint(uint64(len(sessionData)))...)
|
||||
asyncConnected = append(asyncConnected, sessionData...)
|
||||
|
||||
// field 2 (Player), message
|
||||
asyncConnected = append(asyncConnected, 0x12)
|
||||
asyncConnected = append(asyncConnected, protocol.EncodeVarint(uint64(len(player)))...)
|
||||
asyncConnected = append(asyncConnected, player...)
|
||||
|
||||
return asyncConnected, 406
|
||||
}
|
||||
|
||||
func HandlePingRequest(conn net.Conn, requestData []byte) ([]byte, int) {
|
||||
fmt.Println("[TCP] Handling PingRequest")
|
||||
// The client sends a PingRequest with a timestamp (field 1).
|
||||
// We should respond with a PingRequest (777) containing the same timestamp.
|
||||
|
||||
// Extract timestamp if possible, otherwise just send back a default one
|
||||
// For simplicity, we just echo back what we got if it's small, or send a new one.
|
||||
return requestData, 777
|
||||
}
|
||||
|
||||
func HandleAsyncDisconnectRequest(conn net.Conn, requestData []byte) ([]byte, int) {
|
||||
fmt.Println("[TCP] Handling AsyncDisconnectRequest")
|
||||
return []byte{}, 401
|
||||
}
|
||||
|
||||
func HandleAskServerStatisticsRequest(conn net.Conn, requestData []byte) ([]byte, int) {
|
||||
fmt.Println("[TCP] Handling AskServerStatisticsRequest")
|
||||
// Return ServerStatisticsRequest (409)
|
||||
// Fields: 1:HostedGames, 2:Players, 3:ConnectedPlayers (all int32)
|
||||
stats := make([]byte, 0)
|
||||
|
||||
// Field 1: HostedGames (Varint)
|
||||
stats = append(stats, 0x08)
|
||||
stats = append(stats, protocol.EncodeVarint(1)...)
|
||||
|
||||
// Field 2: Players (Varint)
|
||||
stats = append(stats, 0x10)
|
||||
stats = append(stats, protocol.EncodeVarint(1)...)
|
||||
|
||||
// Field 3: ConnectedPlayers (Varint)
|
||||
stats = append(stats, 0x18)
|
||||
stats = append(stats, protocol.EncodeVarint(1)...)
|
||||
|
||||
return stats, 409
|
||||
}
|
||||
Reference in New Issue
Block a user