diff --git a/build/Version.props b/build/Version.props
index 32128164a9..d455943bbd 100644
--- a/build/Version.props
+++ b/build/Version.props
@@ -9,8 +9,8 @@
7.0.0
13.0.1
15.0.1
- 7.0.0
- 5.7.0
+ 7.0.1
+ 5.8.0
1.4.1
1.2.1
2.0.0
diff --git a/src/DMAPI/tgs.dm b/src/DMAPI/tgs.dm
index c6596ea46c..c561a64ebf 100644
--- a/src/DMAPI/tgs.dm
+++ b/src/DMAPI/tgs.dm
@@ -1,6 +1,6 @@
// tgstation-server DMAPI
-#define TGS_DMAPI_VERSION "7.0.0"
+#define TGS_DMAPI_VERSION "7.0.1"
// All functions and datums outside this document are subject to change with any version and should not be relied on.
diff --git a/src/DMAPI/tgs/v5/__interop_version.dm b/src/DMAPI/tgs/v5/__interop_version.dm
index 83420d130a..616263098f 100644
--- a/src/DMAPI/tgs/v5/__interop_version.dm
+++ b/src/DMAPI/tgs/v5/__interop_version.dm
@@ -1 +1 @@
-"5.7.0"
+"5.8.0"
diff --git a/src/DMAPI/tgs/v5/bridge.dm b/src/DMAPI/tgs/v5/bridge.dm
index 60cbcbfb7d..a0ab359876 100644
--- a/src/DMAPI/tgs/v5/bridge.dm
+++ b/src/DMAPI/tgs/v5/bridge.dm
@@ -48,7 +48,7 @@
var/json = CreateBridgeData(command, data, TRUE)
var/encoded_json = url_encode(json)
- var/api_prefix = interop_version.minor >= 7 ? "api/" : ""
+ var/api_prefix = interop_version.minor >= 8 ? "api/" : ""
var/url = "http://127.0.0.1:[server_port]/[api_prefix]Bridge?[DMAPI5_BRIDGE_DATA]=[encoded_json]"
return url
diff --git a/src/Tgstation.Server.Host.Service/ServiceLifetime.cs b/src/Tgstation.Server.Host.Service/ServiceLifetime.cs
index f29cd0e919..f7630dc3b3 100644
--- a/src/Tgstation.Server.Host.Service/ServiceLifetime.cs
+++ b/src/Tgstation.Server.Host.Service/ServiceLifetime.cs
@@ -57,6 +57,8 @@ namespace Tgstation.Server.Host.Service
this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
ArgumentNullException.ThrowIfNull(args);
+ logger.LogDebug("Starting service lifetime as user: {username}", Environment.UserName);
+
cancellationTokenSource = new CancellationTokenSource();
watchdogTask = RunWatchdog(
stopService,
diff --git a/src/Tgstation.Server.Host/Components/Engine/ByondInstallerBase.cs b/src/Tgstation.Server.Host/Components/Engine/ByondInstallerBase.cs
index 02691acfc0..a992073d10 100644
--- a/src/Tgstation.Server.Host/Components/Engine/ByondInstallerBase.cs
+++ b/src/Tgstation.Server.Host/Components/Engine/ByondInstallerBase.cs
@@ -116,11 +116,23 @@ namespace Tgstation.Server.Host.Components.Engine
var byondDir = PathToUserFolder;
Logger.LogDebug("Cleaning BYOND cache...");
- var cacheCleanTask = IOManager.DeleteDirectory(
- IOManager.ConcatPath(
- byondDir,
- CacheDirectoryName),
- cancellationToken);
+ async Task CleanDirectorySafe()
+ {
+ try
+ {
+ await IOManager.DeleteDirectory(
+ IOManager.ConcatPath(
+ byondDir,
+ CacheDirectoryName),
+ cancellationToken);
+ }
+ catch (Exception ex)
+ {
+ Logger.LogWarning(ex, "Failed to clean BYOND cache!");
+ }
+ }
+
+ var cacheCleanTask = CleanDirectorySafe();
// Create local cfg directory in case it doesn't exist
var localCfgDirectory = IOManager.ConcatPath(
diff --git a/src/Tgstation.Server.Host/Components/Engine/WindowsByondInstaller.cs b/src/Tgstation.Server.Host/Components/Engine/WindowsByondInstaller.cs
index 87424718d5..4bafeb9e05 100644
--- a/src/Tgstation.Server.Host/Components/Engine/WindowsByondInstaller.cs
+++ b/src/Tgstation.Server.Host/Components/Engine/WindowsByondInstaller.cs
@@ -108,9 +108,13 @@ namespace Tgstation.Server.Host.Components.Engine
generalConfiguration = generalConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(generalConfigurationOptions));
sessionConfiguration = sessionConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(sessionConfigurationOptions));
- var documentsDirectory = Environment.GetFolderPath(
- Environment.SpecialFolder.MyDocuments,
- Environment.SpecialFolderOption.DoNotVerify);
+ var useServiceSpecialTactics = Environment.Is64BitProcess && Environment.UserName == $"{Environment.MachineName}$";
+
+ var documentsDirectory = useServiceSpecialTactics
+ ? Environment.ExpandEnvironmentVariables("%SystemRoot%\\SysWOW64\\config\\systemprofile\\Documents")
+ : Environment.GetFolderPath(
+ Environment.SpecialFolder.MyDocuments,
+ Environment.SpecialFolderOption.DoNotVerify);
PathToUserFolder = IOManager.ResolvePath(
IOManager.ConcatPath(documentsDirectory, "BYOND"));
diff --git a/src/Tgstation.Server.Host/Components/InstanceManager.cs b/src/Tgstation.Server.Host/Components/InstanceManager.cs
index 613b9d7800..8c97f5c74d 100644
--- a/src/Tgstation.Server.Host/Components/InstanceManager.cs
+++ b/src/Tgstation.Server.Host/Components/InstanceManager.cs
@@ -658,6 +658,8 @@ namespace Tgstation.Server.Host.Components
///
void CheckSystemCompatibility()
{
+ logger.LogDebug("Running as user: {username}", Environment.UserName);
+
generalConfiguration.CheckCompatibility(logger);
using (var systemIdentity = systemIdentityFactory.GetCurrent())
diff --git a/src/Tgstation.Server.Host/IO/DefaultIOManager.cs b/src/Tgstation.Server.Host/IO/DefaultIOManager.cs
index cdae64ce44..cf7b616587 100644
--- a/src/Tgstation.Server.Host/IO/DefaultIOManager.cs
+++ b/src/Tgstation.Server.Host/IO/DefaultIOManager.cs
@@ -46,8 +46,17 @@ namespace Tgstation.Server.Host.IO
return;
}
+ List? exceptions = null;
foreach (var subDir in dir.EnumerateDirectories())
- NormalizeAndDelete(subDir, cancellationToken);
+ try
+ {
+ NormalizeAndDelete(subDir, cancellationToken);
+ }
+ catch (AggregateException ex)
+ {
+ exceptions ??= new List();
+ exceptions.AddRange(ex.InnerExceptions);
+ }
foreach (var file in dir.EnumerateFiles())
{
@@ -57,14 +66,26 @@ namespace Tgstation.Server.Host.IO
file.Attributes = FileAttributes.Normal;
file.Delete();
}
- catch (FileNotFoundException)
+ catch (Exception ex)
{
- // has happened before with .dyn.rsc.lk
+ exceptions ??= new List();
+ exceptions.Add(ex);
}
}
cancellationToken.ThrowIfCancellationRequested();
- dir.Delete(true);
+ try
+ {
+ dir.Delete(true);
+ }
+ catch (Exception ex)
+ {
+ exceptions ??= new List();
+ exceptions.Add(ex);
+ }
+
+ if (exceptions != null)
+ throw new AggregateException(exceptions);
}
///