From 920f44053083798a3cdce4fb017d2d1a4abcc382 Mon Sep 17 00:00:00 2001 From: moonheart08 Date: Thu, 11 May 2023 06:53:47 -0500 Subject: [PATCH] Add a debug/example congroup so server commands and scripting works. --- Content.Server/LocalHostConGroup.cs | 50 +++++++++++++++++++++++++++++ Content.Server/ServerContentIoC.cs | 1 + 2 files changed, 51 insertions(+) create mode 100644 Content.Server/LocalHostConGroup.cs diff --git a/Content.Server/LocalHostConGroup.cs b/Content.Server/LocalHostConGroup.cs new file mode 100644 index 0000000..8967ea7 --- /dev/null +++ b/Content.Server/LocalHostConGroup.cs @@ -0,0 +1,50 @@ +using System.Net; +using JetBrains.Annotations; +using Robust.Server.Console; +using Robust.Server.Player; + +namespace Content.Server; + +/// +/// Debug/example ConGroup controller implementation that gives any client connected through localhost every permission. +/// +[UsedImplicitly] +public sealed class LocalHostConGroup : IConGroupControllerImplementation, IPostInjectInit { + public bool CanCommand(IPlayerSession session, string cmdName) { + return IsLocal(session); + } + + public bool CanViewVar(IPlayerSession session) { + return IsLocal(session); + } + + public bool CanAdminPlace(IPlayerSession session) { + return IsLocal(session); + } + + public bool CanScript(IPlayerSession session) { + return IsLocal(session); + } + + public bool CanAdminMenu(IPlayerSession session) { + return IsLocal(session); + } + + public bool CanAdminReloadPrototypes(IPlayerSession session) { + return IsLocal(session); + } + + private static bool IsLocal(IPlayerSession player) { + var ep = player.ConnectedClient.RemoteEndPoint; + var addr = ep.Address; + if (addr.IsIPv4MappedToIPv6) { + addr = addr.MapToIPv4(); + } + + return Equals(addr, IPAddress.Loopback) || Equals(addr, IPAddress.IPv6Loopback); + } + + void IPostInjectInit.PostInject() { + IoCManager.Resolve().Implementation = this; + } +} \ No newline at end of file diff --git a/Content.Server/ServerContentIoC.cs b/Content.Server/ServerContentIoC.cs index 65a7671..ad48edb 100644 --- a/Content.Server/ServerContentIoC.cs +++ b/Content.Server/ServerContentIoC.cs @@ -5,5 +5,6 @@ internal static class ServerContentIoC public static void Register() { // DEVNOTE: IoCManager registrations for the server go here and only here. + IoCManager.Register(); } } \ No newline at end of file