mirror of
https://github.com/RaidMax/IW4M-Admin.git
synced 2025-06-10 07:13:58 -05:00
Update projects to .net 8 (#326)
* Update codebase to target .NET 8.0 and improve JSON serialization This commit switches our target framework from .NET 6.0 to .NET 8.0 and replaces Newtonsoft.Json with System.Text.Json for serialization. The JsonConverter classes have been updated to support the new JSON model and some enhancements were applied to the codebase such as fixing a command property and updating various package references. * Align with Develop * Update SharedLibraryCore package version The version of the SharedLibraryCore package reference has been updated across multiple projects from '2024.2.4.85' to '2024.2.5.9'. Meanwhile, version within SharedLibraryCore.csproj has been changed from '2024.02.04.085' to '2024.01.01.1'. Changes also include removal of .NET 8 requirement notice and reenabling of status upload to master communicator. * Update properties in IRConParser and IRConParserConfiguration to be settable The properties in the `IRConParser` and `IRConParserConfiguration` interfaces were updated to include setters. Previously, the properties in these interfaces were read-only. This change allows for the modifications and extensions of properties defined, thereby bolstering flexibility for the handling of games and parsers. * Replace RestEase with Refit in API usage Refit has been implemented as a replacement for RestEase in all API calls. As such, all related code, parameters and imports have been adjusted to function with Refit. Logic has also been added to handle certain Refit-specific behaviours. Occurrences of the RestEase package have been removed from the project. * Enable auto-redirect in HttpClient The HttpClient instance used in Application/Main.cs has been modified to automatically follow redirect responses. This was accomplished by adding "AllowAutoRedirect = true" to the HttpClientHandler used when creating the HttpClient. --------- Co-authored-by: Amos <amos2580@hotmail.co.uk>
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Data.Models;
|
||||
@ -19,6 +20,9 @@ namespace SharedLibraryCore.Interfaces
|
||||
/// <returns></returns>
|
||||
Task Kick(string reason, EFClient target, EFClient origin, EFPenalty previousPenalty = null);
|
||||
|
||||
IPEndPoint ResolvedIpEndPoint { get; }
|
||||
IRConParser RconParser { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Execute a server command
|
||||
/// </summary>
|
||||
@ -35,72 +39,72 @@ namespace SharedLibraryCore.Interfaces
|
||||
/// <param name="token"><see cref="CancellationToken"/></param>
|
||||
/// <returns></returns>
|
||||
Task SetDvarAsync(string name, object value, CancellationToken token = default);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Time the most recent match ended
|
||||
/// </summary>
|
||||
DateTime? MatchEndTime { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Time the current match started
|
||||
/// </summary>
|
||||
DateTime? MatchStartTime { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// List of connected clients
|
||||
/// </summary>
|
||||
IReadOnlyList<EFClient> ConnectedClients { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Game code corresponding to the development studio project
|
||||
/// </summary>
|
||||
Reference.Game GameCode { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Indicates if the anticheat/custom callbacks/live radar integration is enabled
|
||||
/// </summary>
|
||||
bool IsLegacyGameIntegrationEnabled { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Unique identifier for the server (typically ip:port)
|
||||
/// </summary>
|
||||
string Id { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Network address the server is listening on
|
||||
/// </summary>
|
||||
string ListenAddress { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Network port the server is listening on
|
||||
/// </summary>
|
||||
int ListenPort { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Name of the server (hostname)
|
||||
/// </summary>
|
||||
string ServerName { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Current gametype
|
||||
/// </summary>
|
||||
string Gametype { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Game password (required to join)
|
||||
/// </summary>
|
||||
string GamePassword { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Number of private client slots
|
||||
/// </summary>
|
||||
int PrivateClientSlots { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Current map the game server is running
|
||||
/// </summary>
|
||||
Map Map { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Database id for EFServer table and references
|
||||
/// </summary>
|
||||
|
@ -41,6 +41,7 @@ namespace SharedLibraryCore.Interfaces
|
||||
ILogger GetLogger(long serverId);
|
||||
|
||||
IList<Server> GetServers();
|
||||
List<Server> Servers { get; }
|
||||
IList<IManagerCommand> GetCommands();
|
||||
IList<MessageToken> GetMessageTokens();
|
||||
IList<EFClient> GetActiveClients();
|
||||
|
@ -15,35 +15,35 @@ namespace SharedLibraryCore.Interfaces
|
||||
/// <summary>
|
||||
/// stores the game/client specific version (usually the value of the "version" DVAR)
|
||||
/// </summary>
|
||||
string Version { get; }
|
||||
string Version { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// specifies the game name (usually the internal studio iteration ie: IW4, T5 etc...)
|
||||
/// </summary>
|
||||
Game GameName { get; }
|
||||
Game GameName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// indicates if the game supports generating a log path from DVAR retrieval
|
||||
/// of fs_game, fs_basepath, g_log
|
||||
/// </summary>
|
||||
bool CanGenerateLogPath { get; }
|
||||
bool CanGenerateLogPath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// specifies the name of the parser
|
||||
/// </summary>
|
||||
string Name { get; }
|
||||
string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// specifies the type of rcon engine
|
||||
/// eg: COD, Source
|
||||
/// </summary>
|
||||
string RConEngine { get; }
|
||||
string RConEngine { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// indicates that the game does not log to the mods folder (when mod is loaded),
|
||||
/// but rather always to the fs_basegame directory
|
||||
/// </summary>
|
||||
bool IsOneLog { get; }
|
||||
bool IsOneLog { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// retrieves the value of a given DVAR
|
||||
@ -54,7 +54,8 @@ namespace SharedLibraryCore.Interfaces
|
||||
/// <param name="fallbackValue">default value to return if dvar retrieval fails</param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<Dvar<T>> GetDvarAsync<T>(IRConConnection connection, string dvarName, T fallbackValue = default, CancellationToken token = default);
|
||||
Task<Dvar<T>> GetDvarAsync<T>(IRConConnection connection, string dvarName, T fallbackValue = default,
|
||||
CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// set value of DVAR by name
|
||||
@ -65,7 +66,7 @@ namespace SharedLibraryCore.Interfaces
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<bool> SetDvarAsync(IRConConnection connection, string dvarName, object dvarValue, CancellationToken token = default);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// executes a console command on the server
|
||||
/// </summary>
|
||||
|
@ -10,74 +10,74 @@ namespace SharedLibraryCore.Interfaces
|
||||
/// <summary>
|
||||
/// stores the command format for console commands
|
||||
/// </summary>
|
||||
CommandPrefix CommandPrefixes { get; }
|
||||
CommandPrefix CommandPrefixes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// stores the regex info for parsing get status response
|
||||
/// </summary>
|
||||
ParserRegex Status { get; }
|
||||
ParserRegex Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// stores regex info for parsing the map line from rcon status response
|
||||
/// </summary>
|
||||
ParserRegex MapStatus { get; }
|
||||
ParserRegex MapStatus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// stores regex info for parsing the gametype line from rcon status response
|
||||
/// </summary>
|
||||
ParserRegex GametypeStatus { get; }
|
||||
ParserRegex GametypeStatus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// stores regex info for parsing hostname line from rcon status response
|
||||
/// </summary>
|
||||
ParserRegex HostnameStatus { get; }
|
||||
ParserRegex HostnameStatus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// stores regex info for parsing max players line from rcon status response
|
||||
/// </summary>
|
||||
ParserRegex MaxPlayersStatus { get; }
|
||||
ParserRegex MaxPlayersStatus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// stores the regex info for parsing get DVAR responses
|
||||
/// </summary>
|
||||
ParserRegex Dvar { get; }
|
||||
ParserRegex Dvar { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// stores the regex info for parsing the header of a status response
|
||||
/// </summary>
|
||||
ParserRegex StatusHeader { get; }
|
||||
ParserRegex StatusHeader { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the expected response message from rcon when the server is not running
|
||||
/// </summary>
|
||||
string ServerNotRunningResponse { get; }
|
||||
string ServerNotRunningResponse { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// indicates if the application should wait for response from server
|
||||
/// when executing a command
|
||||
/// </summary>
|
||||
bool WaitForResponse { get; }
|
||||
bool WaitForResponse { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// indicates the format expected for parsed guids
|
||||
/// </summary>
|
||||
NumberStyles GuidNumberStyle { get; }
|
||||
NumberStyles GuidNumberStyle { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// specifies simple mappings for dvar names in scenarios where the needed
|
||||
/// information is not stored in a traditional dvar name
|
||||
/// </summary>
|
||||
IDictionary<string, string> OverrideDvarNameMapping { get; }
|
||||
IDictionary<string, string> OverrideDvarNameMapping { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// specifies the default dvar values for games that don't support certain dvars
|
||||
/// </summary>
|
||||
IDictionary<string, string> DefaultDvarValues { get; }
|
||||
IDictionary<string, string> DefaultDvarValues { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// contains a setup of commands that have override timeouts
|
||||
/// </summary>
|
||||
IDictionary<string, int?> OverrideCommandTimeouts { get; }
|
||||
IDictionary<string, int?> OverrideCommandTimeouts { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// specifies how many lines can be used for ingame notice
|
||||
@ -87,29 +87,30 @@ namespace SharedLibraryCore.Interfaces
|
||||
/// <summary>
|
||||
/// specifies how many characters can be displayed per notice line
|
||||
/// </summary>
|
||||
int NoticeMaxCharactersPerLine { get; }
|
||||
int NoticeMaxCharactersPerLine { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// specifies the characters used to split a line
|
||||
/// </summary>
|
||||
string NoticeLineSeparator { get; }
|
||||
string NoticeLineSeparator { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Default port the game listens to RCon requests on
|
||||
/// </summary>
|
||||
int? DefaultRConPort { get; }
|
||||
int? DefaultRConPort { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Default Indicator of where the game is installed (ex file path or registry entry)
|
||||
/// </summary>
|
||||
string DefaultInstallationDirectoryHint { get; }
|
||||
string DefaultInstallationDirectoryHint { get; set; }
|
||||
|
||||
ColorCodeMapping ColorCodeMapping { get; }
|
||||
ColorCodeMapping ColorCodeMapping { get; set; }
|
||||
|
||||
short FloodProtectInterval { get; set; }
|
||||
|
||||
short FloodProtectInterval { get; }
|
||||
/// <summary>
|
||||
/// indicates if diacritics (accented characters) should be normalized
|
||||
/// </summary>
|
||||
bool ShouldRemoveDiacritics { get; }
|
||||
bool ShouldRemoveDiacritics { get; set; }
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user