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    }