diff --git a/src/Tgstation.Server.Host/Components/Interop/JsonFile.cs b/src/Tgstation.Server.Host/Components/Interop/JsonFile.cs index 4c318c21c3..b7e5da7d3a 100644 --- a/src/Tgstation.Server.Host/Components/Interop/JsonFile.cs +++ b/src/Tgstation.Server.Host/Components/Interop/JsonFile.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Tgstation.Server.Api.Models; using Tgstation.Server.Api.Models.Internal; namespace Tgstation.Server.Host.Components.Interop @@ -41,7 +42,12 @@ namespace Tgstation.Server.Host.Components.Interop /// /// The of the launch /// - public RevisionInformation Revision { get; set; } + public Api.Models.Internal.RevisionInformation Revision { get; set; } + + /// + /// The level of the launch + /// + public DreamDaemonSecurity SecurityLevel { get; set; } /// /// The s in the launch diff --git a/src/Tgstation.Server.Host/Components/Watchdog/SessionControllerFactory.cs b/src/Tgstation.Server.Host/Components/Watchdog/SessionControllerFactory.cs index dae993db92..9e4601e314 100644 --- a/src/Tgstation.Server.Host/Components/Watchdog/SessionControllerFactory.cs +++ b/src/Tgstation.Server.Host/Components/Watchdog/SessionControllerFactory.cs @@ -131,6 +131,22 @@ namespace Tgstation.Server.Host.Components.Watchdog //i changed this back from guids, hopefully i don't regret that string JsonFile(string name) => String.Format(CultureInfo.InvariantCulture, "{0}.{1}", name, JsonPostfix); + var securityLevelToUse = launchParameters.SecurityLevel.Value; + switch (dmbProvider.CompileJob.MinimumSecurityLevel) + { + case DreamDaemonSecurity.Ultrasafe: + break; + case DreamDaemonSecurity.Safe: + if (securityLevelToUse == DreamDaemonSecurity.Ultrasafe) + securityLevelToUse = DreamDaemonSecurity.Safe; + break; + case DreamDaemonSecurity.Trusted: + securityLevelToUse = DreamDaemonSecurity.Trusted; + break; + default: + throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Invalid DreamDaemonSecurity value: {0}", dmbProvider.CompileJob.MinimumSecurityLevel)); + } + //setup interop files var interopInfo = new JsonFile { @@ -140,6 +156,7 @@ namespace Tgstation.Server.Host.Components.Watchdog ChatCommandsJson = JsonFile("chat_commands"), ServerCommandsJson = JsonFile("server_commands"), InstanceName = instance.Name, + SecurityLevel = securityLevelToUse, Revision = new Api.Models.Internal.RevisionInformation { CommitSha = dmbProvider.CompileJob.RevisionInformation.CommitSha, @@ -177,22 +194,6 @@ namespace Tgstation.Server.Host.Components.Watchdog //more sanitization here cause it uses the same scheme var parameters = String.Format(CultureInfo.InvariantCulture, "{2}={0}&{3}={1}", byondTopicSender.SanitizeString(application.Version.ToString()), byondTopicSender.SanitizeString(interopJsonFile), byondTopicSender.SanitizeString(Constants.DMParamHostVersion), byondTopicSender.SanitizeString(Constants.DMParamInfoJson)); - var securityLevelToUse = launchParameters.SecurityLevel.Value; - switch (dmbProvider.CompileJob.MinimumSecurityLevel) - { - case DreamDaemonSecurity.Ultrasafe: - break; - case DreamDaemonSecurity.Safe: - if (securityLevelToUse == DreamDaemonSecurity.Ultrasafe) - securityLevelToUse = DreamDaemonSecurity.Safe; - break; - case DreamDaemonSecurity.Trusted: - securityLevelToUse = DreamDaemonSecurity.Trusted; - break; - default: - throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Invalid DreamDaemonSecurity value: {0}", dmbProvider.CompileJob.MinimumSecurityLevel)); - } - //important to run on all ports to allow port changing var arguments = String.Format(CultureInfo.InvariantCulture, "{0} -port {1} -ports 1-65535 {2}-close -{3} -verbose -public -params \"{4}\"", dmbProvider.DmbName,