001package net.minecraft.server.dedicated; 002 003import java.io.BufferedReader; 004import java.io.File; 005import java.io.FileReader; 006import java.io.FileWriter; 007import java.io.PrintWriter; 008import java.util.Iterator; 009import net.minecraft.server.MinecraftServer; 010import net.minecraft.server.management.ServerConfigurationManager; 011 012public 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 040 if (!this.whiteList.exists()) 041 { 042 this.saveWhiteList(); 043 } 044 } 045 046 public void setWhiteListEnabled(boolean par1) 047 { 048 super.setWhiteListEnabled(par1); 049 this.getDedicatedServerInstance().setProperty("white-list", Boolean.valueOf(par1)); 050 this.getDedicatedServerInstance().saveProperties(); 051 } 052 053 /** 054 * This adds a username to the ops list, then saves the op list 055 */ 056 public void addOp(String par1Str) 057 { 058 super.addOp(par1Str); 059 this.saveOpsList(); 060 } 061 062 /** 063 * This removes a username from the ops list, then saves the op list 064 */ 065 public void removeOp(String par1Str) 066 { 067 super.removeOp(par1Str); 068 this.saveOpsList(); 069 } 070 071 /** 072 * Remove the specified player from the whitelist. 073 */ 074 public void removeFromWhitelist(String par1Str) 075 { 076 super.removeFromWhitelist(par1Str); 077 this.saveWhiteList(); 078 } 079 080 /** 081 * Add the specified player to the white list. 082 */ 083 public void addToWhiteList(String par1Str) 084 { 085 super.addToWhiteList(par1Str); 086 this.saveWhiteList(); 087 } 088 089 /** 090 * Either does nothing, or calls readWhiteList. 091 */ 092 public void loadWhiteList() 093 { 094 this.readWhiteList(); 095 } 096 097 private void loadOpsList() 098 { 099 try 100 { 101 this.getOps().clear(); 102 BufferedReader bufferedreader = new BufferedReader(new FileReader(this.opsList)); 103 String s = ""; 104 105 while ((s = bufferedreader.readLine()) != null) 106 { 107 this.getOps().add(s.trim().toLowerCase()); 108 } 109 110 bufferedreader.close(); 111 } 112 catch (Exception exception) 113 { 114 this.getDedicatedServerInstance().getLogAgent().logWarning("Failed to load operators list: " + exception); 115 } 116 } 117 118 private void saveOpsList() 119 { 120 try 121 { 122 PrintWriter printwriter = new PrintWriter(new FileWriter(this.opsList, false)); 123 Iterator iterator = this.getOps().iterator(); 124 125 while (iterator.hasNext()) 126 { 127 String s = (String)iterator.next(); 128 printwriter.println(s); 129 } 130 131 printwriter.close(); 132 } 133 catch (Exception exception) 134 { 135 this.getDedicatedServerInstance().getLogAgent().logWarning("Failed to save operators list: " + exception); 136 } 137 } 138 139 private void readWhiteList() 140 { 141 try 142 { 143 this.getWhiteListedPlayers().clear(); 144 BufferedReader bufferedreader = new BufferedReader(new FileReader(this.whiteList)); 145 String s = ""; 146 147 while ((s = bufferedreader.readLine()) != null) 148 { 149 this.getWhiteListedPlayers().add(s.trim().toLowerCase()); 150 } 151 152 bufferedreader.close(); 153 } 154 catch (Exception exception) 155 { 156 this.getDedicatedServerInstance().getLogAgent().logWarning("Failed to load white-list: " + exception); 157 } 158 } 159 160 private void saveWhiteList() 161 { 162 try 163 { 164 PrintWriter printwriter = new PrintWriter(new FileWriter(this.whiteList, false)); 165 Iterator iterator = this.getWhiteListedPlayers().iterator(); 166 167 while (iterator.hasNext()) 168 { 169 String s = (String)iterator.next(); 170 printwriter.println(s); 171 } 172 173 printwriter.close(); 174 } 175 catch (Exception exception) 176 { 177 this.getDedicatedServerInstance().getLogAgent().logWarning("Failed to save white-list: " + exception); 178 } 179 } 180 181 /** 182 * Determine if the player is allowed to connect based on current server settings. 183 */ 184 public boolean isAllowedToLogin(String par1Str) 185 { 186 par1Str = par1Str.trim().toLowerCase(); 187 return !this.isWhiteListEnabled() || this.areCommandsAllowed(par1Str) || this.getWhiteListedPlayers().contains(par1Str); 188 } 189 190 public DedicatedServer getDedicatedServerInstance() 191 { 192 return (DedicatedServer)super.getServerInstance(); 193 } 194 195 public MinecraftServer getServerInstance() 196 { 197 return this.getDedicatedServerInstance(); 198 } 199}