auto restart system
parent
34f012e999
commit
7af4023663
|
@ -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 (
|
import (
|
||||||
"github.com/gofiber/fiber/v2"
|
"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/mobile"
|
||||||
"krakatoa.net/backend/routers/api/v1/voice"
|
"krakatoa.net/backend/routers/api/v1/voice"
|
||||||
)
|
)
|
||||||
|
@ -19,4 +20,7 @@ func SetupWebRoutes(app *fiber.App) {
|
||||||
|
|
||||||
mobileV1.Get("/:mobileWebCode", mobile.GetMobileWebToken)
|
mobileV1.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 {
|
func getMinecraftServerNameByDest(dest int) string {
|
||||||
if dest == DestProxy {
|
if dest == kraProtocol.DestProxy {
|
||||||
return "proxy-1"
|
return "proxy-1"
|
||||||
} else { // get players current server from db
|
} else { // get players current server from db if dest is 11
|
||||||
return "lobby-1"
|
return "lobby-1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ func HandleMinecraftMessage(conn *websocket.Conn, status int, cmdID int, dest in
|
||||||
var raw []byte
|
var raw []byte
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
if dest == DestBackend {
|
if dest == kraProtocol.DestBackend {
|
||||||
resArgs := minecraftCommandHandler(cmdNumber, playerUuid)
|
resArgs := minecraftCommandHandler(cmdNumber, playerUuid)
|
||||||
|
|
||||||
if status == kraProtocol.StatusGet {
|
if status == kraProtocol.StatusGet {
|
||||||
|
@ -45,7 +45,7 @@ func HandleMinecraftMessage(conn *websocket.Conn, status int, cmdID int, dest in
|
||||||
logger.Minecraft.Warnln("write:", err)
|
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)
|
destConn := getConnForDest(dest, playerUuid)
|
||||||
|
|
||||||
if destConn != nil {
|
if destConn != nil {
|
||||||
|
@ -65,6 +65,16 @@ func HandleMinecraftMessage(conn *websocket.Conn, status int, cmdID int, dest in
|
||||||
logger.Minecraft.Warnln("write:", err)
|
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) {
|
func SendMessageToServer(dest int, playerUuid string, args string) {
|
||||||
mcClient := GetMinecraftClientByName(getMinecraftServerNameByDest(dest))
|
mcClient := GetMinecraftClientByName(getMinecraftServerNameByDest(dest))
|
||||||
|
|
||||||
|
@ -84,3 +95,18 @@ func SendMessageToServer(dest int, playerUuid string, args string) {
|
||||||
|
|
||||||
mcClient.Connection.WriteMessage(websocket.BinaryMessage, raw)
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue