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.getOrSetIntProperty("view-distance", 10); 022 this.maxPlayers = par1DedicatedServer.getOrSetIntProperty("max-players", 20); 023 this.setWhiteListEnabled(par1DedicatedServer.getOrSetBoolProperty("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().setArbitraryProperty("white-list", Boolean.valueOf(par1)); 045 this.getDedicatedServerInstance().saveSettingsToFile(); 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.getNamesWhiteList().clear(); 097 BufferedReader var1 = new BufferedReader(new FileReader(this.opsList)); 098 String var2 = ""; 099 100 while ((var2 = var1.readLine()) != null) 101 { 102 this.getNamesWhiteList().add(var2.trim().toLowerCase()); 103 } 104 105 var1.close(); 106 } 107 catch (Exception var3) 108 { 109 myLogger.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.getNamesWhiteList().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 myLogger.warning("Failed to save operators list: " + var4); 131 } 132 } 133 134 private void readWhiteList() 135 { 136 try 137 { 138 this.getIPWhiteList().clear(); 139 BufferedReader var1 = new BufferedReader(new FileReader(this.whiteList)); 140 String var2 = ""; 141 142 while ((var2 = var1.readLine()) != null) 143 { 144 this.getIPWhiteList().add(var2.trim().toLowerCase()); 145 } 146 147 var1.close(); 148 } 149 catch (Exception var3) 150 { 151 myLogger.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.getIPWhiteList().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 myLogger.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.getIPWhiteList().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 }