using System.Collections.Immutable; using Content.Shared.Database; using Robust.Server.Player; using Robust.Shared.Network; using System.Net; namespace Content.Server.Administration.Managers; public interface IBanManager { public void Initialize(); public void Restart(); /// /// Bans the specified target, address range and / or HWID. One of them must be non-null /// /// Target user, username or GUID, null for none /// The person who banned our target /// Address range, null for none /// H /// Number of minutes to ban for. 0 and null mean permanent /// Severity of the resulting ban note /// Reason for the ban public void CreateServerBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableArray? hwid, uint? minutes, NoteSeverity severity, string reason); public HashSet? GetRoleBans(NetUserId playerUserId); public HashSet? GetJobBans(NetUserId playerUserId); /// /// Creates a job ban for the specified target, username or GUID /// /// Shell reference so we can write messages /// Target user, username or GUID, null for none /// Job to be banned from /// Severity of the resulting ban note /// Reason for the ban /// Number of minutes to ban for. 0 and null mean permanent /// Time when the ban was applied, used for grouping role bans public void CreateRoleBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableArray? hwid, string role, uint? minutes, NoteSeverity severity, string reason, DateTimeOffset timeOfBan); /// /// Sends role bans to the target /// /// Player's user ID public void SendRoleBans(NetUserId userId); /// /// Sends role bans to the target /// /// Player's session public void SendRoleBans(IPlayerSession pSession); }