private static void BanIPHandler( Player player, Command cmd )
{
string targetNameOrIP = cmd.Next();
if ( targetNameOrIP == null ) {
CdBanIP.PrintUsage( player );
return;
}
string reason = cmd.NextAll();
IPAddress targetAddress;
if ( Server.IsIP( targetNameOrIP ) && IPAddress.TryParse( targetNameOrIP, out targetAddress ) ) {
try {
targetAddress.BanIP( player, reason, true, true );
} catch ( PlayerOpException ex ) {
player.Message( ex.MessageColored );
}
} else {
PlayerInfo target = PlayerDB.FindPlayerInfoOrPrintMatches( player, targetNameOrIP );
if ( target == null )
return;
try {
if ( target.LastIP.Equals( IPAddress.Any ) || target.LastIP.Equals( IPAddress.None ) ) {
target.Ban( player, reason, true, true );
} else {
target.BanIP( player, reason, true, true );
}
} catch ( PlayerOpException ex ) {
player.Message( ex.MessageColored );
if ( ex.ErrorCode == PlayerOpExceptionCode.ReasonRequired ) {
FreezeIfAllowed( player, target );
}
}
}
}