| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- using System.Net;
- using Content.Shared.Database;
- using Robust.Shared.Network;
- namespace Content.Server.Database;
- public sealed class ServerRoleBanDef
- {
- public int? Id { get; }
- public NetUserId? UserId { get; }
- public (IPAddress address, int cidrMask)? Address { get; }
- public ImmutableTypedHwid? HWId { get; }
- public DateTimeOffset BanTime { get; }
- public DateTimeOffset? ExpirationTime { get; }
- public int? RoundId { get; }
- public TimeSpan PlaytimeAtNote { get; }
- public string Reason { get; }
- public NoteSeverity Severity { get; set; }
- public NetUserId? BanningAdmin { get; }
- public ServerRoleUnbanDef? Unban { get; }
- public string Role { get; }
- public ServerRoleBanDef(
- int? id,
- NetUserId? userId,
- (IPAddress, int)? address,
- ImmutableTypedHwid? hwId,
- DateTimeOffset banTime,
- DateTimeOffset? expirationTime,
- int? roundId,
- TimeSpan playtimeAtNote,
- string reason,
- NoteSeverity severity,
- NetUserId? banningAdmin,
- ServerRoleUnbanDef? unban,
- string role)
- {
- if (userId == null && address == null && hwId == null)
- {
- throw new ArgumentException("Must have at least one of banned user, banned address or hardware ID");
- }
- if (address is {} addr && addr.Item1.IsIPv4MappedToIPv6)
- {
- // Fix IPv6-mapped IPv4 addresses
- // So that IPv4 addresses are consistent between separate-socket and dual-stack socket modes.
- address = (addr.Item1.MapToIPv4(), addr.Item2 - 96);
- }
- Id = id;
- UserId = userId;
- Address = address;
- HWId = hwId;
- BanTime = banTime;
- ExpirationTime = expirationTime;
- RoundId = roundId;
- PlaytimeAtNote = playtimeAtNote;
- Reason = reason;
- Severity = severity;
- BanningAdmin = banningAdmin;
- Unban = unban;
- Role = role;
- }
- }
|