diff --git a/build/ControlPanelVersion.props b/build/ControlPanelVersion.props
index fbfe1438e0..ce868e2875 100644
--- a/build/ControlPanelVersion.props
+++ b/build/ControlPanelVersion.props
@@ -1,6 +1,6 @@
- 4.23.1
+ 4.24.0
diff --git a/src/Tgstation.Server.Host/ServerFactory.cs b/src/Tgstation.Server.Host/ServerFactory.cs
index 4ef38513a4..88e78eb0a7 100644
--- a/src/Tgstation.Server.Host/ServerFactory.cs
+++ b/src/Tgstation.Server.Host/ServerFactory.cs
@@ -24,6 +24,11 @@ namespace Tgstation.Server.Host
///
sealed class ServerFactory : IServerFactory
{
+ ///
+ /// Name of the appsettings file.
+ ///
+ public const string AppSettings = "appsettings";
+
///
/// The for the .
///
@@ -60,7 +65,6 @@ namespace Tgstation.Server.Host
args[oldArgs.Length] = "--hostBuilder:reloadConfigOnChange=false";
}
- const string AppSettings = "appsettings";
const string AppSettingsRelocationKey = $"--{AppSettings}-base-path=";
var appsettingsRelativeBasePathArgument = args.FirstOrDefault(arg => arg.StartsWith(AppSettingsRelocationKey, StringComparison.Ordinal));
diff --git a/src/Tgstation.Server.Host/Setup/SetupWizard.cs b/src/Tgstation.Server.Host/Setup/SetupWizard.cs
index 7ccb124ee2..463ae188e5 100644
--- a/src/Tgstation.Server.Host/Setup/SetupWizard.cs
+++ b/src/Tgstation.Server.Host/Setup/SetupWizard.cs
@@ -12,7 +12,6 @@ using System.Threading.Tasks;
using Microsoft.Data.SqlClient;
using Microsoft.Data.Sqlite;
-using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
@@ -87,11 +86,6 @@ namespace Tgstation.Server.Host.Setup
///
readonly InternalConfiguration internalConfiguration;
- ///
- /// A that will complete when the is reloaded.
- ///
- TaskCompletionSource reloadTcs;
-
///
/// Initializes a new instance of the class.
///
@@ -103,7 +97,6 @@ namespace Tgstation.Server.Host.Setup
/// The value of .
/// The value of .
/// The value of .
- /// The in use.
/// The containing the value of .
/// The containing the value of .
public SetupWizard(
@@ -115,7 +108,6 @@ namespace Tgstation.Server.Host.Setup
IPlatformIdentifier platformIdentifier,
IAsyncDelayer asyncDelayer,
IHostApplicationLifetime applicationLifetime,
- IConfiguration configuration,
IOptions generalConfigurationOptions,
IOptions internalConfigurationOptions)
{
@@ -127,16 +119,9 @@ namespace Tgstation.Server.Host.Setup
this.platformIdentifier = platformIdentifier ?? throw new ArgumentNullException(nameof(platformIdentifier));
this.asyncDelayer = asyncDelayer ?? throw new ArgumentNullException(nameof(asyncDelayer));
this.applicationLifetime = applicationLifetime ?? throw new ArgumentNullException(nameof(applicationLifetime));
- ArgumentNullException.ThrowIfNull(configuration);
generalConfiguration = generalConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(generalConfigurationOptions));
internalConfiguration = internalConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(internalConfigurationOptions));
-
- configuration
- .GetReloadToken()
- .RegisterChangeCallback(
- state => reloadTcs?.TrySetResult(),
- null);
}
///
@@ -578,6 +563,8 @@ namespace Tgstation.Server.Host.Setup
csb.Password = password;
}
+ csb.Encrypt = encrypt;
+
CreateTestConnection(csb.ConnectionString);
csb.InitialCatalog = databaseName;
databaseConfiguration.ConnectionString = csb.ConnectionString;
@@ -1015,25 +1002,14 @@ namespace Tgstation.Server.Host.Setup
var configBytes = Encoding.UTF8.GetBytes(serializedYaml);
- reloadTcs = new TaskCompletionSource();
-
try
{
await ioManager.WriteAllBytes(
userConfigFileName,
configBytes,
cancellationToken);
-
- // Ensure the reload
- if (generalConfiguration.SetupWizardMode != SetupWizardMode.Only)
- using (cancellationToken.Register(() => reloadTcs.TrySetCanceled()))
- await reloadTcs.Task;
}
- catch (OperationCanceledException)
- {
- throw;
- }
- catch (Exception e)
+ catch (Exception e) when (e is not OperationCanceledException)
{
await console.WriteAsync(e.Message, true, cancellationToken);
await console.WriteAsync(null, true, cancellationToken);
@@ -1109,7 +1085,7 @@ namespace Tgstation.Server.Host.Setup
var userConfigFileName = ioManager.ConcatPath(
internalConfiguration.AppSettingsBasePath,
- String.Format(CultureInfo.InvariantCulture, "appsettings.{0}.yml", hostingEnvironment.EnvironmentName));
+ $"{ServerFactory.AppSettings}.{hostingEnvironment.EnvironmentName}.yml");
async Task HandleSetupCancel()
{
diff --git a/tests/Tgstation.Server.Host.Tests/Setup/TestSetupWizard.cs b/tests/Tgstation.Server.Host.Tests/Setup/TestSetupWizard.cs
index c60d7308c2..3b9da3b2b3 100644
--- a/tests/Tgstation.Server.Host.Tests/Setup/TestSetupWizard.cs
+++ b/tests/Tgstation.Server.Host.Tests/Setup/TestSetupWizard.cs
@@ -27,28 +27,25 @@ namespace Tgstation.Server.Host.Setup.Tests
[TestMethod]
public void TestConstructionThrows()
{
- Assert.ThrowsException(() => new SetupWizard(null, null, null, null, null, null, null, null, null, null, null));
+ Assert.ThrowsException(() => new SetupWizard(null, null, null, null, null, null, null, null, null, null));
var mockIOManager = new Mock();
- Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, null, null, null, null, null, null, null, null, null, null));
+ Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, null, null, null, null, null, null, null, null, null));
var mockConsole = new Mock();
- Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, null, null, null, null, null, null, null, null, null));
+ Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, null, null, null, null, null, null, null, null));
var mockHostingEnvironment = new Mock();
- Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, mockHostingEnvironment.Object, null, null, null, null, null, null, null, null));
+ Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, mockHostingEnvironment.Object, null, null, null, null, null, null, null));
var mockAssemblyInfoProvider = new Mock();
- Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, mockHostingEnvironment.Object, mockAssemblyInfoProvider.Object, null, null, null, null, null, null, null));
+ Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, mockHostingEnvironment.Object, mockAssemblyInfoProvider.Object, null, null, null, null, null, null));
var mockDBConnectionFactory = new Mock();
- Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, mockHostingEnvironment.Object, mockAssemblyInfoProvider.Object, mockDBConnectionFactory.Object, null, null, null, null, null, null));
+ Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, mockHostingEnvironment.Object, mockAssemblyInfoProvider.Object, mockDBConnectionFactory.Object, null, null, null, null, null));
var mockPlatformIdentifier = new Mock();
- Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, mockHostingEnvironment.Object, mockAssemblyInfoProvider.Object, mockDBConnectionFactory.Object, mockPlatformIdentifier.Object, null, null, null, null, null));
+ Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, mockHostingEnvironment.Object, mockAssemblyInfoProvider.Object, mockDBConnectionFactory.Object, mockPlatformIdentifier.Object, null, null, null, null));
var mockAsyncDelayer = new Mock();
- Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, mockHostingEnvironment.Object, mockAssemblyInfoProvider.Object, mockDBConnectionFactory.Object, mockPlatformIdentifier.Object, mockAsyncDelayer.Object, null, null, null, null));
+ Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, mockHostingEnvironment.Object, mockAssemblyInfoProvider.Object, mockDBConnectionFactory.Object, mockPlatformIdentifier.Object, mockAsyncDelayer.Object, null, null, null));
var mockLifetime = new Mock();
- Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, mockHostingEnvironment.Object, mockAssemblyInfoProvider.Object, mockDBConnectionFactory.Object, mockPlatformIdentifier.Object, mockAsyncDelayer.Object, mockLifetime.Object, null, null, null));
- var mockConfiguration = new Mock();
- mockConfiguration.Setup(x => x.GetReloadToken()).Returns(Mock.Of());
- Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, mockHostingEnvironment.Object, mockAssemblyInfoProvider.Object, mockDBConnectionFactory.Object, mockPlatformIdentifier.Object, mockAsyncDelayer.Object, mockLifetime.Object, mockConfiguration.Object, null, null));
+ Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, mockHostingEnvironment.Object, mockAssemblyInfoProvider.Object, mockDBConnectionFactory.Object, mockPlatformIdentifier.Object, mockAsyncDelayer.Object, mockLifetime.Object, null, null));
var mockGeneralConfigurationOptions = Options.Create(new GeneralConfiguration());
- Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, mockHostingEnvironment.Object, mockAssemblyInfoProvider.Object, mockDBConnectionFactory.Object, mockPlatformIdentifier.Object, mockAsyncDelayer.Object, mockLifetime.Object, mockConfiguration.Object, mockGeneralConfigurationOptions, null));
+ Assert.ThrowsException(() => new SetupWizard(mockIOManager.Object, mockConsole.Object, mockHostingEnvironment.Object, mockAssemblyInfoProvider.Object, mockDBConnectionFactory.Object, mockPlatformIdentifier.Object, mockAsyncDelayer.Object, mockLifetime.Object, mockGeneralConfigurationOptions, null));
}
[TestMethod]
@@ -64,23 +61,6 @@ namespace Tgstation.Server.Host.Setup.Tests
var mockInternalConfigurationOptions = new Mock>();
var mockPlatformIdentifier = new Mock();
var mockAsyncDelayer = new Mock();
- var mockConfiguration = new Mock();
- var mockChangeToken = new Mock();
-
- object configReloadCallbackState = null;
- Action