Vote kicks now ban the target's ip (#35131)

* Make vote kicks ban the target's ip address

* Make it stop crashing my game
This commit is contained in:
nikthechampiongr
2025-02-13 14:03:55 -08:00
committed by GitHub
parent 7056c6051b
commit 562a41c00e

View File

@@ -1,4 +1,6 @@
using System.Linq;
using System.Net;
using System.Net.Sockets;
using Content.Server.Administration;
using Content.Server.Administration.Managers;
using Content.Server.Discord.WebhookMessages;
@@ -48,6 +50,8 @@ namespace Content.Server.Voting.Managers
else
_adminLogger.Add(LogType.Vote, LogImpact.Medium, $"Initiated a {voteType.ToString()} vote");
_gameTicker = _entityManager.EntitySysManager.GetEntitySystem<GameTicker>();
bool timeoutVote = true;
switch (voteType)
@@ -68,7 +72,6 @@ namespace Content.Server.Voting.Managers
default:
throw new ArgumentOutOfRangeException(nameof(voteType), voteType, null);
}
_gameTicker = _entityManager.EntitySysManager.GetEntitySystem<GameTicker>();
_gameTicker.UpdateInfoText();
if (timeoutVote)
TimeoutStandardVote(voteType);
@@ -368,6 +371,15 @@ namespace Content.Server.Voting.Managers
}
var targetUid = located.UserId;
var targetHWid = located.LastHWId;
(IPAddress, int)? targetIP = null;
if (located.LastAddress is not null)
{
targetIP = located.LastAddress.AddressFamily is AddressFamily.InterNetwork
? (located.LastAddress, 32) // People with ipv4 addresses get a /32 address so we ban that
: (located.LastAddress, 64); // This can only be an ipv6 address. People with ipv6 address should get /64 addresses so we ban that.
}
if (!_playerManager.TryGetSessionById(located.UserId, out ICommonSession? targetSession))
{
_logManager.GetSawmill("admin.votekick")
@@ -532,7 +544,7 @@ namespace Content.Server.Voting.Managers
uint minutes = (uint)_cfg.GetCVar(CCVars.VotekickBanDuration);
_bans.CreateServerBan(targetUid, target, null, null, targetHWid, minutes, severity, reason);
_bans.CreateServerBan(targetUid, target, null, targetIP, targetHWid, minutes, severity, reason);
}
}
else