@model IEnumerable @{ ViewData["Title"] = "Banned IPs"; ViewData["PageIcon"] = "bi-slash-circle"; var now = DateTime.UtcNow; var active = Model.Where(b => b.IsActive && (b.ExpiresAt == null || b.ExpiresAt > now)).ToList(); var inactive = Model.Where(b => !b.IsActive || (b.ExpiresAt.HasValue && b.ExpiresAt <= now)).ToList(); }
@* Add new ban form *@
Add IP Ban
@Html.AntiForgeryToken()
@* Active bans *@
Active Bans @active.Count
@if (active.Any()) {
@foreach (var ban in active) {
@ban.IpAddress
@(ban.Reason ?? "No reason given")
Banned @ban.BannedAt.ToString("MMM d, yyyy HH:mm")
Expires @if (ban.ExpiresAt.HasValue) { @ban.ExpiresAt.Value.ToString("MMM d, yyyy") } else { Permanent }
}
@foreach (var ban in active) { }
IP Address Reason Banned Expires Actions
@ban.IpAddress @(ban.Reason ?? "No reason given") @ban.BannedAt.ToString("MMM dd, yyyy HH:mm") @if (ban.ExpiresAt.HasValue) { @ban.ExpiresAt.Value.ToString("MMM dd, yyyy HH:mm") } else { Permanent }
@Html.AntiForgeryToken()
@Html.AntiForgeryToken()
} else {

No active IP bans.

}
@* Lifted / expired bans *@ @if (inactive.Any()) {
Lifted / Expired Bans
@foreach (var ban in inactive) {
@ban.IpAddress
@if (!ban.IsActive) { Lifted } else { Expired }
@if (!string.IsNullOrEmpty(ban.Reason)) {
Reason @ban.Reason
}
Banned @ban.BannedAt.ToString("MMM d, yyyy")
}
@foreach (var ban in inactive) { }
IP Address Reason Banned Status Actions
@ban.IpAddress @(ban.Reason ?? "—") @ban.BannedAt.ToString("MMM dd, yyyy") @if (!ban.IsActive) { Lifted } else { Expired }
@Html.AntiForgeryToken()
}
@section Scripts { }