From 25cdecbe37a64dd49e8d44e93ce08787297edf09 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 29 Jan 2021 22:37:27 -0500 Subject: [PATCH 1/8] 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: From ec2182e6437a162c6df7fbdd12b96f6ff4fb0acc Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 29 Jan 2021 22:39:53 -0500 Subject: [PATCH 2/8] Add missing documentation --- .../Configuration/ControlPanelConfiguration.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Tgstation.Server.Host/Configuration/ControlPanelConfiguration.cs b/src/Tgstation.Server.Host/Configuration/ControlPanelConfiguration.cs index cae4f5f620..3314c4eea5 100644 --- a/src/Tgstation.Server.Host/Configuration/ControlPanelConfiguration.cs +++ b/src/Tgstation.Server.Host/Configuration/ControlPanelConfiguration.cs @@ -22,6 +22,9 @@ namespace Tgstation.Server.Host.Configuration /// public bool AllowAnyOrigin { get; set; } + /// + /// The channel to retrieve the webpanel from. "local" uses the bundled version. + /// public string Channel { get; set; } /// From ed8a1988c728753d9bfdd1cb0d992284a77dff59 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 29 Jan 2021 22:40:38 -0500 Subject: [PATCH 3/8] Bump control panel version to 2.1.0 --- build/ControlPanelVersion.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ControlPanelVersion.props b/build/ControlPanelVersion.props index ba79100b84..8662a371ab 100644 --- a/build/ControlPanelVersion.props +++ b/build/ControlPanelVersion.props @@ -1,6 +1,6 @@ - 2.0.1 + 2.1.0 From 0e916c2d97f6d1d106859470841c0d68cc315f1c Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 29 Jan 2021 22:53:51 -0500 Subject: [PATCH 4/8] Fixes and documentation --- .../Controllers/ControlPanelController.cs | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/Tgstation.Server.Host/Controllers/ControlPanelController.cs b/src/Tgstation.Server.Host/Controllers/ControlPanelController.cs index 1898673d5a..2f1144c764 100644 --- a/src/Tgstation.Server.Host/Controllers/ControlPanelController.cs +++ b/src/Tgstation.Server.Host/Controllers/ControlPanelController.cs @@ -40,6 +40,30 @@ namespace Tgstation.Server.Host.Controllers controlPanelConfiguration = controlPanelConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(controlPanelConfigurationOptions)); } + /// + /// Returns the . + /// + /// A with the . + [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, + }); + } + /// /// Handle a GET request to the control panel route. Route to static files if they exist, otherwise index.html. /// @@ -65,29 +89,5 @@ 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, - }); - } } } From 9548f4c043c9af3cc1ee0dc9ae02a9c18275c8ac Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 29 Jan 2021 23:12:22 -0500 Subject: [PATCH 5/8] Use the /app route for the local panel --- src/Tgstation.Server.Host/Controllers/ControlPanelController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tgstation.Server.Host/Controllers/ControlPanelController.cs b/src/Tgstation.Server.Host/Controllers/ControlPanelController.cs index 2f1144c764..71de870e2c 100644 --- a/src/Tgstation.Server.Host/Controllers/ControlPanelController.cs +++ b/src/Tgstation.Server.Host/Controllers/ControlPanelController.cs @@ -50,7 +50,7 @@ namespace Tgstation.Server.Host.Controllers { var controlPanelChannel = controlPanelConfiguration.Channel; if (controlPanelChannel == "local") - controlPanelChannel = "/"; + controlPanelChannel = Application.ControlPanelRoute; controlPanelChannel = controlPanelChannel .Replace("${Major}", ApiHeaders.Version.Major.ToString(CultureInfo.InvariantCulture), StringComparison.Ordinal) From 518a0c3ed09724026ea335d2f1b9b51f826e7322 Mon Sep 17 00:00:00 2001 From: alexkar598 <25136265+alexkar598@users.noreply.github.com> Date: Fri, 29 Jan 2021 23:40:54 -0500 Subject: [PATCH 6/8] Bump to v2.1.2 --- build/ControlPanelVersion.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ControlPanelVersion.props b/build/ControlPanelVersion.props index 8662a371ab..98d6fd4bc5 100644 --- a/build/ControlPanelVersion.props +++ b/build/ControlPanelVersion.props @@ -1,6 +1,6 @@ - 2.1.0 + 2.1.2 From 6f38a8ded3c86912281d9c3bf884442d340f824b Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 29 Jan 2021 23:51:22 -0500 Subject: [PATCH 7/8] Update config version to 3.0.0 --- build/Version.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Version.props b/build/Version.props index f63b1c518b..8eeaaccf34 100644 --- a/build/Version.props +++ b/build/Version.props @@ -4,7 +4,7 @@ 4.8.1 - 2.3.0 + 3.0.0 8.3.0 9.2.0 6.0.1 From 60f24e622b72e73afcb3323303d914776f2ccfde Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 29 Jan 2021 23:51:56 -0500 Subject: [PATCH 8/8] Version bump to 4.9.0 --- build/Version.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Version.props b/build/Version.props index 8eeaaccf34..f8cbd5f8fc 100644 --- a/build/Version.props +++ b/build/Version.props @@ -3,7 +3,7 @@ - 4.8.1 + 4.9.0 3.0.0 8.3.0 9.2.0