From 4af290fcf7c3e4c9100b1f9d5811d079360f1557 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 28 Dec 2021 21:57:57 +0100 Subject: [PATCH] send message to mc server --- serverCommunication/web.go | 116 ++++++++++++++++++------------------- 1 file changed, 57 insertions(+), 59 deletions(-) diff --git a/serverCommunication/web.go b/serverCommunication/web.go index cf50874..b95c8a7 100644 --- a/serverCommunication/web.go +++ b/serverCommunication/web.go @@ -19,73 +19,71 @@ import ( func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status int, cmdID int, dest int, cmdNumber int, args string) { var err error var raw []byte - var client *structs.WebClient - // TODO: handle other dests + webClient := getWebClientByConn(conn) + + if webClient == nil { + // TODO: when does this apply? Send error with conn? + return + } + if status == kraProtocol.StatusGet { - client = getWebClientByConn(conn) + var cmdIDInList bool - if client == nil { - raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, "") + logger.Web.Println("cmdID", isVoice, webClient.VoiceCmdIDs, webClient.MobileCmdIDs) - err = client.SendBinaryMessage(conn, raw) + if isVoice { + cmdIDInList = isCmdIDInList(webClient.VoiceCmdIDs, cmdID) + } else { + cmdIDInList = isCmdIDInList(webClient.MobileCmdIDs, cmdID) + } + + if cmdIDInList { // cmdID already in queue + raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusMessageAlreadyInQueue, cmdID, cmdNumber, "") + + err = webClient.SendBinaryMessage(conn, raw) if err != nil { - logger.Web.Warnln("write:", err) + logger.WebVoice.Warnln("write:", err) } return + } + + // add cmdID to list + + if isVoice { + logger.Web.Debugln("voiceCmdIDs", webClient.VoiceCmdIDs) + webClient.VoiceCmdIDs = append(webClient.VoiceCmdIDs, cmdID) + logger.Web.Debugln("after voiceCmdIDs", webClient.VoiceCmdIDs) } else { - var cmdIDInList bool - - logger.Web.Println("cmdID", isVoice, client.VoiceCmdIDs, client.MobileCmdIDs) - - if isVoice { - cmdIDInList = isCmdIDInList(client.VoiceCmdIDs, cmdID) - } else { - cmdIDInList = isCmdIDInList(client.MobileCmdIDs, cmdID) - } - - if cmdIDInList { // cmdID already in queue - raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusMessageAlreadyInQueue, cmdID, cmdNumber, "") - - err = client.SendBinaryMessage(conn, raw) - - if err != nil { - logger.WebVoice.Warnln("write:", err) - } - return - } - - // add cmdID to list - - if isVoice { - logger.Web.Debugln("voiceCmdIDs", client.VoiceCmdIDs) - client.VoiceCmdIDs = append(client.VoiceCmdIDs, cmdID) - logger.Web.Debugln("after voiceCmdIDs", client.VoiceCmdIDs) - } else { - logger.Web.Debugln("MobileCmdIDs", client.MobileCmdIDs) - client.MobileCmdIDs = append(client.MobileCmdIDs, cmdID) - logger.Web.Debugln("after MobileCmdIDs", client.MobileCmdIDs) - } + logger.Web.Debugln("MobileCmdIDs", webClient.MobileCmdIDs) + webClient.MobileCmdIDs = append(webClient.MobileCmdIDs, cmdID) + logger.Web.Debugln("after MobileCmdIDs", webClient.MobileCmdIDs) } } logger.Minecraft.Debugln("dest", dest, dest == kraProtocol.DestProxy) if dest == kraProtocol.DestProxy || dest == kraProtocol.DestPlayersCurrentServer { // forwarding message to java / minecraft - connForDest := getConnForDest(dest, uuid) - - logger.Minecraft.Debugln("forwarding...") - logger.Minecraft.Debugln("forwarding", client) - logger.Minecraft.Debugln("forwarding", connForDest) - - raw = kraProtocol.EncodeJavaMessage(status, cmdID, dest, uuid, cmdNumber, args) - - err = client.SendBinaryMessage(connForDest, raw) + err = SendMessageToMinecraftServer(status, dest, uuid, cmdNumber, args) if err != nil { - logger.Web.Warnln("write:", err) + raw := kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, args) + + webClient.SendBinaryMessage(conn, raw) + return } + + /* + connForDest := getConnForDest(dest, uuid) + + raw = kraProtocol.EncodeJavaMessage(status, cmdID, dest, uuid, cmdNumber, args) + + err = client.SendBinaryMessage(connForDest, raw) + + if err != nil { + logger.Web.Warnln("write:", err) + } */ } else { // web if isVoice { // message from voice if dest == kraProtocol.DestMobile { // forwarding message to mobile @@ -94,7 +92,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in if connForDest != nil { // mobile is connected raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusReply, cmdID, cmdNumber, args) - err = client.SendBinaryMessage(connForDest, raw) + err = webClient.SendBinaryMessage(connForDest, raw) if err != nil { logger.WebVoice.Warnln("write:", err) @@ -102,7 +100,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in } else { // mobile not connected raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusSend, 58299, cmdNumber, "") - err = client.SendBinaryMessage(conn, raw) + err = webClient.SendBinaryMessage(conn, raw) if err != nil { logger.WebVoice.Warnln("write:", err) @@ -115,7 +113,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in logger.Web.Debugln("status get reply") raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusReply, cmdID, cmdNumber, resArgs) - err = client.SendBinaryMessage(conn, raw) + err = webClient.SendBinaryMessage(conn, raw) if err != nil { logger.WebVoice.Warnln("write:", err) @@ -129,7 +127,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in if connForDest != nil { // voice connected raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusSend, cmdID, cmdNumber, args) - err = client.SendBinaryMessage(connForDest, raw) + err = webClient.SendBinaryMessage(connForDest, raw) if err != nil { logger.WebMobile.Warnln("write:", err) @@ -137,7 +135,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in } else { // voice not connected raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusSend, 5456, cmdNumber, "") - err = client.SendBinaryMessage(conn, raw) + err = webClient.SendBinaryMessage(conn, raw) if err != nil { logger.WebMobile.Warnln("write:", err) @@ -149,7 +147,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in if status == kraProtocol.StatusGet { raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusReply, cmdID, cmdNumber, resArgs) - err = client.SendBinaryMessage(conn, raw) + err = webClient.SendBinaryMessage(conn, raw) if err != nil { logger.WebVoice.Warnln("write:", err) @@ -158,7 +156,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in } else { // err dest unknown raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, "") - err = client.SendBinaryMessage(conn, raw) + err = webClient.SendBinaryMessage(conn, raw) if err != nil { logger.WebMobile.Warnln("write:", err) @@ -167,11 +165,11 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in } } - if client != nil { // remove cmdID from list + if webClient != nil { // remove cmdID from list if isVoice { - client.RemoveVoiceCmdID(cmdID) + webClient.RemoveVoiceCmdID(cmdID) } else { - client.RemoveMobileCmdID(cmdID) + webClient.RemoveMobileCmdID(cmdID) } /*var newArr []int