From 998efe56246c77d0f2592be8b0d3b78546566c95 Mon Sep 17 00:00:00 2001 From: AlanMoonbase Date: Thu, 27 Feb 2025 18:00:46 -0800 Subject: [PATCH] add ``UserBanType`` schema from API modify ``ChatMessageHandler.Chat`` to check for bans before sending out message --- src/CommandHandlers/ChatMessageHandler.cs | 19 ++++++++++++++++++- src/Core/UserBanType.cs | 10 ++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 src/Core/UserBanType.cs diff --git a/src/CommandHandlers/ChatMessageHandler.cs b/src/CommandHandlers/ChatMessageHandler.cs index ffdacf7..d573a5b 100644 --- a/src/CommandHandlers/ChatMessageHandler.cs +++ b/src/CommandHandlers/ChatMessageHandler.cs @@ -1,4 +1,6 @@ -using sodoffmmo.Attributes; +using System.Net; +using System.Net.Http.Json; +using sodoffmmo.Attributes; using sodoffmmo.Core; using sodoffmmo.Data; using sodoffmmo.Management; @@ -37,6 +39,21 @@ class ChatMessageHandler : CommandHandler { return; } + // send an http request to api to check for 'IndefiniteOpenChatBan' or 'TemporaryOpenChatBan' + HttpClient httpClient = new(); + var content = new FormUrlEncodedContent( + new Dictionary { + { "token", client.PlayerData.UNToken } + } + ); + + httpClient.Timeout = new TimeSpan(0, 0, 3); + var response = httpClient.PostAsync($"{Configuration.ServerConfiguration.ApiUrl}/Moderation/CheckForVikingBan", content).Result; + UserBanType? banType = response.Content.ReadFromJsonAsync().Result; + + if (banType != null && (banType == UserBanType.IndefiniteOpenChatBan || banType == UserBanType.TemporaryOpenChatBan)) + { client.Send(Utils.ArrNetworkPacket(new string[] { "CB", "-1", "1" }, "CB")); return; } + client.Room.Send(Utils.BuildChatMessage(client.PlayerData.Uid, message, client.PlayerData.DiplayName), client); NetworkObject cmd = new(); diff --git a/src/Core/UserBanType.cs b/src/Core/UserBanType.cs new file mode 100644 index 0000000..294ba61 --- /dev/null +++ b/src/Core/UserBanType.cs @@ -0,0 +1,10 @@ +namespace sodoffmmo.Core; + +public enum UserBanType +{ + NotBanned = 0, + IndefiniteOpenChatBan = 1, + TemporaryOpenChatBan = 2, + IndefiniteAccountBan = 3, + TemporaryAccountBan = 4 +}