diff --git a/src/Tgstation.Server.Host/Components/Watchdog/ISessionController.cs b/src/Tgstation.Server.Host/Components/Watchdog/ISessionController.cs
index 949e1b53d9..faa997cbf1 100644
--- a/src/Tgstation.Server.Host/Components/Watchdog/ISessionController.cs
+++ b/src/Tgstation.Server.Host/Components/Watchdog/ISessionController.cs
@@ -52,7 +52,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
///
/// Sends a command to DreamDaemon through /world/Topic()
///
- /// The command to send
+ /// The sanitized command to send
/// The for the operation
/// A resulting in the result of /world/Topic()
Task SendCommand(string command, CancellationToken cancellationToken);
diff --git a/src/Tgstation.Server.Host/Components/Watchdog/Watchdog.cs b/src/Tgstation.Server.Host/Components/Watchdog/Watchdog.cs
index d2a32643e2..52e2aa19cb 100644
--- a/src/Tgstation.Server.Host/Components/Watchdog/Watchdog.cs
+++ b/src/Tgstation.Server.Host/Components/Watchdog/Watchdog.cs
@@ -1,4 +1,5 @@
-using Microsoft.Extensions.Logging;
+using Byond.TopicSender;
+using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
@@ -68,6 +69,11 @@ namespace Tgstation.Server.Host.Components.Watchdog
///
readonly IDatabaseContextFactory databaseContextFactory;
+ ///
+ /// The for the
+ ///
+ readonly IByondTopicSender byondTopicSender;
+
///
/// The for the
///
@@ -104,10 +110,11 @@ namespace Tgstation.Server.Host.Components.Watchdog
/// The value of
/// The value of
/// The value of
+ /// The value of
/// The initial value of
/// The containing the value of
/// The value of
- public Watchdog(IChat chat, ISessionControllerFactory sessionControllerFactory, IDmbFactory dmbFactory, IServerUpdater serverUpdater, ILogger logger, IReattachInfoHandler reattachInfoHandler, IDatabaseContextFactory databaseContextFactory, DreamDaemonLaunchParameters initialLaunchParameters, Models.Instance instance, bool autoStart)
+ public Watchdog(IChat chat, ISessionControllerFactory sessionControllerFactory, IDmbFactory dmbFactory, IServerUpdater serverUpdater, ILogger logger, IReattachInfoHandler reattachInfoHandler, IDatabaseContextFactory databaseContextFactory, IByondTopicSender byondTopicSender, DreamDaemonLaunchParameters initialLaunchParameters, Models.Instance instance, bool autoStart)
{
this.chat = chat ?? throw new ArgumentNullException(nameof(chat));
this.sessionControllerFactory = sessionControllerFactory ?? throw new ArgumentNullException(nameof(sessionControllerFactory));
@@ -115,6 +122,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
this.reattachInfoHandler = reattachInfoHandler ?? throw new ArgumentNullException(nameof(reattachInfoHandler));
this.databaseContextFactory = databaseContextFactory ?? throw new ArgumentNullException(nameof(databaseContextFactory));
+ this.byondTopicSender = byondTopicSender ?? throw new ArgumentNullException(nameof(byondTopicSender));
instanceId = instance?.Id ?? throw new ArgumentNullException(nameof(instance));
this.autoStart = autoStart;
@@ -540,7 +548,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
foreach (var I in parameters)
{
builder.Append("&");
- builder.Append(I);
+ builder.Append(byondTopicSender.SanitizeString(I));
}
var activeServer = AlphaIsActive ? alphaServer : bravoServer;
diff --git a/src/Tgstation.Server.Host/Components/Watchdog/WatchdogFactory.cs b/src/Tgstation.Server.Host/Components/Watchdog/WatchdogFactory.cs
index ad068c4b31..e14419c9e0 100644
--- a/src/Tgstation.Server.Host/Components/Watchdog/WatchdogFactory.cs
+++ b/src/Tgstation.Server.Host/Components/Watchdog/WatchdogFactory.cs
@@ -1,4 +1,5 @@
-using Microsoft.Extensions.Logging;
+using Byond.TopicSender;
+using Microsoft.Extensions.Logging;
using System;
using Tgstation.Server.Api.Models.Internal;
using Tgstation.Server.Host.Components.Chat;
@@ -39,6 +40,11 @@ namespace Tgstation.Server.Host.Components.Watchdog
///
readonly IDatabaseContextFactory databaseContextFactory;
+ ///
+ /// The for the
+ ///
+ readonly IByondTopicSender byondTopicSender;
+
///
/// The for the
///
@@ -54,8 +60,9 @@ namespace Tgstation.Server.Host.Components.Watchdog
/// The value of
/// The value of
/// The value of
+ /// The value of
/// The value of
- public WatchdogFactory(IChat chat, ISessionControllerFactory sessionManagerFactory, IServerUpdater serverUpdater, ILoggerFactory loggerFactory, IReattachInfoHandler reattachInfoHandler, IDatabaseContextFactory databaseContextFactory, Models.Instance instance)
+ public WatchdogFactory(IChat chat, ISessionControllerFactory sessionManagerFactory, IServerUpdater serverUpdater, ILoggerFactory loggerFactory, IReattachInfoHandler reattachInfoHandler, IDatabaseContextFactory databaseContextFactory, IByondTopicSender byondTopicSender, Models.Instance instance)
{
this.chat = chat ?? throw new ArgumentNullException(nameof(chat));
this.sessionManagerFactory = sessionManagerFactory ?? throw new ArgumentNullException(nameof(sessionManagerFactory));
@@ -63,10 +70,11 @@ namespace Tgstation.Server.Host.Components.Watchdog
this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
this.reattachInfoHandler = reattachInfoHandler ?? throw new ArgumentNullException(nameof(reattachInfoHandler));
this.databaseContextFactory = databaseContextFactory ?? throw new ArgumentNullException(nameof(databaseContextFactory));
+ this.byondTopicSender = byondTopicSender ?? throw new ArgumentNullException(nameof(byondTopicSender));
this.instance = instance ?? throw new ArgumentNullException(nameof(instance));
}
///
- public IWatchdog CreateWatchdog(IDmbFactory dmbFactory, DreamDaemonSettings settings) => new Watchdog(chat, sessionManagerFactory, dmbFactory, serverUpdater, loggerFactory.CreateLogger(), reattachInfoHandler, databaseContextFactory, settings, instance, settings.AutoStart.Value);
+ public IWatchdog CreateWatchdog(IDmbFactory dmbFactory, DreamDaemonSettings settings) => new Watchdog(chat, sessionManagerFactory, dmbFactory, serverUpdater, loggerFactory.CreateLogger(), reattachInfoHandler, databaseContextFactory, byondTopicSender, settings, instance, settings.AutoStart.Value);
}
}