fCraft.MaintenanceCommands.ImportBans C# (CSharp) Method

ImportBans() private static method

private static ImportBans ( Player player, Command cmd ) : void
player Player
cmd Command
return void
        private static void ImportBans( Player player, Command cmd )
        {
            string serverName = cmd.Next();
            string file = cmd.Next();

            // Make sure all parameters are specified
            if ( serverName == null || file == null ) {
                CdImport.PrintUsage( player );
                return;
            }

            // Check if file exists
            if ( !File.Exists( file ) ) {
                player.Message( "File not found: {0}", file );
                return;
            }

            string[] names;

            switch ( serverName.ToLower() ) {
                case "mcsharp":
                case "mczall":
                case "mclawl":
                case "mcforge":
                    try {
                        names = File.ReadAllLines( file );
                    } catch ( Exception ex ) {
                        Logger.Log( LogType.Error,
                                    "Could not open \"{0}\" to import bans: {1}",
                                    file, ex );
                        return;
                    }
                    break;

                default:
                    player.Message( "800Craft does not support importing from {0}", serverName );
                    return;
            }

            if ( !cmd.IsConfirmed ) {
                player.Confirm( cmd, "Import {0} bans.", names.Length );
                return;
            }

            string reason = "(import from " + serverName + ")";
            foreach ( string name in names ) {
                try {
                    IPAddress ip;
                    if ( Server.IsIP( name ) && IPAddress.TryParse( name, out ip ) ) {
                        ip.BanIP( player, reason, true, true );
                    } else if ( Player.IsValidName( name ) ) {
                        PlayerInfo info = PlayerDB.FindPlayerInfoExact( name ) ??
                                          PlayerDB.AddFakeEntry( name, RankChangeType.Default );
                        info.Ban( player, reason, true, true );
                    } else {
                        player.Message( "Could not parse \"{0}\" as either name or IP. Skipping.", name );
                    }
                } catch ( PlayerOpException ex ) {
                    Logger.Log( LogType.Warning, "ImportBans: " + ex.Message );
                    player.Message( ex.MessageColored );
                }
            }

            PlayerDB.Save();
            IPBanList.Save();
        }