mirror of
https://github.com/space-syndicate/space-station-14.git
synced 2026-06-09 13:26:34 +02:00
29b7fc4463
Ban database refactor (#42495) * Ban DB refactor seems to work at a basic level for PostgreSQL * New ban creation API Supports all the new functionality (multiple players/addresses/hwids/roles/rounds per ban). * Make the migration irreversible * Re-implement ban notifications The server ID check is no longer done as admins may want to place bans spanning multiple rounds irrelevant of the source server. * Fix some split query warnings * Implement migration on SQLite * More comments * Remove required from ban reason SS14.Admin changes would like this * More missing AsSplitQuery() calls * Fix missing ban type filter * Fix old CreateServerBan API with permanent time * Fix department and role ban commands with permanent time * Re-add banhits navigation property Dropped this on accident, SS14.Admin needs it. * More ban API fixes. * Don't fetch ban exemption info for role bans Not relevant, reduces query performance * Regenerate migrations * Fix adminnotes command for players that never connected Would blow up handling null player records. Not a new bug introduced by the refactor, but I ran into it. * Great shame... I accidentally committed submodule update... * Update GDPR scripts * Fix sandbox violation * Fix bans with duplicate info causing DB exceptions Most notably happened with role bans, as multiple departments may include the same role.
55 lines
1.4 KiB
C#
55 lines
1.4 KiB
C#
using Content.Shared.Roles;
|
|
using Lidgren.Network;
|
|
using Robust.Shared.Network;
|
|
using Robust.Shared.Prototypes;
|
|
using Robust.Shared.Serialization;
|
|
|
|
namespace Content.Shared.Players;
|
|
|
|
/// <summary>
|
|
/// Sent server -> client to inform the client of their role bans.
|
|
/// </summary>
|
|
public sealed class MsgRoleBans : NetMessage
|
|
{
|
|
public override MsgGroups MsgGroup => MsgGroups.EntityEvent;
|
|
|
|
public List<ProtoId<JobPrototype>> JobBans = new();
|
|
public List<ProtoId<AntagPrototype>> AntagBans = new();
|
|
|
|
public override void ReadFromBuffer(NetIncomingMessage buffer, IRobustSerializer serializer)
|
|
{
|
|
var jobCount = buffer.ReadVariableInt32();
|
|
JobBans.EnsureCapacity(jobCount);
|
|
|
|
for (var i = 0; i < jobCount; i++)
|
|
{
|
|
JobBans.Add(buffer.ReadString());
|
|
}
|
|
|
|
var antagCount = buffer.ReadVariableInt32();
|
|
AntagBans.EnsureCapacity(antagCount);
|
|
|
|
for (var i = 0; i < antagCount; i++)
|
|
{
|
|
AntagBans.Add(buffer.ReadString());
|
|
}
|
|
}
|
|
|
|
public override void WriteToBuffer(NetOutgoingMessage buffer, IRobustSerializer serializer)
|
|
{
|
|
buffer.WriteVariableInt32(JobBans.Count);
|
|
|
|
foreach (var ban in JobBans)
|
|
{
|
|
buffer.Write(ban);
|
|
}
|
|
|
|
buffer.WriteVariableInt32(AntagBans.Count);
|
|
|
|
foreach (var ban in AntagBans)
|
|
{
|
|
buffer.Write(ban);
|
|
}
|
|
}
|
|
}
|