    001    package net.minecraft.server.dedicated;
    002
    003    import java.io.BufferedReader;
    004    import java.io.File;
    005    import java.io.FileReader;
    006    import java.io.FileWriter;
    007    import java.io.PrintWriter;
    008    import java.util.Iterator;
    009    import net.minecraft.server.MinecraftServer;
    010    import net.minecraft.server.management.ServerConfigurationManager;
    011
    012    public class DedicatedPlayerList extends ServerConfigurationManager
    013    {
    014        private File opsList;
    015        private File whiteList;
    016
    017        public DedicatedPlayerList(DedicatedServer par1DedicatedServer)
    018        {
    019            super(par1DedicatedServer);
    020            this.opsList = par1DedicatedServer.getFile("ops.txt");
    021            this.whiteList = par1DedicatedServer.getFile("white-list.txt");
    022            this.viewDistance = par1DedicatedServer.getIntProperty("view-distance", 10);
    023            this.maxPlayers = par1DedicatedServer.getIntProperty("max-players", 20);
    024            this.setWhiteListEnabled(par1DedicatedServer.getBooleanProperty("white-list", false));
    025
    026            if (!par1DedicatedServer.isSinglePlayer())
    027            {
    028                this.getBannedPlayers().setListActive(true);
    029                this.getBannedIPs().setListActive(true);
    030            }
    031
    032            this.getBannedPlayers().loadBanList();
    033            this.getBannedPlayers().saveToFileWithHeader();
    034            this.getBannedIPs().loadBanList();
    035            this.getBannedIPs().saveToFileWithHeader();
    036            this.loadOpsList();
    037            this.readWhiteList();
    038            this.saveOpsList();
    039            this.saveWhiteList();
    040        }
    041
    042        public void setWhiteListEnabled(boolean par1)
    043        {
    044            super.setWhiteListEnabled(par1);
    045            this.getDedicatedServerInstance().setProperty("white-list", Boolean.valueOf(par1));
    046            this.getDedicatedServerInstance().saveProperties();
    047        }
    048
    049        /**
    050         * This adds a username to the ops list, then saves the op list
    051         */
    052        public void addOp(String par1Str)
    053        {
    054            super.addOp(par1Str);
    055            this.saveOpsList();
    056        }
    057
    058        /**
    059         * This removes a username from the ops list, then saves the op list
    060         */
    061        public void removeOp(String par1Str)
    062        {
    063            super.removeOp(par1Str);
    064            this.saveOpsList();
    065        }
    066
    067        /**
    068         * Remove the specified player from the whitelist.
    069         */
    070        public void removeFromWhitelist(String par1Str)
    071        {
    072            super.removeFromWhitelist(par1Str);
    073            this.saveWhiteList();
    074        }
    075
    076        /**
    077         * Add the specified player to the white list.
    078         */
    079        public void addToWhiteList(String par1Str)
    080        {
    081            super.addToWhiteList(par1Str);
    082            this.saveWhiteList();
    083        }
    084
    085        /**
    086         * Either does nothing, or calls readWhiteList.
    087         */
    088        public void loadWhiteList()
    089        {
    090            this.readWhiteList();
    091        }
    092
    093        private void loadOpsList()
    094        {
    095            try
    096            {
    097                this.getOps().clear();
    098                BufferedReader var1 = new BufferedReader(new FileReader(this.opsList));
    099                String var2 = "";
    100
    101                while ((var2 = var1.readLine()) != null)
    102                {
    103                    this.getOps().add(var2.trim().toLowerCase());
    104                }
    105
    106                var1.close();
    107            }
    108            catch (Exception var3)
    109            {
    110                logger.warning("Failed to load operators list: " + var3);
    111            }
    112        }
    113
    114        private void saveOpsList()
    115        {
    116            try
    117            {
    118                PrintWriter var1 = new PrintWriter(new FileWriter(this.opsList, false));
    119                Iterator var2 = this.getOps().iterator();
    120
    121                while (var2.hasNext())
    122                {
    123                    String var3 = (String)var2.next();
    124                    var1.println(var3);
    125                }
    126
    127                var1.close();
    128            }
    129            catch (Exception var4)
    130            {
    131                logger.warning("Failed to save operators list: " + var4);
    132            }
    133        }
    134
    135        private void readWhiteList()
    136        {
    137            try
    138            {
    139                this.getWhiteListedPlayers().clear();
    140                BufferedReader var1 = new BufferedReader(new FileReader(this.whiteList));
    141                String var2 = "";
    142
    143                while ((var2 = var1.readLine()) != null)
    144                {
    145                    this.getWhiteListedPlayers().add(var2.trim().toLowerCase());
    146                }
    147
    148                var1.close();
    149            }
    150            catch (Exception var3)
    151            {
    152                logger.warning("Failed to load white-list: " + var3);
    153            }
    154        }
    155
    156        private void saveWhiteList()
    157        {
    158            try
    159            {
    160                PrintWriter var1 = new PrintWriter(new FileWriter(this.whiteList, false));
    161                Iterator var2 = this.getWhiteListedPlayers().iterator();
    162
    163                while (var2.hasNext())
    164                {
    165                    String var3 = (String)var2.next();
    166                    var1.println(var3);
    167                }
    168
    169                var1.close();
    170            }
    171            catch (Exception var4)
    172            {
    173                logger.warning("Failed to save white-list: " + var4);
    174            }
    175        }
    176
    177        /**
    178         * Determine if the player is allowed to connect based on current server settings.
    179         */
    180        public boolean isAllowedToLogin(String par1Str)
    181        {
    182            par1Str = par1Str.trim().toLowerCase();
    183            return !this.isWhiteListEnabled() || this.areCommandsAllowed(par1Str) || this.getWhiteListedPlayers().contains(par1Str);
    184        }
    185
    186        public DedicatedServer getDedicatedServerInstance()
    187        {
    188            return (DedicatedServer)super.getServerInstance();
    189        }
    190
    191        public MinecraftServer getServerInstance()
    192        {
    193            return this.getDedicatedServerInstance();
    194        }
    195    }