Compare commits

..

3 Commits

Author SHA1 Message Date
ff325cf5f6 fix: update game version on slot if server has updates enabled 2024-12-19 21:06:02 +01:00
484d12463a feat: update server on start 2024-12-19 15:08:41 +01:00
0a89b6ade1 fix: logs in admin panel 2024-12-18 14:00:05 +01:00
6 changed files with 35 additions and 6 deletions

View File

@ -902,7 +902,7 @@ namespace Minecraft_Realms_Emulator.Modes.Realms.Controllers
[HttpGet("v1/{wId}/join/pc")] [HttpGet("v1/{wId}/join/pc")]
public async Task<ActionResult<Connection>> Join(int wId) public async Task<ActionResult<Connection>> Join(int wId)
{ {
var connection = _context.Connections.Include(c => c.World).FirstOrDefault(x => x.World.Id == wId); var connection = _context.Connections.Include(c => c.World).Include(c => c.World.Slots).FirstOrDefault(x => x.World.Id == wId);
var isRunning = new DockerHelper(connection.World).IsRunning(); var isRunning = new DockerHelper(connection.World).IsRunning();
var query = new MinecraftServerQuery().Query(connection.Address); var query = new MinecraftServerQuery().Query(connection.Address);
@ -918,7 +918,17 @@ namespace Minecraft_Realms_Emulator.Modes.Realms.Controllers
query = new MinecraftServerQuery().Query(connection.Address); query = new MinecraftServerQuery().Query(connection.Address);
} }
Slot activeSlot = connection.World.Slots.Find(s => s.SlotId == connection.World.ActiveSlot);
string cookie = Request.Headers.Cookie; string cookie = Request.Headers.Cookie;
string gameVersion = cookie.Split(";")[2].Split("=")[1];
if (new MinecraftVersionParser.MinecraftVersion(activeSlot.Version).CompareTo(new MinecraftVersionParser.MinecraftVersion(gameVersion)) < 0 && new DockerHelper(connection.World).RunCommand("! test -f .no-update") == 0)
{
activeSlot.Version = gameVersion;
_context.SaveChanges();
}
string playerUUID = cookie.Split(";")[0].Split(":")[2]; string playerUUID = cookie.Split(";")[0].Split(":")[2];
if (connection.World.OwnerUUID == playerUUID) if (connection.World.OwnerUUID == playerUUID)

View File

@ -116,7 +116,7 @@ namespace Minecraft_Realms_Emulator.Modes.Realms.Helpers
commandProcess.Start(); commandProcess.Start();
} }
public void RunCommand(string command) public int RunCommand(string command)
{ {
ProcessStartInfo commandProcessInfo = new(); ProcessStartInfo commandProcessInfo = new();
@ -127,6 +127,9 @@ namespace Minecraft_Realms_Emulator.Modes.Realms.Helpers
commandProcess.StartInfo = commandProcessInfo; commandProcess.StartInfo = commandProcessInfo;
commandProcess.Start(); commandProcess.Start();
commandProcess.WaitForExit();
return commandProcess.ExitCode;
} }
} }
} }

View File

@ -33,6 +33,14 @@ builder.Services.AddDbContext<DataContext>(options =>
options.UseNpgsql(dataSource); options.UseNpgsql(dataSource);
}); });
builder.Services.AddCors(options =>
{
options.AddDefaultPolicy(policy =>
{
policy.WithOrigins("http://localhost:5192");
});
});
var app = builder.Build(); var app = builder.Build();
// Initialize database // Initialize database
@ -48,6 +56,7 @@ if (app.Environment.IsDevelopment())
var scope = app.Services.CreateScope(); var scope = app.Services.CreateScope();
var db = scope.ServiceProvider.GetRequiredService<DataContext>(); var db = scope.ServiceProvider.GetRequiredService<DataContext>();
app.UseCors();
app.MapControllers(); app.MapControllers();
var mode = Environment.GetEnvironmentVariable("WORKMODE"); var mode = Environment.GetEnvironmentVariable("WORKMODE");

View File

@ -3,7 +3,7 @@ FROM eclipse-temurin:21-jre-alpine
COPY . . COPY . .
RUN apk upgrade RUN apk upgrade
RUN apk add openssl RUN apk add openssl curl jq
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 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 RUN tar xzf rcon-cli.tar.gz
@ -12,7 +12,6 @@ RUN rm rcon-cli.tar.gz
RUN mv rcon-cli /bin/rcon-cli RUN mv rcon-cli /bin/rcon-cli
WORKDIR mc WORKDIR mc
RUN wget -O server.jar https://piston-data.mojang.com/v1/objects/450698d1863ab5180c25d7c804ef0fe6369dd1ba/server.jar
EXPOSE 25565 EXPOSE 25565
ENTRYPOINT ["/entrypoint"] ENTRYPOINT ["/entrypoint"]

View File

@ -11,4 +11,12 @@ if [ ! -f server.properties ]; then
echo "level-name=slot-1" >> server.properties echo "level-name=slot-1" >> server.properties
fi fi
# Download latest server.jar
if [ ! -f .no-update ]; then
VERSION_URL=$(curl https://piston-meta.mojang.com/mc/game/version_manifest_v2.json | jq -r '.latest.release as $latest | .versions | to_entries[] | select(.value.id == $latest) | .value.url')
SERVER_URL=$(curl $VERSION_URL | jq -r .downloads.server.url)
wget -O server.jar $SERVER_URL
fi
java -jar server.jar java -jar server.jar

View File

@ -2,7 +2,7 @@
logs: "x", logs: "x",
start: (dotNetObject, serverId) => { start: (dotNetObject, serverId) => {
logs = new EventSource(`http://localhost:8080/api/admin/servers/${serverId}/logs`, { withCredentials: true }); logs = new EventSource(`http://localhost:8080/api/admin/servers/${serverId}/logs`);
logs.onmessage = event => { logs.onmessage = event => {
dotNetObject.invokeMethodAsync("ReceiveLog", event.data); dotNetObject.invokeMethodAsync("ReceiveLog", event.data);