/************************************************************************* * ModernUO * * Copyright 2019-2026 - ModernUO Development Team * * Email: hi@modernuo.com * * File: BanReasons.cs * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * *************************************************************************/ namespace Server.Network.Bans; /// The reason slugs contributed through . Policy keys off these. public static class BanReasons { /// An operator banned this address explicitly. Never exempt, never auto-denied. public const string Manual = "manual"; public const string RateLimit = "rate-limit"; /// Matched the reputation blocklist. Enforced by its own filter, not by behaviour. public const string Blocklist = "blocklist"; /// Reaped without ever sending a byte. public const string SilentConnect = "silent-connect"; /// Opened with a zero seed, which no real client sends. public const string InvalidSeed = "invalid-seed"; /// Positively identified as another protocol entirely. See . public const string ForeignProtocol = "foreign-protocol"; /// /// Verdicts the shard reached by watching the connection. Only these may be exempted, and only these feed /// the local denylist. /// /// /// Opt-in rather than "everything except ", so a reason added later escalates normally /// instead of silently inheriting an exemption. /// public static bool IsBehavioral(string reason) => reason is RateLimit or SilentConnect or InvalidSeed or ForeignProtocol; }