From 25cdecbe37a64dd49e8d44e93ce08787297edf09 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 29 Jan 2021 22:37:27 -0500 Subject: [PATCH] Webpanel channels --- .../ControlPanelConfiguration.cs | 4 +- .../Controllers/ControlPanelController.cs | 37 ++++++++++++++++++- .../Properties/MasterVersionsAttribute.cs | 5 +++ src/Tgstation.Server.Host/appsettings.yml | 1 + 4 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/Tgstation.Server.Host/Configuration/ControlPanelConfiguration.cs b/src/Tgstation.Server.Host/Configuration/ControlPanelConfiguration.cs index 13320674dc..cae4f5f620 100644 --- a/src/Tgstation.Server.Host/Configuration/ControlPanelConfiguration.cs +++ b/src/Tgstation.Server.Host/Configuration/ControlPanelConfiguration.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace Tgstation.Server.Host.Configuration { @@ -22,6 +22,8 @@ namespace Tgstation.Server.Host.Configuration /// public bool AllowAnyOrigin { get; set; } + public string Channel { get; set; } + /// /// Origins allowed for CORS requests /// diff --git a/src/Tgstation.Server.Host/Controllers/ControlPanelController.cs b/src/Tgstation.Server.Host/Controllers/ControlPanelController.cs index 28f68d21d7..1898673d5a 100644 --- a/src/Tgstation.Server.Host/Controllers/ControlPanelController.cs +++ b/src/Tgstation.Server.Host/Controllers/ControlPanelController.cs @@ -1,10 +1,14 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.StaticFiles; +using Microsoft.Extensions.Options; using Microsoft.Extensions.Primitives; using Microsoft.Net.Http.Headers; using System; +using System.Globalization; using System.Net.Mime; +using Tgstation.Server.Api; +using Tgstation.Server.Host.Configuration; using Tgstation.Server.Host.Core; namespace Tgstation.Server.Host.Controllers @@ -20,13 +24,20 @@ namespace Tgstation.Server.Host.Controllers /// readonly IWebHostEnvironment hostEnvironment; + /// + /// The for the . + /// + readonly ControlPanelConfiguration controlPanelConfiguration; + /// /// Initializes a new instance of the . /// /// The value of . - public ControlPanelController(IWebHostEnvironment hostEnvironment) + /// The containing the value of . + public ControlPanelController(IWebHostEnvironment hostEnvironment, IOptions controlPanelConfigurationOptions) { this.hostEnvironment = hostEnvironment ?? throw new ArgumentNullException(nameof(hostEnvironment)); + controlPanelConfiguration = controlPanelConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(controlPanelConfigurationOptions)); } /// @@ -54,5 +65,29 @@ namespace Tgstation.Server.Host.Controllers return File("index.html", MediaTypeNames.Text.Html); } + + /// + /// + /// + /// + [Route("channel.json")] + [HttpGet] + public JsonResult GetChannelJson() + { + var controlPanelChannel = controlPanelConfiguration.Channel; + if (controlPanelChannel == "local") + controlPanelChannel = "/"; + + controlPanelChannel = controlPanelChannel + .Replace("${Major}", ApiHeaders.Version.Major.ToString(CultureInfo.InvariantCulture), StringComparison.Ordinal) + .Replace("${Minor}", ApiHeaders.Version.Minor.ToString(CultureInfo.InvariantCulture), StringComparison.Ordinal) + .Replace("${Patch}", ApiHeaders.Version.Build.ToString(CultureInfo.InvariantCulture), StringComparison.Ordinal); + + return Json(new + { + FormatVersion = 1, + Channel = controlPanelChannel, + }); + } } } diff --git a/src/Tgstation.Server.Host/Properties/MasterVersionsAttribute.cs b/src/Tgstation.Server.Host/Properties/MasterVersionsAttribute.cs index 06d2665cbc..d6552a90d2 100644 --- a/src/Tgstation.Server.Host/Properties/MasterVersionsAttribute.cs +++ b/src/Tgstation.Server.Host/Properties/MasterVersionsAttribute.cs @@ -36,6 +36,11 @@ namespace Tgstation.Server.Host.Properties /// public string RawHostWatchdogVersion { get; } + /// + /// The compile time default + /// + public string DefaultControlPanelChannel { get; } + /// /// Initializes a new instance of the . /// diff --git a/src/Tgstation.Server.Host/appsettings.yml b/src/Tgstation.Server.Host/appsettings.yml index b53cd2832a..a8467be26e 100644 --- a/src/Tgstation.Server.Host/appsettings.yml +++ b/src/Tgstation.Server.Host/appsettings.yml @@ -28,6 +28,7 @@ Logging: Microsoft: Warning ControlPanel: Enable: false + Channel: https://tgstation.github.io/tgstation-server-webpanel/api/${Major}.${Minor}.${Patch} AllowAnyOrigin: false AllowedOrigins: [] Updates: