diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..9de6e10 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,67 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + // Use IntelliSense to find out which attributes exist for C# debugging. + // Use hover for the description of the existing attributes + // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md + { + "name": "Server:80", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build-server", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/ReCap.Server/bin/Debug/net8.0/ReCap.Server.dll", + "cwd": "${workspaceFolder}/ReCap.Server/bin/Debug/net8.0", + "args": [], + // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console + "console": "externalTerminal", + "stopAtEntry": false + }, + { + "name": "Server:80 (alternate DB path)", + "type": "coreclr", + "request": "launch", + /* + "preLaunchTask": "publish-server-linux", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/ReCap.Server/bin/Release/net8.0/linux-x64/publish/ReCap.Server.dll", + "cwd": "${workspaceFolder}/ReCap.Server/bin/Release/net8.0/linux-x64/publish", + */ + "preLaunchTask": "build-server", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/ReCap.Server/bin/Debug/net8.0/ReCap.Server.dll", + "cwd": "${workspaceFolder}/ReCap.Server/bin/Debug/net8.0", + "args": [ + "--database-path=/home/splitwirez/.local/share/ResurrectionCapsule/server/db/", + ], + // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console + "console": "externalTerminal", + "stopAtEntry": false + }, + { + // https://stackoverflow.com/questions/3363892/what-non-standard-ports-are-safe-to-use#comment91403123_3363928 + "name": "Server:9001", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build-server", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/ReCap.Server/bin/Debug/net8.0/ReCap.Server.dll", + "cwd": "${workspaceFolder}/ReCap.Server/bin/Debug/net8.0", + "args": [ + "--port=9001", + "--database-path=/home/splitwirez/.local/share/ResurrectionCapsule/server/db/", + ], + "console": "internalConsole", + "stopAtEntry": false + }, + { + "name": ".NET Core Attach", + "type": "coreclr", + "request": "attach", + "processId": "${command:pickProcess}" + }, + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..fa53e24 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,13 @@ +{ + "files.watcherExclude": { + "**/bin/": true, + "**/obj/": true, + "lib/SharpRakNet/**/*.csproj": true, + }, + "files.exclude": { + "**/bin/": true, + "**/obj/": true, + "lib/SharpRakNet/**/*.csproj": true, + }, + "dotnet.preferCSharpExtension": true +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..c218b8c --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,42 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build-server", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/ReCap.Server/ReCap.Server.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary", + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish-server-linux", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/ReCap.Server/ReCap.Server.csproj", + "--self-contained", "true", + "-r", "linux-x64", + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "${workspaceFolder}/ReCap.Server/ReCap.Server.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + ] +} \ No newline at end of file diff --git a/ReCap.Server/src/adapters/blaze/BlazeObjectId.cs b/ReCap.Server/Adapters/Blaze/BlazeObjectId.cs similarity index 94% rename from ReCap.Server/src/adapters/blaze/BlazeObjectId.cs rename to ReCap.Server/Adapters/Blaze/BlazeObjectId.cs index ed45b72..5c16fd6 100644 --- a/ReCap.Server/src/adapters/blaze/BlazeObjectId.cs +++ b/ReCap.Server/Adapters/Blaze/BlazeObjectId.cs @@ -1,4 +1,4 @@ -namespace BlazeServer; +namespace ReCap.Server.Adapters.Blaze; public class BlazeObjectType { diff --git a/ReCap.Server/src/adapters/blaze/Server.cs b/ReCap.Server/Adapters/Blaze/BlazeServer.cs similarity index 88% rename from ReCap.Server/src/adapters/blaze/Server.cs rename to ReCap.Server/Adapters/Blaze/BlazeServer.cs index 455c014..2008c46 100644 --- a/ReCap.Server/src/adapters/blaze/Server.cs +++ b/ReCap.Server/Adapters/Blaze/BlazeServer.cs @@ -1,26 +1,16 @@ -namespace BlazeServer; - -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using System.Net; using System.Net.Sockets; - using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Tls; - using ReCap.Server.Adapters.Blaze.Ssl; - -using ReCap.Server.Adapters.Blaze.Component.Association; -using ReCap.Server.Adapters.Blaze.Component.Authentication; +using ReCap.Server.Adapters.Blaze.Component; using ReCap.Server.Adapters.Blaze.Component.GameManager; -using ReCap.Server.Adapters.Blaze.Component.Messaging; -using ReCap.Server.Adapters.Blaze.Component.Playgroups; -using ReCap.Server.Adapters.Blaze.Component.Redirector; -using ReCap.Server.Adapters.Blaze.Component.Rooms; -using ReCap.Server.Adapters.Blaze.Component.UserSessions; -using ReCap.Server.Adapters.Blaze.Component.Util; -using ReCap.Server.Config.Sqlite; - -public class Server +using ReCap.Server.Config; + +namespace ReCap.Server.Adapters.Blaze; + +public class BlazeServer { private CancellationTokenSource CancellationTokenSource { get; set; } private TcpListener Listener { get; } @@ -38,7 +28,7 @@ public class Server public int Port { get; } public bool Running { get; private set; } - public Server(SqliteConfig newSqliteConfig, string name, IPAddress hostAddress, int port, bool isSecure, string hostname) + public BlazeServer(SqliteConfig newSqliteConfig, string name, IPAddress hostAddress, int port, bool isSecure, string hostname) { Name = name; IsSecure = isSecure; diff --git a/ReCap.Server/src/adapters/blaze/Client.cs b/ReCap.Server/Adapters/Blaze/Client.cs similarity index 97% rename from ReCap.Server/src/adapters/blaze/Client.cs rename to ReCap.Server/Adapters/Blaze/Client.cs index eadcaed..af72aaf 100644 --- a/ReCap.Server/src/adapters/blaze/Client.cs +++ b/ReCap.Server/Adapters/Blaze/Client.cs @@ -2,13 +2,11 @@ using System.Diagnostics.CodeAnalysis; using System.Net; using System.Net.Sockets; - using Org.BouncyCastle.Tls; - -namespace BlazeServer; - using ReCap.Server.Adapters.Blaze.Ssl; +namespace ReCap.Server.Adapters.Blaze; + public class Client { private byte[] ReceiveBuffer { get; } @@ -17,7 +15,7 @@ public class Client private TlsServerProtocol? SslStream { get; } private Stream CommStream { get; set; } - public Server Server { get; } + public BlazeServer Server { get; } [MemberNotNullWhen(true, nameof(SslStream))] public bool IsSecure => Server.IsSecure; public IPEndPoint EndPoint { get; } = null!; @@ -26,7 +24,7 @@ public class Client public ulong UserId { get; set; } public string AuthToken { get; set; } - public Client(Server server, TcpClient tcpClient) + public Client(BlazeServer server, TcpClient tcpClient) { ReceiveBuffer = ArrayPool.Shared.Rent(0x10000); diff --git a/ReCap.Server/src/adapters/blaze/components/Association/AssociationListsComponent.cs b/ReCap.Server/Adapters/Blaze/Component/AssociationListsComponent.cs similarity index 97% rename from ReCap.Server/src/adapters/blaze/components/Association/AssociationListsComponent.cs rename to ReCap.Server/Adapters/Blaze/Component/AssociationListsComponent.cs index 2bc6c67..2a79866 100644 --- a/ReCap.Server/src/adapters/blaze/components/Association/AssociationListsComponent.cs +++ b/ReCap.Server/Adapters/Blaze/Component/AssociationListsComponent.cs @@ -1,12 +1,11 @@ -namespace ReCap.Server.Adapters.Blaze.Component.Association; +using ReCap.Server.Util; -using BlazeServer; -using ReCap.Server.Utils.Logger; +namespace ReCap.Server.Adapters.Blaze.Component; public class AssociationListsComponent : IComponent { public ushort Id { get; } = 0x19; - public Server? Server { get; set; } + public BlazeServer? Server { get; set; } public bool HandlePacket(Client client, Packet packet) { diff --git a/ReCap.Server/src/adapters/blaze/components/Authentication/AuthenticationComponent.cs b/ReCap.Server/Adapters/Blaze/Component/AuthenticationComponent.cs similarity index 97% rename from ReCap.Server/src/adapters/blaze/components/Authentication/AuthenticationComponent.cs rename to ReCap.Server/Adapters/Blaze/Component/AuthenticationComponent.cs index fa4cab6..a133011 100644 --- a/ReCap.Server/src/adapters/blaze/components/Authentication/AuthenticationComponent.cs +++ b/ReCap.Server/Adapters/Blaze/Component/AuthenticationComponent.cs @@ -1,15 +1,10 @@ using System.Buffers.Binary; using System.Text; +using ReCap.Server.Config; +using ReCap.Server.Services; +using ReCap.Server.Util; -namespace ReCap.Server.Adapters.Blaze.Component.Authentication; - -using BlazeServer; - -using ReCap.Server.Adapters.Blaze.Component.UserSessions; -using ReCap.Server.Adapters.Blaze.Component.Util; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Service.Account; -using ReCap.Server.Utils.Logger; +namespace ReCap.Server.Adapters.Blaze.Component; public class AuthenticationComponent : IComponent { @@ -22,7 +17,7 @@ public AuthenticationComponent(SqliteConfig newSqliteConfig) { public static uint CurrentUnixTime => (uint)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds; public ushort Id { get; } = 1; - public Server? Server { get; set; } + public BlazeServer? Server { get; set; } public bool HandlePacket(Client client, Packet packet) { diff --git a/ReCap.Server/src/adapters/blaze/components/GameManager/GameManagerComponent.cs b/ReCap.Server/Adapters/Blaze/Component/GameManager/GameManagerComponent.cs similarity index 99% rename from ReCap.Server/src/adapters/blaze/components/GameManager/GameManagerComponent.cs rename to ReCap.Server/Adapters/Blaze/Component/GameManager/GameManagerComponent.cs index 358d637..dde7486 100644 --- a/ReCap.Server/src/adapters/blaze/components/GameManager/GameManagerComponent.cs +++ b/ReCap.Server/Adapters/Blaze/Component/GameManager/GameManagerComponent.cs @@ -1,18 +1,15 @@ -namespace ReCap.Server.Adapters.Blaze.Component.GameManager; +using ReCap.Server.Config; +using ReCap.Server.Services; +using ReCap.Server.Util; -using BlazeServer; - -using ReCap.Server.Adapters.Blaze.Component.Util; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Service.Game; -using ReCap.Server.Utils.Logger; +namespace ReCap.Server.Adapters.Blaze.Component.GameManager; public class GameManagerComponent : IComponent { public static uint CurrentUnixTime => (uint)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds; public ushort Id => 4; - public Server? Server { get; set; } + public BlazeServer? Server { get; set; } public IGameHandler? GameHandler { get; set; } private GameService gameService; diff --git a/ReCap.Server/src/adapters/blaze/components/GameManager/GameReportingComponent.cs b/ReCap.Server/Adapters/Blaze/Component/GameManager/GameReportingComponent.cs similarity index 90% rename from ReCap.Server/src/adapters/blaze/components/GameManager/GameReportingComponent.cs rename to ReCap.Server/Adapters/Blaze/Component/GameManager/GameReportingComponent.cs index 069833a..8167354 100644 --- a/ReCap.Server/src/adapters/blaze/components/GameManager/GameReportingComponent.cs +++ b/ReCap.Server/Adapters/Blaze/Component/GameManager/GameReportingComponent.cs @@ -1,12 +1,11 @@ -namespace ReCap.Server.Adapters.Blaze.Component.GameManager; +using ReCap.Server.Util; -using BlazeServer; -using ReCap.Server.Utils.Logger; +namespace ReCap.Server.Adapters.Blaze.Component.GameManager; public class GameReportingComponent : IComponent { public ushort Id { get; } = 0x1C; - public Server? Server { get; set; } + public BlazeServer? Server { get; set; } public bool HandlePacket(Client client, Packet packet) { diff --git a/ReCap.Server/src/adapters/blaze/components/GameManager/IGame.cs b/ReCap.Server/Adapters/Blaze/Component/GameManager/IGame.cs similarity index 100% rename from ReCap.Server/src/adapters/blaze/components/GameManager/IGame.cs rename to ReCap.Server/Adapters/Blaze/Component/GameManager/IGame.cs diff --git a/ReCap.Server/src/adapters/blaze/components/GameManager/IGameHandler.cs b/ReCap.Server/Adapters/Blaze/Component/GameManager/IGameHandler.cs similarity index 100% rename from ReCap.Server/src/adapters/blaze/components/GameManager/IGameHandler.cs rename to ReCap.Server/Adapters/Blaze/Component/GameManager/IGameHandler.cs diff --git a/ReCap.Server/src/adapters/blaze/components/IComponent.cs b/ReCap.Server/Adapters/Blaze/Component/IComponent.cs similarity index 68% rename from ReCap.Server/src/adapters/blaze/components/IComponent.cs rename to ReCap.Server/Adapters/Blaze/Component/IComponent.cs index 2026f19..ff4d71b 100644 --- a/ReCap.Server/src/adapters/blaze/components/IComponent.cs +++ b/ReCap.Server/Adapters/Blaze/Component/IComponent.cs @@ -1,10 +1,10 @@ -namespace BlazeServer; +namespace ReCap.Server.Adapters.Blaze.Component; public interface IComponent { ushort Id { get; } - Server? Server { get; set; } + BlazeServer? Server { get; set; } bool HandlePacket(Client client, Packet packet); diff --git a/ReCap.Server/src/adapters/blaze/components/Messaging/MessagingComponent.cs b/ReCap.Server/Adapters/Blaze/Component/MessagingComponent.cs similarity index 96% rename from ReCap.Server/src/adapters/blaze/components/Messaging/MessagingComponent.cs rename to ReCap.Server/Adapters/Blaze/Component/MessagingComponent.cs index ad147ca..9a0d546 100644 --- a/ReCap.Server/src/adapters/blaze/components/Messaging/MessagingComponent.cs +++ b/ReCap.Server/Adapters/Blaze/Component/MessagingComponent.cs @@ -1,12 +1,11 @@ -namespace ReCap.Server.Adapters.Blaze.Component.Messaging; +using ReCap.Server.Util; -using BlazeServer; -using ReCap.Server.Utils.Logger; +namespace ReCap.Server.Adapters.Blaze.Component; public class MessagingComponent : IComponent { public ushort Id { get; } = 0xF; - public Server? Server { get; set; } + public BlazeServer? Server { get; set; } public bool HandlePacket(Client client, Packet packet) { diff --git a/ReCap.Server/src/adapters/blaze/components/Playgroups/PlaygroupsComponent.cs b/ReCap.Server/Adapters/Blaze/Component/PlaygroupsComponent.cs similarity index 93% rename from ReCap.Server/src/adapters/blaze/components/Playgroups/PlaygroupsComponent.cs rename to ReCap.Server/Adapters/Blaze/Component/PlaygroupsComponent.cs index 3eab9ce..dda7940 100644 --- a/ReCap.Server/src/adapters/blaze/components/Playgroups/PlaygroupsComponent.cs +++ b/ReCap.Server/Adapters/Blaze/Component/PlaygroupsComponent.cs @@ -1,14 +1,12 @@ -namespace ReCap.Server.Adapters.Blaze.Component.Playgroups; +using ReCap.Server.Adapters.Blaze.Component.GameManager; +using ReCap.Server.Util; -using ReCap.Server.Adapters.Blaze.Component.GameManager; -using BlazeServer; -using ReCap.Server.Adapters.Blaze.Component.Util; -using ReCap.Server.Utils.Logger; +namespace ReCap.Server.Adapters.Blaze.Component; public class PlaygroupsComponent : IComponent { public ushort Id => 6; - public Server? Server { get; set; } + public BlazeServer? Server { get; set; } public bool HandlePacket(Client client, Packet packet) { diff --git a/ReCap.Server/Adapters/Blaze/Component/RedirectorComponent.cs b/ReCap.Server/Adapters/Blaze/Component/RedirectorComponent.cs new file mode 100644 index 0000000..d392b6e --- /dev/null +++ b/ReCap.Server/Adapters/Blaze/Component/RedirectorComponent.cs @@ -0,0 +1,262 @@ +using ReCap.Server.Util; + +namespace ReCap.Server.Adapters.Blaze.Component; + +public class RedirectorComponent : IComponent +{ + public ushort Id { get; } = 5; + public BlazeServer? Server { get; set; } + + public string HostName { get; set; } = string.Empty; + public uint Ip { get; set; } + public ushort Port { get; set; } + public bool IsSecure { get; set; } + + public bool HandlePacket(Client client, Packet packet) + { + Log($"Handling {GetCommandName(packet.Command)} from {client.EndPoint}!"); + + switch (packet.Command) + { + case 1: + return HandleGetServerInstance(client, packet); + + default: + Log($"Unknown command: {packet.Command} -> {GetCommandName(packet.Command)}"); + return false; + } + } + + private bool HandleGetServerInstance(Client client, Packet packet) + { + var request = packet.ReadContent(); + if (request is null) + { + Log("Unable to read content of getServerInstance request! Sending error..."); + + client.RespondTo(packet, response: new ServerInstanceError(), error: 0x10005); + return true; + } + + if (string.IsNullOrEmpty(HostName) && Ip == 0) + { + Log("No target server is specified! Sending error..."); + + client.RespondTo(packet, response: new ServerInstanceError(), error: 0x10005); + return true; + } + + var serverInfo = new ServerInstanceInfo + { + Secure = IsSecure + }; + + serverInfo.Address.ActiveMember = ServerAddressMember.IpAddress; + serverInfo.Address.IpAddress.Hostname = HostName; + serverInfo.Address.IpAddress.Ip = Ip; + serverInfo.Address.IpAddress.Port = Port; + + client.RespondTo(packet, serverInfo); + //client.OnDisconnect += () => client.Server.Stop(); + return true; + } + + public string GetCommandName(ushort id) + { + return id switch + { + 1 => "getServerInstance", + 8 => "getSunsetList", + 9 => "getCACertificates", + 10 => "findCACertificates", + _ => "" + }; + } + + public string GetNotificationName(ushort id) + { + return id switch + { + _ => "" + }; + } + + private static void Log(string message) => Logger.debug($"[Redirector component]: {message}"); + + + public class AddressRemapEntry : Tdf + { + [TdfField("DPRT", 0)] + public ushort DstPort { get; set; } + + [TdfField("MASK", 0)] + public uint NetMask { get; set; } + + [TdfField("SID", 0)] + public uint ServiceId { get; set; } + + [TdfField("SIP", 0)] + public uint SrcIp { get; set; } + + [TdfField("SPRT", 0)] + public ushort SrcPort { get; set; } + } + + public enum FirstPartyIdMember : uint + { + PS3Ticket = 0, + XboxId = 1, + Unset = 0x7F + } + + public class FirstPartyId : TdfUnionT + { + [TdfUnionField(0)] + public TdfBlob PS3Ticket { get; set; } = new(); + + [TdfUnionField(1)] + public XboxId XboxId { get; set; } = new(); + } + + public class RedirectorIpAddress : Tdf + { + [TdfField("HOST", "")] + public string Hostname { get; set; } = string.Empty; + + [TdfField("IP", 0)] + public uint Ip { get; set; } + + [TdfField("PORT", 0)] + public ushort Port { get; set; } + } + + public class NameRemapEntry : Tdf + { + [TdfField("DPRT", 0)] + public ushort DstPort { get; set; } + + [TdfField("SID", 0)] + public uint ServiceId { get; set; } + + [TdfField("SIP", "")] + public string Hostname { get; set; } = string.Empty; + + [TdfField("SITE", "")] + public string SiteName { get; set; } = string.Empty; + + [TdfField("SPRT", 0)] + public ushort SrcPort { get; set; } + } + + public class ServerInstanceRequest : Tdf + { + [TdfField("BSDK", "")] + public string BlazeSDKVersion { get; set; } = string.Empty; + + [TdfField("BTIM", "")] + public string BlazeSDKBuildDate { get; set; } = string.Empty; + + [TdfField("CLNT", "")] + public string ClientName { get; set; } = string.Empty; + + [TdfField("CLTP", ClientType.Invalid)] + public ClientType ClientType { get; set; } = ClientType.Invalid; + + [TdfField("CPLT", ConnectionProfileType.Invalid)] + public ConnectionProfileType ConnectionProfileType { get; set; } = ConnectionProfileType.Invalid; + + [TdfField("CSKU", "")] + public string ClientSkuId { get; set; } = string.Empty; + + [TdfField("CVER", "")] + public string ClientVersion { get; set; } = string.Empty; + + [TdfField("DSDK", "")] + public string DirtySDKVersion { get; set; } = string.Empty; + + [TdfField("ENV", "")] + public string Environment { get; set; } = string.Empty; + + [TdfField("FPID")] + public FirstPartyId FirstPartyId { get; set; } = new(); + + [TdfField("LOC", 0)] + public uint ClientLocale { get; set; } = 0; + + [TdfField("NAME", "")] + public string Name { get; set; } = string.Empty; + + [TdfField("PLAT", "")] + public string Platform { get; set; } = string.Empty; + + [TdfField("PROF", "")] + public string ConnectionProfile { get; set; } = string.Empty; + } + + public class ServerInstanceError : Tdf + { + [TdfField("MSGS")] + public TdfPrimitiveVector Messages { get; } = []; + } + + public class ServerInstanceInfo : Tdf + { + [TdfField("ADDR")] + public ServerAddress Address { get; } = new(); + + [TdfField("AMAP")] + public TdfStructVector AddressRemaps { get; } = []; + + [TdfField("CERT")] + public TdfPrimitiveVector CertificateList { get; } = []; + + [TdfField("MSGS")] + public TdfPrimitiveVector Messages { get; } = []; + + [TdfField("NMAP")] + public TdfStructVector NameRemaps { get; } = []; + + [TdfField("SECU", false)] + public bool Secure { get; set; } + + [TdfField("XDNS", 0)] + public uint DefaultDNSAddress { get; set; } + } + + public enum ServerAddressMember : uint + { + IpAddress = 0, + XboxServerAddress = 1, + Unset = 0x7F + } + + public class ServerAddress : TdfUnionT + { + [TdfUnionField(0)] + public RedirectorIpAddress IpAddress { get; } = new(); + + [TdfUnionField(1)] + public RedirectorXboxServerAddress XboxServerAddress { get; } = new(); + } + + public class XboxId : Tdf + { + [TdfField("GTAG", "")] + public string Gamertag { get; set; } = string.Empty; + + [TdfField("XUID", 0)] + public ulong Xuid { get; set; } + } + + public class RedirectorXboxServerAddress : Tdf + { + [TdfField("PORT", 0)] + public ushort Port { get; set; } + + [TdfField("SID", 0)] + public uint ServiceId { get; set; } + + [TdfField("SITE", "")] + public string SiteName { get; set; } = string.Empty; + } +} \ No newline at end of file diff --git a/ReCap.Server/src/adapters/blaze/components/Rooms/RoomsComponent.cs b/ReCap.Server/Adapters/Blaze/Component/RoomsComponent.cs similarity index 95% rename from ReCap.Server/src/adapters/blaze/components/Rooms/RoomsComponent.cs rename to ReCap.Server/Adapters/Blaze/Component/RoomsComponent.cs index feb50e4..b26ad24 100644 --- a/ReCap.Server/src/adapters/blaze/components/Rooms/RoomsComponent.cs +++ b/ReCap.Server/Adapters/Blaze/Component/RoomsComponent.cs @@ -1,12 +1,11 @@ -namespace ReCap.Server.Adapters.Blaze.Component.Rooms; +using ReCap.Server.Util; -using BlazeServer; -using ReCap.Server.Utils.Logger; +namespace ReCap.Server.Adapters.Blaze.Component; public class RoomsComponent : IComponent { public ushort Id { get; } = 0x15; - public Server? Server { get; set; } + public BlazeServer? Server { get; set; } public bool HandlePacket(Client client, Packet packet) { diff --git a/ReCap.Server/src/adapters/blaze/components/Util/UtilComponent.cs b/ReCap.Server/Adapters/Blaze/Component/Shared.cs similarity index 60% rename from ReCap.Server/src/adapters/blaze/components/Util/UtilComponent.cs rename to ReCap.Server/Adapters/Blaze/Component/Shared.cs index 319b222..4b4a17d 100644 --- a/ReCap.Server/src/adapters/blaze/components/Util/UtilComponent.cs +++ b/ReCap.Server/Adapters/Blaze/Component/Shared.cs @@ -1,165 +1,6 @@ -namespace ReCap.Server.Adapters.Blaze.Component.Util; +using ReCap.Server.Util; -using BlazeServer; -using ReCap.Server.Utils.Logger; - -public class UtilComponent : IComponent -{ - // public static uint CurrentUnixTime => (uint)(new DateTimeOffset(DateTime.UtcNow)).ToUnixTimeMilliseconds(); - public static uint CurrentUnixTime => (uint)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds; - - public ushort Id => 9; - public Server? Server { get; set; } - - public bool HandlePacket(Client client, Packet packet) - { - return packet.Command switch - { - 2 => HandlePing(client, packet), - 7 => HandlePreAuth(client, packet), - 8 => HandlePostAuth(client, packet), - _ => false, - }; - } - - private static bool HandlePing(Client client, Packet packet) - { - client.RespondTo(packet, new PingResponse - { - ServerTime = CurrentUnixTime - }); - return true; - } - - private static bool HandlePreAuth(Client client, Packet packet) - { - var request = packet.ReadContent(); - if (request is null) - { - Log($"Received empty PreAuth from client {client.EndPoint}! Disconnecting..."); - - client.Disconnect(); - return false; - } - - var response = new PreAuthResponse - { - AuthenticationSource = "321915", - InstanceName = request.ClientData.ServiceName, - PersonaNamespace = "cem_ea_id", - Platform = "pc", - RegistrationSource = "321915", - ServerVersion = "Blaze 3.9.3.1" - }; - - response.ComponentIds.Add(1); - response.ComponentIds.Add(25); - response.ComponentIds.Add(4); - response.ComponentIds.Add(27); - response.ComponentIds.Add(28); - response.ComponentIds.Add(6); - response.ComponentIds.Add(7); - response.ComponentIds.Add(9); - response.ComponentIds.Add(10); - response.ComponentIds.Add(11); - response.ComponentIds.Add(30720); - response.ComponentIds.Add(30721); - response.ComponentIds.Add(30722); - response.ComponentIds.Add(30723); - response.ComponentIds.Add(20); - response.ComponentIds.Add(30725); - response.ComponentIds.Add(30726); - response.ComponentIds.Add(2000); - - response.Config.Config.Add("connIdleTimeout", "90s"); - response.Config.Config.Add("defaultRequestTimeout", "80s"); - response.Config.Config.Add("pingPeriod", "20s"); - response.Config.Config.Add("voipHeadsetUpdateRate", "1000"); - response.Config.Config.Add("xlspConnectionIdleTimeout", "300"); - - response.QosSettings.BandwithPingSiteInfo.Address = "127.0.0.1"; - response.QosSettings.BandwithPingSiteInfo.Port = 17502; - response.QosSettings.BandwithPingSiteInfo.SiteName = "ams"; - - response.QosSettings.PingSiteInfoByAliasMap["ams"] = new(); - response.QosSettings.PingSiteInfoByAliasMap["ams"].Address = "127.0.0.1"; - response.QosSettings.PingSiteInfoByAliasMap["ams"].Port = 17502; - response.QosSettings.PingSiteInfoByAliasMap["ams"].SiteName = "ams"; - - client.RespondTo(packet, response); - return true; - } - - private static bool HandlePostAuth(Client client, Packet packet) - { - var response = new PostAuthResponse(); - - response.PssConfig.Address = "127.0.0.1"; - response.PssConfig.ProjectId = "123071"; - response.PssConfig.Port = 42125; - response.PssConfig.InitialReportTypes = 9; - - response.Telemetry.Address = "127.0.0.1"; - response.Telemetry.Port = 42125; - response.Telemetry.SendDelay = 15000; - response.Telemetry.Locale = 0x656E5553; - response.Telemetry.Disable = "AD,AF,AG,AI,AL,AM,AN,AO,AQ,AR,AS,AW,AX,AZ,BA,BB,BD,BF,BH,BI,BJ,BM,BN,BO,BR,BS,BT,BV,BW,BY,BZ,CC,CD,CF,CG,CI,CK,CL,CM,CN,CO,CR,CU,CV,CX,DJ,DM,DO,DZ,EC,EG,EH,ER,ET,FJ,FK,FM,FO,GA,GD,GE,GF,GG,GH,GI,GL,GM,GN,GP,GQ,GS,GT,GU,GW,GY,HM,HN,HT,ID,IL,IM,IN,IO,IQ,IR,IS,JE,JM,JO,KE,KG,KH,KI,KM,KN,KP,KR,KW,KY,KZ,LA,LB,LC,LI,LK,LR,LS,LY,MA,MC,MD,ME,MG,MH,ML,MM,MN,MO,MP,MQ,MR,MS,MU,MV,MW,MY,MZ,NA,NC,NE,NF,NG,NI,NP,NR,NU,OM,PA,PE,PF,PG,PH,PK,PM,PN,PS,PW,PY,QA,RE,RS,RW,SA,SB,SC,SD,SG,SH,SJ,SL,SM,SN,SO,SR,ST,SV,SY,SZ,TC,TD,TF,TG,TH,TJ,TK,TL,TM,TN,TO,TT,TV,TZ,UA,UG,UM,UY,UZ,VA,VC,VE,VG,VN,VU,WF,WS,YE,YT,ZM,ZW,ZZ"; - response.Telemetry.NoToggleOk = "US,CA,MX"; - response.Telemetry.SessionId = "telemetry_session"; - response.Telemetry.Key = "telemetry_key"; - response.Telemetry.SendPercentage = 75; - response.Telemetry.UseServerTime = CurrentUnixTime.ToString(); - response.Telemetry.ServerName = "BGServ"; - - response.Ticker.Address = "127.0.0.1"; - response.Ticker.Port = 42125; - response.Ticker.Key = "0,127.0.0.1:8999,darkspore-pc,10,50,50,50,50,0,0"; - - response.Options.UserId = client.UserId; - response.Options.TelemetryOpt = TelemetryOpt.OptOut; - - client.RespondTo(packet, response); - return true; - } - - public string GetCommandName(ushort id) - { - return id switch - { - 1 => "fetchClientConfig", - 2 => "ping", - 3 => "setClientData", - 4 => "localizeStrings", - 5 => "getTelemetryServer", - 6 => "getTickerServer", - 7 => "preAuth", - 8 => "postAuth", - 10 => "userSettingsLoad", - 11 => "userSettingsSave", - 12 => "userSettingsLoadAll", - 14 => "deleteUserSettings", - 20 => "filterForProfanity", - 21 => "fetchQosConfig", - 22 => "setClientMetrics", - 23 => "setConnectionState", - 24 => "getPssConfig", - 25 => "getUserOptions", - 26 => "setUserOptions", - 27 => "suspendUserPing", - _ => "" - }; - } - - public string GetNotificationName(ushort id) - { - return id switch - { - _ => "" - }; - } - - private static void Log(string message) => Logger.debug($"[Util component]: {message}"); -} +namespace ReCap.Server.Adapters.Blaze.Component; public enum ClientType { diff --git a/ReCap.Server/src/adapters/blaze/components/Unknown/UnknownComponent1.cs b/ReCap.Server/Adapters/Blaze/Component/UnknownComponent1.cs similarity index 79% rename from ReCap.Server/src/adapters/blaze/components/Unknown/UnknownComponent1.cs rename to ReCap.Server/Adapters/Blaze/Component/UnknownComponent1.cs index 621df78..d7f22b7 100644 --- a/ReCap.Server/src/adapters/blaze/components/Unknown/UnknownComponent1.cs +++ b/ReCap.Server/Adapters/Blaze/Component/UnknownComponent1.cs @@ -1,13 +1,11 @@ -namespace ReCap.Server.Adapters.Blaze.Component.Playgroups; +using ReCap.Server.Util; -using BlazeServer; -using ReCap.Server.Adapters.Blaze.Component.Util; -using ReCap.Server.Utils.Logger; +namespace ReCap.Server.Adapters.Blaze.Component; public class UnknownComponent1 : IComponent { public ushort Id => 0x2678; - public Server? Server { get; set; } + public BlazeServer? Server { get; set; } public bool HandlePacket(Client client, Packet packet) { diff --git a/ReCap.Server/src/adapters/blaze/components/UserSessions/UserSessionsComponent.cs b/ReCap.Server/Adapters/Blaze/Component/UserSessionsComponent.cs similarity index 97% rename from ReCap.Server/src/adapters/blaze/components/UserSessions/UserSessionsComponent.cs rename to ReCap.Server/Adapters/Blaze/Component/UserSessionsComponent.cs index b1db2ac..84227d2 100644 --- a/ReCap.Server/src/adapters/blaze/components/UserSessions/UserSessionsComponent.cs +++ b/ReCap.Server/Adapters/Blaze/Component/UserSessionsComponent.cs @@ -1,15 +1,12 @@ using System.Buffers.Binary; +using ReCap.Server.Util; -namespace ReCap.Server.Adapters.Blaze.Component.UserSessions; - -using BlazeServer; -using ReCap.Server.Adapters.Blaze.Component.Util; -using ReCap.Server.Utils.Logger; +namespace ReCap.Server.Adapters.Blaze.Component; public class UserSessionsComponent : IComponent { public ushort Id { get; } = 0x7802; - public Server? Server { get; set; } + public BlazeServer? Server { get; set; } public bool HandlePacket(Client client, Packet packet) { diff --git a/ReCap.Server/Adapters/Blaze/Component/UtilComponent.cs b/ReCap.Server/Adapters/Blaze/Component/UtilComponent.cs new file mode 100644 index 0000000..7f58518 --- /dev/null +++ b/ReCap.Server/Adapters/Blaze/Component/UtilComponent.cs @@ -0,0 +1,432 @@ +using ReCap.Server.Util; + +namespace ReCap.Server.Adapters.Blaze.Component; + +public class UtilComponent : IComponent +{ + // public static uint CurrentUnixTime => (uint)(new DateTimeOffset(DateTime.UtcNow)).ToUnixTimeMilliseconds(); + public static uint CurrentUnixTime => (uint)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds; + + public ushort Id => 9; + public BlazeServer? Server { get; set; } + + public bool HandlePacket(Client client, Packet packet) + { + return packet.Command switch + { + 2 => HandlePing(client, packet), + 7 => HandlePreAuth(client, packet), + 8 => HandlePostAuth(client, packet), + _ => false, + }; + } + + private static bool HandlePing(Client client, Packet packet) + { + client.RespondTo(packet, new PingResponse + { + ServerTime = CurrentUnixTime + }); + return true; + } + + private static bool HandlePreAuth(Client client, Packet packet) + { + var request = packet.ReadContent(); + if (request is null) + { + Log($"Received empty PreAuth from client {client.EndPoint}! Disconnecting..."); + + client.Disconnect(); + return false; + } + + var response = new PreAuthResponse + { + AuthenticationSource = "321915", + InstanceName = request.ClientData.ServiceName, + PersonaNamespace = "cem_ea_id", + Platform = "pc", + RegistrationSource = "321915", + ServerVersion = "Blaze 3.9.3.1" + }; + + response.ComponentIds.Add(1); + response.ComponentIds.Add(25); + response.ComponentIds.Add(4); + response.ComponentIds.Add(27); + response.ComponentIds.Add(28); + response.ComponentIds.Add(6); + response.ComponentIds.Add(7); + response.ComponentIds.Add(9); + response.ComponentIds.Add(10); + response.ComponentIds.Add(11); + response.ComponentIds.Add(30720); + response.ComponentIds.Add(30721); + response.ComponentIds.Add(30722); + response.ComponentIds.Add(30723); + response.ComponentIds.Add(20); + response.ComponentIds.Add(30725); + response.ComponentIds.Add(30726); + response.ComponentIds.Add(2000); + + response.Config.Config.Add("connIdleTimeout", "90s"); + response.Config.Config.Add("defaultRequestTimeout", "80s"); + response.Config.Config.Add("pingPeriod", "20s"); + response.Config.Config.Add("voipHeadsetUpdateRate", "1000"); + response.Config.Config.Add("xlspConnectionIdleTimeout", "300"); + + response.QosSettings.BandwithPingSiteInfo.Address = "127.0.0.1"; + response.QosSettings.BandwithPingSiteInfo.Port = 17502; + response.QosSettings.BandwithPingSiteInfo.SiteName = "ams"; + + response.QosSettings.PingSiteInfoByAliasMap["ams"] = new(); + response.QosSettings.PingSiteInfoByAliasMap["ams"].Address = "127.0.0.1"; + response.QosSettings.PingSiteInfoByAliasMap["ams"].Port = 17502; + response.QosSettings.PingSiteInfoByAliasMap["ams"].SiteName = "ams"; + + client.RespondTo(packet, response); + return true; + } + + private static bool HandlePostAuth(Client client, Packet packet) + { + var response = new PostAuthResponse(); + + response.PssConfig.Address = "127.0.0.1"; + response.PssConfig.ProjectId = "123071"; + response.PssConfig.Port = 42125; + response.PssConfig.InitialReportTypes = 9; + + response.Telemetry.Address = "127.0.0.1"; + response.Telemetry.Port = 42125; + response.Telemetry.SendDelay = 15000; + response.Telemetry.Locale = 0x656E5553; + response.Telemetry.Disable = "AD,AF,AG,AI,AL,AM,AN,AO,AQ,AR,AS,AW,AX,AZ,BA,BB,BD,BF,BH,BI,BJ,BM,BN,BO,BR,BS,BT,BV,BW,BY,BZ,CC,CD,CF,CG,CI,CK,CL,CM,CN,CO,CR,CU,CV,CX,DJ,DM,DO,DZ,EC,EG,EH,ER,ET,FJ,FK,FM,FO,GA,GD,GE,GF,GG,GH,GI,GL,GM,GN,GP,GQ,GS,GT,GU,GW,GY,HM,HN,HT,ID,IL,IM,IN,IO,IQ,IR,IS,JE,JM,JO,KE,KG,KH,KI,KM,KN,KP,KR,KW,KY,KZ,LA,LB,LC,LI,LK,LR,LS,LY,MA,MC,MD,ME,MG,MH,ML,MM,MN,MO,MP,MQ,MR,MS,MU,MV,MW,MY,MZ,NA,NC,NE,NF,NG,NI,NP,NR,NU,OM,PA,PE,PF,PG,PH,PK,PM,PN,PS,PW,PY,QA,RE,RS,RW,SA,SB,SC,SD,SG,SH,SJ,SL,SM,SN,SO,SR,ST,SV,SY,SZ,TC,TD,TF,TG,TH,TJ,TK,TL,TM,TN,TO,TT,TV,TZ,UA,UG,UM,UY,UZ,VA,VC,VE,VG,VN,VU,WF,WS,YE,YT,ZM,ZW,ZZ"; + response.Telemetry.NoToggleOk = "US,CA,MX"; + response.Telemetry.SessionId = "telemetry_session"; + response.Telemetry.Key = "telemetry_key"; + response.Telemetry.SendPercentage = 75; + response.Telemetry.UseServerTime = CurrentUnixTime.ToString(); + response.Telemetry.ServerName = "BGServ"; + + response.Ticker.Address = "127.0.0.1"; + response.Ticker.Port = 42125; + response.Ticker.Key = "0,127.0.0.1:8999,darkspore-pc,10,50,50,50,50,0,0"; + + response.Options.UserId = client.UserId; + response.Options.TelemetryOpt = TelemetryOpt.OptOut; + + client.RespondTo(packet, response); + return true; + } + + public string GetCommandName(ushort id) + { + return id switch + { + 1 => "fetchClientConfig", + 2 => "ping", + 3 => "setClientData", + 4 => "localizeStrings", + 5 => "getTelemetryServer", + 6 => "getTickerServer", + 7 => "preAuth", + 8 => "postAuth", + 10 => "userSettingsLoad", + 11 => "userSettingsSave", + 12 => "userSettingsLoadAll", + 14 => "deleteUserSettings", + 20 => "filterForProfanity", + 21 => "fetchQosConfig", + 22 => "setClientMetrics", + 23 => "setConnectionState", + 24 => "getPssConfig", + 25 => "getUserOptions", + 26 => "setUserOptions", + 27 => "suspendUserPing", + _ => "" + }; + } + + public string GetNotificationName(ushort id) + { + return id switch + { + _ => "" + }; + } + + private static void Log(string message) => Logger.debug($"[Util component]: {message}"); + + + public class ClientData : Tdf + { + [TdfField("IITO", false)] + public bool IgnoreInactivityTimeout { get; set; } + + [TdfField("LANG", 0)] + public uint Locale { get; set; } + + [TdfField("SVCN", "")] + public string ServiceName { get; set; } = string.Empty; + + [TdfField("TYPE", ClientType.GameplayUser)] + public ClientType ClientType { get; set; } = ClientType.GameplayUser; + } + + public class ClientInfo : Tdf + { + [TdfField("BSDK", "")] + public string BlazeSDKVersion { get; set; } = string.Empty; + + [TdfField("BTIM", "")] + public string BlazeSDKBuildDate { get; set; } = string.Empty; + + [TdfField("CLNT", "")] + public string ClientName { get; set; } = string.Empty; + + [TdfField("CPFT", ConnectionProfileType.Native)] + public ConnectionProfileType ConnectionProfileType { get; set; } = ConnectionProfileType.Native; + + [TdfField("CSKU", "")] + public string ClientSkuId { get; set; } = string.Empty; + + [TdfField("CVER", "")] + public string ClientVersion { get; set; } = string.Empty; + + [TdfField("DSDK", "")] + public string DirtySDKVersion { get; set; } = string.Empty; + + [TdfField("ENV", "")] + public string Environment { get; set; } = string.Empty; + + [TdfField("HWID", "")] + public string HardwareId { get; set; } = string.Empty; + + [TdfField("LOC", 0)] + public uint ClientLocale { get; set; } = 0; + + [TdfField("MAC", "")] + public string MacAddress { get; set; } = string.Empty; + + [TdfField("PLAT", "")] + public string PLAT { get; set; } = string.Empty; + } + + public class FetchClientConfigRequest : Tdf + { + [TdfField("CFID", "")] + public string ConfigSection { get; set; } = string.Empty; + } + + public class FetchConfigResponse : Tdf + { + [TdfField("CONF")] + public TdfPrimitiveMap Config { get; } = []; + } + + public class GetTelemetryServerResponse : Tdf + { + [TdfField("ADRS", "")] + public string Address { get; set; } = string.Empty; + + [TdfField("ANON", false)] + public bool IsAnonymous { get; set; } + + [TdfField("DISA", "")] + public string Disable { get; set; } = string.Empty; + + [TdfField("EDCT", false)] + public bool EDCT { get; set; } + + [TdfField("FILT", "")] + public string Filter { get; set; } = string.Empty; + + [TdfField("LOC", 0)] + public uint Locale { get; set; } + + [TdfField("MINR", false)] + public bool IsUnderage { get; set; } + + [TdfField("NOOK", "")] + public string NoToggleOk { get; set; } = string.Empty; + + [TdfField("PORT", 0)] + public uint Port { get; set; } + + [TdfField("SDLY", 0)] + public uint SendDelay { get; set; } + + [TdfField("SESS", "")] + public string SessionId { get; set; } = string.Empty; + + [TdfField("SKEY", "")] + public string Key { get; set; } = string.Empty; + + [TdfField("SPCT", 0)] + public uint SendPercentage { get; set; } + + [TdfField("STIM", "")] + public string UseServerTime { get; set; } = string.Empty; + + [TdfField("SVNM", "")] + public string ServerName { get; set; } = string.Empty; + } + + public class GetTickerServerResponse : Tdf + { + [TdfField("ADRS", "")] + public string Address { get; set; } = string.Empty; + + [TdfField("PORT", 0)] + public uint Port { get; set; } + + [TdfField("SKEY", "")] + public string Key { get; set; } = string.Empty; + } + + + + + + public class PingResponse : Tdf + { + [TdfField("STIM", 0)] + public uint ServerTime { get; set; } + } + + public class PostAuthResponse : Tdf + { + [TdfField("PSS")] + public PssConfig PssConfig { get; } = new(); + + [TdfField("TELE")] + public GetTelemetryServerResponse Telemetry { get; } = new(); + + [TdfField("TICK")] + public GetTickerServerResponse Ticker { get; } = new(); + + [TdfField("UROP")] + public UserOptions Options { get; } = new(); + } + + public class PreAuthRequest : Tdf + { + [TdfField("CINF")] + public ClientInfo ClientInfo { get; } = new(); + + [TdfField("CDAT")] + public ClientData ClientData { get; } = new(); + + [TdfField("FCCR")] + public FetchClientConfigRequest FetchClientConfig { get; } = new(); + } + + public class PreAuthResponse : Tdf + { + [TdfField("ASRC", "")] + public string AuthenticationSource { get; set; } = string.Empty; + + [TdfField("CIDS")] + public TdfPrimitiveVector ComponentIds { get; set; } = []; + + [TdfField("CONF")] + public FetchConfigResponse Config { get; set; } = new(); + + [TdfField("EEFA", true)] + public bool AnonymousChildAccountsEnabled { get; set; } = true; + + [TdfField("INST", "")] + public string InstanceName { get; set; } = string.Empty; + + [TdfField("MINR", false)] + public bool UnderageSupported { get; set; } = false; + + [TdfField("NASP", "")] + public string PersonaNamespace { get; set; } = string.Empty; + + [TdfField("PILD", "")] + public string PILD { get; set; } = string.Empty; + + [TdfField("PLAT", "")] + public string Platform { get; set; } = string.Empty; + + [TdfField("QOSS")] + public QosConfigInfo QosSettings { get; set; } = new(); + + [TdfField("RSRC", "")] + public string RegistrationSource { get; set; } = string.Empty; + + [TdfField("SVER", "")] + public string ServerVersion { get; set; } = string.Empty; + } + + public class PssConfig : Tdf + { + [TdfField("ADRS", "")] + public string Address { get; set; } = string.Empty; + + [TdfField("CSIG")] + public TdfBlob NpCommSignature { get; } = new(); + + [TdfField("OIDS")] + public TdfPrimitiveVector OfferIds { get; } = []; + + [TdfField("PJID", "")] + public string ProjectId { get; set; } = string.Empty; + + [TdfField("PORT", 0)] + public uint Port { get; set; } + + [TdfField("RPRT", 0)] + public uint InitialReportTypes { get; set; } + + [TdfField("TIID", 0)] + public uint TitleId { get; set; } + } + + public class QosConfigInfo : Tdf + { + [TdfField("BWPS")] + public QosPingSiteInfo BandwithPingSiteInfo { get; set; } = new(); + + [TdfField("LNP", 0)] + public ushort NumLatencyProbes { get; set; } = 10; + + [TdfField("LTPS")] + public TdfStructMap PingSiteInfoByAliasMap { get; } = []; + + [TdfField("SVID", 0x45410805u)] + public uint ServiceId { get; set; } = 0x45410805u; + } + + public class QosPingSiteInfo : Tdf + { + [TdfField("PSA", "")] + public string Address { get; set; } = string.Empty; + + [TdfField("PSP", 0)] + public ushort Port { get; set; } = 0; + + [TdfField("SNA", "")] + public string SiteName { get; set; } = string.Empty; + } + + public enum TelemetryOpt + { + OptOut = 0, + OptIn = 1 + } + + public class UserOptions : Tdf + { + [TdfField("TMOP", TelemetryOpt.OptOut)] + public TelemetryOpt TelemetryOpt { get; set; } = TelemetryOpt.OptOut; + + [TdfField("UID", 0)] + public ulong UserId { get; set; } + } + + +} \ No newline at end of file diff --git a/ReCap.Server/src/adapters/blaze/extensions/BinaryReaderExtensions.cs b/ReCap.Server/Adapters/Blaze/Extensions/BinaryReaderExtensions.cs similarity index 100% rename from ReCap.Server/src/adapters/blaze/extensions/BinaryReaderExtensions.cs rename to ReCap.Server/Adapters/Blaze/Extensions/BinaryReaderExtensions.cs diff --git a/ReCap.Server/src/adapters/blaze/extensions/BinaryWriterExtensions.cs b/ReCap.Server/Adapters/Blaze/Extensions/BinaryWriterExtensions.cs similarity index 100% rename from ReCap.Server/src/adapters/blaze/extensions/BinaryWriterExtensions.cs rename to ReCap.Server/Adapters/Blaze/Extensions/BinaryWriterExtensions.cs diff --git a/ReCap.Server/src/adapters/blaze/Packet.cs b/ReCap.Server/Adapters/Blaze/Packet.cs similarity index 99% rename from ReCap.Server/src/adapters/blaze/Packet.cs rename to ReCap.Server/Adapters/Blaze/Packet.cs index b97d6a8..af1ad2f 100644 --- a/ReCap.Server/src/adapters/blaze/Packet.cs +++ b/ReCap.Server/Adapters/Blaze/Packet.cs @@ -1,10 +1,9 @@ using System.Buffers; using System.Text; - -namespace BlazeServer; - using ReCap.Server.Adapters.Blaze.Extensions; +namespace ReCap.Server.Adapters.Blaze; + public enum PacketType : byte { Message = 0, diff --git a/ReCap.Server/src/adapters/blaze/ssl/CertGenerator.cs b/ReCap.Server/Adapters/Blaze/Ssl/CertGenerator.cs similarity index 100% rename from ReCap.Server/src/adapters/blaze/ssl/CertGenerator.cs rename to ReCap.Server/Adapters/Blaze/Ssl/CertGenerator.cs diff --git a/ReCap.Server/src/adapters/blaze/ssl/Rc4TlsCrypto.cs b/ReCap.Server/Adapters/Blaze/Ssl/Rc4TlsCrypto.cs similarity index 100% rename from ReCap.Server/src/adapters/blaze/ssl/Rc4TlsCrypto.cs rename to ReCap.Server/Adapters/Blaze/Ssl/Rc4TlsCrypto.cs diff --git a/ReCap.Server/src/adapters/blaze/ssl/TlsClient.cs b/ReCap.Server/Adapters/Blaze/Ssl/TlsClient.cs similarity index 100% rename from ReCap.Server/src/adapters/blaze/ssl/TlsClient.cs rename to ReCap.Server/Adapters/Blaze/Ssl/TlsClient.cs diff --git a/ReCap.Server/src/adapters/blaze/ssl/TlsRC4Cipher.cs b/ReCap.Server/Adapters/Blaze/Ssl/TlsRC4Cipher.cs similarity index 100% rename from ReCap.Server/src/adapters/blaze/ssl/TlsRC4Cipher.cs rename to ReCap.Server/Adapters/Blaze/Ssl/TlsRC4Cipher.cs diff --git a/ReCap.Server/src/adapters/blaze/ssl/TlsServer.cs b/ReCap.Server/Adapters/Blaze/Ssl/TlsServer.cs similarity index 100% rename from ReCap.Server/src/adapters/blaze/ssl/TlsServer.cs rename to ReCap.Server/Adapters/Blaze/Ssl/TlsServer.cs diff --git a/ReCap.Server/src/adapters/blaze/Tdf.cs b/ReCap.Server/Adapters/Blaze/Tdf.cs similarity index 99% rename from ReCap.Server/src/adapters/blaze/Tdf.cs rename to ReCap.Server/Adapters/Blaze/Tdf.cs index 33b9265..fa37a8a 100644 --- a/ReCap.Server/src/adapters/blaze/Tdf.cs +++ b/ReCap.Server/Adapters/Blaze/Tdf.cs @@ -1,11 +1,10 @@ using System.Diagnostics; using System.Reflection; using System.Text; - -namespace BlazeServer; - using ReCap.Server.Adapters.Blaze.Component.GameManager; -using ReCap.Server.Adapters.Blaze.Component.Playgroups; +using ReCap.Server.Adapters.Blaze.Component; + +namespace ReCap.Server.Adapters.Blaze; public enum TdfType : byte { diff --git a/ReCap.Server/src/adapters/blaze/TdfDecoder.cs b/ReCap.Server/Adapters/Blaze/TdfDecoder.cs similarity index 99% rename from ReCap.Server/src/adapters/blaze/TdfDecoder.cs rename to ReCap.Server/Adapters/Blaze/TdfDecoder.cs index 4983b38..346a89a 100644 --- a/ReCap.Server/src/adapters/blaze/TdfDecoder.cs +++ b/ReCap.Server/Adapters/Blaze/TdfDecoder.cs @@ -2,7 +2,7 @@ using System.Runtime.InteropServices; using System.Text; -namespace BlazeServer; +namespace ReCap.Server.Adapters.Blaze; public class TdfDecoder { diff --git a/ReCap.Server/src/adapters/blaze/TdfEncoder.cs b/ReCap.Server/Adapters/Blaze/TdfEncoder.cs similarity index 99% rename from ReCap.Server/src/adapters/blaze/TdfEncoder.cs rename to ReCap.Server/Adapters/Blaze/TdfEncoder.cs index dd7550d..c55e2bc 100644 --- a/ReCap.Server/src/adapters/blaze/TdfEncoder.cs +++ b/ReCap.Server/Adapters/Blaze/TdfEncoder.cs @@ -1,7 +1,7 @@ using System.Diagnostics; using System.Text; -namespace BlazeServer; +namespace ReCap.Server.Adapters.Blaze; public class TdfEncoder { diff --git a/ReCap.Server/src/adapters/blaze/TdfMap.cs b/ReCap.Server/Adapters/Blaze/TdfMap.cs similarity index 99% rename from ReCap.Server/src/adapters/blaze/TdfMap.cs rename to ReCap.Server/Adapters/Blaze/TdfMap.cs index d1272e0..f6750c4 100644 --- a/ReCap.Server/src/adapters/blaze/TdfMap.cs +++ b/ReCap.Server/Adapters/Blaze/TdfMap.cs @@ -3,7 +3,7 @@ using System.Reflection; using System.Text; -namespace BlazeServer; +namespace ReCap.Server.Adapters.Blaze; public abstract class TdfMapBase : TdfCollectionBase { diff --git a/ReCap.Server/src/adapters/blaze/TdfVector.cs b/ReCap.Server/Adapters/Blaze/TdfVector.cs similarity index 99% rename from ReCap.Server/src/adapters/blaze/TdfVector.cs rename to ReCap.Server/Adapters/Blaze/TdfVector.cs index 0bcfcaa..9b2ce1c 100644 --- a/ReCap.Server/src/adapters/blaze/TdfVector.cs +++ b/ReCap.Server/Adapters/Blaze/TdfVector.cs @@ -1,7 +1,7 @@ using System.Collections; using System.Text; -namespace BlazeServer; +namespace ReCap.Server.Adapters.Blaze; public abstract class TdfVectorBase : TdfCollectionBase { diff --git a/ReCap.Server/src/adapters/persistence/sqlite/AccountRepositoryAdapter.cs b/ReCap.Server/Adapters/Persistence/SQLite/AccountRepositoryAdapter.cs similarity index 87% rename from ReCap.Server/src/adapters/persistence/sqlite/AccountRepositoryAdapter.cs rename to ReCap.Server/Adapters/Persistence/SQLite/AccountRepositoryAdapter.cs index e6ff5ee..1708011 100644 --- a/ReCap.Server/src/adapters/persistence/sqlite/AccountRepositoryAdapter.cs +++ b/ReCap.Server/Adapters/Persistence/SQLite/AccountRepositoryAdapter.cs @@ -1,16 +1,14 @@ -namespace ReCap.Server.Adapters.Persistence.SQLite.AccountRepository; - using System; using System.IO; using System.Net; using System.Text; +using ReCap.Server.Config; +using ReCap.Server.Domain; +using ReCap.Server.Mappers; +using ReCap.Server.Models; +using ReCap.Server.Util; -using ReCap.Server.Adapters.Persistence.SQLite.DbSequence; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Domain.Account; -using ReCap.Server.Mapper.Account; -using ReCap.Server.Model.Account; -using ReCap.Server.Utils.Logger; +namespace ReCap.Server.Adapters.Persistence.SQLite; public class AccountRepositoryAdapter { diff --git a/ReCap.Server/src/adapters/persistence/sqlite/CreaturePartRepositoryAdapter.cs b/ReCap.Server/Adapters/Persistence/SQLite/CreaturePartRepositoryAdapter.cs similarity index 89% rename from ReCap.Server/src/adapters/persistence/sqlite/CreaturePartRepositoryAdapter.cs rename to ReCap.Server/Adapters/Persistence/SQLite/CreaturePartRepositoryAdapter.cs index 2db5421..71e65d4 100644 --- a/ReCap.Server/src/adapters/persistence/sqlite/CreaturePartRepositoryAdapter.cs +++ b/ReCap.Server/Adapters/Persistence/SQLite/CreaturePartRepositoryAdapter.cs @@ -1,14 +1,12 @@ -namespace ReCap.Server.Adapters.Persistence.SQLite.CreaturePartRepository; - using System; using System.IO; using System.Net; using System.Text; +using ReCap.Server.Config; +using ReCap.Server.Mappers; +using ReCap.Server.Models; -using ReCap.Server.Adapters.Persistence.SQLite.DbSequence; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Mapper.CreaturePart; -using ReCap.Server.Model.CreaturePart; +namespace ReCap.Server.Adapters.Persistence.SQLite; public class CreaturePartRepositoryAdapter { diff --git a/ReCap.Server/src/adapters/persistence/sqlite/CreaturePartTemplateRepositoryAdapter.cs b/ReCap.Server/Adapters/Persistence/SQLite/CreaturePartTemplateRepositoryAdapter.cs similarity index 78% rename from ReCap.Server/src/adapters/persistence/sqlite/CreaturePartTemplateRepositoryAdapter.cs rename to ReCap.Server/Adapters/Persistence/SQLite/CreaturePartTemplateRepositoryAdapter.cs index fb6e9bd..0d0bbbc 100644 --- a/ReCap.Server/src/adapters/persistence/sqlite/CreaturePartTemplateRepositoryAdapter.cs +++ b/ReCap.Server/Adapters/Persistence/SQLite/CreaturePartTemplateRepositoryAdapter.cs @@ -1,12 +1,11 @@ -namespace ReCap.Server.Adapters.Persistence.SQLite.CreaturePartTemplateRepository; - using System; using System.IO; using System.Net; using System.Text; +using ReCap.Server.Config; +using ReCap.Server.Models; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Model.CreaturePartTemplate; +namespace ReCap.Server.Adapters.Persistence.SQLite; public class CreaturePartTemplateRepositoryAdapter { diff --git a/ReCap.Server/src/adapters/persistence/sqlite/CreatureRepositoryAdapter.cs b/ReCap.Server/Adapters/Persistence/SQLite/CreatureRepositoryAdapter.cs similarity index 82% rename from ReCap.Server/src/adapters/persistence/sqlite/CreatureRepositoryAdapter.cs rename to ReCap.Server/Adapters/Persistence/SQLite/CreatureRepositoryAdapter.cs index ba1ac9c..f27cc50 100644 --- a/ReCap.Server/src/adapters/persistence/sqlite/CreatureRepositoryAdapter.cs +++ b/ReCap.Server/Adapters/Persistence/SQLite/CreatureRepositoryAdapter.cs @@ -1,15 +1,13 @@ -namespace ReCap.Server.Adapters.Persistence.SQLite.CreatureRepository; - using System; using System.IO; using System.Net; using System.Text; +using ReCap.Server.Config; +using ReCap.Server.Domain; +using ReCap.Server.Mappers; +using ReCap.Server.Models; -using ReCap.Server.Adapters.Persistence.SQLite.DbSequence; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Domain.Creature; -using ReCap.Server.Mapper.Creature; -using ReCap.Server.Model.Creature; +namespace ReCap.Server.Adapters.Persistence.SQLite; public class CreatureRepositoryAdapter { diff --git a/ReCap.Server/src/adapters/persistence/sqlite/CreatureTemplateRepositoryAdapter.cs b/ReCap.Server/Adapters/Persistence/SQLite/CreatureTemplateRepositoryAdapter.cs similarity index 77% rename from ReCap.Server/src/adapters/persistence/sqlite/CreatureTemplateRepositoryAdapter.cs rename to ReCap.Server/Adapters/Persistence/SQLite/CreatureTemplateRepositoryAdapter.cs index c3e3c50..b95c6db 100644 --- a/ReCap.Server/src/adapters/persistence/sqlite/CreatureTemplateRepositoryAdapter.cs +++ b/ReCap.Server/Adapters/Persistence/SQLite/CreatureTemplateRepositoryAdapter.cs @@ -1,13 +1,12 @@ -namespace ReCap.Server.Adapters.Persistence.SQLite.CreatureTemplateRepository; - using System; using System.IO; using System.Net; using System.Text; +using ReCap.Server.Config; +using ReCap.Server.Mappers; +using ReCap.Server.Models; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Mapper.CreatureTemplate; -using ReCap.Server.Model.CreatureTemplate; +namespace ReCap.Server.Adapters.Persistence.SQLite; public class CreatureTemplateRepositoryAdapter { diff --git a/ReCap.Server/src/adapters/persistence/sqlite/DbSequenceAdapter.cs b/ReCap.Server/Adapters/Persistence/SQLite/DbSequenceAdapter.cs similarity index 84% rename from ReCap.Server/src/adapters/persistence/sqlite/DbSequenceAdapter.cs rename to ReCap.Server/Adapters/Persistence/SQLite/DbSequenceAdapter.cs index 5fff728..faf7d48 100644 --- a/ReCap.Server/src/adapters/persistence/sqlite/DbSequenceAdapter.cs +++ b/ReCap.Server/Adapters/Persistence/SQLite/DbSequenceAdapter.cs @@ -1,12 +1,12 @@ -namespace ReCap.Server.Adapters.Persistence.SQLite.DbSequence; - using System; using System.IO; using System.Net; using System.Text; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Model.DbSequence; +using ReCap.Server.Config; +using ReCap.Server.Models; + +namespace ReCap.Server.Adapters.Persistence.SQLite; public class DbSequenceAdapter { diff --git a/ReCap.Server/src/adapters/persistence/sqlite/DeckRepositoryAdapter.cs b/ReCap.Server/Adapters/Persistence/SQLite/DeckRepositoryAdapter.cs similarity index 78% rename from ReCap.Server/src/adapters/persistence/sqlite/DeckRepositoryAdapter.cs rename to ReCap.Server/Adapters/Persistence/SQLite/DeckRepositoryAdapter.cs index ef09515..ebdf8da 100644 --- a/ReCap.Server/src/adapters/persistence/sqlite/DeckRepositoryAdapter.cs +++ b/ReCap.Server/Adapters/Persistence/SQLite/DeckRepositoryAdapter.cs @@ -1,15 +1,13 @@ -namespace ReCap.Server.Adapters.Persistence.SQLite.DeckRepository; - using System; using System.IO; using System.Net; using System.Text; +using ReCap.Server.Config; +using ReCap.Server.Domain; +using ReCap.Server.Mappers; +using ReCap.Server.Models; -using ReCap.Server.Adapters.Persistence.SQLite.DbSequence; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Domain.Deck; -using ReCap.Server.Mapper.Deck; -using ReCap.Server.Model.Deck; +namespace ReCap.Server.Adapters.Persistence.SQLite; public class DeckRepositoryAdapter { diff --git a/ReCap.Server/src/adapters/persistence/StaticStorageAdapter.cs b/ReCap.Server/Adapters/Persistence/StaticStorageAdapter.cs similarity index 91% rename from ReCap.Server/src/adapters/persistence/StaticStorageAdapter.cs rename to ReCap.Server/Adapters/Persistence/StaticStorageAdapter.cs index aa862fd..c613bdf 100644 --- a/ReCap.Server/src/adapters/persistence/StaticStorageAdapter.cs +++ b/ReCap.Server/Adapters/Persistence/StaticStorageAdapter.cs @@ -1,12 +1,11 @@ -namespace ReCap.Server.Adapters.Persistence.StaticStorage; - using System; using System.IO; using System.Net; using System.Text; +using ReCap.Server.Config; -using ReCap.Server.Config.Server; - +namespace ReCap.Server.Adapters.Persistence; + public class StaticStorageAdapter { static readonly string STATIC_RESOURCES_FOLDER_PATH = Path.Combine(ServerConfig.ResourcesDirectory, "static"); diff --git a/ReCap.Server/src/adapters/raknet/PacketType.cs b/ReCap.Server/Adapters/RakNet/PacketType.cs similarity index 98% rename from ReCap.Server/src/adapters/raknet/PacketType.cs rename to ReCap.Server/Adapters/RakNet/PacketType.cs index fd29d47..3a0dddb 100644 --- a/ReCap.Server/src/adapters/raknet/PacketType.cs +++ b/ReCap.Server/Adapters/RakNet/PacketType.cs @@ -1,4 +1,4 @@ -namespace ReCap.RakNet; +namespace ReCap.Server.Adapters.RakNet; public enum PacketType : byte { diff --git a/ReCap.Server/src/adapters/raknet/Packets/ConnectedPacket.cs b/ReCap.Server/Adapters/RakNet/Packets/ConnectedPacket.cs similarity index 80% rename from ReCap.Server/src/adapters/raknet/Packets/ConnectedPacket.cs rename to ReCap.Server/Adapters/RakNet/Packets/ConnectedPacket.cs index df74b1e..08809b5 100644 --- a/ReCap.Server/src/adapters/raknet/Packets/ConnectedPacket.cs +++ b/ReCap.Server/Adapters/RakNet/Packets/ConnectedPacket.cs @@ -1,4 +1,4 @@ -namespace ReCap.RakNet.Packets; +namespace ReCap.Server.Adapters.RakNet.Packets; public class ConnectedPacket : IRakNetPacket { diff --git a/ReCap.Server/src/adapters/raknet/Packets/GamePrepareForStartPacket.cs b/ReCap.Server/Adapters/RakNet/Packets/GamePrepareForStartPacket.cs similarity index 96% rename from ReCap.Server/src/adapters/raknet/Packets/GamePrepareForStartPacket.cs rename to ReCap.Server/Adapters/RakNet/Packets/GamePrepareForStartPacket.cs index 7bc8b98..561ebad 100644 --- a/ReCap.Server/src/adapters/raknet/Packets/GamePrepareForStartPacket.cs +++ b/ReCap.Server/Adapters/RakNet/Packets/GamePrepareForStartPacket.cs @@ -1,6 +1,6 @@ using System.Text; -namespace ReCap.RakNet.Packets; +namespace ReCap.Server.Adapters.RakNet.Packets; public class GamePrepareForStartPacket : IRakNetPacket { diff --git a/ReCap.Server/src/adapters/raknet/Packets/GameStartPacket.cs b/ReCap.Server/Adapters/RakNet/Packets/GameStartPacket.cs similarity index 92% rename from ReCap.Server/src/adapters/raknet/Packets/GameStartPacket.cs rename to ReCap.Server/Adapters/RakNet/Packets/GameStartPacket.cs index 4f0f4c2..729ee95 100644 --- a/ReCap.Server/src/adapters/raknet/Packets/GameStartPacket.cs +++ b/ReCap.Server/Adapters/RakNet/Packets/GameStartPacket.cs @@ -1,6 +1,6 @@ using System.Text; -namespace ReCap.RakNet.Packets; +namespace ReCap.Server.Adapters.RakNet.Packets; public class GameStartPacket : IRakNetPacket { diff --git a/ReCap.Server/src/adapters/raknet/Packets/HelloPlayerPacket.cs b/ReCap.Server/Adapters/RakNet/Packets/HelloPlayerPacket.cs similarity index 94% rename from ReCap.Server/src/adapters/raknet/Packets/HelloPlayerPacket.cs rename to ReCap.Server/Adapters/RakNet/Packets/HelloPlayerPacket.cs index a67ab4b..8ee88bf 100644 --- a/ReCap.Server/src/adapters/raknet/Packets/HelloPlayerPacket.cs +++ b/ReCap.Server/Adapters/RakNet/Packets/HelloPlayerPacket.cs @@ -1,6 +1,6 @@ using System.Text; -namespace ReCap.RakNet.Packets; +namespace ReCap.Server.Adapters.RakNet.Packets; public class HelloPlayerPacket : IRakNetPacket { diff --git a/ReCap.Server/src/adapters/raknet/Packets/HelloPlayerRequestPacket.cs b/ReCap.Server/Adapters/RakNet/Packets/HelloPlayerRequestPacket.cs similarity index 92% rename from ReCap.Server/src/adapters/raknet/Packets/HelloPlayerRequestPacket.cs rename to ReCap.Server/Adapters/RakNet/Packets/HelloPlayerRequestPacket.cs index d93fb72..431570a 100644 --- a/ReCap.Server/src/adapters/raknet/Packets/HelloPlayerRequestPacket.cs +++ b/ReCap.Server/Adapters/RakNet/Packets/HelloPlayerRequestPacket.cs @@ -1,6 +1,6 @@ using System.Text; -namespace ReCap.RakNet.Packets; +namespace ReCap.Server.Adapters.RakNet.Packets; public class HelloPlayerRequestPacket : IRakNetPacket { diff --git a/ReCap.Server/src/adapters/raknet/Packets/IRakNetPacket.cs b/ReCap.Server/Adapters/RakNet/Packets/IRakNetPacket.cs similarity index 72% rename from ReCap.Server/src/adapters/raknet/Packets/IRakNetPacket.cs rename to ReCap.Server/Adapters/RakNet/Packets/IRakNetPacket.cs index 179ba0b..f40b9c7 100644 --- a/ReCap.Server/src/adapters/raknet/Packets/IRakNetPacket.cs +++ b/ReCap.Server/Adapters/RakNet/Packets/IRakNetPacket.cs @@ -1,4 +1,4 @@ -namespace ReCap.RakNet.Packets; +namespace ReCap.Server.Adapters.RakNet.Packets; public interface IRakNetPacket { diff --git a/ReCap.Server/src/adapters/raknet/Packets/ObjectCreatePacket.cs b/ReCap.Server/Adapters/RakNet/Packets/ObjectCreatePacket.cs similarity index 97% rename from ReCap.Server/src/adapters/raknet/Packets/ObjectCreatePacket.cs rename to ReCap.Server/Adapters/RakNet/Packets/ObjectCreatePacket.cs index 4c57255..c18e44d 100644 --- a/ReCap.Server/src/adapters/raknet/Packets/ObjectCreatePacket.cs +++ b/ReCap.Server/Adapters/RakNet/Packets/ObjectCreatePacket.cs @@ -1,7 +1,7 @@ using System.Numerics; using System.Text; -namespace ReCap.RakNet.Packets; +namespace ReCap.Server.Adapters.RakNet.Packets; public struct ObjectCreationData { diff --git a/ReCap.Server/src/adapters/raknet/Packets/ObjectUpdatePacket.cs b/ReCap.Server/Adapters/RakNet/Packets/ObjectUpdatePacket.cs similarity index 91% rename from ReCap.Server/src/adapters/raknet/Packets/ObjectUpdatePacket.cs rename to ReCap.Server/Adapters/RakNet/Packets/ObjectUpdatePacket.cs index ee6efac..df87b6c 100644 --- a/ReCap.Server/src/adapters/raknet/Packets/ObjectUpdatePacket.cs +++ b/ReCap.Server/Adapters/RakNet/Packets/ObjectUpdatePacket.cs @@ -1,6 +1,6 @@ using System.Text; -namespace ReCap.RakNet.Packets; +namespace ReCap.Server.Adapters.RakNet.Packets; public class ObjectUpdatePacket : IRakNetPacket { diff --git a/ReCap.Server/src/adapters/raknet/PacketActivator.cs b/ReCap.Server/Adapters/RakNet/Packets/PacketActivator.cs similarity index 99% rename from ReCap.Server/src/adapters/raknet/PacketActivator.cs rename to ReCap.Server/Adapters/RakNet/Packets/PacketActivator.cs index 9c55e4e..8f34c3f 100644 --- a/ReCap.Server/src/adapters/raknet/PacketActivator.cs +++ b/ReCap.Server/Adapters/RakNet/Packets/PacketActivator.cs @@ -1,6 +1,4 @@ -namespace ReCap.RakNet; - -using ReCap.RakNet.Packets; +namespace ReCap.Server.Adapters.RakNet.Packets; public static class PacketActivator { diff --git a/ReCap.Server/src/adapters/raknet/Packets/PlayerCharacterDeployPacket.cs b/ReCap.Server/Adapters/RakNet/Packets/PlayerCharacterDeployPacket.cs similarity index 94% rename from ReCap.Server/src/adapters/raknet/Packets/PlayerCharacterDeployPacket.cs rename to ReCap.Server/Adapters/RakNet/Packets/PlayerCharacterDeployPacket.cs index 700ea1a..384b37a 100644 --- a/ReCap.Server/src/adapters/raknet/Packets/PlayerCharacterDeployPacket.cs +++ b/ReCap.Server/Adapters/RakNet/Packets/PlayerCharacterDeployPacket.cs @@ -1,6 +1,6 @@ using System.Text; -namespace ReCap.RakNet.Packets; +namespace ReCap.Server.Adapters.RakNet.Packets; public class PlayerCharacterDeployPacket : IRakNetPacket { diff --git a/ReCap.Server/src/adapters/raknet/Packets/PlayerJoinedPacket.cs b/ReCap.Server/Adapters/RakNet/Packets/PlayerJoinedPacket.cs similarity index 92% rename from ReCap.Server/src/adapters/raknet/Packets/PlayerJoinedPacket.cs rename to ReCap.Server/Adapters/RakNet/Packets/PlayerJoinedPacket.cs index 45036ae..bd7cfc5 100644 --- a/ReCap.Server/src/adapters/raknet/Packets/PlayerJoinedPacket.cs +++ b/ReCap.Server/Adapters/RakNet/Packets/PlayerJoinedPacket.cs @@ -1,6 +1,6 @@ using System.Text; -namespace ReCap.RakNet.Packets; +namespace ReCap.Server.Adapters.RakNet.Packets; public class PlayerJoinedPacket : IRakNetPacket { diff --git a/ReCap.Server/src/adapters/raknet/Packets/PlayerStatusUpdatePacket.cs b/ReCap.Server/Adapters/RakNet/Packets/PlayerStatusUpdatePacket.cs similarity index 94% rename from ReCap.Server/src/adapters/raknet/Packets/PlayerStatusUpdatePacket.cs rename to ReCap.Server/Adapters/RakNet/Packets/PlayerStatusUpdatePacket.cs index a130b9a..e47064d 100644 --- a/ReCap.Server/src/adapters/raknet/Packets/PlayerStatusUpdatePacket.cs +++ b/ReCap.Server/Adapters/RakNet/Packets/PlayerStatusUpdatePacket.cs @@ -1,6 +1,6 @@ using System.Text; -namespace ReCap.RakNet.Packets; +namespace ReCap.Server.Adapters.RakNet.Packets; public class PlayerStatusUpdatePacket : IRakNetPacket { diff --git a/ReCap.Server/Adapters/RakNet/RakNetClient.cs b/ReCap.Server/Adapters/RakNet/RakNetClient.cs new file mode 100644 index 0000000..382eccb --- /dev/null +++ b/ReCap.Server/Adapters/RakNet/RakNetClient.cs @@ -0,0 +1,15 @@ +using SharpRakNet.Network; +using SharpRakNet.Protocol.Raknet; +using ReCap.Server.Domain.Gameplay; +using ReCap.Server.Adapters.RakNet.Packets; + +namespace ReCap.Server.Adapters.RakNet; + +public record RakNetClient(RaknetSession Session) +{ + public ulong UserId { get; set; } + public ulong PlaygroupId { get; set; } + public Game? Game { get; set; } + + public void SendPacket(IRakNetPacket packet, Reliability reliability = Reliability.ReliableOrdered) => RakNetServer.SendPacket(this, packet, reliability); +} \ No newline at end of file diff --git a/ReCap.Server/src/adapters/raknet/RakNetServer.cs b/ReCap.Server/Adapters/RakNet/RakNetServer.cs similarity index 90% rename from ReCap.Server/src/adapters/raknet/RakNetServer.cs rename to ReCap.Server/Adapters/RakNet/RakNetServer.cs index e6ffc26..b16e18a 100644 --- a/ReCap.Server/src/adapters/raknet/RakNetServer.cs +++ b/ReCap.Server/Adapters/RakNet/RakNetServer.cs @@ -1,31 +1,16 @@ -namespace ReCap.RakNetServer; - -using System.Net; - +using System.Net; // using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; - using SharpRakNet.Network; using SharpRakNet.Protocol.Raknet; - -using ReCap.Domain.Gameplay; -using ReCap.RakNet; -using ReCap.RakNet.Packets; - +using ReCap.Server.Domain.Gameplay; +using ReCap.Server.Adapters.RakNet.Packets; using ReCap.Server.Adapters.Blaze.Component.GameManager; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Service.Account; -using ReCap.Server.Service.Game; -using ReCap.Server.Utils.Logger; - -public record RakNetClient(RaknetSession Session) -{ - public ulong UserId { get; set; } - public ulong PlaygroupId { get; set; } - public Game? Game { get; set; } +using ReCap.Server.Config; +using ReCap.Server.Services; +using ReCap.Server.Util; - public void SendPacket(IRakNetPacket packet, Reliability reliability = Reliability.ReliableOrdered) => RakNetServer.SendPacket(this, packet, reliability); -} +namespace ReCap.Server.Adapters.RakNet; public class RakNetServer { diff --git a/ReCap.Server/src/adapters/rest/Api.cs b/ReCap.Server/Adapters/Rest/Api.cs similarity index 95% rename from ReCap.Server/src/adapters/rest/Api.cs rename to ReCap.Server/Adapters/Rest/Api.cs index 34c7d8b..372936d 100644 --- a/ReCap.Server/src/adapters/rest/Api.cs +++ b/ReCap.Server/Adapters/Rest/Api.cs @@ -1,5 +1,3 @@ -namespace ReCap.Server.Adapters.Rest.Api; - using System; using System.IO; using System.Net; @@ -7,11 +5,11 @@ namespace ReCap.Server.Adapters.Rest.Api; using System.Text; using System.Text.RegularExpressions; -using ReCap.Server.Adapters.Rest.Api; -using ReCap.Server.Adapters.Persistence.StaticStorage; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Utils.Http; -using ReCap.Server.Utils.Logger; +using ReCap.Server.Adapters.Persistence; +using ReCap.Server.Config; +using ReCap.Server.Util; + +namespace ReCap.Server.Adapters.Rest.Api; public class Api { @@ -63,7 +61,7 @@ public void Stop() private void ProcessRequest(HttpListenerContext context) { - var parameters = HttpUtils.GetParametersFromRequest(context.Request); + var parameters = HTTPHelper.GetParametersFromRequest(context.Request); if (parameters.Count > 0) { Logger.debug($"Parameters: {string.Join(", ", parameters)}"); } diff --git a/ReCap.Server/src/adapters/rest/BootstrapRestController.cs b/ReCap.Server/Adapters/Rest/BootstrapRestController.cs similarity index 82% rename from ReCap.Server/src/adapters/rest/BootstrapRestController.cs rename to ReCap.Server/Adapters/Rest/BootstrapRestController.cs index 4ea8239..5f75661 100644 --- a/ReCap.Server/src/adapters/rest/BootstrapRestController.cs +++ b/ReCap.Server/Adapters/Rest/BootstrapRestController.cs @@ -1,5 +1,3 @@ -namespace ReCap.Server.Adapters.Rest.Api; - using System; using System.IO; using System.Net; @@ -10,15 +8,12 @@ namespace ReCap.Server.Adapters.Rest.Api; using System.Xml.Serialization; using System.Collections.Specialized; -using ReCap.Server.Adapters.Rest.Api; -using ReCap.Server.Adapters.Rest.Contracts.Bootstrap.Config; -using ReCap.Server.Adapters.Rest.Contracts.Bootstrap.ConfigResponse; -using ReCap.Server.Adapters.Rest.Contracts.Bootstrap.ConfigSettings; -using ReCap.Server.Adapters.Rest.Contracts.Bootstrap.ConfigSettingsOpen; -using ReCap.Server.Config.Server; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Service.Config; -using ReCap.Server.Utils.Xml; +using ReCap.Server.Adapters.Rest.Contracts.Bootstrap; +using ReCap.Server.Config; +using ReCap.Server.Services; +using ReCap.Server.Util; + +namespace ReCap.Server.Adapters.Rest.Api; [RestController(Value="/bootstrap/api", ContentType="text/xml")] public class BootstrapRestController @@ -75,6 +70,6 @@ public byte[] getConfigs(HttpListenerContext context, Dictionary // }; } - return XmlUtils.Serialize(response); + return XmlHelper.Serialize(response); } } diff --git a/ReCap.Server/src/adapters/rest/contracts/bootstrap/ConfigContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Bootstrap/ConfigContract.cs similarity index 94% rename from ReCap.Server/src/adapters/rest/contracts/bootstrap/ConfigContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Bootstrap/ConfigContract.cs index 2fec5a8..ef89cb7 100644 --- a/ReCap.Server/src/adapters/rest/contracts/bootstrap/ConfigContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Bootstrap/ConfigContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Bootstrap.Config; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Bootstrap; + [XmlRoot("config")] public class ConfigContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/bootstrap/ConfigPatchesContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Bootstrap/ConfigPatchesContract.cs similarity index 94% rename from ReCap.Server/src/adapters/rest/contracts/bootstrap/ConfigPatchesContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Bootstrap/ConfigPatchesContract.cs index f0a4c0b..09a3867 100644 --- a/ReCap.Server/src/adapters/rest/contracts/bootstrap/ConfigPatchesContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Bootstrap/ConfigPatchesContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Bootstrap.ConfigPatches; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Bootstrap; + [XmlRoot("patches")] public class ConfigPatchesContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/bootstrap/ConfigResponseContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Bootstrap/ConfigResponseContract.cs similarity index 66% rename from ReCap.Server/src/adapters/rest/contracts/bootstrap/ConfigResponseContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Bootstrap/ConfigResponseContract.cs index 4a678fc..1477ce8 100644 --- a/ReCap.Server/src/adapters/rest/contracts/bootstrap/ConfigResponseContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Bootstrap/ConfigResponseContract.cs @@ -1,14 +1,9 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Bootstrap.ConfigResponse; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; -using ReCap.Server.Adapters.Rest.Contracts.Bootstrap.Config; -using ReCap.Server.Adapters.Rest.Contracts.Bootstrap.ConfigPatches; -using ReCap.Server.Adapters.Rest.Contracts.Bootstrap.ConfigSettings; -using ReCap.Server.Adapters.Rest.Contracts.Response; +namespace ReCap.Server.Adapters.Rest.Contracts.Bootstrap; [XmlRoot("response")] public class ConfigResponseContract : ResponseContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/bootstrap/ConfigSettingsContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Bootstrap/ConfigSettingsContract.cs similarity index 75% rename from ReCap.Server/src/adapters/rest/contracts/bootstrap/ConfigSettingsContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Bootstrap/ConfigSettingsContract.cs index af33d5d..9f8ecd3 100644 --- a/ReCap.Server/src/adapters/rest/contracts/bootstrap/ConfigSettingsContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Bootstrap/ConfigSettingsContract.cs @@ -1,11 +1,9 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Bootstrap.ConfigSettings; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; -using ReCap.Server.Adapters.Rest.Contracts.Bootstrap.ConfigSettingsOpen; +namespace ReCap.Server.Adapters.Rest.Contracts.Bootstrap; [XmlRoot("settings")] public class ConfigSettingsContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/bootstrap/ConfigSettingsOpenContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Bootstrap/ConfigSettingsOpenContract.cs similarity index 77% rename from ReCap.Server/src/adapters/rest/contracts/bootstrap/ConfigSettingsOpenContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Bootstrap/ConfigSettingsOpenContract.cs index 39d5fb4..c1b0e03 100644 --- a/ReCap.Server/src/adapters/rest/contracts/bootstrap/ConfigSettingsOpenContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Bootstrap/ConfigSettingsOpenContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Bootstrap.ConfigSettingsOpen; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Bootstrap; + [XmlRoot("open")] public class ConfigSettingsOpenContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/AuthResponseContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/AuthResponseContract.cs similarity index 60% rename from ReCap.Server/src/adapters/rest/contracts/game/AuthResponseContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/AuthResponseContract.cs index 72cfa17..6ad2197 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/AuthResponseContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/AuthResponseContract.cs @@ -1,17 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.AuthResponse; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +using ReCap.Server.Adapters.Rest.Contracts.Game.Models; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Account; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Creature; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Deck; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Feed; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.ServerTuning; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Settings; -using ReCap.Server.Adapters.Rest.Contracts.Response; +namespace ReCap.Server.Adapters.Rest.Contracts.Game; [XmlRoot("response")] public class AuthResponseContract : ResponseContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/BroadcastResponseContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/BroadcastResponseContract.cs similarity index 60% rename from ReCap.Server/src/adapters/rest/contracts/game/BroadcastResponseContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/BroadcastResponseContract.cs index 6758e64..e151a30 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/BroadcastResponseContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/BroadcastResponseContract.cs @@ -1,12 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.BroadcastResponse; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +using ReCap.Server.Adapters.Rest.Contracts.Game.Models; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Broadcast; -using ReCap.Server.Adapters.Rest.Contracts.Response; +namespace ReCap.Server.Adapters.Rest.Contracts.Game; [XmlRoot("response")] public class BroadcastResponseContract : ResponseContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/GetAccountResponseContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/GetAccountResponseContract.cs similarity index 59% rename from ReCap.Server/src/adapters/rest/contracts/game/GetAccountResponseContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/GetAccountResponseContract.cs index c16b8c0..72c912f 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/GetAccountResponseContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/GetAccountResponseContract.cs @@ -1,13 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.GetAccountResponse; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +using ReCap.Server.Adapters.Rest.Contracts.Game.Models; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Account; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Deck; -using ReCap.Server.Adapters.Rest.Contracts.Response; +namespace ReCap.Server.Adapters.Rest.Contracts.Game; [XmlRoot("response")] public class GetAccountResponseContract : ResponseContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/GetCreatureResponseContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/GetCreatureResponseContract.cs similarity index 86% rename from ReCap.Server/src/adapters/rest/contracts/game/GetCreatureResponseContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/GetCreatureResponseContract.cs index 6c62f52..9c28151 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/GetCreatureResponseContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/GetCreatureResponseContract.cs @@ -1,11 +1,9 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.GetCreatureResponse; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; -using ReCap.Server.Adapters.Rest.Contracts.Game.GetCreatureTemplateResponse; +namespace ReCap.Server.Adapters.Rest.Contracts.Game; [XmlRoot("response")] public class GetCreatureResponseContract : GetCreatureTemplateResponseContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/GetCreatureTemplateResponseContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/GetCreatureTemplateResponseContract.cs similarity index 96% rename from ReCap.Server/src/adapters/rest/contracts/game/GetCreatureTemplateResponseContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/GetCreatureTemplateResponseContract.cs index bbed8ad..81153a5 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/GetCreatureTemplateResponseContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/GetCreatureTemplateResponseContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.GetCreatureTemplateResponse; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Game; + [XmlRoot("response")] public class GetCreatureTemplateResponseContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/AccountContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/AccountContract.cs similarity index 97% rename from ReCap.Server/src/adapters/rest/contracts/game/models/AccountContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/AccountContract.cs index fc7a43d..87e6624 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/AccountContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/AccountContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.Account; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; + [XmlRoot("account")] public class AccountContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/BroadcastContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/BroadcastContract.cs similarity index 89% rename from ReCap.Server/src/adapters/rest/contracts/game/models/BroadcastContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/BroadcastContract.cs index 94aa204..25dfa45 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/BroadcastContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/BroadcastContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.Broadcast; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; + [XmlRoot("broadcast")] public class BroadcastContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/CreatureContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/CreatureContract.cs similarity index 92% rename from ReCap.Server/src/adapters/rest/contracts/game/models/CreatureContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/CreatureContract.cs index 70c9c9c..bb7ab1d 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/CreatureContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/CreatureContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.Creature; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; + [XmlRoot("creature")] public class CreatureContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/CreaturePartContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/CreaturePartContract.cs similarity index 95% rename from ReCap.Server/src/adapters/rest/contracts/game/models/CreaturePartContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/CreaturePartContract.cs index a0110dd..e80af14 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/CreaturePartContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/CreaturePartContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.CreaturePart; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; + [XmlRoot("part")] public class CreaturePartContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/DeckContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/DeckContract.cs similarity index 83% rename from ReCap.Server/src/adapters/rest/contracts/game/models/DeckContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/DeckContract.cs index 5f5400c..8098cb2 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/DeckContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/DeckContract.cs @@ -1,11 +1,9 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.Deck; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Creature; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; [XmlRoot("deck")] public class DeckContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/FeedContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/FeedContract.cs similarity index 65% rename from ReCap.Server/src/adapters/rest/contracts/game/models/FeedContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/FeedContract.cs index 2d992cb..916270b 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/FeedContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/FeedContract.cs @@ -1,11 +1,9 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.Feed; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.FeedItem; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; [XmlRoot("feed")] public class FeedContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/FeedItemContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/FeedItemContract.cs similarity index 90% rename from ReCap.Server/src/adapters/rest/contracts/game/models/FeedItemContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/FeedItemContract.cs index f49b9f2..b8e45b7 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/FeedItemContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/FeedItemContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.FeedItem; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; + [XmlRoot("item")] public class FeedItemContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/ServerTuningContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/ServerTuningContract.cs similarity index 94% rename from ReCap.Server/src/adapters/rest/contracts/game/models/ServerTuningContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/ServerTuningContract.cs index 825878b..b9ab771 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/ServerTuningContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/ServerTuningContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.ServerTuning; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; + [XmlRoot("server_tuning")] public class ServerTuningContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/SettingsContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/SettingsContract.cs similarity index 85% rename from ReCap.Server/src/adapters/rest/contracts/game/models/SettingsContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/SettingsContract.cs index f4ce419..2a95f76 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/SettingsContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/SettingsContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.Settings; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; + [XmlRoot("settings")] public class SettingsContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/StatContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatContract.cs similarity index 76% rename from ReCap.Server/src/adapters/rest/contracts/game/models/StatContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatContract.cs index 2d334a4..fa361cd 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/StatContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.Stat; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; + [XmlRoot("stat")] public class StatContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/StatusApiContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusApiContract.cs similarity index 84% rename from ReCap.Server/src/adapters/rest/contracts/game/models/StatusApiContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusApiContract.cs index 744df55..9307b0c 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/StatusApiContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusApiContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.StatusApi; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; + [XmlRoot("api")] public class StatusApiContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/StatusBlazeContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusBlazeContract.cs similarity index 75% rename from ReCap.Server/src/adapters/rest/contracts/game/models/StatusBlazeContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusBlazeContract.cs index d9f73f8..fd777f5 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/StatusBlazeContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusBlazeContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.StatusBlaze; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; + [XmlRoot("blaze")] public class StatusBlazeContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/StatusContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusContract.cs similarity index 59% rename from ReCap.Server/src/adapters/rest/contracts/game/models/StatusContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusContract.cs index a15d71b..541ecb7 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/StatusContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusContract.cs @@ -1,15 +1,9 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.Status; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.StatusApi; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.StatusBlaze; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.StatusGame; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.StatusGms; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.StatusNucleus; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; [XmlRoot("status")] public class StatusContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/StatusGameContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusGameContract.cs similarity index 88% rename from ReCap.Server/src/adapters/rest/contracts/game/models/StatusGameContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusGameContract.cs index 33dd3ac..dfa13b6 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/StatusGameContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusGameContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.StatusGame; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; + [XmlRoot("game")] public class StatusGameContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/StatusGmsContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusGmsContract.cs similarity index 76% rename from ReCap.Server/src/adapters/rest/contracts/game/models/StatusGmsContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusGmsContract.cs index 183dac6..e4bb34f 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/StatusGmsContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusGmsContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.StatusGms; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; + [XmlRoot("gms")] public class StatusGmsContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/models/StatusNucleusContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusNucleusContract.cs similarity index 75% rename from ReCap.Server/src/adapters/rest/contracts/game/models/StatusNucleusContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusNucleusContract.cs index d64f27c..1bbf686 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/models/StatusNucleusContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/Models/StatusNucleusContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models.StatusNucleus; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Game.Models; + [XmlRoot("nucleus")] public class StatusNucleusContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/PartListResponseContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/PartListResponseContract.cs similarity index 59% rename from ReCap.Server/src/adapters/rest/contracts/game/PartListResponseContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/PartListResponseContract.cs index 9d4f432..f603287 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/PartListResponseContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/PartListResponseContract.cs @@ -1,12 +1,11 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.PartListResponse; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.CreaturePart; -using ReCap.Server.Adapters.Rest.Contracts.Response; +using ReCap.Server.Adapters.Rest.Contracts.Game.Models; + +namespace ReCap.Server.Adapters.Rest.Contracts.Game; [XmlRoot("response")] public class PartListResponseContract : ResponseContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/PostAccountResponseContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/PostAccountResponseContract.cs similarity index 70% rename from ReCap.Server/src/adapters/rest/contracts/game/PostAccountResponseContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/PostAccountResponseContract.cs index a8d91a1..578c5a9 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/PostAccountResponseContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/PostAccountResponseContract.cs @@ -1,16 +1,11 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.PostAccountResponse; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Account; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Creature; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Deck; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Feed; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Stat; -using ReCap.Server.Adapters.Rest.Contracts.Response; +using ReCap.Server.Adapters.Rest.Contracts.Game.Models; + +namespace ReCap.Server.Adapters.Rest.Contracts.Game; [XmlRoot("response")] public class PostAccountResponseContract : ResponseContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/StatusResponseContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/StatusResponseContract.cs similarity index 60% rename from ReCap.Server/src/adapters/rest/contracts/game/StatusResponseContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/StatusResponseContract.cs index 0a4afb1..18c5a87 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/StatusResponseContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/StatusResponseContract.cs @@ -1,13 +1,11 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.StatusResponse; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Broadcast; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Status; -using ReCap.Server.Adapters.Rest.Contracts.Response; +using ReCap.Server.Adapters.Rest.Contracts.Game.Models; + +namespace ReCap.Server.Adapters.Rest.Contracts.Game; [XmlRoot("response")] public class StatusResponseContract : ResponseContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/game/UnlockCreatureResponseContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Game/UnlockCreatureResponseContract.cs similarity index 67% rename from ReCap.Server/src/adapters/rest/contracts/game/UnlockCreatureResponseContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Game/UnlockCreatureResponseContract.cs index 3e70e04..fb7a7eb 100644 --- a/ReCap.Server/src/adapters/rest/contracts/game/UnlockCreatureResponseContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Game/UnlockCreatureResponseContract.cs @@ -1,11 +1,9 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Game.UnlockCreatureResponse; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; -using ReCap.Server.Adapters.Rest.Contracts.Response; +namespace ReCap.Server.Adapters.Rest.Contracts.Game; [XmlRoot("response")] public class UnlockCreatureResponseContract : ResponseContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/ResponseContract.cs b/ReCap.Server/Adapters/Rest/Contracts/ResponseContract.cs similarity index 94% rename from ReCap.Server/src/adapters/rest/contracts/ResponseContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/ResponseContract.cs index 59c3df3..0e3fb74 100644 --- a/ReCap.Server/src/adapters/rest/contracts/ResponseContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/ResponseContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Response; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts; + [XmlRoot("response")] public class ResponseContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/survey/SurveyContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Survey/SurveyContract.cs similarity index 86% rename from ReCap.Server/src/adapters/rest/contracts/survey/SurveyContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Survey/SurveyContract.cs index 770e39d..ef7221c 100644 --- a/ReCap.Server/src/adapters/rest/contracts/survey/SurveyContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Survey/SurveyContract.cs @@ -1,10 +1,10 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Survey.Survey; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; +namespace ReCap.Server.Adapters.Rest.Contracts.Survey; + [XmlRoot("survey")] public class SurveyContract { diff --git a/ReCap.Server/src/adapters/rest/contracts/survey/SurveyResponseContract.cs b/ReCap.Server/Adapters/Rest/Contracts/Survey/SurveyResponseContract.cs similarity index 60% rename from ReCap.Server/src/adapters/rest/contracts/survey/SurveyResponseContract.cs rename to ReCap.Server/Adapters/Rest/Contracts/Survey/SurveyResponseContract.cs index ef41781..ab3e5e9 100644 --- a/ReCap.Server/src/adapters/rest/contracts/survey/SurveyResponseContract.cs +++ b/ReCap.Server/Adapters/Rest/Contracts/Survey/SurveyResponseContract.cs @@ -1,12 +1,9 @@ -namespace ReCap.Server.Adapters.Rest.Contracts.Survey.SurveyResponse; - using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; -using ReCap.Server.Adapters.Rest.Contracts.Survey.Survey; -using ReCap.Server.Adapters.Rest.Contracts.Response; +namespace ReCap.Server.Adapters.Rest.Contracts.Survey; [XmlRoot("response")] public class SurveyResponseContract : ResponseContract { diff --git a/ReCap.Server/src/adapters/rest/GameRestController.cs b/ReCap.Server/Adapters/Rest/GameRestController.cs similarity index 90% rename from ReCap.Server/src/adapters/rest/GameRestController.cs rename to ReCap.Server/Adapters/Rest/GameRestController.cs index 6454580..5d68593 100644 --- a/ReCap.Server/src/adapters/rest/GameRestController.cs +++ b/ReCap.Server/Adapters/Rest/GameRestController.cs @@ -1,41 +1,19 @@ -namespace ReCap.Server.Adapters.Rest.Api; - using System; using System.IO; using System.Net; using System.Text; using System.Collections.Specialized; -using ReCap.Server.Adapters.Rest.Api; -using ReCap.Server.Adapters.Rest.Contracts.Game.AuthResponse; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.CreaturePart; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Feed; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.ServerTuning; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Settings; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Stat; -using ReCap.Server.Adapters.Rest.Contracts.Game.GetAccountResponse; -using ReCap.Server.Adapters.Rest.Contracts.Game.PartListResponse; -using ReCap.Server.Adapters.Rest.Contracts.Game.PostAccountResponse; -using ReCap.Server.Adapters.Rest.Contracts.Game.StatusResponse; -using ReCap.Server.Adapters.Rest.Contracts.Game.UnlockCreatureResponse; -using ReCap.Server.Adapters.Rest.Contracts.Response; -using ReCap.Server.Config.Server; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Mapper.Account; -using ReCap.Server.Mapper.Creature; -using ReCap.Server.Mapper.CreaturePart; -using ReCap.Server.Mapper.Deck; -using ReCap.Server.Model.Account; -using ReCap.Server.Model.CreaturePart; -using ReCap.Server.Service.Account; -using ReCap.Server.Service.Broadcast; -using ReCap.Server.Service.Creature; -using ReCap.Server.Service.CreaturePart; -using ReCap.Server.Service.Deck; -using ReCap.Server.Service.Status; -using ReCap.Server.Utils.Http; -using ReCap.Server.Utils.Logger; -using ReCap.Server.Utils.Xml; +using ReCap.Server.Adapters.Rest.Contracts; +using ReCap.Server.Adapters.Rest.Contracts.Game; +using ReCap.Server.Adapters.Rest.Contracts.Game.Models; +using ReCap.Server.Config; +using ReCap.Server.Mappers; +using ReCap.Server.Models; +using ReCap.Server.Services; +using ReCap.Server.Util; + +namespace ReCap.Server.Adapters.Rest.Api; [RestController(Value="/game/api", ContentType="text/xml")] public class GameRestController @@ -132,7 +110,7 @@ public byte[] loginPlayerAccount(HttpListenerContext context, Dictionary deckMapper.toContract(deck, creatures)).ToList() }; - return XmlUtils.Serialize(response); + return XmlHelper.Serialize(response); } if (httpMethod == "POST") { @@ -193,7 +171,7 @@ public byte[] getPlayerAccount(HttpListenerContext context, Dictionary var template = creatureService.getCreatureTemplateById(creature.TemplateID); var response = creatureMapper.toGetCreatureContract(template, creature, includeAbilities, includeParts); - return XmlUtils.Serialize(response); + return XmlHelper.Serialize(response); } [RequestMapping(Name="api.creature.getTemplate")] @@ -328,7 +306,7 @@ public byte[] resetCreature(HttpListenerContext context, Dictionary Parts = creatureParts.Select(creaturePart => creaturePartMapper.toContract(creaturePart)).ToList() }; - return XmlUtils.Serialize(response); + return XmlHelper.Serialize(response); } [RequestMapping(Name="api.inventory.getPartOfferList")] @@ -471,7 +449,7 @@ public byte[] getPartOfferList(HttpListenerContext context, Dictionary() }; - return XmlUtils.Serialize(response); + return XmlHelper.Serialize(response); } @@ -504,7 +482,7 @@ public byte[] updatePartStatus(HttpListenerContext context, Dictionaryget_account().dna); - return XmlUtils.Serialize(response); + return XmlHelper.Serialize(response); } [RequestMapping(Name="api.leaderboard.getLeaderboard")] @@ -582,7 +560,7 @@ public byte[] getBroadcastList(HttpListenerContext context, Dictionary p response.Broadcasts = BroadcastService.getBroadcastList(); } - return XmlUtils.Serialize(response); + return XmlHelper.Serialize(response); } } diff --git a/ReCap.Server/src/adapters/rest/ReCapRestController.cs b/ReCap.Server/Adapters/Rest/ReCapRestController.cs similarity index 86% rename from ReCap.Server/src/adapters/rest/ReCapRestController.cs rename to ReCap.Server/Adapters/Rest/ReCapRestController.cs index fc7669b..dec64e6 100644 --- a/ReCap.Server/src/adapters/rest/ReCapRestController.cs +++ b/ReCap.Server/Adapters/Rest/ReCapRestController.cs @@ -1,4 +1,3 @@ -namespace ReCap.Server.Adapters.Rest.Api; using System; using System.IO; @@ -6,14 +5,11 @@ namespace ReCap.Server.Adapters.Rest.Api; using System.Text; using System.Collections.Specialized; -using ReCap.Server.Adapters.Rest.Api; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Service.Account; -using ReCap.Server.Service.Creature; -using ReCap.Server.Service.CreaturePart; -using ReCap.Server.Service.Deck; -using ReCap.Server.Utils.Logger; -using ReCap.Server.Utils.Http; +using ReCap.Server.Config; +using ReCap.Server.Services; +using ReCap.Server.Util; + +namespace ReCap.Server.Adapters.Rest.Api; [RestController(Value="/recap/api")] public class ReCapRestController @@ -33,7 +29,7 @@ public ReCapRestController(SqliteConfig newSqliteConfig) { [RequestMapping(Name="api.game.log", ContentType="application/json")] public byte[] log(HttpListenerContext context, Dictionary parameters) { - string message = HttpUtils.GetBodyFromRequest(context.Request); + string message = HTTPHelper.GetBodyFromRequest(context.Request); Logger.info(message); return new byte[]{}; } @@ -41,7 +37,7 @@ public byte[] log(HttpListenerContext context, Dictionary paramet [RequestMapping(Name="api.game.registration")] public byte[] registerUser(HttpListenerContext context, Dictionary parameters) { - // string jsonStr = HttpUtils.GetBodyFromRequest(context.Request); + // string jsonStr = HTTPHelper.GetBodyFromRequest(context.Request); // dynamic request = JsonConvert.DeserializeObject(jsonStr); var request = context.Request; diff --git a/ReCap.Server/src/adapters/rest/SurveyRestController.cs b/ReCap.Server/Adapters/Rest/SurveyRestController.cs similarity index 72% rename from ReCap.Server/src/adapters/rest/SurveyRestController.cs rename to ReCap.Server/Adapters/Rest/SurveyRestController.cs index 8d5a33e..3b6c2bb 100644 --- a/ReCap.Server/src/adapters/rest/SurveyRestController.cs +++ b/ReCap.Server/Adapters/Rest/SurveyRestController.cs @@ -1,17 +1,15 @@ -namespace ReCap.Server.Adapters.Rest.Api; - using System; using System.IO; using System.Net; using System.Text; using System.Collections.Specialized; -using ReCap.Server.Adapters.Rest.Api; -using ReCap.Server.Adapters.Rest.Contracts.Survey.SurveyResponse; -using ReCap.Server.Config.Server; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Service.Survey; -using ReCap.Server.Utils.Xml; +using ReCap.Server.Adapters.Rest.Contracts.Survey; +using ReCap.Server.Config; +using ReCap.Server.Services; +using ReCap.Server.Util; + +namespace ReCap.Server.Adapters.Rest.Api; [RestController(Value="/survey/api", ContentType="text/xml")] public class SurveyRestController @@ -29,6 +27,6 @@ public byte[] getSurveyList(HttpListenerContext context, Dictionary _currentOpts.HostName; + } + public static IPAddress HostIP + { + get => _currentOpts.HostIP; + } + public static Version GameVersion + { + get => _currentOpts.GameVersion; + } + public static string GameVersionStr + { + get => GameVersion.ToString(); + } + public static string ServerDatabasePath + { + get => Path.Join(ServerDatabaseDirectory, "server.db"); + } + public static string ServerDatabaseDirectory + { + get => _currentOpts.ServerDatabaseDirectory; + } + + + public static readonly string ResourcesDirectory = Path.Join(AppDomain.CurrentDomain.BaseDirectory, "resources"); + + + + + static ServerConfigOptions _currentOpts = new(); + public static void Configure(ServerConfigOptions options) + { + if (options == null) + throw new ArgumentNullException(nameof(options)); + + _currentOpts = options; + } + + public static ServerConfigOptions CopyCurrentOptions() + => new() + { + HostName = _currentOpts.HostName, + HostIP = _currentOpts.HostIP, + GameVersion = _currentOpts.GameVersion, + ServerDatabaseDirectory = _currentOpts.ServerDatabaseDirectory, + }; +} \ No newline at end of file diff --git a/ReCap.Server/Config/ServerConfigOptions.cs b/ReCap.Server/Config/ServerConfigOptions.cs new file mode 100644 index 0000000..160ac40 --- /dev/null +++ b/ReCap.Server/Config/ServerConfigOptions.cs @@ -0,0 +1,53 @@ +using System; +using System.IO; +using System.Net; +using System.Text; +using System.Collections.Generic; + +#nullable disable +namespace ReCap.Server.Config; + +public sealed class ServerConfigOptions +{ + public static readonly string DEFAULT_HOST_NAME = "localhost"; + string _hostName = DEFAULT_HOST_NAME; + public string HostName + { + get => _hostName; + set => _hostName = value; + } + + + public static readonly IPAddress DEFAULT_HOST_IP = IPAddress.Parse("127.0.0.1"); + IPAddress _hostIP = DEFAULT_HOST_IP; + public IPAddress HostIP + { + get => _hostIP; + set => _hostIP = value; + } + + + public static readonly Version DEFAULT_GAME_VERSION = new(5, 3, 0, 127); + Version _gameVersion = DEFAULT_GAME_VERSION; + public Version GameVersion + { + get => _gameVersion; + set => _gameVersion = value; + } + + + public static readonly string DEFAULT_SERVER_DATABASE_DIRECTORY = AppDomain.CurrentDomain.BaseDirectory; + string _serverDatabaseDirectory = DEFAULT_SERVER_DATABASE_DIRECTORY; + public string ServerDatabaseDirectory + { + get => _serverDatabaseDirectory; + set => _serverDatabaseDirectory = value; + } + + + + + public ServerConfigOptions() + {} +} +#nullable restore \ No newline at end of file diff --git a/ReCap.Server/src/config/SqliteConfig.cs b/ReCap.Server/Config/SqliteConfig.cs similarity index 83% rename from ReCap.Server/src/config/SqliteConfig.cs rename to ReCap.Server/Config/SqliteConfig.cs index 124132c..0fee621 100644 --- a/ReCap.Server/src/config/SqliteConfig.cs +++ b/ReCap.Server/Config/SqliteConfig.cs @@ -1,18 +1,9 @@ -namespace ReCap.Server.Config.Sqlite; - using System.Text.Json; using System.Collections.Generic; using Microsoft.EntityFrameworkCore; +using ReCap.Server.Models; -using ReCap.Server.Config.Server; - -using ReCap.Server.Model.Account; -using ReCap.Server.Model.Creature; -using ReCap.Server.Model.CreaturePart; -using ReCap.Server.Model.CreaturePartTemplate; -using ReCap.Server.Model.CreatureTemplate; -using ReCap.Server.Model.DbSequence; -using ReCap.Server.Model.Deck; +namespace ReCap.Server.Config; public class SqliteConfig : DbContext { diff --git a/ReCap.Server/src/domain/Account.cs b/ReCap.Server/Domain/Account.cs similarity index 97% rename from ReCap.Server/src/domain/Account.cs rename to ReCap.Server/Domain/Account.cs index 37696ec..c6a015d 100644 --- a/ReCap.Server/src/domain/Account.cs +++ b/ReCap.Server/Domain/Account.cs @@ -1,4 +1,4 @@ -namespace ReCap.Server.Domain.Account; +namespace ReCap.Server.Domain; public class Account { diff --git a/ReCap.Server/src/domain/Creature.cs b/ReCap.Server/Domain/Creature.cs similarity index 91% rename from ReCap.Server/src/domain/Creature.cs rename to ReCap.Server/Domain/Creature.cs index 7c7a532..519ee4b 100644 --- a/ReCap.Server/src/domain/Creature.cs +++ b/ReCap.Server/Domain/Creature.cs @@ -1,4 +1,4 @@ -namespace ReCap.Server.Domain.Creature; +namespace ReCap.Server.Domain; public class Creature { diff --git a/ReCap.Server/src/domain/CreaturePart.cs b/ReCap.Server/Domain/CreaturePart.cs similarity index 90% rename from ReCap.Server/src/domain/CreaturePart.cs rename to ReCap.Server/Domain/CreaturePart.cs index 1be5230..7e00b2d 100644 --- a/ReCap.Server/src/domain/CreaturePart.cs +++ b/ReCap.Server/Domain/CreaturePart.cs @@ -1,6 +1,4 @@ -namespace ReCap.Server.Domain.CreaturePart; - -using ReCap.Server.Enums.CreaturePartRarity; +namespace ReCap.Server.Domain; public class CreaturePart { diff --git a/ReCap.Server/src/domain/Deck.cs b/ReCap.Server/Domain/Deck.cs similarity index 91% rename from ReCap.Server/src/domain/Deck.cs rename to ReCap.Server/Domain/Deck.cs index 07177bf..3ab5759 100644 --- a/ReCap.Server/src/domain/Deck.cs +++ b/ReCap.Server/Domain/Deck.cs @@ -1,4 +1,4 @@ -namespace ReCap.Server.Domain.Deck; +namespace ReCap.Server.Domain; public class Deck { diff --git a/ReCap.Server/src/domain/BasePlayer.cs b/ReCap.Server/Domain/Gameplay/BasePlayer.cs similarity index 88% rename from ReCap.Server/src/domain/BasePlayer.cs rename to ReCap.Server/Domain/Gameplay/BasePlayer.cs index 23f1030..9d8486a 100644 --- a/ReCap.Server/src/domain/BasePlayer.cs +++ b/ReCap.Server/Domain/Gameplay/BasePlayer.cs @@ -1,4 +1,4 @@ -namespace ReCap.Domain.Gameplay; +namespace ReCap.Server.Domain.Gameplay; public enum PlayerStatus { diff --git a/ReCap.Server/src/domain/Bot.cs b/ReCap.Server/Domain/Gameplay/Bot.cs similarity index 81% rename from ReCap.Server/src/domain/Bot.cs rename to ReCap.Server/Domain/Gameplay/Bot.cs index 22ab02c..dbf4c8c 100644 --- a/ReCap.Server/src/domain/Bot.cs +++ b/ReCap.Server/Domain/Gameplay/Bot.cs @@ -1,4 +1,4 @@ -namespace ReCap.Domain.Gameplay; +namespace ReCap.Server.Domain.Gameplay; public class Bot(ulong id, byte slot) : BasePlayer(id, slot) { diff --git a/ReCap.Server/src/domain/Game.cs b/ReCap.Server/Domain/Gameplay/Game.cs similarity index 94% rename from ReCap.Server/src/domain/Game.cs rename to ReCap.Server/Domain/Gameplay/Game.cs index 4c1bf06..4fde9c9 100644 --- a/ReCap.Server/src/domain/Game.cs +++ b/ReCap.Server/Domain/Gameplay/Game.cs @@ -1,20 +1,10 @@ -namespace ReCap.Domain.Gameplay; - -using ReCap.RakNetServer; -using ReCap.RakNet; -using ReCap.RakNet.Packets; +using ReCap.Server.Adapters.RakNet; +using ReCap.Server.Adapters.RakNet.Packets; using ReCap.Server.Adapters.Blaze.Component.GameManager; -using ReCap.Server.Model.Account; +using ReCap.Server.Models; -public enum GameplayState -{ - Initialization, - ShaperSelection, - InGame, - Rewards, - Finished -} +namespace ReCap.Server.Domain.Gameplay; public class Game(ulong id, GameType gameType) : IGame { diff --git a/ReCap.Server/Domain/Gameplay/GameplayState.cs b/ReCap.Server/Domain/Gameplay/GameplayState.cs new file mode 100644 index 0000000..055ce5f --- /dev/null +++ b/ReCap.Server/Domain/Gameplay/GameplayState.cs @@ -0,0 +1,10 @@ +namespace ReCap.Server.Domain.Gameplay; + +public enum GameplayState +{ + Initialization, + ShaperSelection, + InGame, + Rewards, + Finished +} \ No newline at end of file diff --git a/ReCap.Server/src/domain/Player.cs b/ReCap.Server/Domain/Gameplay/Player.cs similarity index 65% rename from ReCap.Server/src/domain/Player.cs rename to ReCap.Server/Domain/Gameplay/Player.cs index 65e4422..0755e08 100644 --- a/ReCap.Server/src/domain/Player.cs +++ b/ReCap.Server/Domain/Gameplay/Player.cs @@ -1,8 +1,6 @@ -namespace ReCap.Domain.Gameplay; +using ReCap.Server.Adapters.RakNet; -using ReCap.RakNetServer; -using ReCap.Domain.Gameplay; -using ReCap.RakNet; +namespace ReCap.Server.Domain.Gameplay; public class Player(ulong id, byte slot) : BasePlayer(id, slot) { diff --git a/ReCap.Server/src/enums/CreaturePartRarity.cs b/ReCap.Server/Enums/CreaturePartRarity.cs similarity index 72% rename from ReCap.Server/src/enums/CreaturePartRarity.cs rename to ReCap.Server/Enums/CreaturePartRarity.cs index 4907cb7..44bbb54 100644 --- a/ReCap.Server/src/enums/CreaturePartRarity.cs +++ b/ReCap.Server/Enums/CreaturePartRarity.cs @@ -1,4 +1,4 @@ -namespace ReCap.Server.Enums.CreaturePartRarity; +namespace ReCap.Server; public enum CreaturePartRarity { Basic = 0, diff --git a/ReCap.Server/src/exception/BadRequestException.cs b/ReCap.Server/Exceptions/BadRequestException.cs similarity index 92% rename from ReCap.Server/src/exception/BadRequestException.cs rename to ReCap.Server/Exceptions/BadRequestException.cs index 991a594..31f34b1 100644 --- a/ReCap.Server/src/exception/BadRequestException.cs +++ b/ReCap.Server/Exceptions/BadRequestException.cs @@ -1,5 +1,7 @@ using System; +namespace ReCap.Server; + public class BadRequestException : Exception { public BadRequestException() diff --git a/ReCap.Server/src/exception/ForbiddenOperationException.cs b/ReCap.Server/Exceptions/ForbiddenOperationException.cs similarity index 92% rename from ReCap.Server/src/exception/ForbiddenOperationException.cs rename to ReCap.Server/Exceptions/ForbiddenOperationException.cs index b9c7753..782c2f1 100644 --- a/ReCap.Server/src/exception/ForbiddenOperationException.cs +++ b/ReCap.Server/Exceptions/ForbiddenOperationException.cs @@ -1,5 +1,7 @@ using System; +namespace ReCap.Server; + public class ForbiddenOperationException : Exception { public ForbiddenOperationException() diff --git a/ReCap.Server/src/exception/GlobalExceptionHandler.cs b/ReCap.Server/Exceptions/GlobalExceptionHandler.cs similarity index 96% rename from ReCap.Server/src/exception/GlobalExceptionHandler.cs rename to ReCap.Server/Exceptions/GlobalExceptionHandler.cs index e54d06c..7e511f0 100644 --- a/ReCap.Server/src/exception/GlobalExceptionHandler.cs +++ b/ReCap.Server/Exceptions/GlobalExceptionHandler.cs @@ -1,8 +1,7 @@ -namespace ReCap.Server.Adapters.Rest.Api; - using System.Net; +using ReCap.Server.Util; -using ReCap.Server.Utils.Logger; +namespace ReCap.Server; public class GlobalExceptionHandler { diff --git a/ReCap.Server/src/exception/UnimplementedMethodException.cs b/ReCap.Server/Exceptions/UnimplementedMethodException.cs similarity index 93% rename from ReCap.Server/src/exception/UnimplementedMethodException.cs rename to ReCap.Server/Exceptions/UnimplementedMethodException.cs index 79c3874..3d56b2f 100644 --- a/ReCap.Server/src/exception/UnimplementedMethodException.cs +++ b/ReCap.Server/Exceptions/UnimplementedMethodException.cs @@ -1,3 +1,5 @@ +namespace ReCap.Server; + using System; public class UnimplementedMethodException : Exception diff --git a/ReCap.Server/src/mapper/AccountMapper.cs b/ReCap.Server/Mappers/AccountMapper.cs similarity index 77% rename from ReCap.Server/src/mapper/AccountMapper.cs rename to ReCap.Server/Mappers/AccountMapper.cs index 0771a4c..d35c708 100644 --- a/ReCap.Server/src/mapper/AccountMapper.cs +++ b/ReCap.Server/Mappers/AccountMapper.cs @@ -1,11 +1,9 @@ -namespace ReCap.Server.Mapper.Account; - using AutoMapper; +using ReCap.Server.Adapters.Rest.Contracts.Game.Models; +using ReCap.Server.Domain; +using ReCap.Server.Models; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Account; -using ReCap.Server.Domain.Account; -using ReCap.Server.Mapper.Account; -using ReCap.Server.Model.Account; +namespace ReCap.Server.Mappers; public class AccountMapper { diff --git a/ReCap.Server/src/mapper/CreatureMapper.cs b/ReCap.Server/Mappers/CreatureMapper.cs similarity index 84% rename from ReCap.Server/src/mapper/CreatureMapper.cs rename to ReCap.Server/Mappers/CreatureMapper.cs index b00c059..7b06181 100644 --- a/ReCap.Server/src/mapper/CreatureMapper.cs +++ b/ReCap.Server/Mappers/CreatureMapper.cs @@ -1,12 +1,10 @@ -namespace ReCap.Server.Mapper.Creature; - using AutoMapper; +using ReCap.Server.Adapters.Rest.Contracts.Game; +using ReCap.Server.Adapters.Rest.Contracts.Game.Models; +using ReCap.Server.Domain; +using ReCap.Server.Models; -using ReCap.Server.Adapters.Rest.Contracts.Game.GetCreatureResponse; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Creature; -using ReCap.Server.Domain.Creature; -using ReCap.Server.Model.Creature; -using ReCap.Server.Model.CreatureTemplate; +namespace ReCap.Server.Mappers; public class CreatureMapper { diff --git a/ReCap.Server/src/mapper/CreaturePartMapper.cs b/ReCap.Server/Mappers/CreaturePartMapper.cs similarity index 91% rename from ReCap.Server/src/mapper/CreaturePartMapper.cs rename to ReCap.Server/Mappers/CreaturePartMapper.cs index 6d7f265..e1a3b31 100644 --- a/ReCap.Server/src/mapper/CreaturePartMapper.cs +++ b/ReCap.Server/Mappers/CreaturePartMapper.cs @@ -1,12 +1,9 @@ -namespace ReCap.Server.Mapper.CreaturePart; - using AutoMapper; +using ReCap.Server.Adapters.Rest.Contracts.Game.Models; +using ReCap.Server.Domain; +using ReCap.Server.Models; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.CreaturePart; -using ReCap.Server.Domain.CreaturePart; -using ReCap.Server.Enums.CreaturePartRarity; -using ReCap.Server.Model.CreaturePart; -using ReCap.Server.Model.CreaturePartTemplate; +namespace ReCap.Server.Mappers; public class CreaturePartMapper { diff --git a/ReCap.Server/src/mapper/CreatureTemplateMapper.cs b/ReCap.Server/Mappers/CreatureTemplateMapper.cs similarity index 76% rename from ReCap.Server/src/mapper/CreatureTemplateMapper.cs rename to ReCap.Server/Mappers/CreatureTemplateMapper.cs index 1333758..b8ee996 100644 --- a/ReCap.Server/src/mapper/CreatureTemplateMapper.cs +++ b/ReCap.Server/Mappers/CreatureTemplateMapper.cs @@ -1,9 +1,8 @@ -namespace ReCap.Server.Mapper.CreatureTemplate; - using AutoMapper; +using ReCap.Server.Adapters.Rest.Contracts.Game; +using ReCap.Server.Models; -using ReCap.Server.Adapters.Rest.Contracts.Game.GetCreatureTemplateResponse; -using ReCap.Server.Model.CreatureTemplate; +namespace ReCap.Server.Mappers; public class CreatureTemplateMapper { diff --git a/ReCap.Server/src/mapper/DeckMapper.cs b/ReCap.Server/Mappers/DeckMapper.cs similarity index 84% rename from ReCap.Server/src/mapper/DeckMapper.cs rename to ReCap.Server/Mappers/DeckMapper.cs index a300592..f270335 100644 --- a/ReCap.Server/src/mapper/DeckMapper.cs +++ b/ReCap.Server/Mappers/DeckMapper.cs @@ -1,12 +1,9 @@ -namespace ReCap.Server.Mapper.Deck; - using AutoMapper; +using ReCap.Server.Adapters.Rest.Contracts.Game.Models; +using ReCap.Server.Domain; +using ReCap.Server.Models; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Deck; -using ReCap.Server.Domain.Deck; -using ReCap.Server.Mapper.Creature; -using ReCap.Server.Model.Creature; -using ReCap.Server.Model.Deck; +namespace ReCap.Server.Mappers; public class DeckMapper { diff --git a/ReCap.Server/src/model/AccountModel.cs b/ReCap.Server/Models/AccountModel.cs similarity index 97% rename from ReCap.Server/src/model/AccountModel.cs rename to ReCap.Server/Models/AccountModel.cs index 6e356ec..b9430d1 100644 --- a/ReCap.Server/src/model/AccountModel.cs +++ b/ReCap.Server/Models/AccountModel.cs @@ -1,4 +1,4 @@ -namespace ReCap.Server.Model.Account; +namespace ReCap.Server.Models; public class AccountModel { diff --git a/ReCap.Server/src/model/CreatureModel.cs b/ReCap.Server/Models/CreatureModel.cs similarity index 98% rename from ReCap.Server/src/model/CreatureModel.cs rename to ReCap.Server/Models/CreatureModel.cs index 7200513..aae02e8 100644 --- a/ReCap.Server/src/model/CreatureModel.cs +++ b/ReCap.Server/Models/CreatureModel.cs @@ -1,4 +1,4 @@ -namespace ReCap.Server.Model.Creature; +namespace ReCap.Server.Models; public class CreatureModel { diff --git a/ReCap.Server/src/model/CreaturePartModel.cs b/ReCap.Server/Models/CreaturePartModel.cs similarity index 91% rename from ReCap.Server/src/model/CreaturePartModel.cs rename to ReCap.Server/Models/CreaturePartModel.cs index c7d7354..0628667 100644 --- a/ReCap.Server/src/model/CreaturePartModel.cs +++ b/ReCap.Server/Models/CreaturePartModel.cs @@ -1,6 +1,4 @@ -namespace ReCap.Server.Model.CreaturePart; - -using ReCap.Server.Enums.CreaturePartRarity; +namespace ReCap.Server.Models; public class CreaturePartModel { diff --git a/ReCap.Server/src/model/CreaturePartTemplateModel.cs b/ReCap.Server/Models/CreaturePartTemplateModel.cs similarity index 92% rename from ReCap.Server/src/model/CreaturePartTemplateModel.cs rename to ReCap.Server/Models/CreaturePartTemplateModel.cs index 684c216..45e5203 100644 --- a/ReCap.Server/src/model/CreaturePartTemplateModel.cs +++ b/ReCap.Server/Models/CreaturePartTemplateModel.cs @@ -1,8 +1,6 @@ -namespace ReCap.Server.Model.CreaturePartTemplate; - using System.ComponentModel.DataAnnotations; -using ReCap.Server.Model.CreaturePart; +namespace ReCap.Server.Models; public class CreaturePartTemplateModel { diff --git a/ReCap.Server/src/model/CreatureTemplateModel.cs b/ReCap.Server/Models/CreatureTemplateModel.cs similarity index 95% rename from ReCap.Server/src/model/CreatureTemplateModel.cs rename to ReCap.Server/Models/CreatureTemplateModel.cs index c2ad079..646fb8e 100644 --- a/ReCap.Server/src/model/CreatureTemplateModel.cs +++ b/ReCap.Server/Models/CreatureTemplateModel.cs @@ -1,4 +1,4 @@ -namespace ReCap.Server.Model.CreatureTemplate; +namespace ReCap.Server.Models; public class CreatureTemplateModel { diff --git a/ReCap.Server/src/model/DbSequenceModel.cs b/ReCap.Server/Models/DbSequenceModel.cs similarity index 74% rename from ReCap.Server/src/model/DbSequenceModel.cs rename to ReCap.Server/Models/DbSequenceModel.cs index 8caf2b5..9c35569 100644 --- a/ReCap.Server/src/model/DbSequenceModel.cs +++ b/ReCap.Server/Models/DbSequenceModel.cs @@ -1,4 +1,4 @@ -namespace ReCap.Server.Model.DbSequence; +namespace ReCap.Server.Models; public class DbSequenceModel { diff --git a/ReCap.Server/src/model/DeckModel.cs b/ReCap.Server/Models/DeckModel.cs similarity index 91% rename from ReCap.Server/src/model/DeckModel.cs rename to ReCap.Server/Models/DeckModel.cs index c8f5240..cbbedc0 100644 --- a/ReCap.Server/src/model/DeckModel.cs +++ b/ReCap.Server/Models/DeckModel.cs @@ -1,4 +1,4 @@ -namespace ReCap.Server.Model.Deck; +namespace ReCap.Server.Models; public class DeckModel { diff --git a/ReCap.Server/application.cs b/ReCap.Server/Program.cs similarity index 86% rename from ReCap.Server/application.cs rename to ReCap.Server/Program.cs index 80fb16e..6cd3658 100644 --- a/ReCap.Server/application.cs +++ b/ReCap.Server/Program.cs @@ -1,23 +1,18 @@ -namespace ReCap.Server.Application; - -using System; +using System; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; - -using BlazeServer; - -using ReCap.RakNetServer; - +using ReCap.Server.Adapters.Blaze; +using ReCap.Server.Adapters.RakNet; using ReCap.Server.Adapters.Rest.Api; -using ReCap.Server.Config.Server; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Utils; -using ReCap.Server.Utils.Logger; +using ReCap.Server.Config; +using ReCap.Server.Util; + +namespace ReCap.Server; -public static class Application +public static class Program { static readonly IReadOnlyList _HTTP_RELAUNCH_ERROR_CODES = new List() { @@ -37,7 +32,7 @@ static async Task Main(string[] args) int argCount = args.Length; for (int i = 0; i < argCount; i++) { - string arg = CommandLineUtils.UnwrapArg(args[i]); + string arg = CommandLineHelper.UnwrapArg(args[i]); if (arg == _HELP_ARG) { PrintHelp(); @@ -52,7 +47,7 @@ static async Task Main(string[] args) else if (arg.StartsWith(_DB_PATH_ARG)) { string dbPath = arg.Substring(_DB_PATH_ARG.Length); - dbPath = CommandLineUtils.UnwrapArg(dbPath); + dbPath = CommandLineHelper.UnwrapArg(dbPath); if (!Directory.Exists(dbPath)) Directory.CreateDirectory(dbPath); @@ -103,11 +98,11 @@ static async Task Main(string[] args) IPAddress localhostIP = ServerConfig.HostIP; string hostname = ServerConfig.HostName; - Server redirector = new(dbConfig, "Redirector", localhostIP, 42127, true, hostname); + BlazeServer redirector = new(dbConfig, "Redirector", localhostIP, 42127, true, hostname); Task.Run(redirector.Start); - Server lobby = new(dbConfig, "Lobby", localhostIP, 42125, false, hostname); + BlazeServer lobby = new(dbConfig, "Lobby", localhostIP, 42125, false, hostname); Task.Run(lobby.Start); diff --git a/ReCap.Server/src/service/AccountService.cs b/ReCap.Server/Services/AccountService.cs similarity index 94% rename from ReCap.Server/src/service/AccountService.cs rename to ReCap.Server/Services/AccountService.cs index 849e3c9..4ee58a6 100644 --- a/ReCap.Server/src/service/AccountService.cs +++ b/ReCap.Server/Services/AccountService.cs @@ -1,9 +1,9 @@ -namespace ReCap.Server.Service.Account; +using ReCap.Server.Adapters.Persistence.SQLite; +using ReCap.Server.Config; +using ReCap.Server.Domain; +using ReCap.Server.Models; -using ReCap.Server.Adapters.Persistence.SQLite.AccountRepository; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Domain.Account; -using ReCap.Server.Model.Account; +namespace ReCap.Server.Services; public class AccountService { diff --git a/ReCap.Server/src/service/BroadcastService.cs b/ReCap.Server/Services/BroadcastService.cs similarity index 80% rename from ReCap.Server/src/service/BroadcastService.cs rename to ReCap.Server/Services/BroadcastService.cs index f8d356f..bb42b05 100644 --- a/ReCap.Server/src/service/BroadcastService.cs +++ b/ReCap.Server/Services/BroadcastService.cs @@ -1,6 +1,6 @@ -namespace ReCap.Server.Service.Broadcast; +using ReCap.Server.Adapters.Rest.Contracts.Game.Models; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Broadcast; +namespace ReCap.Server.Services; public class BroadcastService { diff --git a/ReCap.Server/src/service/ConfigService.cs b/ReCap.Server/Services/ConfigService.cs similarity index 85% rename from ReCap.Server/src/service/ConfigService.cs rename to ReCap.Server/Services/ConfigService.cs index ecd1bf0..d2d40ea 100644 --- a/ReCap.Server/src/service/ConfigService.cs +++ b/ReCap.Server/Services/ConfigService.cs @@ -1,7 +1,7 @@ -namespace ReCap.Server.Service.Config; +using ReCap.Server.Adapters.Rest.Contracts.Bootstrap; +using ReCap.Server.Config; -using ReCap.Server.Adapters.Rest.Contracts.Bootstrap.Config; -using ReCap.Server.Config.Server; +namespace ReCap.Server.Services; public class ConfigService { diff --git a/ReCap.Server/src/service/CreaturePartService.cs b/ReCap.Server/Services/CreaturePartService.cs similarity index 84% rename from ReCap.Server/src/service/CreaturePartService.cs rename to ReCap.Server/Services/CreaturePartService.cs index 0bf554f..82d03cb 100644 --- a/ReCap.Server/src/service/CreaturePartService.cs +++ b/ReCap.Server/Services/CreaturePartService.cs @@ -1,13 +1,10 @@ -namespace ReCap.Server.Service.CreaturePart; +using ReCap.Server.Adapters.Persistence.SQLite; +using ReCap.Server.Config; +using ReCap.Server.Domain; +using ReCap.Server.Mappers; +using ReCap.Server.Models; -using ReCap.Server.Adapters.Persistence.SQLite.CreaturePartRepository; -using ReCap.Server.Adapters.Persistence.SQLite.CreaturePartTemplateRepository; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Domain.Account; -using ReCap.Server.Mapper.CreaturePart; -using ReCap.Server.Model.Account; -using ReCap.Server.Model.CreaturePart; -using ReCap.Server.Model.CreaturePartTemplate; +namespace ReCap.Server.Services; public class CreaturePartService { diff --git a/ReCap.Server/src/service/CreatureService.cs b/ReCap.Server/Services/CreatureService.cs similarity index 83% rename from ReCap.Server/src/service/CreatureService.cs rename to ReCap.Server/Services/CreatureService.cs index 57ef84d..bfb5d68 100644 --- a/ReCap.Server/src/service/CreatureService.cs +++ b/ReCap.Server/Services/CreatureService.cs @@ -1,12 +1,9 @@ -namespace ReCap.Server.Service.Creature; - -using ReCap.Server.Adapters.Persistence.SQLite.CreatureRepository; -using ReCap.Server.Adapters.Persistence.SQLite.CreatureTemplateRepository; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Domain.Creature; -using ReCap.Server.Model.Account; -using ReCap.Server.Model.Creature; -using ReCap.Server.Model.CreatureTemplate; +using ReCap.Server.Adapters.Persistence.SQLite; +using ReCap.Server.Config; +using ReCap.Server.Domain; +using ReCap.Server.Models; + +namespace ReCap.Server.Services; public class CreatureService { diff --git a/ReCap.Server/src/service/DeckService.cs b/ReCap.Server/Services/DeckService.cs similarity index 79% rename from ReCap.Server/src/service/DeckService.cs rename to ReCap.Server/Services/DeckService.cs index ee7811b..7518638 100644 --- a/ReCap.Server/src/service/DeckService.cs +++ b/ReCap.Server/Services/DeckService.cs @@ -1,10 +1,9 @@ -namespace ReCap.Server.Service.Deck; +using ReCap.Server.Adapters.Persistence.SQLite; +using ReCap.Server.Config; +using ReCap.Server.Domain; +using ReCap.Server.Models; -using ReCap.Server.Adapters.Persistence.SQLite.DeckRepository; -using ReCap.Server.Config.Sqlite; -using ReCap.Server.Domain.Deck; -using ReCap.Server.Model.Account; -using ReCap.Server.Model.Deck; +namespace ReCap.Server.Services; public class DeckService { diff --git a/ReCap.Server/src/service/GameService.cs b/ReCap.Server/Services/GameService.cs similarity index 91% rename from ReCap.Server/src/service/GameService.cs rename to ReCap.Server/Services/GameService.cs index 7b17479..64e7395 100644 --- a/ReCap.Server/src/service/GameService.cs +++ b/ReCap.Server/Services/GameService.cs @@ -1,8 +1,8 @@ -namespace ReCap.Server.Service.Game; - -using ReCap.Domain.Gameplay; +using ReCap.Server.Domain.Gameplay; using ReCap.Server.Adapters.Blaze.Component.GameManager; -using ReCap.Server.Model.Account; +using ReCap.Server.Models; + +namespace ReCap.Server.Services; public class GameService { diff --git a/ReCap.Server/src/service/StatusService.cs b/ReCap.Server/Services/StatusService.cs similarity index 51% rename from ReCap.Server/src/service/StatusService.cs rename to ReCap.Server/Services/StatusService.cs index f2311c8..9e42da7 100644 --- a/ReCap.Server/src/service/StatusService.cs +++ b/ReCap.Server/Services/StatusService.cs @@ -1,11 +1,6 @@ -namespace ReCap.Server.Service.Status; +using ReCap.Server.Adapters.Rest.Contracts.Game.Models; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.Status; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.StatusApi; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.StatusBlaze; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.StatusGame; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.StatusGms; -using ReCap.Server.Adapters.Rest.Contracts.Game.Models.StatusNucleus; +namespace ReCap.Server.Services; public class StatusService { diff --git a/ReCap.Server/src/service/SurveyService.cs b/ReCap.Server/Services/SurveyService.cs similarity index 58% rename from ReCap.Server/src/service/SurveyService.cs rename to ReCap.Server/Services/SurveyService.cs index a25d1cd..7c8726a 100644 --- a/ReCap.Server/src/service/SurveyService.cs +++ b/ReCap.Server/Services/SurveyService.cs @@ -1,6 +1,6 @@ -namespace ReCap.Server.Service.Survey; +using ReCap.Server.Adapters.Rest.Contracts.Survey; -using ReCap.Server.Adapters.Rest.Contracts.Survey.Survey; +namespace ReCap.Server.Services; public class SurveyService { diff --git a/ReCap.Server/Util/CommandLineHelper.cs b/ReCap.Server/Util/CommandLineHelper.cs new file mode 100644 index 0000000..332a9a0 --- /dev/null +++ b/ReCap.Server/Util/CommandLineHelper.cs @@ -0,0 +1,71 @@ +using System.Diagnostics; + +namespace ReCap.Server.Util; + +#nullable disable +public static class CommandLineHelper +{ + public static string GetCurrentProcessCommandLineArgs() + { + var args = Environment.GetCommandLineArgs().ToList(); + + string returnVal = string.Empty; + foreach (string arg in args) + { + returnVal += WrapArg(arg) + " "; + } + + return returnVal; + } + static void RemoveExecutableFromArgs(ref List args) + { + if (args.Count <= 0) + return; + + return; + int argCount = args.Count; + + string executablePath = Process.GetCurrentProcess().MainModule.FileName; + + for (int i = 0; i < argCount; i++) + { + var arg = args[0]; + arg = UnwrapArg(arg); + arg = Environment.ExpandEnvironmentVariables(arg); + if (arg == executablePath) + { + args.RemoveAt(i); + i--; + } + } + } + + + const char _QUOT = '"'; + static readonly char[] _ARG_CONTAINERS = + { + _QUOT, + '\'' + }; + + + + + public static string UnwrapArg(string arg) + => arg?.Trim().Trim(_ARG_CONTAINERS).Trim() ?? string.Empty; + + + public static string WrapArg(string arg) + { + //returnVal = returnVal + "\"" + s + "\" "; + if (!arg.Contains(' ')) + return arg; + if (_ARG_CONTAINERS.Any(c => arg.StartsWith(c))) + return arg; + + string retArg = arg.Trim(_ARG_CONTAINERS); + retArg = $"{_QUOT}{retArg}{_QUOT}"; + return retArg; + } +} +#nullable restore \ No newline at end of file diff --git a/ReCap.Server/src/utils/HttpUtils.cs b/ReCap.Server/Util/HTTPHelper.cs similarity index 96% rename from ReCap.Server/src/utils/HttpUtils.cs rename to ReCap.Server/Util/HTTPHelper.cs index c6f55e9..c27a1f3 100644 --- a/ReCap.Server/src/utils/HttpUtils.cs +++ b/ReCap.Server/Util/HTTPHelper.cs @@ -1,9 +1,9 @@ -namespace ReCap.Server.Utils.Http; - using System.Net; using HttpMultipartParser; -public class HttpUtils +namespace ReCap.Server.Util; + +public class HTTPHelper { public static string GetBodyFromRequest(HttpListenerRequest request) { diff --git a/ReCap.Server/src/utils/Logger.cs b/ReCap.Server/Util/Logger.cs similarity index 89% rename from ReCap.Server/src/utils/Logger.cs rename to ReCap.Server/Util/Logger.cs index 95c140d..0df33ea 100644 --- a/ReCap.Server/src/utils/Logger.cs +++ b/ReCap.Server/Util/Logger.cs @@ -1,7 +1,7 @@ using System; using System.Diagnostics; -namespace ReCap.Server.Utils.Logger; +namespace ReCap.Server.Util; public class Logger { diff --git a/ReCap.Server/src/utils/PlatformUtils.cs b/ReCap.Server/Util/PlatformHelper.cs similarity index 97% rename from ReCap.Server/src/utils/PlatformUtils.cs rename to ReCap.Server/Util/PlatformHelper.cs index 69d80be..f7b25ce 100644 --- a/ReCap.Server/src/utils/PlatformUtils.cs +++ b/ReCap.Server/Util/PlatformHelper.cs @@ -2,10 +2,10 @@ using System.Runtime.InteropServices; using System.Runtime.Versioning; -namespace ReCap.Server.Utils; +namespace ReCap.Server.Util; #nullable disable -public static class PlatformUtils +public static class PlatformHelper { public static T GetForPlatform() { diff --git a/ReCap.Server/src/utils/PlatformInfo/IPlatformVersionImpl.cs b/ReCap.Server/Util/PlatformInfo/IPlatformVersionImpl.cs similarity index 70% rename from ReCap.Server/src/utils/PlatformInfo/IPlatformVersionImpl.cs rename to ReCap.Server/Util/PlatformInfo/IPlatformVersionImpl.cs index a71906b..39f5590 100644 --- a/ReCap.Server/src/utils/PlatformInfo/IPlatformVersionImpl.cs +++ b/ReCap.Server/Util/PlatformInfo/IPlatformVersionImpl.cs @@ -1,4 +1,4 @@ -namespace ReCap.Server.Utils; +namespace ReCap.Server.Util; internal interface IPlatformVersionImpl { diff --git a/ReCap.Server/src/utils/PlatformInfo/LinuxPlatformVersionImpl.cs b/ReCap.Server/Util/PlatformInfo/LinuxPlatformVersionImpl.cs similarity index 86% rename from ReCap.Server/src/utils/PlatformInfo/LinuxPlatformVersionImpl.cs rename to ReCap.Server/Util/PlatformInfo/LinuxPlatformVersionImpl.cs index d750e46..840cf04 100644 --- a/ReCap.Server/src/utils/PlatformInfo/LinuxPlatformVersionImpl.cs +++ b/ReCap.Server/Util/PlatformInfo/LinuxPlatformVersionImpl.cs @@ -1,7 +1,7 @@ using System.Runtime.InteropServices; using System.Runtime.Versioning; -namespace ReCap.Server.Utils; +namespace ReCap.Server.Util; [SupportedOSPlatform(nameof(OSPlatform.Linux))] internal class LinuxPlatformVersionImpl diff --git a/ReCap.Server/src/utils/PlatformInfo/MacOSPlatformVersionImpl.cs b/ReCap.Server/Util/PlatformInfo/MacOSPlatformVersionImpl.cs similarity index 86% rename from ReCap.Server/src/utils/PlatformInfo/MacOSPlatformVersionImpl.cs rename to ReCap.Server/Util/PlatformInfo/MacOSPlatformVersionImpl.cs index 2bb0c74..d092c48 100644 --- a/ReCap.Server/src/utils/PlatformInfo/MacOSPlatformVersionImpl.cs +++ b/ReCap.Server/Util/PlatformInfo/MacOSPlatformVersionImpl.cs @@ -1,7 +1,7 @@ using System.Runtime.InteropServices; using System.Runtime.Versioning; -namespace ReCap.Server.Utils; +namespace ReCap.Server.Util; [SupportedOSPlatform(nameof(OSPlatform.OSX))] internal class MacOSPlatformVersionImpl diff --git a/ReCap.Server/src/utils/PlatformInfo/PlatformInfo.cs b/ReCap.Server/Util/PlatformInfo/PlatformInfo.cs similarity index 94% rename from ReCap.Server/src/utils/PlatformInfo/PlatformInfo.cs rename to ReCap.Server/Util/PlatformInfo/PlatformInfo.cs index a9a7d7e..3b31e41 100644 --- a/ReCap.Server/src/utils/PlatformInfo/PlatformInfo.cs +++ b/ReCap.Server/Util/PlatformInfo/PlatformInfo.cs @@ -1,6 +1,6 @@ using System.Runtime.InteropServices; -namespace ReCap.Server.Utils; +namespace ReCap.Server.Util; public static class PlatformInfo { @@ -10,7 +10,7 @@ public static class PlatformInfo // MUST BE DEFINED AFTER THE THREE ABOVE - static readonly IPlatformVersionImpl _impl = PlatformUtils.GetForPlatform(); + static readonly IPlatformVersionImpl _impl = PlatformHelper.GetForPlatform(); diff --git a/ReCap.Server/src/utils/PlatformInfo/PlatformVersionImplBase.cs b/ReCap.Server/Util/PlatformInfo/PlatformVersionImplBase.cs similarity index 92% rename from ReCap.Server/src/utils/PlatformInfo/PlatformVersionImplBase.cs rename to ReCap.Server/Util/PlatformInfo/PlatformVersionImplBase.cs index 2789261..6fd0f81 100644 --- a/ReCap.Server/src/utils/PlatformInfo/PlatformVersionImplBase.cs +++ b/ReCap.Server/Util/PlatformInfo/PlatformVersionImplBase.cs @@ -1,6 +1,6 @@ using System.Diagnostics; -namespace ReCap.Server.Utils; +namespace ReCap.Server.Util; internal class PlatformVersionImplBase : IPlatformVersionImpl diff --git a/ReCap.Server/src/utils/PlatformInfo/WindowsPlatformVersionImpl.cs b/ReCap.Server/Util/PlatformInfo/WindowsPlatformVersionImpl.cs similarity index 98% rename from ReCap.Server/src/utils/PlatformInfo/WindowsPlatformVersionImpl.cs rename to ReCap.Server/Util/PlatformInfo/WindowsPlatformVersionImpl.cs index 028e170..e2471af 100644 --- a/ReCap.Server/src/utils/PlatformInfo/WindowsPlatformVersionImpl.cs +++ b/ReCap.Server/Util/PlatformInfo/WindowsPlatformVersionImpl.cs @@ -1,7 +1,7 @@ using System.Runtime.InteropServices; using System.Runtime.Versioning; -namespace ReCap.Server.Utils; +namespace ReCap.Server.Util; [SupportedOSPlatform(nameof(OSPlatform.Windows))] internal class WindowsPlatformVersionImpl diff --git a/ReCap.Server/src/utils/ProcessPermissions/IProcessPermissionsImpl.cs b/ReCap.Server/Util/ProcessPermissions/IProcessPermissionsImpl.cs similarity index 95% rename from ReCap.Server/src/utils/ProcessPermissions/IProcessPermissionsImpl.cs rename to ReCap.Server/Util/ProcessPermissions/IProcessPermissionsImpl.cs index bb8bb5e..2af8d3b 100644 --- a/ReCap.Server/src/utils/ProcessPermissions/IProcessPermissionsImpl.cs +++ b/ReCap.Server/Util/ProcessPermissions/IProcessPermissionsImpl.cs @@ -1,6 +1,7 @@ using System.Diagnostics; -namespace ReCap.Server.Utils; +namespace ReCap.Server.Util; + #nullable disable internal interface IProcessPermissionsImpl { diff --git a/ReCap.Server/src/utils/ProcessPermissions/LinuxProcessPermissionsImpl.cs b/ReCap.Server/Util/ProcessPermissions/LinuxProcessPermissionsImpl.cs similarity index 86% rename from ReCap.Server/src/utils/ProcessPermissions/LinuxProcessPermissionsImpl.cs rename to ReCap.Server/Util/ProcessPermissions/LinuxProcessPermissionsImpl.cs index aa3081e..7bf397d 100644 --- a/ReCap.Server/src/utils/ProcessPermissions/LinuxProcessPermissionsImpl.cs +++ b/ReCap.Server/Util/ProcessPermissions/LinuxProcessPermissionsImpl.cs @@ -2,7 +2,7 @@ using System.Runtime.InteropServices; using System.Runtime.Versioning; -namespace ReCap.Server.Utils; +namespace ReCap.Server.Util; #nullable disable [SupportedOSPlatform(nameof(OSPlatform.Linux))] @@ -14,7 +14,7 @@ public override bool TryRerunElevated(string args, out Process elevatedProcess) Debug.WriteLine($"{nameof(LinuxProcessPermissionsImpl)}.{nameof(TryRerunElevated)}('{args}', out...)"); try { - string sudoArgs = $"{CommandLineUtils.WrapArg(Environment.ProcessPath)} {args}"; + string sudoArgs = $"{CommandLineHelper.WrapArg(Environment.ProcessPath)} {args}"; Debug.WriteLine($"{nameof(sudoArgs)}: '{sudoArgs}'"); ProcessStartInfo startInfo = new("sudo", sudoArgs); elevatedProcess = Process.Start(startInfo); diff --git a/ReCap.Server/src/utils/ProcessPermissions/MacOSProcessPermissionsImpl.cs b/ReCap.Server/Util/ProcessPermissions/MacOSProcessPermissionsImpl.cs similarity index 93% rename from ReCap.Server/src/utils/ProcessPermissions/MacOSProcessPermissionsImpl.cs rename to ReCap.Server/Util/ProcessPermissions/MacOSProcessPermissionsImpl.cs index c79285b..2eeaf9a 100644 --- a/ReCap.Server/src/utils/ProcessPermissions/MacOSProcessPermissionsImpl.cs +++ b/ReCap.Server/Util/ProcessPermissions/MacOSProcessPermissionsImpl.cs @@ -2,7 +2,7 @@ using System.Runtime.InteropServices; using System.Runtime.Versioning; -namespace ReCap.Server.Utils; +namespace ReCap.Server.Util; #nullable disable [SupportedOSPlatform(nameof(OSPlatform.OSX))] diff --git a/ReCap.Server/src/utils/ProcessPermissions/ProcessPermissions.cs b/ReCap.Server/Util/ProcessPermissions/ProcessPermissions.cs similarity index 92% rename from ReCap.Server/src/utils/ProcessPermissions/ProcessPermissions.cs rename to ReCap.Server/Util/ProcessPermissions/ProcessPermissions.cs index efecdff..bb6ff05 100644 --- a/ReCap.Server/src/utils/ProcessPermissions/ProcessPermissions.cs +++ b/ReCap.Server/Util/ProcessPermissions/ProcessPermissions.cs @@ -1,10 +1,11 @@ using System.Diagnostics; -namespace ReCap.Server.Utils; +namespace ReCap.Server.Util; + #nullable disable public static class ProcessPermissions { - static readonly IProcessPermissionsImpl _permissions = PlatformUtils.GetForPlatform(); + static readonly IProcessPermissionsImpl _permissions = PlatformHelper.GetForPlatform(); /// @@ -45,7 +46,7 @@ static bool TryRerunElevatedInternal(string args, out Process elevatedProcess) => _permissions.TryRerunElevated( args != null ? args - : CommandLineUtils.GetCurrentProcessCommandLineArgs() + : CommandLineHelper.GetCurrentProcessCommandLineArgs() , out elevatedProcess ); } diff --git a/ReCap.Server/src/utils/ProcessPermissions/UnixProcessPermissionsImplBase.cs b/ReCap.Server/Util/ProcessPermissions/UnixProcessPermissionsImplBase.cs similarity index 94% rename from ReCap.Server/src/utils/ProcessPermissions/UnixProcessPermissionsImplBase.cs rename to ReCap.Server/Util/ProcessPermissions/UnixProcessPermissionsImplBase.cs index cfa2e10..f673ce6 100644 --- a/ReCap.Server/src/utils/ProcessPermissions/UnixProcessPermissionsImplBase.cs +++ b/ReCap.Server/Util/ProcessPermissions/UnixProcessPermissionsImplBase.cs @@ -2,7 +2,7 @@ using System.Runtime.InteropServices; using System.Runtime.Versioning; -namespace ReCap.Server.Utils; +namespace ReCap.Server.Util; #nullable disable [SupportedOSPlatform(nameof(OSPlatform.Linux))] diff --git a/ReCap.Server/src/utils/ProcessPermissions/WindowsProcessPermissionsImpl.cs b/ReCap.Server/Util/ProcessPermissions/WindowsProcessPermissionsImpl.cs similarity index 98% rename from ReCap.Server/src/utils/ProcessPermissions/WindowsProcessPermissionsImpl.cs rename to ReCap.Server/Util/ProcessPermissions/WindowsProcessPermissionsImpl.cs index 31c1015..c3b31fd 100644 --- a/ReCap.Server/src/utils/ProcessPermissions/WindowsProcessPermissionsImpl.cs +++ b/ReCap.Server/Util/ProcessPermissions/WindowsProcessPermissionsImpl.cs @@ -4,7 +4,7 @@ using System.Security.Principal; using Microsoft.Win32; -namespace ReCap.Server.Utils; +namespace ReCap.Server.Util; #nullable disable [SupportedOSPlatform(nameof(OSPlatform.Windows))] diff --git a/ReCap.Server/src/utils/XmlUtils.cs b/ReCap.Server/Util/XmlHelper.cs similarity index 93% rename from ReCap.Server/src/utils/XmlUtils.cs rename to ReCap.Server/Util/XmlHelper.cs index 8d5b2aa..972e40d 100644 --- a/ReCap.Server/src/utils/XmlUtils.cs +++ b/ReCap.Server/Util/XmlHelper.cs @@ -1,5 +1,3 @@ -namespace ReCap.Server.Utils.Xml; - using System; using System.IO; using System.Net; @@ -10,7 +8,9 @@ namespace ReCap.Server.Utils.Xml; using System.Xml.Serialization; using System.Collections.Specialized; -public class XmlUtils +namespace ReCap.Server.Util; + +public class XmlHelper { public static byte[] Serialize(T value) { diff --git a/ReCap.Server/src/adapters/blaze/components/Redirector/RedirectorComponent.cs b/ReCap.Server/src/adapters/blaze/components/Redirector/RedirectorComponent.cs deleted file mode 100644 index 2a7ecc3..0000000 --- a/ReCap.Server/src/adapters/blaze/components/Redirector/RedirectorComponent.cs +++ /dev/null @@ -1,263 +0,0 @@ -namespace ReCap.Server.Adapters.Blaze.Component.Redirector; - -using BlazeServer; -using ReCap.Server.Adapters.Blaze.Component.Util; -using ReCap.Server.Utils.Logger; - -public class RedirectorComponent : IComponent -{ - public ushort Id { get; } = 5; - public Server? Server { get; set; } - - public string HostName { get; set; } = string.Empty; - public uint Ip { get; set; } - public ushort Port { get; set; } - public bool IsSecure { get; set; } - - public bool HandlePacket(Client client, Packet packet) - { - Log($"Handling {GetCommandName(packet.Command)} from {client.EndPoint}!"); - - switch (packet.Command) - { - case 1: - return HandleGetServerInstance(client, packet); - - default: - Log($"Unknown command: {packet.Command} -> {GetCommandName(packet.Command)}"); - return false; - } - } - - private bool HandleGetServerInstance(Client client, Packet packet) - { - var request = packet.ReadContent(); - if (request is null) - { - Log("Unable to read content of getServerInstance request! Sending error..."); - - client.RespondTo(packet, response: new ServerInstanceError(), error: 0x10005); - return true; - } - - if (string.IsNullOrEmpty(HostName) && Ip == 0) - { - Log("No target server is specified! Sending error..."); - - client.RespondTo(packet, response: new ServerInstanceError(), error: 0x10005); - return true; - } - - var serverInfo = new ServerInstanceInfo - { - Secure = IsSecure - }; - - serverInfo.Address.ActiveMember = ServerAddressMember.IpAddress; - serverInfo.Address.IpAddress.Hostname = HostName; - serverInfo.Address.IpAddress.Ip = Ip; - serverInfo.Address.IpAddress.Port = Port; - - client.RespondTo(packet, serverInfo); - //client.OnDisconnect += () => client.Server.Stop(); - return true; - } - - public string GetCommandName(ushort id) - { - return id switch - { - 1 => "getServerInstance", - 8 => "getSunsetList", - 9 => "getCACertificates", - 10 => "findCACertificates", - _ => "" - }; - } - - public string GetNotificationName(ushort id) - { - return id switch - { - _ => "" - }; - } - - private static void Log(string message) => Logger.debug($"[Redirector component]: {message}"); -} - -public class AddressRemapEntry : Tdf -{ - [TdfField("DPRT", 0)] - public ushort DstPort { get; set; } - - [TdfField("MASK", 0)] - public uint NetMask { get; set; } - - [TdfField("SID", 0)] - public uint ServiceId { get; set; } - - [TdfField("SIP", 0)] - public uint SrcIp { get; set; } - - [TdfField("SPRT", 0)] - public ushort SrcPort { get; set; } -} - -public enum FirstPartyIdMember : uint -{ - PS3Ticket = 0, - XboxId = 1, - Unset = 0x7F -} - -public class FirstPartyId : TdfUnionT -{ - [TdfUnionField(0)] - public TdfBlob PS3Ticket { get; set; } = new(); - - [TdfUnionField(1)] - public XboxId XboxId { get; set; } = new(); -} - -public class IpAddress : Tdf -{ - [TdfField("HOST", "")] - public string Hostname { get; set; } = string.Empty; - - [TdfField("IP", 0)] - public uint Ip { get; set; } - - [TdfField("PORT", 0)] - public ushort Port { get; set; } -} - -public class NameRemapEntry : Tdf -{ - [TdfField("DPRT", 0)] - public ushort DstPort { get; set; } - - [TdfField("SID", 0)] - public uint ServiceId { get; set; } - - [TdfField("SIP", "")] - public string Hostname { get; set; } = string.Empty; - - [TdfField("SITE", "")] - public string SiteName { get; set; } = string.Empty; - - [TdfField("SPRT", 0)] - public ushort SrcPort { get; set; } -} - -public class ServerInstanceRequest : Tdf -{ - [TdfField("BSDK", "")] - public string BlazeSDKVersion { get; set; } = string.Empty; - - [TdfField("BTIM", "")] - public string BlazeSDKBuildDate { get; set; } = string.Empty; - - [TdfField("CLNT", "")] - public string ClientName { get; set; } = string.Empty; - - [TdfField("CLTP", ClientType.Invalid)] - public ClientType ClientType { get; set; } = ClientType.Invalid; - - [TdfField("CPLT", ConnectionProfileType.Invalid)] - public ConnectionProfileType ConnectionProfileType { get; set; } = ConnectionProfileType.Invalid; - - [TdfField("CSKU", "")] - public string ClientSkuId { get; set; } = string.Empty; - - [TdfField("CVER", "")] - public string ClientVersion { get; set; } = string.Empty; - - [TdfField("DSDK", "")] - public string DirtySDKVersion { get; set; } = string.Empty; - - [TdfField("ENV", "")] - public string Environment { get; set; } = string.Empty; - - [TdfField("FPID")] - public FirstPartyId FirstPartyId { get; set; } = new(); - - [TdfField("LOC", 0)] - public uint ClientLocale { get; set; } = 0; - - [TdfField("NAME", "")] - public string Name { get; set; } = string.Empty; - - [TdfField("PLAT", "")] - public string Platform { get; set; } = string.Empty; - - [TdfField("PROF", "")] - public string ConnectionProfile { get; set; } = string.Empty; -} - -public class ServerInstanceError : Tdf -{ - [TdfField("MSGS")] - public TdfPrimitiveVector Messages { get; } = []; -} - -public class ServerInstanceInfo : Tdf -{ - [TdfField("ADDR")] - public ServerAddress Address { get; } = new(); - - [TdfField("AMAP")] - public TdfStructVector AddressRemaps { get; } = []; - - [TdfField("CERT")] - public TdfPrimitiveVector CertificateList { get; } = []; - - [TdfField("MSGS")] - public TdfPrimitiveVector Messages { get; } = []; - - [TdfField("NMAP")] - public TdfStructVector NameRemaps { get; } = []; - - [TdfField("SECU", false)] - public bool Secure { get; set; } - - [TdfField("XDNS", 0)] - public uint DefaultDNSAddress { get; set; } -} - -public enum ServerAddressMember : uint -{ - IpAddress = 0, - XboxServerAddress = 1, - Unset = 0x7F -} - -public class ServerAddress : TdfUnionT -{ - [TdfUnionField(0)] - public IpAddress IpAddress { get; } = new(); - - [TdfUnionField(1)] - public XboxServerAddress XboxServerAddress { get; } = new(); -} - -public class XboxId : Tdf -{ - [TdfField("GTAG", "")] - public string Gamertag { get; set; } = string.Empty; - - [TdfField("XUID", 0)] - public ulong Xuid { get; set; } -} - -public class XboxServerAddress : Tdf -{ - [TdfField("PORT", 0)] - public ushort Port { get; set; } - - [TdfField("SID", 0)] - public uint ServiceId { get; set; } - - [TdfField("SITE", "")] - public string SiteName { get; set; } = string.Empty; -} \ No newline at end of file diff --git a/ReCap.Server/src/adapters/blaze/components/UserSessions/UserStatus.cs b/ReCap.Server/src/adapters/blaze/components/UserSessions/UserStatus.cs deleted file mode 100644 index 18cc18a..0000000 --- a/ReCap.Server/src/adapters/blaze/components/UserSessions/UserStatus.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace ReCap.Server.Adapters.Blaze.Component.UserSessions; - - diff --git a/ReCap.Server/src/attributes/ExceptionHandler.cs b/ReCap.Server/src/attributes/ExceptionHandler.cs deleted file mode 100644 index 91a4e44..0000000 --- a/ReCap.Server/src/attributes/ExceptionHandler.cs +++ /dev/null @@ -1,4 +0,0 @@ -public class ExceptionHandler : Attribute -{ - public System.Type? Type; -} diff --git a/ReCap.Server/src/config/ServerConfig.cs b/ReCap.Server/src/config/ServerConfig.cs deleted file mode 100644 index 826698f..0000000 --- a/ReCap.Server/src/config/ServerConfig.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using System.IO; -using System.Net; -using System.Text; -using System.Collections.Generic; - -namespace ReCap.Server.Config.Server -{ - public static class ServerConfig - { - public static string HostName - { - get => _currentOpts.HostName; - } - public static IPAddress HostIP - { - get => _currentOpts.HostIP; - } - public static Version GameVersion - { - get => _currentOpts.GameVersion; - } - public static string GameVersionStr - { - get => GameVersion.ToString(); - } - public static string ServerDatabasePath - { - get => Path.Join(ServerDatabaseDirectory, "server.db"); - } - public static string ServerDatabaseDirectory - { - get => _currentOpts.ServerDatabaseDirectory; - } - - - public static readonly string ResourcesDirectory = Path.Join(AppDomain.CurrentDomain.BaseDirectory, "resources"); - - - - - static ServerConfigOptions _currentOpts = new(); - public static void Configure(ServerConfigOptions options) - { - if (options == null) - throw new ArgumentNullException(nameof(options)); - - _currentOpts = options; - } - - public static ServerConfigOptions CopyCurrentOptions() - => new() - { - HostName = _currentOpts.HostName, - HostIP = _currentOpts.HostIP, - GameVersion = _currentOpts.GameVersion, - ServerDatabaseDirectory = _currentOpts.ServerDatabaseDirectory, - }; - } -} \ No newline at end of file diff --git a/ReCap.Server/src/config/ServerConfigOptions.cs b/ReCap.Server/src/config/ServerConfigOptions.cs deleted file mode 100644 index 643bb26..0000000 --- a/ReCap.Server/src/config/ServerConfigOptions.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.IO; -using System.Net; -using System.Text; -using System.Collections.Generic; - - -#nullable disable -namespace ReCap.Server.Config.Server -{ - public sealed class ServerConfigOptions - { - public static readonly string DEFAULT_HOST_NAME = "localhost"; - string _hostName = DEFAULT_HOST_NAME; - public string HostName - { - get => _hostName; - set => _hostName = value; - } - - - public static readonly IPAddress DEFAULT_HOST_IP = IPAddress.Parse("127.0.0.1"); - IPAddress _hostIP = DEFAULT_HOST_IP; - public IPAddress HostIP - { - get => _hostIP; - set => _hostIP = value; - } - - - public static readonly Version DEFAULT_GAME_VERSION = new(5, 3, 0, 127); - Version _gameVersion = DEFAULT_GAME_VERSION; - public Version GameVersion - { - get => _gameVersion; - set => _gameVersion = value; - } - - - public static readonly string DEFAULT_SERVER_DATABASE_DIRECTORY = AppDomain.CurrentDomain.BaseDirectory; - string _serverDatabaseDirectory = DEFAULT_SERVER_DATABASE_DIRECTORY; - public string ServerDatabaseDirectory - { - get => _serverDatabaseDirectory; - set => _serverDatabaseDirectory = value; - } - - - - - public ServerConfigOptions() - {} - } -} -#nullable restore \ No newline at end of file diff --git a/ReCap.Server/src/utils/CommandLineUtils.cs b/ReCap.Server/src/utils/CommandLineUtils.cs deleted file mode 100644 index cd38a80..0000000 --- a/ReCap.Server/src/utils/CommandLineUtils.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System.Diagnostics; - -namespace ReCap.Server.Utils -{ - #nullable disable - public static class CommandLineUtils - { - public static string GetCurrentProcessCommandLineArgs() - { - var args = Environment.GetCommandLineArgs().ToList(); - - string returnVal = string.Empty; - foreach (string arg in args) - { - returnVal += WrapArg(arg) + " "; - } - - return returnVal; - } - static void RemoveExecutableFromArgs(ref List args) - { - if (args.Count <= 0) - return; - - return; - int argCount = args.Count; - - string executablePath = Process.GetCurrentProcess().MainModule.FileName; - - for (int i = 0; i < argCount; i++) - { - var arg = args[0]; - arg = UnwrapArg(arg); - arg = Environment.ExpandEnvironmentVariables(arg); - if (arg == executablePath) - { - args.RemoveAt(i); - i--; - } - } - } - - - const char _QUOT = '"'; - static readonly char[] _ARG_CONTAINERS = - { - _QUOT, - '\'' - }; - - - - - public static string UnwrapArg(string arg) - => arg?.Trim().Trim(_ARG_CONTAINERS).Trim() ?? string.Empty; - - - public static string WrapArg(string arg) - { - //returnVal = returnVal + "\"" + s + "\" "; - if (!arg.Contains(' ')) - return arg; - if (_ARG_CONTAINERS.Any(c => arg.StartsWith(c))) - return arg; - - string retArg = arg.Trim(_ARG_CONTAINERS); - retArg = $"{_QUOT}{retArg}{_QUOT}"; - return retArg; - } - } - #nullable restore -} \ No newline at end of file