From 7c34836d50a7ef1fc94583b4596a5b437ccb291a Mon Sep 17 00:00:00 2001 From: js6pak Date: Thu, 25 Mar 2021 22:17:31 +0100 Subject: [PATCH] Remove reactor stuff --- src/Impostor.Api/Net/IClient.cs | 6 ----- src/Impostor.Api/Net/Inner/RpcCalls.cs | 1 - .../Net/Messages/C2S/HandshakeC2S.cs | 12 ++++++++++ src/Impostor.Api/Reactor/Mod.cs | 21 ---------------- src/Impostor.Api/Reactor/ModList.cs | 24 ------------------- .../Reactor/ModdedHandshakeC2S.cs | 23 ------------------ .../Reactor/ModdedHandshakeS2C.cs | 14 ----------- src/Impostor.Api/Reactor/PluginSide.cs | 23 ------------------ src/Impostor.Server/Net/Client.cs | 6 ++--- src/Impostor.Server/Net/ClientBase.cs | 21 +--------------- .../Net/Factories/ClientFactory.cs | 6 ++--- .../Net/Factories/IClientFactory.cs | 6 ++--- .../Net/Inner/InnerNetObject.cs | 14 ----------- .../Objects/Components/InnerPlayerPhysics.cs | 3 --- .../Net/Inner/Objects/InnerGameData.cs | 3 --- .../Net/Inner/Objects/InnerMeetingHud.cs | 3 --- .../Net/Inner/Objects/InnerPlayerControl.cs | 3 --- .../Net/Inner/Objects/InnerShipStatus.cs | 3 --- .../Net/Manager/ClientManager.cs | 13 +++------- src/Impostor.Server/Net/Matchmaker.cs | 7 +++--- .../Net/Redirector/ClientRedirector.cs | 7 ++---- .../Net/State/Game.Incoming.cs | 21 ---------------- src/Impostor.Server/Program.cs | 2 +- .../Recorder/ClientRecorder.cs | 8 +++---- .../Recorder/PacketRecorder.cs | 2 +- src/Impostor.Server/Utils/DotnetUtils.cs | 19 ++++++++------- src/Impostor.Tools.ServerReplay/Program.cs | 2 +- 27 files changed, 45 insertions(+), 228 deletions(-) create mode 100644 src/Impostor.Api/Net/Messages/C2S/HandshakeC2S.cs delete mode 100644 src/Impostor.Api/Reactor/Mod.cs delete mode 100644 src/Impostor.Api/Reactor/ModList.cs delete mode 100644 src/Impostor.Api/Reactor/ModdedHandshakeC2S.cs delete mode 100644 src/Impostor.Api/Reactor/ModdedHandshakeS2C.cs delete mode 100644 src/Impostor.Api/Reactor/PluginSide.cs diff --git a/src/Impostor.Api/Net/IClient.cs b/src/Impostor.Api/Net/IClient.cs index d9631d7..66ab9c5 100644 --- a/src/Impostor.Api/Net/IClient.cs +++ b/src/Impostor.Api/Net/IClient.cs @@ -2,7 +2,6 @@ using System.Threading.Tasks; using Impostor.Api.Innersloth; using Impostor.Api.Net.Messages; -using Impostor.Api.Reactor; namespace Impostor.Api.Net { @@ -28,11 +27,6 @@ namespace Impostor.Api.Net /// string Name { get; } - /// - /// Gets mods sent by client in modded handshake. - /// - ISet Mods { get; } - /// /// Gets the connection of the client. /// diff --git a/src/Impostor.Api/Net/Inner/RpcCalls.cs b/src/Impostor.Api/Net/Inner/RpcCalls.cs index e75f80e..506017d 100644 --- a/src/Impostor.Api/Net/Inner/RpcCalls.cs +++ b/src/Impostor.Api/Net/Inner/RpcCalls.cs @@ -33,6 +33,5 @@ RepairSystem = 28, SetTasks = 29, UpdateGameData = 30, - CustomRpc = byte.MaxValue, } } diff --git a/src/Impostor.Api/Net/Messages/C2S/HandshakeC2S.cs b/src/Impostor.Api/Net/Messages/C2S/HandshakeC2S.cs new file mode 100644 index 0000000..649e5ee --- /dev/null +++ b/src/Impostor.Api/Net/Messages/C2S/HandshakeC2S.cs @@ -0,0 +1,12 @@ +namespace Impostor.Api.Net.Messages.C2S +{ + public static class HandshakeC2S + { + public static void Deserialize(IMessageReader reader, out int clientVersion, out string name, out uint lastNonceReceived) + { + clientVersion = reader.ReadInt32(); + name = reader.ReadString(); + lastNonceReceived = reader.ReadUInt32(); + } + } +} diff --git a/src/Impostor.Api/Reactor/Mod.cs b/src/Impostor.Api/Reactor/Mod.cs deleted file mode 100644 index 2654c5f..0000000 --- a/src/Impostor.Api/Reactor/Mod.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Impostor.Api.Reactor -{ - public readonly struct Mod - { - public readonly string Id; - public readonly string Version; - public readonly PluginSide Side; - - public Mod(string id, string version, PluginSide side) - { - Id = id; - Version = version; - Side = side; - } - - public override string ToString() - { - return $"{Id} ({Version})"; - } - } -} diff --git a/src/Impostor.Api/Reactor/ModList.cs b/src/Impostor.Api/Reactor/ModList.cs deleted file mode 100644 index 047c8b4..0000000 --- a/src/Impostor.Api/Reactor/ModList.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Collections.Generic; -using Impostor.Api.Net.Messages; - -namespace Impostor.Api.Reactor -{ - public static class ModList - { - public static void Deserialize(IMessageReader reader, out ISet mods) - { - var length = reader.ReadPackedInt32(); - - mods = new HashSet(length); - - for (var i = 0; i < length; i++) - { - var id = reader.ReadString(); - var version = reader.ReadString(); - var pluginSide = (PluginSide)reader.ReadByte(); - - mods.Add(new Mod(id, version, pluginSide)); - } - } - } -} diff --git a/src/Impostor.Api/Reactor/ModdedHandshakeC2S.cs b/src/Impostor.Api/Reactor/ModdedHandshakeC2S.cs deleted file mode 100644 index a796712..0000000 --- a/src/Impostor.Api/Reactor/ModdedHandshakeC2S.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Collections.Generic; -using Impostor.Api.Net.Messages; - -namespace Impostor.Api.Reactor -{ - public static class ModdedHandshakeC2S - { - public static void Deserialize(IMessageReader reader, out int clientVersion, out string name, out ISet? mods) - { - clientVersion = reader.ReadInt32(); - name = reader.ReadString(); - - if (reader.Length > reader.Position) - { - ModList.Deserialize(reader, out mods); - } - else - { - mods = null; - } - } - } -} diff --git a/src/Impostor.Api/Reactor/ModdedHandshakeS2C.cs b/src/Impostor.Api/Reactor/ModdedHandshakeS2C.cs deleted file mode 100644 index 07f4f9c..0000000 --- a/src/Impostor.Api/Reactor/ModdedHandshakeS2C.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Impostor.Api.Net.Messages; - -namespace Impostor.Api.Reactor -{ - public static class ModdedHandshakeS2C - { - public static void Serialize(IMessageWriter writer, string serverBrand) - { - writer.StartMessage(byte.MaxValue); - writer.Write(serverBrand); - writer.EndMessage(); - } - } -} diff --git a/src/Impostor.Api/Reactor/PluginSide.cs b/src/Impostor.Api/Reactor/PluginSide.cs deleted file mode 100644 index 4523dfc..0000000 --- a/src/Impostor.Api/Reactor/PluginSide.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace Impostor.Api.Reactor -{ - /// - /// Plugin side used in modded handshake. - /// - public enum PluginSide : byte - { - /// - /// Required by both sides, reject connection if missing on the other side - /// - Both, - - /// - /// Required only by client - /// - ClientOnly, - - /// - /// Required only by server - /// - ServerOnly, - } -} diff --git a/src/Impostor.Server/Net/Client.cs b/src/Impostor.Server/Net/Client.cs index 45718e5..6c5547e 100644 --- a/src/Impostor.Server/Net/Client.cs +++ b/src/Impostor.Server/Net/Client.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Threading.Tasks; using Impostor.Api; using Impostor.Api.Games; @@ -8,7 +7,6 @@ using Impostor.Api.Net; using Impostor.Api.Net.Messages; using Impostor.Api.Net.Messages.C2S; using Impostor.Api.Net.Messages.S2C; -using Impostor.Api.Reactor; using Impostor.Hazel; using Impostor.Server.Config; using Impostor.Server.Net.Manager; @@ -24,8 +22,8 @@ namespace Impostor.Server.Net private readonly ClientManager _clientManager; private readonly GameManager _gameManager; - public Client(ILogger logger, IOptions antiCheatOptions, ClientManager clientManager, GameManager gameManager, string name, int gameVersion, IHazelConnection connection, ISet mods) - : base(name, gameVersion, connection, mods) + public Client(ILogger logger, IOptions antiCheatOptions, ClientManager clientManager, GameManager gameManager, string name, int gameVersion, IHazelConnection connection) + : base(name, gameVersion, connection) { _logger = logger; _antiCheatConfig = antiCheatOptions.Value; diff --git a/src/Impostor.Server/Net/ClientBase.cs b/src/Impostor.Server/Net/ClientBase.cs index 78bcb9e..9874a71 100644 --- a/src/Impostor.Server/Net/ClientBase.cs +++ b/src/Impostor.Server/Net/ClientBase.cs @@ -1,14 +1,12 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; using Impostor.Api; using Impostor.Api.Innersloth; using Impostor.Api.Net; using Impostor.Api.Net.Messages; using Impostor.Api.Net.Messages.S2C; -using Impostor.Api.Reactor; using Impostor.Hazel; using Impostor.Server.Net.State; @@ -16,25 +14,12 @@ namespace Impostor.Server.Net { internal abstract class ClientBase : IClient { - protected ClientBase(string name, int gameVersion, IHazelConnection connection, ISet mods) + protected ClientBase(string name, int gameVersion, IHazelConnection connection) { Name = name; GameVersion = gameVersion; Connection = connection; - Mods = mods; Items = new ConcurrentDictionary(); - - ModIdMap = new Dictionary(); - - var i = -1; - - foreach (var mod in mods.OrderBy(x => x.Id)) - { - if (mod.Side == PluginSide.Both) - { - ModIdMap[i--] = mod.Id; - } - } } public int Id { get; set; } @@ -43,10 +28,6 @@ namespace Impostor.Server.Net public int GameVersion { get; } - public ISet Mods { get; } - - public Dictionary ModIdMap { get; } - public IHazelConnection Connection { get; } public IDictionary Items { get; } diff --git a/src/Impostor.Server/Net/Factories/ClientFactory.cs b/src/Impostor.Server/Net/Factories/ClientFactory.cs index 985ab4e..e7d3e66 100644 --- a/src/Impostor.Server/Net/Factories/ClientFactory.cs +++ b/src/Impostor.Server/Net/Factories/ClientFactory.cs @@ -1,7 +1,5 @@ using System; -using System.Collections.Generic; using Impostor.Api.Net; -using Impostor.Api.Reactor; using Microsoft.Extensions.DependencyInjection; namespace Impostor.Server.Net.Factories @@ -16,9 +14,9 @@ namespace Impostor.Server.Net.Factories _serviceProvider = serviceProvider; } - public ClientBase Create(IHazelConnection connection, string name, int clientVersion, ISet mods) + public ClientBase Create(IHazelConnection connection, string name, int clientVersion) { - var client = ActivatorUtilities.CreateInstance(_serviceProvider, name, clientVersion, connection, mods); + var client = ActivatorUtilities.CreateInstance(_serviceProvider, name, clientVersion, connection); connection.Client = client; return client; } diff --git a/src/Impostor.Server/Net/Factories/IClientFactory.cs b/src/Impostor.Server/Net/Factories/IClientFactory.cs index a72a23b..11a1ddc 100644 --- a/src/Impostor.Server/Net/Factories/IClientFactory.cs +++ b/src/Impostor.Server/Net/Factories/IClientFactory.cs @@ -1,11 +1,9 @@ -using System.Collections.Generic; -using Impostor.Api.Net; -using Impostor.Api.Reactor; +using Impostor.Api.Net; namespace Impostor.Server.Net.Factories { internal interface IClientFactory { - ClientBase Create(IHazelConnection connection, string name, int clientVersion, ISet mods); + ClientBase Create(IHazelConnection connection, string name, int clientVersion); } } diff --git a/src/Impostor.Server/Net/Inner/InnerNetObject.cs b/src/Impostor.Server/Net/Inner/InnerNetObject.cs index 8cbea9a..073e581 100644 --- a/src/Impostor.Server/Net/Inner/InnerNetObject.cs +++ b/src/Impostor.Server/Net/Inner/InnerNetObject.cs @@ -27,19 +27,5 @@ namespace Impostor.Server.Net.Inner public abstract ValueTask DeserializeAsync(IClientPlayer sender, IClientPlayer? target, IMessageReader reader, bool initialState); public abstract ValueTask HandleRpcAsync(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader); - - // TODO move to Reactor.Impostor plugin - protected ValueTask HandleCustomRpc(IMessageReader reader, Game game) - { - var lengthOrShortId = reader.ReadPackedInt32(); - - var pluginId = lengthOrShortId < 0 - ? game.Host!.Client.ModIdMap[lengthOrShortId] - : reader.ReadString(lengthOrShortId); - - var id = reader.ReadPackedInt32(); - - return ValueTask.FromResult(true); - } } } diff --git a/src/Impostor.Server/Net/Inner/Objects/Components/InnerPlayerPhysics.cs b/src/Impostor.Server/Net/Inner/Objects/Components/InnerPlayerPhysics.cs index 4eb5f8a..14e8690 100644 --- a/src/Impostor.Server/Net/Inner/Objects/Components/InnerPlayerPhysics.cs +++ b/src/Impostor.Server/Net/Inner/Objects/Components/InnerPlayerPhysics.cs @@ -55,9 +55,6 @@ namespace Impostor.Server.Net.Inner.Objects.Components Rpc19EnterVent.Deserialize(reader, out ventId); break; - case RpcCalls.CustomRpc: - return await HandleCustomRpc(reader, _game); - default: return await UnregisteredCall(call, sender); } diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs b/src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs index 011af37..d6a16fd 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs @@ -121,9 +121,6 @@ namespace Impostor.Server.Net.Inner.Objects break; } - case RpcCalls.CustomRpc: - return await HandleCustomRpc(reader, _game); - default: return await UnregisteredCall(call, sender); } diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs b/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs index a2d6f0e..f41680b 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs @@ -122,9 +122,6 @@ namespace Impostor.Server.Net.Inner.Objects break; } - case RpcCalls.CustomRpc: - return await HandleCustomRpc(reader, _game); - default: return await UnregisteredCall(call, sender); } diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs index 8cd808d..7bbf8e7 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs @@ -285,9 +285,6 @@ namespace Impostor.Server.Net.Inner.Objects return await HandleSetStartCounter(sender, sequenceId, startCounter); } - case RpcCalls.CustomRpc: - return await HandleCustomRpc(reader, _game); - default: return await UnregisteredCall(call, sender); } diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerShipStatus.cs b/src/Impostor.Server/Net/Inner/Objects/InnerShipStatus.cs index 3725c8f..d51c0b8 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerShipStatus.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerShipStatus.cs @@ -117,9 +117,6 @@ namespace Impostor.Server.Net.Inner.Objects break; } - case RpcCalls.CustomRpc: - return await HandleCustomRpc(reader, _game); - default: return await UnregisteredCall(call, sender); } diff --git a/src/Impostor.Server/Net/Manager/ClientManager.cs b/src/Impostor.Server/Net/Manager/ClientManager.cs index e7ec171..d5355dd 100644 --- a/src/Impostor.Server/Net/Manager/ClientManager.cs +++ b/src/Impostor.Server/Net/Manager/ClientManager.cs @@ -3,15 +3,14 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; +using Impostor.Api.Events.Managers; using Impostor.Api.Innersloth; using Impostor.Api.Net; using Impostor.Api.Net.Messages; using Impostor.Api.Net.Messages.S2C; -using Impostor.Api.Reactor; using Impostor.Hazel; using Impostor.Server.Config; using Impostor.Server.Net.Factories; -using Impostor.Server.Utils; using Microsoft.Extensions.Logging; namespace Impostor.Server.Net.Manager @@ -23,8 +22,6 @@ namespace Impostor.Server.Net.Manager GameVersion.GetVersion(2021, 3, 25), // 2021.3.31s }; - private static readonly string ServerBrand = $"Impostor {DotnetUtils.GetVersion()}"; - private readonly ILogger _logger; private readonly ConcurrentDictionary _clients; private readonly IClientFactory _clientFactory; @@ -55,7 +52,7 @@ namespace Impostor.Server.Net.Manager return clientId; } - public async ValueTask RegisterConnectionAsync(IHazelConnection connection, string name, int clientVersion, ISet? mods) + public async ValueTask RegisterConnectionAsync(IHazelConnection connection, string name, int clientVersion) { if (!SupportedVersions.Contains(clientVersion)) { @@ -81,16 +78,12 @@ namespace Impostor.Server.Net.Manager return; } - var client = _clientFactory.Create(connection, name, clientVersion, mods ?? new HashSet(0)); + var client = _clientFactory.Create(connection, name, clientVersion); var id = NextId(); client.Id = id; _logger.LogTrace("Client connected."); _clients.TryAdd(id, client); - - using var writer = MessageWriter.Get(MessageType.Reliable); - ModdedHandshakeS2C.Serialize(writer, ServerBrand); - await connection.SendAsync(writer); } public void Remove(IClient client) diff --git a/src/Impostor.Server/Net/Matchmaker.cs b/src/Impostor.Server/Net/Matchmaker.cs index a5518dc..e7ce3ac 100644 --- a/src/Impostor.Server/Net/Matchmaker.cs +++ b/src/Impostor.Server/Net/Matchmaker.cs @@ -2,7 +2,8 @@ using System.Net; using System.Net.Sockets; using System.Threading.Tasks; -using Impostor.Api.Reactor; +using Impostor.Api.Events.Managers; +using Impostor.Api.Net.Messages.C2S; using Impostor.Hazel; using Impostor.Hazel.Udp; using Impostor.Server.Net.Hazel; @@ -60,12 +61,12 @@ namespace Impostor.Server.Net private async ValueTask OnNewConnection(NewConnectionEventArgs e) { // Handshake. - ModdedHandshakeC2S.Deserialize(e.HandshakeData, out var clientVersion, out var name, out var mods); + HandshakeC2S.Deserialize(e.HandshakeData, out var clientVersion, out var name); var connection = new HazelConnection(e.Connection, _connectionLogger); // Register client - await _clientManager.RegisterConnectionAsync(connection, name, clientVersion, mods); + await _clientManager.RegisterConnectionAsync(connection, name, clientVersion); } } } diff --git a/src/Impostor.Server/Net/Redirector/ClientRedirector.cs b/src/Impostor.Server/Net/Redirector/ClientRedirector.cs index 0cfa76d..22dc0a7 100644 --- a/src/Impostor.Server/Net/Redirector/ClientRedirector.cs +++ b/src/Impostor.Server/Net/Redirector/ClientRedirector.cs @@ -1,10 +1,8 @@ -using System.Collections.Generic; -using System.Threading.Tasks; +using System.Threading.Tasks; using Impostor.Api.Innersloth; using Impostor.Api.Net.Messages; using Impostor.Api.Net.Messages.C2S; using Impostor.Api.Net.Messages.S2C; -using Impostor.Api.Reactor; using Impostor.Hazel; using Impostor.Server.Config; using Impostor.Server.Net.Hazel; @@ -25,11 +23,10 @@ namespace Impostor.Server.Net.Redirector string name, int gameVersion, HazelConnection connection, - ISet mods, ClientManager clientManager, INodeProvider nodeProvider, INodeLocator nodeLocator) - : base(name, gameVersion, connection, mods) + : base(name, gameVersion, connection) { _clientManager = clientManager; _nodeProvider = nodeProvider; diff --git a/src/Impostor.Server/Net/State/Game.Incoming.cs b/src/Impostor.Server/Net/State/Game.Incoming.cs index 8f9df62..6e16208 100644 --- a/src/Impostor.Server/Net/State/Game.Incoming.cs +++ b/src/Impostor.Server/Net/State/Game.Incoming.cs @@ -1,12 +1,10 @@ using System; -using System.Linq; using System.Threading; using System.Threading.Tasks; using Impostor.Api.Games; using Impostor.Api.Innersloth; using Impostor.Api.Net; using Impostor.Api.Net.Messages; -using Impostor.Api.Reactor; using Impostor.Hazel; using Impostor.Server.Events; using Microsoft.Extensions.DependencyInjection; @@ -173,25 +171,6 @@ namespace Impostor.Server.Net.State return GameJoinResult.FromError(GameJoinError.GameDestroyed); } - if (Host != null) - { - foreach (var hostMod in Host.Client.Mods) - { - if (hostMod.Side == PluginSide.Both && client.Mods.All(clientMod => hostMod.Id != clientMod.Id)) - { - return GameJoinResult.CreateCustomError($"You are missing {hostMod.Id} - {hostMod.Version}"); - } - } - - foreach (var clientMod in client.Mods) - { - if (clientMod.Side == PluginSide.Both && Host.Client.Mods.All(hostMod => clientMod.Id != hostMod.Id)) - { - return GameJoinResult.CreateCustomError($"Host of this game is missing {clientMod.Id} - {clientMod.Version}"); - } - } - } - var isNew = false; if (player == null || player.Game != this) diff --git a/src/Impostor.Server/Program.cs b/src/Impostor.Server/Program.cs index ab582ca..03514d9 100644 --- a/src/Impostor.Server/Program.cs +++ b/src/Impostor.Server/Program.cs @@ -59,7 +59,7 @@ namespace Impostor.Server try { - Log.Information("Starting Impostor v{0}", DotnetUtils.GetVersion()); + Log.Information("Starting Impostor v{0}", DotnetUtils.Version); CreateHostBuilder(args).Build().Run(); return 0; } diff --git a/src/Impostor.Server/Recorder/ClientRecorder.cs b/src/Impostor.Server/Recorder/ClientRecorder.cs index fe9d94c..31af22a 100644 --- a/src/Impostor.Server/Recorder/ClientRecorder.cs +++ b/src/Impostor.Server/Recorder/ClientRecorder.cs @@ -1,7 +1,5 @@ -using System.Collections.Generic; -using System.Threading.Tasks; +using System.Threading.Tasks; using Impostor.Api.Net.Messages; -using Impostor.Api.Reactor; using Impostor.Server.Config; using Impostor.Server.Net; using Impostor.Server.Net.Hazel; @@ -18,8 +16,8 @@ namespace Impostor.Server.Recorder private bool _createdGame; private bool _recordAfter; - public ClientRecorder(ILogger logger, IOptions antiCheatOptions, ClientManager clientManager, GameManager gameManager, string name, int gameVersion, HazelConnection connection, ISet mods, PacketRecorder recorder) - : base(logger, antiCheatOptions, clientManager, gameManager, name, gameVersion, connection, mods) + public ClientRecorder(ILogger logger, IOptions antiCheatOptions, ClientManager clientManager, GameManager gameManager, string name, int gameVersion, HazelConnection connection, PacketRecorder recorder) + : base(logger, antiCheatOptions, clientManager, gameManager, name, gameVersion, connection) { _recorder = recorder; _isFirst = true; diff --git a/src/Impostor.Server/Recorder/PacketRecorder.cs b/src/Impostor.Server/Recorder/PacketRecorder.cs index 905e026..12985f1 100644 --- a/src/Impostor.Server/Recorder/PacketRecorder.cs +++ b/src/Impostor.Server/Recorder/PacketRecorder.cs @@ -161,7 +161,7 @@ namespace Impostor.Server.Recorder { context.Writer.Write((uint)ServerReplayVersion.Initial); context.Writer.Write(_startTime.ToUnixTimeMilliseconds()); - context.Writer.Write(DotnetUtils.GetVersion()); + context.Writer.Write(DotnetUtils.Version); await WriteAsync(context.Stream!); } diff --git a/src/Impostor.Server/Utils/DotnetUtils.cs b/src/Impostor.Server/Utils/DotnetUtils.cs index 48a0ac0..25a4c7c 100644 --- a/src/Impostor.Server/Utils/DotnetUtils.cs +++ b/src/Impostor.Server/Utils/DotnetUtils.cs @@ -2,19 +2,22 @@ namespace Impostor.Server.Utils { - internal static class DotnetUtils + public static class DotnetUtils { - private const string DefaultUnknownBuild = "UNKNOWN"; + private static string? _version; - public static string GetVersion() + public static string Version { - var attribute = typeof(DotnetUtils).Assembly.GetCustomAttribute(); - if (attribute != null) + get { - return attribute.InformationalVersion; - } + if (_version == null) + { + var attribute = typeof(DotnetUtils).Assembly.GetCustomAttribute(); + _version = attribute != null ? attribute.InformationalVersion : "UNKNOWN"; + } - return DefaultUnknownBuild; + return _version; + } } } } diff --git a/src/Impostor.Tools.ServerReplay/Program.cs b/src/Impostor.Tools.ServerReplay/Program.cs index 65401ef..16b756e 100644 --- a/src/Impostor.Tools.ServerReplay/Program.cs +++ b/src/Impostor.Tools.ServerReplay/Program.cs @@ -166,7 +166,7 @@ namespace Impostor.Tools.ServerReplay // Create and register connection. var connection = new MockHazelConnection(address); - await _clientManager.RegisterConnectionAsync(connection, name, gameVersion, null); + await _clientManager.RegisterConnectionAsync(connection, name, gameVersion); // Store reference for ourselfs. Connections.Add(clientId, connection); -- 2.39.5