Basic rate limiting for chat messages (#21907)
This commit is contained in:
committed by
GitHub
parent
dbb3da9232
commit
8bf807a9b5
@@ -11,10 +11,12 @@ using Content.Shared.CCVar;
|
||||
using Content.Shared.Chat;
|
||||
using Content.Shared.Database;
|
||||
using Content.Shared.Mind;
|
||||
using Robust.Server.Player;
|
||||
using Robust.Shared.Configuration;
|
||||
using Robust.Shared.Network;
|
||||
using Robust.Shared.Player;
|
||||
using Robust.Shared.Replays;
|
||||
using Robust.Shared.Timing;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Server.Chat.Managers
|
||||
@@ -22,7 +24,7 @@ namespace Content.Server.Chat.Managers
|
||||
/// <summary>
|
||||
/// Dispatches chat messages to clients.
|
||||
/// </summary>
|
||||
internal sealed class ChatManager : IChatManager
|
||||
internal sealed partial class ChatManager : IChatManager
|
||||
{
|
||||
private static readonly Dictionary<string, string> PatronOocColors = new()
|
||||
{
|
||||
@@ -41,6 +43,8 @@ namespace Content.Server.Chat.Managers
|
||||
[Dependency] private readonly IConfigurationManager _configurationManager = default!;
|
||||
[Dependency] private readonly INetConfigurationManager _netConfigManager = default!;
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
[Dependency] private readonly IGameTiming _gameTiming = default!;
|
||||
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
||||
|
||||
/// <summary>
|
||||
/// The maximum length a player-sent message can be sent
|
||||
@@ -59,6 +63,8 @@ namespace Content.Server.Chat.Managers
|
||||
|
||||
_configurationManager.OnValueChanged(CCVars.OocEnabled, OnOocEnabledChanged, true);
|
||||
_configurationManager.OnValueChanged(CCVars.AdminOocEnabled, OnAdminOocEnabledChanged, true);
|
||||
|
||||
_playerManager.PlayerStatusChanged += PlayerStatusChanged;
|
||||
}
|
||||
|
||||
private void OnOocEnabledChanged(bool val)
|
||||
@@ -178,6 +184,9 @@ namespace Content.Server.Chat.Managers
|
||||
/// <param name="type">The type of message.</param>
|
||||
public void TrySendOOCMessage(ICommonSession player, string message, OOCChatType type)
|
||||
{
|
||||
if (!HandleRateLimit(player))
|
||||
return;
|
||||
|
||||
// Check if message exceeds the character limit
|
||||
if (message.Length > MaxMessageLength)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user