Show fuckrules usage to admins (#42988)

* fuck rules

* extreme

* update comment

---------

Co-authored-by: ScarKy0 <scarky0@onet.eu>
This commit is contained in:
slarticodefast
2026-06-29 12:43:53 +02:00
committed by Coryler
co-authored by ScarKy0
parent 86b53d7270
commit 31d6da207a
4 changed files with 24 additions and 8 deletions
+2 -2
View File
@@ -22,7 +22,7 @@ public sealed partial class RulesPopup : Control
}
public event Action? OnQuitPressed;
public event Action? OnAcceptPressed;
public event Action<bool>? OnAcceptPressed;
public RulesPopup()
{
@@ -39,7 +39,7 @@ public sealed partial class RulesPopup : Control
private void OnAcceptButtonPressed(BaseButton.ButtonEventArgs obj)
{
OnAcceptPressed?.Invoke();
OnAcceptPressed?.Invoke(false);
}
protected override void FrameUpdate(FrameEventArgs args)
@@ -37,7 +37,7 @@ public sealed class InfoUIController : UIController, IOnStateExited<GameplayStat
"",
(_, _, _) =>
{
OnAcceptPressed();
OnAcceptPressed(true);
});
}
@@ -79,9 +79,10 @@ public sealed class InfoUIController : UIController, IOnStateExited<GameplayStat
_consoleHost.ExecuteCommand("quit");
}
private void OnAcceptPressed()
private void OnAcceptPressed(bool fuckRules)
{
_netManager.ClientSendMessage(new RulesAcceptedMessage());
var message = new RulesAcceptedMessage() { FuckRules = fuckRules };
_netManager.ClientSendMessage(message);
_rulesPopup?.Orphan();
_rulesPopup = null;
+9 -2
View File
@@ -1,7 +1,10 @@
using System.Net;
using Content.Server.Administration.Logs;
using Content.Server.Database;
using Content.Shared.CCVar;
using Content.Shared.Database;
using Content.Shared.Info;
using Robust.Server.Player;
using Robust.Shared.Configuration;
using Robust.Shared.Network;
@@ -12,6 +15,8 @@ public sealed class RulesManager
[Dependency] private readonly IServerDbManager _dbManager = default!;
[Dependency] private readonly INetManager _netManager = default!;
[Dependency] private readonly IConfigurationManager _cfg = default!;
[Dependency] private readonly IAdminLogManager _adminLog = default!;
[Dependency] private readonly IPlayerManager _player = default!;
private static DateTime LastValidReadTime => DateTime.UtcNow - TimeSpan.FromDays(60);
@@ -24,8 +29,8 @@ public sealed class RulesManager
private async void OnConnected(object? sender, NetChannelArgs e)
{
var isLocalhost = IPAddress.IsLoopback(e.Channel.RemoteEndPoint.Address) &&
_cfg.GetCVar(CCVars.RulesExemptLocal);
var isLocalhost = IPAddress.IsLoopback(e.Channel.RemoteEndPoint.Address) &&
_cfg.GetCVar(CCVars.RulesExemptLocal);
var lastRead = await _dbManager.GetLastReadRules(e.Channel.UserId);
var hasCooldown = lastRead > LastValidReadTime;
@@ -43,5 +48,7 @@ public sealed class RulesManager
{
var date = DateTime.UtcNow;
await _dbManager.SetLastReadRules(message.MsgChannel.UserId, date);
if (message.FuckRules && _player.TryGetSessionById(message.MsgChannel.UserId, out var session))
_adminLog.Add(LogType.Connection, LogImpact.Extreme, $"Player {session} used the fuckrules command.");
}
}
+9 -1
View File
@@ -1,4 +1,4 @@
using Lidgren.Network;
using Lidgren.Network;
using Robust.Shared.Network;
using Robust.Shared.Serialization;
@@ -35,13 +35,21 @@ public sealed class SendRulesInformationMessage : NetMessage
/// </summary>
public sealed class RulesAcceptedMessage : NetMessage
{
/// <summary>
/// Whether or not the player used the "fuckrules" command to skip the rules window countdown.
/// If true this will create an admin log and a warning the for the admins to see.
/// </summary>
public bool FuckRules;
public override MsgGroups MsgGroup => MsgGroups.Command;
public override void ReadFromBuffer(NetIncomingMessage buffer, IRobustSerializer serializer)
{
FuckRules = buffer.ReadBoolean();
}
public override void WriteToBuffer(NetOutgoingMessage buffer, IRobustSerializer serializer)
{
buffer.Write(FuckRules);
}
}