Compare commits
4 Commits
6c9a54179a
...
7af4023663
Author | SHA1 | Date |
---|---|---|
|
7af4023663 | |
|
34f012e999 | |
|
6e11457c3d | |
|
4e9f367371 |
|
@ -16,6 +16,15 @@ const (
|
|||
StatusReply = 16
|
||||
)
|
||||
|
||||
const (
|
||||
DestBackend = 1
|
||||
DestVoice = 2
|
||||
DestMobile = 3
|
||||
|
||||
DestProxy = 10
|
||||
DestPlayersCurrentServer = 11
|
||||
)
|
||||
|
||||
func SendMessageToClient(status int, cmdID int, cmdNumber int, args interface{}) []byte {
|
||||
argType := reflect.TypeOf(args).String()
|
||||
var argLen int
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
package minecraft
|
||||
|
||||
import (
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"krakatoa.net/backend/modules/configs/serverConfig"
|
||||
"krakatoa.net/backend/modules/kraProtocol"
|
||||
"krakatoa.net/backend/modules/logger"
|
||||
"krakatoa.net/backend/serverCommunication"
|
||||
)
|
||||
|
||||
func RestartServer(c *fiber.Ctx) error {
|
||||
if c.Params("accessKey") == serverConfig.Cfg.Servers.MinecraftServer.AccessKey {
|
||||
logger.Minecraft.Infoln("RestartServer msg", c.Params("serverName"), c.Hostname(), c.IP())
|
||||
|
||||
serverCommunication.SendMessageToMinecraftServer(kraProtocol.StatusSend, kraProtocol.DestProxy, "", 33329, c.Params("serverName"))
|
||||
|
||||
return c.SendStatus(fiber.StatusOK)
|
||||
}
|
||||
|
||||
return c.SendStatus(fiber.StatusUnauthorized)
|
||||
}
|
|
@ -2,6 +2,7 @@ package router
|
|||
|
||||
import (
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"krakatoa.net/backend/routers/api/v1/minecraft"
|
||||
"krakatoa.net/backend/routers/api/v1/mobile"
|
||||
"krakatoa.net/backend/routers/api/v1/voice"
|
||||
)
|
||||
|
@ -19,14 +20,7 @@ func SetupWebRoutes(app *fiber.App) {
|
|||
|
||||
mobileV1.Get("/:mobileWebCode", mobile.GetMobileWebToken)
|
||||
|
||||
// old routes
|
||||
|
||||
voiceApiV1 := app.Group("/voice/v1")
|
||||
|
||||
voiceApiV1.Get("/:voiceWebCode", voice.GetVoiceWebToken)
|
||||
|
||||
mobileApiV1 := app.Group("/mobile/v1")
|
||||
|
||||
mobileApiV1.Get("/:mobileWebCode", mobile.GetMobileWebToken)
|
||||
minecraftV1 := apiV1.Group("/minecraft")
|
||||
|
||||
minecraftV1.Get("/:accessKey/:serverName", minecraft.RestartServer)
|
||||
}
|
||||
|
|
|
@ -22,9 +22,9 @@ func GetMinecraftClientByName(Name string) *structs.MinecraftClient {
|
|||
}
|
||||
|
||||
func getMinecraftServerNameByDest(dest int) string {
|
||||
if dest == DestProxy {
|
||||
if dest == kraProtocol.DestProxy {
|
||||
return "proxy-1"
|
||||
} else { // get players current server from db
|
||||
} else { // get players current server from db if dest is 11
|
||||
return "lobby-1"
|
||||
}
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ func HandleMinecraftMessage(conn *websocket.Conn, status int, cmdID int, dest in
|
|||
var raw []byte
|
||||
var err error
|
||||
|
||||
if dest == DestBackend {
|
||||
if dest == kraProtocol.DestBackend {
|
||||
resArgs := minecraftCommandHandler(cmdNumber, playerUuid)
|
||||
|
||||
if status == kraProtocol.StatusGet {
|
||||
|
@ -45,7 +45,7 @@ func HandleMinecraftMessage(conn *websocket.Conn, status int, cmdID int, dest in
|
|||
logger.Minecraft.Warnln("write:", err)
|
||||
}
|
||||
}
|
||||
} else if dest == DestVoice || dest == DestMobile { // forwarding messsage to voice or mobile
|
||||
} else if dest == kraProtocol.DestVoice || dest == kraProtocol.DestMobile { // forwarding messsage to voice or mobile
|
||||
destConn := getConnForDest(dest, playerUuid)
|
||||
|
||||
if destConn != nil {
|
||||
|
@ -65,6 +65,16 @@ func HandleMinecraftMessage(conn *websocket.Conn, status int, cmdID int, dest in
|
|||
logger.Minecraft.Warnln("write:", err)
|
||||
}
|
||||
}
|
||||
} else if dest == kraProtocol.DestProxy {
|
||||
client := GetMinecraftClientByName("proxy-1")
|
||||
|
||||
raw := kraProtocol.SendMessageToJava(status, cmdID, dest, playerUuid, cmdNumber, args)
|
||||
|
||||
err = client.Connection.WriteMessage(websocket.BinaryMessage, raw)
|
||||
|
||||
if err != nil {
|
||||
logger.Minecraft.Warnln("write:", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -77,6 +87,7 @@ func minecraftCommandHandler(cmdNumber int, playerUuid string) (args string) {
|
|||
}
|
||||
}
|
||||
|
||||
// Deprecated: only for testing, use SendMessageToMinecraftServer instead
|
||||
func SendMessageToServer(dest int, playerUuid string, args string) {
|
||||
mcClient := GetMinecraftClientByName(getMinecraftServerNameByDest(dest))
|
||||
|
||||
|
@ -84,3 +95,18 @@ func SendMessageToServer(dest int, playerUuid string, args string) {
|
|||
|
||||
mcClient.Connection.WriteMessage(websocket.BinaryMessage, raw)
|
||||
}
|
||||
|
||||
func SendMessageToMinecraftServer(status int, dest int, playerUuid string, cmdNumber int, args string) {
|
||||
cmdID := 0
|
||||
raw := kraProtocol.SendMessageToJava(status, cmdID, dest, playerUuid, cmdNumber, args)
|
||||
|
||||
serverName := getMinecraftServerNameByDest(dest)
|
||||
|
||||
mcClient := GetMinecraftClientByName(serverName)
|
||||
|
||||
err := mcClient.Connection.WriteMessage(websocket.BinaryMessage, raw)
|
||||
|
||||
if err != nil {
|
||||
logger.Minecraft.Warnln("err", err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,27 +2,19 @@ package serverCommunication
|
|||
|
||||
import (
|
||||
"github.com/gofiber/websocket/v2"
|
||||
"krakatoa.net/backend/modules/kraProtocol"
|
||||
"krakatoa.net/backend/modules/logger"
|
||||
)
|
||||
|
||||
const (
|
||||
DestBackend = 1
|
||||
DestVoice = 2
|
||||
DestMobile = 3
|
||||
|
||||
DestProxy = 10
|
||||
DestPlayersCurrentServer = 11
|
||||
)
|
||||
|
||||
func getConnForDest(dest int, uuid string) *websocket.Conn {
|
||||
switch dest {
|
||||
case DestVoice:
|
||||
case kraProtocol.DestVoice:
|
||||
return GetWebClientByUuid(uuid).VoiceConn
|
||||
case DestMobile:
|
||||
case kraProtocol.DestMobile:
|
||||
return GetWebClientByUuid(uuid).MobileConn
|
||||
case DestProxy:
|
||||
case kraProtocol.DestProxy:
|
||||
return GetMinecraftClientByName("proxy-1").Connection
|
||||
case DestPlayersCurrentServer:
|
||||
case kraProtocol.DestPlayersCurrentServer:
|
||||
return GetMinecraftClientByName("lobby-1").Connection
|
||||
default:
|
||||
logger.Web.Println("conn for dest is nil")
|
||||
|
|
|
@ -69,7 +69,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
|
|||
}
|
||||
}
|
||||
|
||||
if dest == DestProxy || dest == DestPlayersCurrentServer { // forwarding message to java / minecraft
|
||||
if dest == kraProtocol.DestProxy || dest == kraProtocol.DestPlayersCurrentServer { // forwarding message to java / minecraft
|
||||
connForDest := getConnForDest(dest, uuid)
|
||||
|
||||
raw = kraProtocol.SendMessageToJava(status, cmdID, dest, uuid, cmdNumber, args)
|
||||
|
@ -81,7 +81,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
|
|||
}
|
||||
} else { // web
|
||||
if isVoice { // message from voice
|
||||
if dest == DestMobile { // forwarding message to mobile
|
||||
if dest == kraProtocol.DestMobile { // forwarding message to mobile
|
||||
connForDest := getConnForDest(dest, uuid) // get conn for mobile
|
||||
|
||||
if connForDest != nil { // mobile is connected
|
||||
|
@ -101,7 +101,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
|
|||
logger.WebVoice.Warnln("write:", err)
|
||||
}
|
||||
}
|
||||
} else if dest == DestBackend {
|
||||
} else if dest == kraProtocol.DestBackend {
|
||||
resArgs := voiceCommandHandler(cmdNumber, uuid)
|
||||
|
||||
if status == kraProtocol.StatusGet {
|
||||
|
@ -116,7 +116,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
|
|||
}
|
||||
}
|
||||
} else { // message from mobile
|
||||
if dest == DestVoice { // forwarding message to voice
|
||||
if dest == kraProtocol.DestVoice { // forwarding message to voice
|
||||
connForDest := getConnForDest(dest, uuid) // get conn for voice
|
||||
|
||||
if connForDest != nil { // voice connected
|
||||
|
@ -136,7 +136,7 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, status in
|
|||
logger.WebMobile.Warnln("write:", err)
|
||||
}
|
||||
}
|
||||
} else if dest == DestBackend {
|
||||
} else if dest == kraProtocol.DestBackend {
|
||||
resArgs := mobileCommandHandler(cmdNumber)
|
||||
|
||||
if status == kraProtocol.StatusGet {
|
||||
|
|
|
@ -69,13 +69,13 @@ func RunHub() {
|
|||
client.MobileCmdIDs = []int{}
|
||||
logger.Web.Println("delete mobileConn", client)
|
||||
|
||||
serverCommunication.SendMessageToServer(serverCommunication.DestProxy, uuid, "1")
|
||||
serverCommunication.SendMessageToServer(kraProtocol.DestProxy, uuid, "1")
|
||||
} else if client.VoiceConn == connection {
|
||||
client.VoiceConn = nil
|
||||
client.VoiceCmdIDs = []int{}
|
||||
logger.Web.Println("delete voiceConn", client)
|
||||
|
||||
serverCommunication.SendMessageToServer(serverCommunication.DestProxy, uuid, "2")
|
||||
serverCommunication.SendMessageToServer(kraProtocol.DestProxy, uuid, "2")
|
||||
}
|
||||
|
||||
logger.Web.Println("client after updating", client)
|
||||
|
|
Loading…
Reference in New Issue