From: miniduikboot Date: Mon, 29 Aug 2022 17:02:36 +0000 (+0200) Subject: Move config files to API X-Git-Tag: v1.7.2~1 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=dc530406c6aa4e5fee4723bfefc138e03ab8a997;p=rhonda%2Fimpostor.git Move config files to API This makes it possible to access these from a plugin --- diff --git a/src/Impostor.Api/Config/AntiCheatConfig.cs b/src/Impostor.Api/Config/AntiCheatConfig.cs new file mode 100644 index 0000000..d9eb532 --- /dev/null +++ b/src/Impostor.Api/Config/AntiCheatConfig.cs @@ -0,0 +1,11 @@ +namespace Impostor.Api.Config +{ + public class AntiCheatConfig + { + public const string Section = "AntiCheat"; + + public bool Enabled { get; set; } = true; + + public bool BanIpFromGame { get; set; } = true; + } +} diff --git a/src/Impostor.Api/Config/CompatibilityConfig.cs b/src/Impostor.Api/Config/CompatibilityConfig.cs new file mode 100644 index 0000000..c18c7d8 --- /dev/null +++ b/src/Impostor.Api/Config/CompatibilityConfig.cs @@ -0,0 +1,11 @@ +namespace Impostor.Api.Config +{ + public class CompatibilityConfig + { + public const string Section = "Compatibility"; + + public bool AllowFutureGameVersions { get; set; } = false; + + public bool AllowVersionMixing { get; set; } = false; + } +} diff --git a/src/Impostor.Api/Config/DebugConfig.cs b/src/Impostor.Api/Config/DebugConfig.cs new file mode 100644 index 0000000..47cddac --- /dev/null +++ b/src/Impostor.Api/Config/DebugConfig.cs @@ -0,0 +1,11 @@ +namespace Impostor.Api.Config +{ + public class DebugConfig + { + public const string Section = "Debug"; + + public bool GameRecorderEnabled { get; set; } + + public string GameRecorderPath { get; set; } = string.Empty; + } +} diff --git a/src/Impostor.Api/Config/DisconnectMessages.cs b/src/Impostor.Api/Config/DisconnectMessages.cs new file mode 100644 index 0000000..353b79b --- /dev/null +++ b/src/Impostor.Api/Config/DisconnectMessages.cs @@ -0,0 +1,30 @@ +namespace Impostor.Api.Config +{ + public static class DisconnectMessages + { + public const string Error = "There was an internal server error. " + + "Check the server console for more information. " + + "Please report the issue on the Impostor GitHub if it keeps happening."; + + public const string ClientOutdated = "Please update your game to play in this lobby."; + + public const string ClientTooNew = "Your game version is too new for this lobby. " + + "If you want to join this lobby you need to downgrade your client."; + + public const string Destroyed = "The game you tried to join is being destroyed. " + + "Please create a new game."; + + public const string NotImplemented = "Game listing has not been implemented in Impostor yet for servers " + + "running in server redirection mode."; + + public const string UsernameLength = "Your username is too long, please make it shorter."; + + public const string UsernameIllegalCharacters = "Your username contains illegal characters, please remove them."; + + public const string VersionClientTooOld = "Please update your game to play on this server."; + + public const string VersionServerTooOld = "Your client is too new, please update your Impostor server to play."; + + public const string VersionUnsupported = "Your client version is unsupported, please update your Game and/or Impostor server."; + } +} diff --git a/src/Impostor.Api/Config/ServerConfig.cs b/src/Impostor.Api/Config/ServerConfig.cs new file mode 100644 index 0000000..afcca03 --- /dev/null +++ b/src/Impostor.Api/Config/ServerConfig.cs @@ -0,0 +1,30 @@ +using Impostor.Api.Utils; + +namespace Impostor.Api.Config +{ + public class ServerConfig + { + public const string Section = "Server"; + + private string? _resolvedPublicIp; + private string? _resolvedListenIp; + + public string PublicIp { get; set; } = "127.0.0.1"; + + public ushort PublicPort { get; set; } = 22023; + + public string ListenIp { get; set; } = "127.0.0.1"; + + public ushort ListenPort { get; set; } = 22023; + + public string ResolvePublicIp() + { + return _resolvedPublicIp ??= IpUtils.ResolveIp(PublicIp); + } + + public string ResolveListenIp() + { + return _resolvedListenIp ??= IpUtils.ResolveIp(ListenIp); + } + } +} diff --git a/src/Impostor.Api/Config/ServerRedirectorConfig.cs b/src/Impostor.Api/Config/ServerRedirectorConfig.cs new file mode 100644 index 0000000..0d11ab1 --- /dev/null +++ b/src/Impostor.Api/Config/ServerRedirectorConfig.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; + +namespace Impostor.Api.Config +{ + public class ServerRedirectorConfig + { + public const string Section = "ServerRedirector"; + + public bool Enabled { get; set; } + + public bool Master { get; set; } + + public NodeLocator? Locator { get; set; } + + public List? Nodes { get; set; } + + public class NodeLocator + { + [AllowNull] + public string Redis { get; set; } + + [AllowNull] + public string UdpMasterEndpoint { get; set; } + } + } +} diff --git a/src/Impostor.Api/Config/ServerRedirectorNode.cs b/src/Impostor.Api/Config/ServerRedirectorNode.cs new file mode 100644 index 0000000..9980bd4 --- /dev/null +++ b/src/Impostor.Api/Config/ServerRedirectorNode.cs @@ -0,0 +1,13 @@ +using System.Diagnostics.CodeAnalysis; + +namespace Impostor.Api.Config +{ + public class ServerRedirectorNode + { + [AllowNull] + public string Ip { get; set; } + + [AllowNull] + public ushort Port { get; set; } + } +} diff --git a/src/Impostor.Api/Utils/IpUtils.cs b/src/Impostor.Api/Utils/IpUtils.cs new file mode 100644 index 0000000..c50eccf --- /dev/null +++ b/src/Impostor.Api/Utils/IpUtils.cs @@ -0,0 +1,41 @@ +using System.Linq; +using System.Net; +using System.Net.Sockets; + +namespace Impostor.Api.Utils +{ + internal static class IpUtils + { + public static string ResolveIp(string ip) + { + // Check if valid ip was entered. + if (!IPAddress.TryParse(ip, out var ipAddress)) + { + // Attempt to resolve DNS. + try + { + var hostAddresses = Dns.GetHostAddresses(ip); + if (hostAddresses.Length == 0) + { + throw new ImpostorConfigException($"Invalid IP Address entered '{ip}'."); + } + + // Use first IPv4 result. + ipAddress = hostAddresses.First(x => x.AddressFamily == AddressFamily.InterNetwork); + } + catch (SocketException) + { + throw new ImpostorConfigException($"Failed to resolve hostname '{ip}'."); + } + } + + // Only IPv4. + if (ipAddress.AddressFamily == AddressFamily.InterNetworkV6) + { + throw new ImpostorConfigException($"Invalid IP Address entered '{ipAddress}', only IPv4 is supported by Among Us."); + } + + return ipAddress.ToString(); + } + } +} diff --git a/src/Impostor.Server/Config/AntiCheatConfig.cs b/src/Impostor.Server/Config/AntiCheatConfig.cs deleted file mode 100644 index ee1f62a..0000000 --- a/src/Impostor.Server/Config/AntiCheatConfig.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Impostor.Server.Config -{ - public class AntiCheatConfig - { - public const string Section = "AntiCheat"; - - public bool Enabled { get; set; } = true; - - public bool BanIpFromGame { get; set; } = true; - } -} diff --git a/src/Impostor.Server/Config/CompatibilityConfig.cs b/src/Impostor.Server/Config/CompatibilityConfig.cs deleted file mode 100644 index d9fea81..0000000 --- a/src/Impostor.Server/Config/CompatibilityConfig.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Impostor.Server.Config -{ - public class CompatibilityConfig - { - public const string Section = "Compatibility"; - - public bool AllowFutureGameVersions { get; set; } = false; - - public bool AllowVersionMixing { get; set; } = false; - } -} diff --git a/src/Impostor.Server/Config/DebugConfig.cs b/src/Impostor.Server/Config/DebugConfig.cs deleted file mode 100644 index 72529de..0000000 --- a/src/Impostor.Server/Config/DebugConfig.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Impostor.Server.Config -{ - public class DebugConfig - { - public const string Section = "Debug"; - - public bool GameRecorderEnabled { get; set; } - - public string GameRecorderPath { get; set; } = string.Empty; - } -} diff --git a/src/Impostor.Server/Config/DisconnectMessages.cs b/src/Impostor.Server/Config/DisconnectMessages.cs deleted file mode 100644 index 3384f32..0000000 --- a/src/Impostor.Server/Config/DisconnectMessages.cs +++ /dev/null @@ -1,30 +0,0 @@ -namespace Impostor.Server.Config -{ - public static class DisconnectMessages - { - public const string Error = "There was an internal server error. " + - "Check the server console for more information. " + - "Please report the issue on the Impostor GitHub if it keeps happening."; - - public const string ClientOutdated = "Please update your game to play in this lobby."; - - public const string ClientTooNew = "Your game version is too new for this lobby. " + - "If you want to join this lobby you need to downgrade your client."; - - public const string Destroyed = "The game you tried to join is being destroyed. " + - "Please create a new game."; - - public const string NotImplemented = "Game listing has not been implemented in Impostor yet for servers " + - "running in server redirection mode."; - - public const string UsernameLength = "Your username is too long, please make it shorter."; - - public const string UsernameIllegalCharacters = "Your username contains illegal characters, please remove them."; - - public const string VersionClientTooOld = "Please update your game to play on this server."; - - public const string VersionServerTooOld = "Your client is too new, please update your Impostor server to play."; - - public const string VersionUnsupported = "Your client version is unsupported, please update your Game and/or Impostor server."; - } -} diff --git a/src/Impostor.Server/Config/ServerConfig.cs b/src/Impostor.Server/Config/ServerConfig.cs deleted file mode 100644 index 7ed3ae6..0000000 --- a/src/Impostor.Server/Config/ServerConfig.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Impostor.Server.Utils; - -namespace Impostor.Server.Config -{ - internal class ServerConfig - { - public const string Section = "Server"; - - private string? _resolvedPublicIp; - private string? _resolvedListenIp; - - public string PublicIp { get; set; } = "127.0.0.1"; - - public ushort PublicPort { get; set; } = 22023; - - public string ListenIp { get; set; } = "127.0.0.1"; - - public ushort ListenPort { get; set; } = 22023; - - public string ResolvePublicIp() - { - return _resolvedPublicIp ??= IpUtils.ResolveIp(PublicIp); - } - - public string ResolveListenIp() - { - return _resolvedListenIp ??= IpUtils.ResolveIp(ListenIp); - } - } -} diff --git a/src/Impostor.Server/Config/ServerRedirectorConfig.cs b/src/Impostor.Server/Config/ServerRedirectorConfig.cs deleted file mode 100644 index 686ad7f..0000000 --- a/src/Impostor.Server/Config/ServerRedirectorConfig.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; - -namespace Impostor.Server.Config -{ - public class ServerRedirectorConfig - { - public const string Section = "ServerRedirector"; - - public bool Enabled { get; set; } - - public bool Master { get; set; } - - public NodeLocator? Locator { get; set; } - - public List? Nodes { get; set; } - - public class NodeLocator - { - [AllowNull] - public string Redis { get; set; } - - [AllowNull] - public string UdpMasterEndpoint { get; set; } - } - } -} diff --git a/src/Impostor.Server/Config/ServerRedirectorNode.cs b/src/Impostor.Server/Config/ServerRedirectorNode.cs deleted file mode 100644 index c479512..0000000 --- a/src/Impostor.Server/Config/ServerRedirectorNode.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Diagnostics.CodeAnalysis; - -namespace Impostor.Server.Config -{ - public class ServerRedirectorNode - { - [AllowNull] - public string Ip { get; set; } - - [AllowNull] - public ushort Port { get; set; } - } -} diff --git a/src/Impostor.Server/Net/Client.cs b/src/Impostor.Server/Net/Client.cs index 7a28371..1b2dcde 100644 --- a/src/Impostor.Server/Net/Client.cs +++ b/src/Impostor.Server/Net/Client.cs @@ -2,6 +2,7 @@ using System; using System.Linq; using System.Threading.Tasks; using Impostor.Api; +using Impostor.Api.Config; using Impostor.Api.Games; using Impostor.Api.Innersloth; using Impostor.Api.Net; @@ -10,7 +11,6 @@ using Impostor.Api.Net.Messages; using Impostor.Api.Net.Messages.C2S; using Impostor.Api.Net.Messages.S2C; using Impostor.Hazel; -using Impostor.Server.Config; using Impostor.Server.Net.Manager; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; diff --git a/src/Impostor.Server/Net/Manager/ClientManager.cs b/src/Impostor.Server/Net/Manager/ClientManager.cs index 34001de..efff8c9 100644 --- a/src/Impostor.Server/Net/Manager/ClientManager.cs +++ b/src/Impostor.Server/Net/Manager/ClientManager.cs @@ -4,12 +4,12 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; +using Impostor.Api.Config; using Impostor.Api.Events.Managers; using Impostor.Api.Innersloth; using Impostor.Api.Net; using Impostor.Api.Net.Messages; using Impostor.Hazel; -using Impostor.Server.Config; using Impostor.Server.Events.Client; using Impostor.Server.Net.Factories; using Microsoft.Extensions.Logging; diff --git a/src/Impostor.Server/Net/Manager/GameManager.cs b/src/Impostor.Server/Net/Manager/GameManager.cs index f567f61..f4c6b1d 100644 --- a/src/Impostor.Server/Net/Manager/GameManager.cs +++ b/src/Impostor.Server/Net/Manager/GameManager.cs @@ -5,12 +5,12 @@ using System.Linq; using System.Net; using System.Threading.Tasks; using Impostor.Api; +using Impostor.Api.Config; using Impostor.Api.Events.Managers; using Impostor.Api.Games; using Impostor.Api.Games.Managers; using Impostor.Api.Innersloth; using Impostor.Api.Net; -using Impostor.Server.Config; using Impostor.Server.Events; using Impostor.Server.Net.Redirector; using Impostor.Server.Net.State; diff --git a/src/Impostor.Server/Net/MatchmakerService.cs b/src/Impostor.Server/Net/MatchmakerService.cs index bd9a855..35ff6df 100644 --- a/src/Impostor.Server/Net/MatchmakerService.cs +++ b/src/Impostor.Server/Net/MatchmakerService.cs @@ -1,7 +1,7 @@ using System.Net; using System.Threading; using System.Threading.Tasks; -using Impostor.Server.Config; +using Impostor.Api.Config; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; diff --git a/src/Impostor.Server/Net/Redirector/ClientRedirector.cs b/src/Impostor.Server/Net/Redirector/ClientRedirector.cs index f463abb..67ad048 100644 --- a/src/Impostor.Server/Net/Redirector/ClientRedirector.cs +++ b/src/Impostor.Server/Net/Redirector/ClientRedirector.cs @@ -1,10 +1,10 @@ using System.Threading.Tasks; +using Impostor.Api.Config; using Impostor.Api.Innersloth; using Impostor.Api.Net.Messages; using Impostor.Api.Net.Messages.C2S; using Impostor.Api.Net.Messages.S2C; using Impostor.Hazel; -using Impostor.Server.Config; using Impostor.Server.Net.Hazel; using Impostor.Server.Net.Manager; using Serilog; diff --git a/src/Impostor.Server/Net/Redirector/NodeLocatorUDP.cs b/src/Impostor.Server/Net/Redirector/NodeLocatorUDP.cs index c75392a..4b640a9 100644 --- a/src/Impostor.Server/Net/Redirector/NodeLocatorUDP.cs +++ b/src/Impostor.Server/Net/Redirector/NodeLocatorUDP.cs @@ -4,7 +4,7 @@ using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; -using Impostor.Server.Config; +using Impostor.Api.Config; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; diff --git a/src/Impostor.Server/Net/Redirector/NodeLocatorUDPService.cs b/src/Impostor.Server/Net/Redirector/NodeLocatorUDPService.cs index 781e91f..fba9ac1 100644 --- a/src/Impostor.Server/Net/Redirector/NodeLocatorUDPService.cs +++ b/src/Impostor.Server/Net/Redirector/NodeLocatorUDPService.cs @@ -4,7 +4,7 @@ using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; -using Impostor.Server.Config; +using Impostor.Api.Config; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; diff --git a/src/Impostor.Server/Net/Redirector/NodeProviderConfig.cs b/src/Impostor.Server/Net/Redirector/NodeProviderConfig.cs index 7e2982e..7111bd0 100644 --- a/src/Impostor.Server/Net/Redirector/NodeProviderConfig.cs +++ b/src/Impostor.Server/Net/Redirector/NodeProviderConfig.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; using System.Net; -using Impostor.Server.Config; +using Impostor.Api.Config; using Microsoft.Extensions.Options; namespace Impostor.Server.Net.Redirector diff --git a/src/Impostor.Server/Net/State/Game.cs b/src/Impostor.Server/Net/State/Game.cs index 5da19d4..63680f8 100644 --- a/src/Impostor.Server/Net/State/Game.cs +++ b/src/Impostor.Server/Net/State/Game.cs @@ -6,13 +6,13 @@ using System.Linq; using System.Net; using System.Numerics; using System.Threading.Tasks; +using Impostor.Api.Config; using Impostor.Api.Events.Managers; using Impostor.Api.Games; using Impostor.Api.Innersloth; using Impostor.Api.Net; using Impostor.Api.Net.Messages; using Impostor.Api.Net.Messages.S2C; -using Impostor.Server.Config; using Impostor.Server.Events; using Impostor.Server.Net.Manager; using Microsoft.Extensions.Logging; diff --git a/src/Impostor.Server/Program.cs b/src/Impostor.Server/Program.cs index 1c575dd..ed972ca 100644 --- a/src/Impostor.Server/Program.cs +++ b/src/Impostor.Server/Program.cs @@ -3,6 +3,7 @@ using System.IO; using System.Linq; using System.Reflection; using System.Runtime.Loader; +using Impostor.Api.Config; using Impostor.Api.Events.Managers; using Impostor.Api.Games; using Impostor.Api.Games.Managers; @@ -11,7 +12,6 @@ using Impostor.Api.Net.Manager; using Impostor.Api.Net.Messages; using Impostor.Api.Utils; using Impostor.Hazel.Extensions; -using Impostor.Server.Config; using Impostor.Server.Events; using Impostor.Server.Net; using Impostor.Server.Net.Custom; diff --git a/src/Impostor.Server/Recorder/ClientRecorder.cs b/src/Impostor.Server/Recorder/ClientRecorder.cs index 4acf2a5..3029652 100644 --- a/src/Impostor.Server/Recorder/ClientRecorder.cs +++ b/src/Impostor.Server/Recorder/ClientRecorder.cs @@ -1,8 +1,8 @@ using System.Threading.Tasks; +using Impostor.Api.Config; using Impostor.Api.Innersloth; using Impostor.Api.Net.Custom; using Impostor.Api.Net.Messages; -using Impostor.Server.Config; using Impostor.Server.Net; using Impostor.Server.Net.Hazel; using Impostor.Server.Net.Manager; diff --git a/src/Impostor.Server/Recorder/PacketRecorder.cs b/src/Impostor.Server/Recorder/PacketRecorder.cs index 12985f1..704f26b 100644 --- a/src/Impostor.Server/Recorder/PacketRecorder.cs +++ b/src/Impostor.Server/Recorder/PacketRecorder.cs @@ -4,9 +4,9 @@ using System.Net; using System.Threading; using System.Threading.Channels; using System.Threading.Tasks; +using Impostor.Api.Config; using Impostor.Api.Games; using Impostor.Api.Net.Messages; -using Impostor.Server.Config; using Impostor.Server.Net; using Impostor.Server.Utils; using Microsoft.Extensions.Hosting; diff --git a/src/Impostor.Server/Utils/IpUtils.cs b/src/Impostor.Server/Utils/IpUtils.cs deleted file mode 100644 index 649d45a..0000000 --- a/src/Impostor.Server/Utils/IpUtils.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System.Linq; -using System.Net; -using System.Net.Sockets; -using Impostor.Api; - -namespace Impostor.Server.Utils -{ - internal static class IpUtils - { - public static string ResolveIp(string ip) - { - // Check if valid ip was entered. - if (!IPAddress.TryParse(ip, out var ipAddress)) - { - // Attempt to resolve DNS. - try - { - var hostAddresses = Dns.GetHostAddresses(ip); - if (hostAddresses.Length == 0) - { - throw new ImpostorConfigException($"Invalid IP Address entered '{ip}'."); - } - - // Use first IPv4 result. - ipAddress = hostAddresses.First(x => x.AddressFamily == AddressFamily.InterNetwork); - } - catch (SocketException) - { - throw new ImpostorConfigException($"Failed to resolve hostname '{ip}'."); - } - } - - // Only IPv4. - if (ipAddress.AddressFamily == AddressFamily.InterNetworkV6) - { - throw new ImpostorConfigException($"Invalid IP Address entered '{ipAddress}', only IPv4 is supported by Among Us."); - } - - return ipAddress.ToString(); - } - } -}