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