From d30a2ff408668161d1763c6e60c4122cb9234a0d Mon Sep 17 00:00:00 2001 From: CyberL1 Date: Thu, 23 May 2024 18:21:09 +0200 Subject: [PATCH] feat: server work modes --- .../Enums/SettingsEnum.cs | 3 ++- .../Enums/WorkModeEnum.cs | 7 ++++++ .../Helpers/Config/Settings.cs | 5 +++- .../External}/InvitesController.cs | 4 ++-- .../External}/McoController.cs | 4 ++-- .../External}/OpsController.cs | 4 ++-- .../External}/SubscriptionsController.cs | 4 ++-- .../External}/TrialController.cs | 4 ++-- .../External}/WorldsController.cs | 4 ++-- Minecraft-Realms-Emulator/Program.cs | 24 +++++++++++++++++++ 10 files changed, 49 insertions(+), 14 deletions(-) create mode 100644 Minecraft-Realms-Emulator/Enums/WorkModeEnum.cs rename Minecraft-Realms-Emulator/{Controllers => Modes/External}/InvitesController.cs (98%) rename Minecraft-Realms-Emulator/{Controllers => Modes/External}/McoController.cs (91%) rename Minecraft-Realms-Emulator/{Controllers => Modes/External}/OpsController.cs (95%) rename Minecraft-Realms-Emulator/{Controllers => Modes/External}/SubscriptionsController.cs (92%) rename Minecraft-Realms-Emulator/{Controllers => Modes/External}/TrialController.cs (87%) rename Minecraft-Realms-Emulator/{Controllers => Modes/External}/WorldsController.cs (99%) diff --git a/Minecraft-Realms-Emulator/Enums/SettingsEnum.cs b/Minecraft-Realms-Emulator/Enums/SettingsEnum.cs index 7113caf..3bdee8a 100644 --- a/Minecraft-Realms-Emulator/Enums/SettingsEnum.cs +++ b/Minecraft-Realms-Emulator/Enums/SettingsEnum.cs @@ -4,6 +4,7 @@ { newsLink, defaultServerAddress, - trialMode + trialMode, + workMode } } diff --git a/Minecraft-Realms-Emulator/Enums/WorkModeEnum.cs b/Minecraft-Realms-Emulator/Enums/WorkModeEnum.cs new file mode 100644 index 0000000..65e6386 --- /dev/null +++ b/Minecraft-Realms-Emulator/Enums/WorkModeEnum.cs @@ -0,0 +1,7 @@ +namespace Minecraft_Realms_Emulator.Enums +{ + public enum WorkModeEnum + { + EXTERNAL + } +} diff --git a/Minecraft-Realms-Emulator/Helpers/Config/Settings.cs b/Minecraft-Realms-Emulator/Helpers/Config/Settings.cs index a412673..2d0a640 100644 --- a/Minecraft-Realms-Emulator/Helpers/Config/Settings.cs +++ b/Minecraft-Realms-Emulator/Helpers/Config/Settings.cs @@ -1,9 +1,12 @@ -namespace Minecraft_Realms_Emulator.Helpers.Config +using Minecraft_Realms_Emulator.Enums; + +namespace Minecraft_Realms_Emulator.Helpers.Config { public class Settings { public string DefaultServerAddress { get; set; } = "127.0.0.1"; public string NewsLink { get; set; } = "https://github.com/CyberL1/Minecraft-Realms-Emulator"; public bool TrialMode { get; set; } = true; + public string WorkMode { get; set; } = nameof(WorkModeEnum.EXTERNAL); } } diff --git a/Minecraft-Realms-Emulator/Controllers/InvitesController.cs b/Minecraft-Realms-Emulator/Modes/External/InvitesController.cs similarity index 98% rename from Minecraft-Realms-Emulator/Controllers/InvitesController.cs rename to Minecraft-Realms-Emulator/Modes/External/InvitesController.cs index a0e8dd8..de0c918 100644 --- a/Minecraft-Realms-Emulator/Controllers/InvitesController.cs +++ b/Minecraft-Realms-Emulator/Modes/External/InvitesController.cs @@ -6,9 +6,9 @@ using Minecraft_Realms_Emulator.Entities; using Minecraft_Realms_Emulator.Requests; using Minecraft_Realms_Emulator.Responses; -namespace Minecraft_Realms_Emulator.Controllers +namespace Minecraft_Realms_Emulator.Modes.External.Controllers { - [Route("[controller]")] + [Route("modes/external/[controller]")] [ApiController] [RequireMinecraftCookie] public class InvitesController : ControllerBase diff --git a/Minecraft-Realms-Emulator/Controllers/McoController.cs b/Minecraft-Realms-Emulator/Modes/External/McoController.cs similarity index 91% rename from Minecraft-Realms-Emulator/Controllers/McoController.cs rename to Minecraft-Realms-Emulator/Modes/External/McoController.cs index f3bc5e2..d68758d 100644 --- a/Minecraft-Realms-Emulator/Controllers/McoController.cs +++ b/Minecraft-Realms-Emulator/Modes/External/McoController.cs @@ -5,9 +5,9 @@ using Minecraft_Realms_Emulator.Enums; using Minecraft_Realms_Emulator.Helpers; using Minecraft_Realms_Emulator.Responses; -namespace Minecraft_Realms_Emulator.Controllers +namespace Minecraft_Realms_Emulator.Modes.External.Controllers { - [Route("[controller]")] + [Route("modes/external/[controller]")] [ApiController] [RequireMinecraftCookie] public class McoController : ControllerBase diff --git a/Minecraft-Realms-Emulator/Controllers/OpsController.cs b/Minecraft-Realms-Emulator/Modes/External/OpsController.cs similarity index 95% rename from Minecraft-Realms-Emulator/Controllers/OpsController.cs rename to Minecraft-Realms-Emulator/Modes/External/OpsController.cs index f5437f4..1b5693d 100644 --- a/Minecraft-Realms-Emulator/Controllers/OpsController.cs +++ b/Minecraft-Realms-Emulator/Modes/External/OpsController.cs @@ -3,9 +3,9 @@ using Minecraft_Realms_Emulator.Attributes; using Minecraft_Realms_Emulator.Data; using Minecraft_Realms_Emulator.Responses; -namespace Minecraft_Realms_Emulator.Controllers +namespace Minecraft_Realms_Emulator.Modes.External.Controllers { - [Route("[controller]")] + [Route("modes/exterrnal/[controller]")] [ApiController] [RequireMinecraftCookie] public class OpsController : ControllerBase diff --git a/Minecraft-Realms-Emulator/Controllers/SubscriptionsController.cs b/Minecraft-Realms-Emulator/Modes/External/SubscriptionsController.cs similarity index 92% rename from Minecraft-Realms-Emulator/Controllers/SubscriptionsController.cs rename to Minecraft-Realms-Emulator/Modes/External/SubscriptionsController.cs index 6876866..bdaacb4 100644 --- a/Minecraft-Realms-Emulator/Controllers/SubscriptionsController.cs +++ b/Minecraft-Realms-Emulator/Modes/External/SubscriptionsController.cs @@ -4,9 +4,9 @@ using Minecraft_Realms_Emulator.Attributes; using Minecraft_Realms_Emulator.Data; using Minecraft_Realms_Emulator.Responses; -namespace Minecraft_Realms_Emulator.Controllers +namespace Minecraft_Realms_Emulator.Modes.External.Controllers { - [Route("[controller]")] + [Route("modes/external/[controller]")] [ApiController] [RequireMinecraftCookie] public class SubscriptionsController : ControllerBase diff --git a/Minecraft-Realms-Emulator/Controllers/TrialController.cs b/Minecraft-Realms-Emulator/Modes/External/TrialController.cs similarity index 87% rename from Minecraft-Realms-Emulator/Controllers/TrialController.cs rename to Minecraft-Realms-Emulator/Modes/External/TrialController.cs index 7ebabb2..916dcd5 100644 --- a/Minecraft-Realms-Emulator/Controllers/TrialController.cs +++ b/Minecraft-Realms-Emulator/Modes/External/TrialController.cs @@ -4,9 +4,9 @@ using Minecraft_Realms_Emulator.Data; using Minecraft_Realms_Emulator.Enums; using Minecraft_Realms_Emulator.Helpers; -namespace Minecraft_Realms_Emulator.Controllers +namespace Minecraft_Realms_Emulator.Modes.External.Controllers { - [Route("[controller]")] + [Route("modes/external/[controller]")] [ApiController] [RequireMinecraftCookie] public class TrialController : ControllerBase diff --git a/Minecraft-Realms-Emulator/Controllers/WorldsController.cs b/Minecraft-Realms-Emulator/Modes/External/WorldsController.cs similarity index 99% rename from Minecraft-Realms-Emulator/Controllers/WorldsController.cs rename to Minecraft-Realms-Emulator/Modes/External/WorldsController.cs index c5a0957..4085f0d 100644 --- a/Minecraft-Realms-Emulator/Controllers/WorldsController.cs +++ b/Minecraft-Realms-Emulator/Modes/External/WorldsController.cs @@ -10,9 +10,9 @@ using Minecraft_Realms_Emulator.Responses; using Newtonsoft.Json; using Semver; -namespace Minecraft_Realms_Emulator.Controllers +namespace Minecraft_Realms_Emulator.Modes.External.Controllers { - [Route("[controller]")] + [Route("modes/external/[controller]")] [ApiController] [RequireMinecraftCookie] public class WorldsController : ControllerBase diff --git a/Minecraft-Realms-Emulator/Program.cs b/Minecraft-Realms-Emulator/Program.cs index d250a68..4986e8c 100644 --- a/Minecraft-Realms-Emulator/Program.cs +++ b/Minecraft-Realms-Emulator/Program.cs @@ -1,5 +1,7 @@ +using Microsoft.AspNetCore.Rewrite; using Microsoft.EntityFrameworkCore; using Minecraft_Realms_Emulator.Data; +using Minecraft_Realms_Emulator.Enums; using Minecraft_Realms_Emulator.Helpers; using Minecraft_Realms_Emulator.Middlewares; using Npgsql; @@ -44,6 +46,28 @@ if (app.Environment.IsDevelopment()) app.UseMiddleware(); app.UseMiddleware(); +var scope = app.Services.CreateScope(); +var db = scope.ServiceProvider.GetRequiredService(); + app.MapControllers(); +var config = new ConfigHelper(db); +var mode = config.GetSetting(nameof(SettingsEnum.workMode)); + +if (mode == null) +{ + Console.WriteLine("Cannot get server work mode, exiting"); + Environment.Exit(1); +} + +if (!Enum.IsDefined(typeof(WorkModeEnum), mode.Value)) +{ + Console.WriteLine("Invalid server work mode, exiting"); + Environment.Exit(1); +} + +var rewriteOptions = new RewriteOptions().AddRewrite(@"^(?!.*configuration)(.*)$", $"modes/{mode.Value}/$1", true); +app.UseRewriter(rewriteOptions); + +Console.WriteLine($"Running in {mode.Value} mode"); app.Run();