void DoIPBan( Player player, IPAddress address, string reason, string playerName, bool banAll, bool unban ) {
Player other;
if( unban ) {
if( world.bans.Remove( address ) ) {
player.Message( address.ToString() + " has been removed from the IP ban list." );
} else {
player.Message( address.ToString() + " is not currently banned." );
}
if( banAll ) {
foreach( PlayerInfo otherInfo in world.db.FindPlayersByIP( address ) ) {
if( otherInfo.ProcessUnBan( player.name, reason + "~UnBanAll" ) ) {
player.Message( otherInfo.name + " matched the IP and was also unbanned." );
}
}
}
} else {
if( world.bans.Add( new IPBanInfo( address, playerName, player.name, reason ) ) ) {
player.Message( address.ToString() + " has been added to the IP ban list." );
} else {
player.Message( address.ToString() + " is already banned." );
}
foreach( PlayerInfo otherInfo in world.db.FindPlayersByIP( address ) ) {
if( banAll && otherInfo.ProcessBan( player.name, reason + "~BanAll" ) ) {
player.Message( otherInfo.name + " matched the IP and was also banned." );
}
other = world.FindPlayerExact( otherInfo.name );
if( other != null ) {
other.session.Kick( "Your IP was just banned by " + player.name );
}
}
}
}