mirror of
https://github.com/tgstation/tgstation-server.git
synced 2026-08-30 16:39:21 +01:00
Merge pull request #1204 from tgstation/1169-DMAPISeparation
Separate the DMAPI version from Interop Version
This commit is contained in:
+3
-3
@@ -11,9 +11,9 @@ artifacts/
|
||||
*DS_Store
|
||||
*.sln.ide
|
||||
/TestResults
|
||||
/tests/DMAPI/travistester.lk
|
||||
/tests/DMAPI/travistester.int
|
||||
/tests/DMAPI/travistester.dmb
|
||||
*.dmb
|
||||
*.int
|
||||
*.lk
|
||||
/src/Tgstation.Server.Host/appsettings.*.json
|
||||
/src/Tgstation.Server.Host/appsettings.*.yml
|
||||
/src/Tgstation.Server.Host/wwwroot
|
||||
|
||||
+2
-1
@@ -7,7 +7,8 @@
|
||||
<TgsConfigVersion>2.3.0</TgsConfigVersion>
|
||||
<TgsApiVersion>8.3.0</TgsApiVersion>
|
||||
<TgsClientVersion>9.1.2</TgsClientVersion>
|
||||
<TgsDmapiVersion>5.3.0</TgsDmapiVersion>
|
||||
<TgsDmapiVersion>6.0.0</TgsDmapiVersion>
|
||||
<TgsInteropVersion>5.3.0</TgsInteropVersion>
|
||||
<TgsHostWatchdogVersion>1.1.1</TgsHostWatchdogVersion>
|
||||
<TgsContainerScriptVersion>1.2.0</TgsContainerScriptVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
+6
-8
@@ -1,6 +1,6 @@
|
||||
// tgstation-server DMAPI
|
||||
|
||||
#define TGS_DMAPI_VERSION "5.3.0"
|
||||
#define TGS_DMAPI_VERSION "6.0.0"
|
||||
|
||||
// All functions and datums outside this document are subject to change with any version and should not be relied on.
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
#define TGS_TOPIC var/tgs_topic_return = TgsTopic(args[1]); if(tgs_topic_return) return tgs_topic_return
|
||||
|
||||
/**
|
||||
* Call this at the beginning of [world/proc/Reboot].
|
||||
* Call this as late as possible in [world/proc/Reboot].
|
||||
*/
|
||||
/world/proc/TgsReboot()
|
||||
return
|
||||
@@ -156,7 +156,7 @@
|
||||
/datum/tgs_revision_information
|
||||
/// Full SHA of the commit.
|
||||
var/commit
|
||||
/// ISO8601 timestamp of the commit
|
||||
/// ISO 8601 timestamp of when the commit was created
|
||||
var/timestamp
|
||||
/// Full sha of last known remote commit. This may be null if the TGS repository is not currently tracking a remote branch.
|
||||
var/origin_commit
|
||||
@@ -207,9 +207,7 @@
|
||||
/// An http URL to the test merge source.
|
||||
var/url
|
||||
/// The SHA of the test merge when that was merged.
|
||||
var/pull_request_commit
|
||||
/// ISO 8601 timestamp of when the test merge was created on TGS.
|
||||
var/time_merged
|
||||
var/head_commit
|
||||
/// Optional comment left by the TGS user who initiated the merge.
|
||||
var/comment
|
||||
|
||||
@@ -269,11 +267,11 @@
|
||||
// API FUNCTIONS
|
||||
|
||||
/// Returns the maximum supported [/datum/tgs_version] of the DMAPI.
|
||||
/world/proc/TgsMaximumAPIVersion()
|
||||
/world/proc/TgsMaximumApiVersion()
|
||||
return
|
||||
|
||||
/// Returns the minimum supported [/datum/tgs_version] of the DMAPI.
|
||||
/world/proc/TgsMinimumAPIVersion()
|
||||
/world/proc/TgsMinimumApiVersion()
|
||||
return
|
||||
|
||||
/**
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
if(5)
|
||||
api_datum = /datum/tgs_api/v5
|
||||
|
||||
var/datum/tgs_version/max_api_version = TgsMaximumAPIVersion();
|
||||
var/datum/tgs_version/max_api_version = TgsMaximumApiVersion();
|
||||
if(version.suite != null && version.minor != null && version.patch != null && version.deprecated_patch != null && version.deprefixed_parameter > max_api_version.deprefixed_parameter)
|
||||
TGS_ERROR_LOG("Detected unknown API version! Defaulting to latest. Update the DMAPI to fix this problem.")
|
||||
api_datum = /datum/tgs_api/latest
|
||||
@@ -64,10 +64,10 @@
|
||||
TGS_WRITE_GLOBAL(tgs, null)
|
||||
TGS_ERROR_LOG("Failed to activate API!")
|
||||
|
||||
/world/TgsMaximumAPIVersion()
|
||||
/world/TgsMaximumApiVersion()
|
||||
return new /datum/tgs_version("5.x.x")
|
||||
|
||||
/world/TgsMinimumAPIVersion()
|
||||
/world/TgsMinimumApiVersion()
|
||||
return new /datum/tgs_version("3.2.x")
|
||||
|
||||
/world/TgsInitializationComplete()
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
var/list/json = cached_json["testMerges"]
|
||||
for(var/entry in json)
|
||||
var/datum/tgs_revision_information/test_merge/tm = new
|
||||
tm.time_merged = text2num(entry["timeMerged"])
|
||||
tm.timestamp = text2num(entry["timeMerged"])
|
||||
|
||||
var/list/revInfo = entry["revision"]
|
||||
if(revInfo)
|
||||
@@ -104,7 +104,7 @@
|
||||
tm.url = entry["url"]
|
||||
tm.author = entry["author"]
|
||||
tm.number = entry["number"]
|
||||
tm.pull_request_commit = entry["pullRequestRevision"]
|
||||
tm.head_commit = entry["pullRequestRevision"]
|
||||
tm.comment = entry["comment"]
|
||||
|
||||
cached_test_merges += tm
|
||||
|
||||
@@ -18,7 +18,9 @@
|
||||
var/initialized = FALSE
|
||||
|
||||
/datum/tgs_api/v5/ApiVersion()
|
||||
return new /datum/tgs_version(TGS_DMAPI_VERSION)
|
||||
return new /datum/tgs_version(
|
||||
#include "interop_version.dm"
|
||||
)
|
||||
|
||||
/datum/tgs_api/v5/OnWorldNew(minimum_required_security_level)
|
||||
server_port = world.params[DMAPI5_PARAM_SERVER_PORT]
|
||||
@@ -63,17 +65,16 @@
|
||||
var/list/revInfo = entry[DMAPI5_TEST_MERGE_REVISION]
|
||||
if(revInfo)
|
||||
tm.commit = revisionData[DMAPI5_REVISION_INFORMATION_COMMIT_SHA]
|
||||
tm.timestamp = revisionData[DMAPI5_REVISION_INFORMATION_TIMESTAMP]
|
||||
tm.origin_commit = revisionData[DMAPI5_REVISION_INFORMATION_ORIGIN_COMMIT_SHA]
|
||||
else
|
||||
TGS_WARNING_LOG("Failed to decode [DMAPI5_TEST_MERGE_REVISION] from test merge #[tm.number]!")
|
||||
|
||||
tm.time_merged = text2num(entry[DMAPI5_TEST_MERGE_TIME_MERGED])
|
||||
tm.timestamp = entry[DMAPI5_TEST_MERGE_TIME_MERGED]
|
||||
tm.title = entry[DMAPI5_TEST_MERGE_TITLE_AT_MERGE]
|
||||
tm.body = entry[DMAPI5_TEST_MERGE_BODY_AT_MERGE]
|
||||
tm.url = entry[DMAPI5_TEST_MERGE_URL]
|
||||
tm.author = entry[DMAPI5_TEST_MERGE_AUTHOR]
|
||||
tm.pull_request_commit = entry[DMAPI5_TEST_MERGE_PULL_REQUEST_REVISION]
|
||||
tm.head_commit = entry[DMAPI5_TEST_MERGE_PULL_REQUEST_REVISION]
|
||||
tm.comment = entry[DMAPI5_TEST_MERGE_COMMENT]
|
||||
|
||||
test_merges += tm
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
"5.3.0"
|
||||
@@ -19,7 +19,7 @@ namespace Tgstation.Server.Api.Models
|
||||
public Version? ApiVersion { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The DMAPI version of the host.
|
||||
/// The DMAPI interop version the server uses.
|
||||
/// </summary>
|
||||
public Version? DMApiVersion { get; set; }
|
||||
|
||||
|
||||
@@ -32,9 +32,9 @@ namespace Tgstation.Server.Host.Components.Interop
|
||||
public const string TopicData = "tgs_data";
|
||||
|
||||
/// <summary>
|
||||
/// The DMAPI <see cref="Version"/> being used.
|
||||
/// The DMAPI <see cref="InteropVersion"/> being used.
|
||||
/// </summary>
|
||||
public static readonly Version Version = Version.Parse(MasterVersionsAttribute.Instance.RawDMApiVersion);
|
||||
public static readonly Version InteropVersion = Version.Parse(MasterVersionsAttribute.Instance.RawInteropVersion);
|
||||
|
||||
/// <summary>
|
||||
/// <see cref="JsonSerializerSettings"/> for use when communicating with the DMAPI.
|
||||
|
||||
@@ -66,7 +66,7 @@ namespace Tgstation.Server.Host.Components.Session
|
||||
public Task OnPrime => primeTcs.Task;
|
||||
|
||||
/// <inheritdoc />
|
||||
public bool DMApiAvailable => reattachInformation.Dmb.CompileJob.DMApiVersion?.Major == DMApiConstants.Version.Major;
|
||||
public bool DMApiAvailable => reattachInformation.Dmb.CompileJob.DMApiVersion?.Major == DMApiConstants.InteropVersion.Major;
|
||||
|
||||
/// <summary>
|
||||
/// The up to date <see cref="ReattachInformation"/>
|
||||
@@ -431,7 +431,7 @@ namespace Tgstation.Server.Host.Components.Session
|
||||
return Error("Missing dmApiVersion field!");
|
||||
|
||||
DMApiVersion = parameters.Version;
|
||||
if (DMApiVersion.Major != DMApiConstants.Version.Major)
|
||||
if (DMApiVersion.Major != DMApiConstants.InteropVersion.Major)
|
||||
{
|
||||
apiValidationStatus = ApiValidationStatus.Incompatible;
|
||||
return Error("Incompatible dmApiVersion!");
|
||||
|
||||
@@ -229,7 +229,7 @@ namespace Tgstation.Server.Host.Components.Session
|
||||
|
||||
// set command line options
|
||||
// more sanitization here cause it uses the same scheme
|
||||
var parameters = $"{DMApiConstants.ParamApiVersion}={byondTopicSender.SanitizeString(DMApiConstants.Version.Semver().ToString())}&{byondTopicSender.SanitizeString(DMApiConstants.ParamServerPort)}={serverPortProvider.HttpApiPort}&{byondTopicSender.SanitizeString(DMApiConstants.ParamAccessIdentifier)}={byondTopicSender.SanitizeString(accessIdentifier)}";
|
||||
var parameters = $"{DMApiConstants.ParamApiVersion}={byondTopicSender.SanitizeString(DMApiConstants.InteropVersion.Semver().ToString())}&{byondTopicSender.SanitizeString(DMApiConstants.ParamServerPort)}={serverPortProvider.HttpApiPort}&{byondTopicSender.SanitizeString(DMApiConstants.ParamAccessIdentifier)}={byondTopicSender.SanitizeString(accessIdentifier)}";
|
||||
|
||||
if (!String.IsNullOrEmpty(launchParameters.AdditionalParameters))
|
||||
parameters = $"{parameters}&{launchParameters.AdditionalParameters}";
|
||||
@@ -240,7 +240,7 @@ namespace Tgstation.Server.Host.Components.Session
|
||||
Guid? logFileGuid = null;
|
||||
var arguments = String.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} -port {1} -ports 1-65535 {2}-close -{3} -{4}{5} -public -params \"{6}\"",
|
||||
"{0} -port {1} -ports 1-65535 {2}-close -{3} -{4}{5} -params \"{6}\"",
|
||||
dmbProvider.DmbName,
|
||||
launchParameters.Port.Value,
|
||||
launchParameters.AllowWebClient.Value ? "-webclient " : String.Empty,
|
||||
|
||||
@@ -198,7 +198,7 @@ namespace Tgstation.Server.Host.Controllers
|
||||
{
|
||||
Version = assemblyInformationProvider.Version,
|
||||
ApiVersion = ApiHeaders.Version,
|
||||
DMApiVersion = DMApiConstants.Version,
|
||||
DMApiVersion = DMApiConstants.InteropVersion,
|
||||
MinimumPasswordLength = generalConfiguration.MinimumPasswordLength,
|
||||
InstanceLimit = generalConfiguration.InstanceLimit,
|
||||
UserLimit = generalConfiguration.UserLimit,
|
||||
|
||||
@@ -492,7 +492,7 @@ namespace Tgstation.Server.Host.Core
|
||||
// End of request pipeline setup
|
||||
var masterVersionsAttribute = MasterVersionsAttribute.Instance;
|
||||
logger.LogTrace("Configuration version: {0}", masterVersionsAttribute.RawConfigurationVersion);
|
||||
logger.LogTrace("DMAPI version: {0}", masterVersionsAttribute.RawDMApiVersion);
|
||||
logger.LogTrace("DMAPI Interop version: {0}", masterVersionsAttribute.RawInteropVersion);
|
||||
logger.LogTrace("Web control panel version: {0}", masterVersionsAttribute.RawControlPanelVersion);
|
||||
|
||||
logger.LogDebug("Starting hosting on port {0}...", serverPortProvider.HttpApiPort);
|
||||
|
||||
@@ -22,9 +22,9 @@ namespace Tgstation.Server.Host.Properties
|
||||
public string RawConfigurationVersion { get; }
|
||||
|
||||
/// <summary>
|
||||
/// The <see cref="Version"/> <see cref="string"/> of the DMAPI version built.
|
||||
/// The <see cref="Version"/> <see cref="string"/> of the DMAPI interop version used.
|
||||
/// </summary>
|
||||
public string RawDMApiVersion { get; }
|
||||
public string RawInteropVersion { get; }
|
||||
|
||||
/// <summary>
|
||||
/// The <see cref="Version"/> <see cref="string"/> of the control panel version built.
|
||||
@@ -40,17 +40,17 @@ namespace Tgstation.Server.Host.Properties
|
||||
/// Initializes a new instance of the <see cref="MasterVersionsAttribute"/> <see langword="class"/>.
|
||||
/// </summary>
|
||||
/// <param name="rawConfigurationVersion">The value of <see cref="RawConfigurationVersion"/>.</param>
|
||||
/// <param name="rawDMApiVersion">The value of <see cref="RawDMApiVersion"/>.</param>
|
||||
/// <param name="rawInteropVersion">The value of <see cref="RawInteropVersion"/>.</param>
|
||||
/// <param name="rawControlPanelVersion">The value of <see cref="RawControlPanelVersion"/>.</param>
|
||||
/// <param name="rawHostWatchdogVersion">The value of <see cref="RawHostWatchdogVersion"/>.</param>
|
||||
public MasterVersionsAttribute(
|
||||
string rawConfigurationVersion,
|
||||
string rawDMApiVersion,
|
||||
string rawInteropVersion,
|
||||
string rawControlPanelVersion,
|
||||
string rawHostWatchdogVersion)
|
||||
{
|
||||
RawConfigurationVersion = rawConfigurationVersion ?? throw new ArgumentNullException(nameof(rawConfigurationVersion));
|
||||
RawDMApiVersion = rawDMApiVersion ?? throw new ArgumentNullException(nameof(rawDMApiVersion));
|
||||
RawInteropVersion = rawInteropVersion ?? throw new ArgumentNullException(nameof(rawInteropVersion));
|
||||
RawControlPanelVersion = rawControlPanelVersion ?? throw new ArgumentNullException(nameof(rawControlPanelVersion));
|
||||
RawHostWatchdogVersion = rawHostWatchdogVersion ?? throw new ArgumentNullException(nameof(rawHostWatchdogVersion));
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
<ItemGroup>
|
||||
<AssemblyAttributes Include="Tgstation.Server.Host.Properties.MasterVersionsAttribute">
|
||||
<_Parameter1>$(TgsConfigVersion)</_Parameter1>
|
||||
<_Parameter2>$(TgsDmapiVersion)</_Parameter2>
|
||||
<_Parameter2>$(TgsInteropVersion)</_Parameter2>
|
||||
<_Parameter3>$(TgsControlPanelVersion)</_Parameter3>
|
||||
<_Parameter4>$(TgsHostWatchdogVersion)</_Parameter4>
|
||||
</AssemblyAttributes>
|
||||
|
||||
@@ -14,13 +14,6 @@
|
||||
sleep(50)
|
||||
world.TgsTargetedChatBroadcast("Sample admin-only message", TRUE)
|
||||
|
||||
world.log << "Validating API sleep"
|
||||
// Validate TGS_DMAPI_VERSION against DMAPI version used
|
||||
var/datum/tgs_version/active_version = world.TgsApiVersion()
|
||||
var/datum/tgs_version/dmapi_version = new /datum/tgs_version(TGS_DMAPI_VERSION)
|
||||
if(!active_version.Equals(dmapi_version))
|
||||
text2file("DMAPI version [TGS_DMAPI_VERSION] does not match active API version [active_version.raw_parameter]", "test_fail_reason.txt")
|
||||
|
||||
var/list/world_params = params2list(world.params)
|
||||
if(!("test" in world_params) || world_params["test"] != "bababooey")
|
||||
text2file("Expected parameter test=bababooey but did not receive", "test_fail_reason.txt")
|
||||
|
||||
@@ -64,7 +64,7 @@ namespace Tgstation.Server.Tests.Instance
|
||||
|
||||
clone = await repositoryClient.Clone(initalRepo, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
await WaitForJob(clone.ActiveJob, 900, false, null, cancellationToken).ConfigureAwait(false);
|
||||
await WaitForJob(clone.ActiveJob, 9000, false, null, cancellationToken).ConfigureAwait(false);
|
||||
var readAfterClone = await repositoryClient.Read(cancellationToken);
|
||||
|
||||
Assert.AreEqual(initalRepo.Origin, readAfterClone.Origin);
|
||||
|
||||
@@ -144,7 +144,7 @@ namespace Tgstation.Server.Tests.Instance
|
||||
Assert.IsNotNull(newerCompileJob);
|
||||
Assert.AreNotEqual(initialCompileJob.Id, newerCompileJob.Id);
|
||||
Assert.AreEqual(DreamDaemonSecurity.Safe, newerCompileJob.MinimumSecurityLevel);
|
||||
Assert.AreEqual(DMApiConstants.Version, daemonStatus.StagedCompileJob.DMApiVersion);
|
||||
Assert.AreEqual(DMApiConstants.InteropVersion, daemonStatus.StagedCompileJob.DMApiVersion);
|
||||
await instanceClient.DreamDaemon.Shutdown(cancellationToken);
|
||||
}
|
||||
|
||||
@@ -162,7 +162,7 @@ namespace Tgstation.Server.Tests.Instance
|
||||
Assert.AreEqual(WatchdogStatus.Offline, daemonStatus.Status.Value);
|
||||
Assert.IsNotNull(daemonStatus.ActiveCompileJob);
|
||||
Assert.IsNull(daemonStatus.StagedCompileJob);
|
||||
Assert.AreEqual(DMApiConstants.Version, daemonStatus.ActiveCompileJob.DMApiVersion);
|
||||
Assert.AreEqual(DMApiConstants.InteropVersion, daemonStatus.ActiveCompileJob.DMApiVersion);
|
||||
Assert.AreEqual(DreamDaemonSecurity.Safe, daemonStatus.ActiveCompileJob.MinimumSecurityLevel);
|
||||
|
||||
Job startJob;
|
||||
@@ -307,7 +307,7 @@ namespace Tgstation.Server.Tests.Instance
|
||||
Assert.AreEqual(WatchdogStatus.Offline, daemonStatus.Status.Value);
|
||||
Assert.IsNotNull(daemonStatus.ActiveCompileJob);
|
||||
Assert.IsNull(daemonStatus.StagedCompileJob);
|
||||
Assert.AreEqual(DMApiConstants.Version, daemonStatus.ActiveCompileJob.DMApiVersion);
|
||||
Assert.AreEqual(DMApiConstants.InteropVersion, daemonStatus.ActiveCompileJob.DMApiVersion);
|
||||
Assert.AreEqual(DreamDaemonSecurity.Ultrasafe, daemonStatus.ActiveCompileJob.MinimumSecurityLevel);
|
||||
|
||||
var startJob = await StartDD(cancellationToken).ConfigureAwait(false);
|
||||
@@ -347,7 +347,7 @@ namespace Tgstation.Server.Tests.Instance
|
||||
Assert.AreEqual(WatchdogStatus.Offline, daemonStatus.Status.Value);
|
||||
Assert.IsNotNull(daemonStatus.ActiveCompileJob);
|
||||
Assert.IsNull(daemonStatus.StagedCompileJob);
|
||||
Assert.AreEqual(DMApiConstants.Version, daemonStatus.ActiveCompileJob.DMApiVersion);
|
||||
Assert.AreEqual(DMApiConstants.InteropVersion, daemonStatus.ActiveCompileJob.DMApiVersion);
|
||||
Assert.AreEqual(DreamDaemonSecurity.Ultrasafe, daemonStatus.ActiveCompileJob.MinimumSecurityLevel);
|
||||
|
||||
var startJob = await StartDD(cancellationToken).ConfigureAwait(false);
|
||||
|
||||
@@ -99,7 +99,15 @@ namespace Tgstation.Server.Tests
|
||||
|
||||
Assert.IsTrue(Version.TryParse(versionLine, out var actual));
|
||||
Assert.AreEqual(expected, actual);
|
||||
Assert.AreEqual(expected, DMApiConstants.Version);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void TestInteropVersion()
|
||||
{
|
||||
var versionString = versionsPropertyGroup.Element(xmlNamespace + "TgsInteropVersion").Value;
|
||||
Assert.IsNotNull(versionString);
|
||||
Assert.IsTrue(Version.TryParse(versionString, out var expected));
|
||||
Assert.AreEqual(expected, DMApiConstants.InteropVersion);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
|
||||
@@ -135,6 +135,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "v5", "v5", "{FAEAD3B5-2EAB-
|
||||
src\DMAPI\tgs\v5\_defines.dm = src\DMAPI\tgs\v5\_defines.dm
|
||||
src\DMAPI\tgs\v5\api.dm = src\DMAPI\tgs\v5\api.dm
|
||||
src\DMAPI\tgs\v5\commands.dm = src\DMAPI\tgs\v5\commands.dm
|
||||
src\DMAPI\tgs\v5\interop_version.dm = src\DMAPI\tgs\v5\interop_version.dm
|
||||
src\DMAPI\tgs\v5\README.md = src\DMAPI\tgs\v5\README.md
|
||||
src\DMAPI\tgs\v5\undefs.dm = src\DMAPI\tgs\v5\undefs.dm
|
||||
EndProjectSection
|
||||
|
||||
@@ -256,13 +256,14 @@ namespace ReleaseNotes
|
||||
var apiVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsApiVersion").Value);
|
||||
var configVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsConfigVersion").Value);
|
||||
var dmApiVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsDmapiVersion").Value);
|
||||
var interopVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsInteropVersion").Value);
|
||||
var webControlVersion = Version.Parse(controlPanelVersionsPropertyGroup.Element(controlPanelXmlNamespace + "TgsControlPanelVersion").Value);
|
||||
var hostWatchdogVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsHostWatchdogVersion").Value);
|
||||
|
||||
if (webControlVersion.Major == 0)
|
||||
postControlPanelMessage = true;
|
||||
|
||||
prefix = $"Please refer to the [README](https://github.com/tgstation/tgstation-server#setup) for setup instructions.{Environment.NewLine}{Environment.NewLine}#### Component Versions\nCore: {coreVersion}\nConfiguration: {configVersion}\nHTTP API: {apiVersion}\nDreamMaker API: {dmApiVersion}\n[Web Control Panel](https://github.com/tgstation/tgstation-server-control-panel): {webControlVersion}\nHost Watchdog: {hostWatchdogVersion}";
|
||||
prefix = $"Please refer to the [README](https://github.com/tgstation/tgstation-server#setup) for setup instructions.{Environment.NewLine}{Environment.NewLine}#### Component Versions\nCore: {coreVersion}\nConfiguration: {configVersion}\nHTTP API: {apiVersion}\nDreamMaker API: {dmApiVersion} (Interop: {interopVersion})\n[Web Control Panel](https://github.com/tgstation/tgstation-server-control-panel): {webControlVersion}\nHost Watchdog: {hostWatchdogVersion}";
|
||||
break;
|
||||
case 3:
|
||||
prefix = "The /tg/station server suite";
|
||||
|
||||
Reference in New Issue
Block a user