auto restart system

master
Alex 2021-12-27 22:46:38 +01:00
parent 34f012e999
commit 7af4023663
3 changed files with 55 additions and 4 deletions

View File

@ -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)
}

View File

@ -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,4 +20,7 @@ func SetupWebRoutes(app *fiber.App) {
mobileV1.Get("/:mobileWebCode", mobile.GetMobileWebToken)
minecraftV1 := apiV1.Group("/minecraft")
minecraftV1.Get("/:accessKey/:serverName", minecraft.RestartServer)
}

View File

@ -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)
}
}