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 }