diff --git a/Robust.Client/Console/ClientConsoleHost.cs b/Robust.Client/Console/ClientConsoleHost.cs
index de988aec9..5ff04070e 100644
--- a/Robust.Client/Console/ClientConsoleHost.cs
+++ b/Robust.Client/Console/ClientConsoleHost.cs
@@ -36,7 +36,7 @@ namespace Robust.Client.Console
Message = message;
}
}
-
+
///
internal class ClientConsoleHost : ConsoleHost, IClientConsoleHost
{
@@ -47,12 +47,20 @@ namespace Robust.Client.Console
{
NetManager.RegisterNetMessage(MsgConCmdReg.NAME, HandleConCmdReg);
NetManager.RegisterNetMessage(MsgConCmdAck.NAME, HandleConCmdAck);
- NetManager.RegisterNetMessage(MsgConCmd.NAME);
+ NetManager.RegisterNetMessage(MsgConCmd.NAME, ProcessCommand);
Reset();
LogManager.RootSawmill.AddHandler(new DebugConsoleLogHandler(this));
}
+ private void ProcessCommand(MsgConCmd message)
+ {
+ string? text = message.Text;
+ LogManager.GetSawmill(SawmillName).Info($"SERVER:{text}");
+
+ ExecuteCommand(null, text);
+ }
+
///
public void Reset()
{
@@ -104,14 +112,14 @@ namespace Robust.Client.Console
args.RemoveAt(0);
command1.Execute(new ConsoleShell(this, null), command, args.ToArray());
}
- else if (!NetManager.IsConnected)
+ else
WriteError(null, "Unknown command: " + commandName);
}
///
public override void RemoteExecuteCommand(ICommonSession? session, string command)
{
- if (!NetManager.IsConnected)
+ if (!NetManager.IsConnected) // we don't care about session on client
return;
var msg = NetManager.CreateNetMessage();
diff --git a/Robust.Server/Console/ServerConsoleHost.cs b/Robust.Server/Console/ServerConsoleHost.cs
index 70abc7ad7..62681fbc0 100644
--- a/Robust.Server/Console/ServerConsoleHost.cs
+++ b/Robust.Server/Console/ServerConsoleHost.cs
@@ -28,7 +28,12 @@ namespace Robust.Server.Console
///
public override void RemoteExecuteCommand(ICommonSession? session, string command)
{
- //TODO: Server -> Client remote execute, just like how the client forwards the command
+ if (!NetManager.IsConnected || session is null)
+ return;
+
+ var msg = NetManager.CreateNetMessage();
+ msg.Text = command;
+ NetManager.ServerSendMessage(msg, ((IPlayerSession)session).ConnectedClient);
}
///
@@ -61,7 +66,7 @@ namespace Robust.Server.Console
var sudoShell = new SudoShell(this, localShell, shell);
ExecuteInShell(sudoShell, $"{command} {string.Join(' ', cArgs)}");
});
-
+
LoadConsoleCommands();
// setup networking with clients