using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Cors; using Microsoft.EntityFrameworkCore; using Newtonsoft.Json.Linq; using RadicadeServer.DB; using RadicadeServer.RecNet.Config; using RadicadeServer.Utils; namespace RadicadeServer.Admin { [Route("admin/version")] [EnableCors("AdminPanel")] public class AdminVersionAPI(RecDBContext db) : Controller { private Task RejectInvalidKey(string key) { return Task.FromResult(key.IsAdminKey() ? null : Unauthorized("Invalid secret")); } private async Task SetServerConfigValue(string keyName, string key, string value) { var rejection = await RejectInvalidKey(key); if (rejection != null) return rejection; var existingValue = await db.ServerConfig.FirstOrDefaultAsync(x => x.Key == keyName); if (existingValue != null) { existingValue.Value = value; } else { await db.ServerConfig.AddAsync(new ServerConfigVal { Key = keyName, Value = value }); } await db.SaveChangesAsync(); return Ok("Set to: " + value); } [HttpGet("setgameversion")] public async Task SetGameVersion([FromQuery] string key, [FromQuery] string value) { return await SetServerConfigValue("GameVersion", key, value); } [HttpGet("setversion")] public async Task SetVersion([FromQuery] string key, [FromQuery] string value) { return await SetServerConfigValue("BarrelVersion", key, value); } [HttpGet("setkey")] public async Task SetKey([FromQuery] string key, [FromQuery] string value) { return await SetServerConfigValue("BarrelKey", key, value); } [HttpGet("setcheck")] public async Task SetCheck([FromQuery] string key, [FromQuery] string value) { return await SetServerConfigValue("BarrelCheck", key, value); } [HttpGet("setmanifestversion")] public async Task SetManifestVersion([FromQuery] string key, [FromQuery] string value) { return await SetServerConfigValue("ApprovedManifestVersion", key, value); } [HttpGet("setmanifestsha256")] public async Task SetManifestSha256([FromQuery] string key, [FromQuery] string value) { return await SetServerConfigValue("ApprovedManifestSha256", key, value); } [HttpGet("setgamedownloadurl")] public async Task SetGameDownloadUrl([FromQuery] string key, [FromQuery] string value) { return await SetServerConfigValue("GameDownloadUrl", key, value); } [HttpGet("setlaunchticket")] public async Task SetLaunchTicket([FromQuery] string key, [FromQuery] string value) { return await SetServerConfigValue("LaunchTicket", key, value); } [HttpGet("setlaunchticketrequired")] public async Task SetLaunchTicketRequired([FromQuery] string key, [FromQuery] bool value) { return await SetServerConfigValue("LaunchTicketRequired", key, value.ToString()); } [HttpGet("setlaunchticketurl")] public async Task SetLaunchTicketUrl([FromQuery] string key, [FromQuery] string value) { return await SetServerConfigValue("LaunchTicketUrl", key, value); } [HttpGet("setlaunchticketaudience")] public async Task SetLaunchTicketAudience([FromQuery] string key, [FromQuery] string value) { return await SetServerConfigValue("LaunchTicketAudience", key, value); } [HttpGet("setlaunchticketnonce")] public async Task SetLaunchTicketNonce([FromQuery] string key, [FromQuery] string value) { return await SetServerConfigValue("LaunchTicketNonce", key, value); } [HttpGet("setgamepackagesha256")] public async Task SetGamePackageSha256([FromQuery] string key, [FromQuery] string value) { return await SetServerConfigValue("GamePackageSha256", key, value); } [HttpGet("setgamepackagesize")] public async Task SetGamePackageSize([FromQuery] string key, [FromQuery] long value) { return await SetServerConfigValue("GamePackageSize", key, value.ToString()); } [HttpGet("setgameextractsubdirectory")] public async Task SetGameExtractSubdirectory([FromQuery] string key, [FromQuery] string value) { return await SetServerConfigValue("GameExtractSubdirectory", key, value); } [HttpGet("setlaunchermanifestnotes")] public async Task SetLauncherManifestNotes([FromQuery] string key, [FromQuery] string value) { return await SetServerConfigValue("LauncherManifestNotes", key, value); } [HttpGet("setlaunchermanifestdelete")] public async Task SetLauncherManifestDelete([FromQuery] string key, [FromQuery] string value) { return await SetServerConfigValue("LauncherManifestDelete", key, value); } } }