diff --git a/Minecraft-Realms-Emulator/Modes/Realms/Controllers/WorldsController.cs b/Minecraft-Realms-Emulator/Modes/Realms/Controllers/WorldsController.cs index 4633b14..f724307 100644 --- a/Minecraft-Realms-Emulator/Modes/Realms/Controllers/WorldsController.cs +++ b/Minecraft-Realms-Emulator/Modes/Realms/Controllers/WorldsController.cs @@ -657,6 +657,13 @@ namespace Minecraft_Realms_Emulator.Modes.Realms.Controllers public ActionResult Reset(int wId) { Console.WriteLine($"Resetting world {wId}"); + + var world = _context.Worlds.Find(wId); + var server = new DockerHelper(world); + + server.RunCommand("rm -rf world"); + server.RebootServer(); + return Ok(true); } diff --git a/Minecraft-Realms-Emulator/Modes/Realms/Helpers/DockerHelper.cs b/Minecraft-Realms-Emulator/Modes/Realms/Helpers/DockerHelper.cs index 958558e..2870ae1 100644 --- a/Minecraft-Realms-Emulator/Modes/Realms/Helpers/DockerHelper.cs +++ b/Minecraft-Realms-Emulator/Modes/Realms/Helpers/DockerHelper.cs @@ -58,6 +58,18 @@ namespace Minecraft_Realms_Emulator.Modes.Realms.Helpers serverProcess.Start(); } + public void RebootServer() + { + ProcessStartInfo serverProcessInfo = new(); + + serverProcessInfo.FileName = "docker"; + serverProcessInfo.Arguments = $"container restart realm-server-{world.Id}"; + + Process serverProcess = new(); + serverProcess.StartInfo = serverProcessInfo; + serverProcess.Start(); + } + public void DeleteServer() { ProcessStartInfo serverProcessInfo = new(); @@ -110,5 +122,18 @@ namespace Minecraft_Realms_Emulator.Modes.Realms.Helpers commandProcess.Start(); } + + public void RunCommand(string command) + { + ProcessStartInfo commandProcessInfo = new(); + + commandProcessInfo.FileName = "docker"; + commandProcessInfo.Arguments = $"exec realm-server-{world.Id} {command}"; + + Process commandProcess = new(); + commandProcess.StartInfo = commandProcessInfo; + + commandProcess.Start(); + } } } \ No newline at end of file diff --git a/Minecraft-Realms-Emulator/Resources/files/template/Dockerfile b/Minecraft-Realms-Emulator/Resources/files/template/Dockerfile index 40ccfdc..d19b3fe 100644 --- a/Minecraft-Realms-Emulator/Resources/files/template/Dockerfile +++ b/Minecraft-Realms-Emulator/Resources/files/template/Dockerfile @@ -1,13 +1,9 @@ FROM eclipse-temurin:21-jre-alpine -WORKDIR /server COPY . . -RUN mkdir mc -WORKDIR mc - RUN apk upgrade -RUN apk add openssl +RUN apk add openssl at RUN wget -O rcon-cli.tar.gz https://github.com/itzg/rcon-cli/releases/download/1.6.7/rcon-cli_1.6.7_linux_amd64.tar.gz RUN tar xzf rcon-cli.tar.gz @@ -15,6 +11,7 @@ RUN tar xzf rcon-cli.tar.gz RUN rm rcon-cli.tar.gz RUN mv rcon-cli /bin/rcon-cli +WORKDIR mc RUN wget -O server.jar https://piston-data.mojang.com/v1/objects/450698d1863ab5180c25d7c804ef0fe6369dd1ba/server.jar EXPOSE 25565