send message to mc server

master
Alex 2021-12-28 21:57:57 +01:00
parent 9ff320034f
commit 4af290fcf7
1 changed files with 57 additions and 59 deletions

View File

@ -19,36 +19,29 @@ import (
func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status int, cmdID int, dest int, cmdNumber int, args string) { func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status int, cmdID int, dest int, cmdNumber int, args string) {
var err error var err error
var raw []byte var raw []byte
var client *structs.WebClient
// TODO: handle other dests webClient := getWebClientByConn(conn)
if status == kraProtocol.StatusGet {
client = getWebClientByConn(conn)
if client == nil { if webClient == nil {
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, "") // TODO: when does this apply? Send error with conn?
err = client.SendBinaryMessage(conn, raw)
if err != nil {
logger.Web.Warnln("write:", err)
}
return return
} else { }
if status == kraProtocol.StatusGet {
var cmdIDInList bool var cmdIDInList bool
logger.Web.Println("cmdID", isVoice, client.VoiceCmdIDs, client.MobileCmdIDs) logger.Web.Println("cmdID", isVoice, webClient.VoiceCmdIDs, webClient.MobileCmdIDs)
if isVoice { if isVoice {
cmdIDInList = isCmdIDInList(client.VoiceCmdIDs, cmdID) cmdIDInList = isCmdIDInList(webClient.VoiceCmdIDs, cmdID)
} else { } else {
cmdIDInList = isCmdIDInList(client.MobileCmdIDs, cmdID) cmdIDInList = isCmdIDInList(webClient.MobileCmdIDs, cmdID)
} }
if cmdIDInList { // cmdID already in queue if cmdIDInList { // cmdID already in queue
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusMessageAlreadyInQueue, cmdID, cmdNumber, "") raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusMessageAlreadyInQueue, cmdID, cmdNumber, "")
err = client.SendBinaryMessage(conn, raw) err = webClient.SendBinaryMessage(conn, raw)
if err != nil { if err != nil {
logger.WebVoice.Warnln("write:", err) logger.WebVoice.Warnln("write:", err)
@ -59,25 +52,30 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
// add cmdID to list // add cmdID to list
if isVoice { if isVoice {
logger.Web.Debugln("voiceCmdIDs", client.VoiceCmdIDs) logger.Web.Debugln("voiceCmdIDs", webClient.VoiceCmdIDs)
client.VoiceCmdIDs = append(client.VoiceCmdIDs, cmdID) webClient.VoiceCmdIDs = append(webClient.VoiceCmdIDs, cmdID)
logger.Web.Debugln("after voiceCmdIDs", client.VoiceCmdIDs) logger.Web.Debugln("after voiceCmdIDs", webClient.VoiceCmdIDs)
} else { } else {
logger.Web.Debugln("MobileCmdIDs", client.MobileCmdIDs) logger.Web.Debugln("MobileCmdIDs", webClient.MobileCmdIDs)
client.MobileCmdIDs = append(client.MobileCmdIDs, cmdID) webClient.MobileCmdIDs = append(webClient.MobileCmdIDs, cmdID)
logger.Web.Debugln("after MobileCmdIDs", client.MobileCmdIDs) logger.Web.Debugln("after MobileCmdIDs", webClient.MobileCmdIDs)
}
} }
} }
logger.Minecraft.Debugln("dest", dest, dest == kraProtocol.DestProxy) logger.Minecraft.Debugln("dest", dest, dest == kraProtocol.DestProxy)
if dest == kraProtocol.DestProxy || dest == kraProtocol.DestPlayersCurrentServer { // forwarding message to java / minecraft if dest == kraProtocol.DestProxy || dest == kraProtocol.DestPlayersCurrentServer { // forwarding message to java / minecraft
connForDest := getConnForDest(dest, uuid) err = SendMessageToMinecraftServer(status, dest, uuid, cmdNumber, args)
logger.Minecraft.Debugln("forwarding...") if err != nil {
logger.Minecraft.Debugln("forwarding", client) raw := kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, args)
logger.Minecraft.Debugln("forwarding", connForDest)
webClient.SendBinaryMessage(conn, raw)
return
}
/*
connForDest := getConnForDest(dest, uuid)
raw = kraProtocol.EncodeJavaMessage(status, cmdID, dest, uuid, cmdNumber, args) raw = kraProtocol.EncodeJavaMessage(status, cmdID, dest, uuid, cmdNumber, args)
@ -85,7 +83,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
if err != nil { if err != nil {
logger.Web.Warnln("write:", err) logger.Web.Warnln("write:", err)
} } */
} else { // web } else { // web
if isVoice { // message from voice if isVoice { // message from voice
if dest == kraProtocol.DestMobile { // forwarding message to mobile 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 if connForDest != nil { // mobile is connected
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusReply, cmdID, cmdNumber, args) raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusReply, cmdID, cmdNumber, args)
err = client.SendBinaryMessage(connForDest, raw) err = webClient.SendBinaryMessage(connForDest, raw)
if err != nil { if err != nil {
logger.WebVoice.Warnln("write:", err) logger.WebVoice.Warnln("write:", err)
@ -102,7 +100,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
} else { // mobile not connected } else { // mobile not connected
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusSend, 58299, cmdNumber, "") raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusSend, 58299, cmdNumber, "")
err = client.SendBinaryMessage(conn, raw) err = webClient.SendBinaryMessage(conn, raw)
if err != nil { if err != nil {
logger.WebVoice.Warnln("write:", err) 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") logger.Web.Debugln("status get reply")
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusReply, cmdID, cmdNumber, resArgs) raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusReply, cmdID, cmdNumber, resArgs)
err = client.SendBinaryMessage(conn, raw) err = webClient.SendBinaryMessage(conn, raw)
if err != nil { if err != nil {
logger.WebVoice.Warnln("write:", err) 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 if connForDest != nil { // voice connected
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusSend, cmdID, cmdNumber, args) raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusSend, cmdID, cmdNumber, args)
err = client.SendBinaryMessage(connForDest, raw) err = webClient.SendBinaryMessage(connForDest, raw)
if err != nil { if err != nil {
logger.WebMobile.Warnln("write:", err) logger.WebMobile.Warnln("write:", err)
@ -137,7 +135,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
} else { // voice not connected } else { // voice not connected
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusSend, 5456, cmdNumber, "") raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusSend, 5456, cmdNumber, "")
err = client.SendBinaryMessage(conn, raw) err = webClient.SendBinaryMessage(conn, raw)
if err != nil { if err != nil {
logger.WebMobile.Warnln("write:", err) logger.WebMobile.Warnln("write:", err)
@ -149,7 +147,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
if status == kraProtocol.StatusGet { if status == kraProtocol.StatusGet {
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusReply, cmdID, cmdNumber, resArgs) raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusReply, cmdID, cmdNumber, resArgs)
err = client.SendBinaryMessage(conn, raw) err = webClient.SendBinaryMessage(conn, raw)
if err != nil { if err != nil {
logger.WebVoice.Warnln("write:", err) logger.WebVoice.Warnln("write:", err)
@ -158,7 +156,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
} else { // err dest unknown } else { // err dest unknown
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, "") raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, "")
err = client.SendBinaryMessage(conn, raw) err = webClient.SendBinaryMessage(conn, raw)
if err != nil { if err != nil {
logger.WebMobile.Warnln("write:", err) 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 { if isVoice {
client.RemoveVoiceCmdID(cmdID) webClient.RemoveVoiceCmdID(cmdID)
} else { } else {
client.RemoveMobileCmdID(cmdID) webClient.RemoveMobileCmdID(cmdID)
} }
/*var newArr []int /*var newArr []int