001 002 import java.io.BufferedReader; 003 import java.io.File; 004 import java.io.FileReader; 005 import java.io.FileWriter; 006 import java.io.PrintWriter; 007 import java.util.ArrayList; 008 import java.util.HashSet; 009 import java.util.List; 010 import java.util.Set; 011 import java.util.logging.Logger; 012 import net.minecraft.server.MinecraftServer; 013 014 public class ii { 015 016 public static Logger a = Logger.getLogger("Minecraft"); 017 // hMod set list to contain <fi> objects. 018 public List<fy> b = new ArrayList<fy>(); 019 private MinecraftServer c; 020 private kj d; 021 private int e; 022 // hMod set these to Set<String> to remove errors and warnings. 023 private Set<String> f = new HashSet<String>(); 024 private Set<String> g = new HashSet<String>(); 025 private Set<String> h = new HashSet<String>(); 026 private File i; 027 private File j; 028 private File k; 029 private dy l; 030 031 public ii(MinecraftServer paramMinecraftServer) { 032 etc.setServer(paramMinecraftServer); 033 etc.getInstance().loadData(); 034 a.info("Note: your current classpath is: " + System.getProperty("java.class.path", "*UNKNOWN*")); 035 if (!etc.getInstance().getTainted()) { 036 a.info("Hey0 Server Mod Build " + etc.getInstance().getVersion()); 037 } else { 038 a.info("hMod Build Information: " + etc.getInstance().getVersionStr()); 039 } 040 c = paramMinecraftServer; 041 i = paramMinecraftServer.a("banned-players.txt"); 042 j = paramMinecraftServer.a("banned-ips.txt"); 043 k = paramMinecraftServer.a("ops.txt"); 044 d = new kj(paramMinecraftServer); 045 e = paramMinecraftServer.d.a("max-players", 20); 046 e(); 047 g(); 048 i(); 049 f(); 050 h(); 051 j(); 052 } 053 054 public void a(gc paramgc) { 055 l = new dy(new File(paramgc.t, "players")); 056 } 057 058 public int a() { 059 return d.b(); 060 } 061 062 public void a(fy paramfy) { 063 b.add(paramfy); 064 l.b(paramfy); 065 066 c.e.A.d((int) paramfy.p >> 4, (int) paramfy.r >> 4); 067 068 while (c.e.a(paramfy, paramfy.z).size() != 0) { 069 paramfy.a(paramfy.p, paramfy.q + 1.0D, paramfy.r); 070 } 071 c.e.a(paramfy); 072 d.a(paramfy); 073 // hMod: Handle login (send MOTD and call hook) 074 String[] motd = etc.getInstance().getMotd(); 075 if (!(motd.length == 1 && motd[0].equals(""))) { 076 for (String str : etc.getInstance().getMotd()) { 077 paramfy.a.b(new bz(str)); 078 } 079 } 080 etc.getLoader().callHook(PluginLoader.Hook.LOGIN, paramfy.getPlayer()); 081 } 082 083 public void b(fy paramfy) { 084 d.c(paramfy); 085 } 086 087 public void c(fy paramfy) { 088 l.a(paramfy); 089 c.e.d(paramfy); 090 b.remove(paramfy); 091 d.b(paramfy); 092 } 093 094 public fy a(hc paramhc, String paramString1, String paramString2) { 095 if (f.contains(paramString1.trim().toLowerCase())) { 096 paramhc.a("You are banned from this server!"); 097 return null; 098 } 099 //hMod: whole section below is modified to handle whitelists etc 100 fy temp = new fy(this.c, this.c.e, paramString1, new md(this.c.e)); 101 Player player = temp.getPlayer(); 102 103 String str = paramhc.b.b().toString(); 104 str = str.substring(str.indexOf("/") + 1); 105 str = str.substring(0, str.indexOf(":")); 106 if (g.contains(str)) { 107 paramhc.a("Your IP address is banned from this server!"); 108 return null; 109 } 110 for (int m = 0; m < b.size(); m++) { 111 fy localfy = (fy) b.get(m); 112 if (localfy.aw.equalsIgnoreCase(paramString1)) { 113 localfy.a.a("You logged in from another location"); 114 } 115 } 116 117 //hMod whitelist block 118 if (etc.getInstance().isWhitelistEnabled() && !(etc.getDataSource().isUserOnWhitelist(paramString1) || player.isAdmin())) { 119 paramhc.a(etc.getInstance().getWhitelistMessage()); 120 return null; 121 } else if (b.size() >= e) { 122 paramhc.a("The server is full!"); 123 return null; 124 } 125 126 if (!player.getIps()[0].equals("")) { 127 boolean kick = true; 128 for (int i = 0; i < player.getIps().length; i++) { 129 if (!player.getIps()[i].equals("") && str.equals(player.getIps()[i])) { 130 kick = false; 131 } 132 } 133 if (kick) { 134 paramhc.a("IP doesn't match specified IP."); 135 return null; 136 } 137 } 138 //hMod: user passed basic login check, inform plugins. 139 Object obj = etc.getLoader().callHook(PluginLoader.Hook.LOGINCHECK, paramString1); 140 if (obj instanceof String) { 141 String result = (String) obj; 142 if (result != null && !result.equals("")) { 143 paramhc.a(result); 144 return null; 145 } 146 } 147 148 return new fy(c, c.e, paramString1, new md(c.e)); 149 } 150 151 /** 152 * Returns the list of bans 153 * 154 * @return 155 */ 156 public String getBans() { 157 StringBuilder builder = new StringBuilder(); 158 int l = 0; 159 for (Object o : f) { 160 if (l > 0) { 161 builder.append(", "); 162 } 163 builder.append(o); 164 l++; 165 } 166 return builder.toString(); 167 } 168 169 /** 170 * Returns the list of IP bans 171 * 172 * @return 173 */ 174 public String getIpBans() { 175 StringBuilder builder = new StringBuilder(); 176 int l = 0; 177 for (Object o : g) { 178 if (l > 0) { 179 builder.append(", "); 180 } 181 builder.append(o); 182 l++; 183 } 184 return builder.toString(); 185 } 186 187 public fy d(fy paramfy) { 188 c.k.a(paramfy); 189 c.k.b(paramfy); 190 d.b(paramfy); 191 b.remove(paramfy); 192 c.e.e(paramfy); 193 194 fy localfy = new fy(c, c.e, paramfy.aw, new md(c.e)); 195 localfy.g = paramfy.g; 196 localfy.a = paramfy.a; 197 198 c.e.A.d((int) localfy.p >> 4, (int) localfy.r >> 4); 199 200 while (c.e.a(localfy, localfy.z).size() != 0) { 201 localfy.a(localfy.p, localfy.q + 1.0D, localfy.r); 202 } 203 204 localfy.a.b(new bo()); 205 localfy.a.a(localfy.p, localfy.q, localfy.r, localfy.v, localfy.w); 206 207 d.a(localfy); 208 c.e.a(localfy); 209 b.add(localfy); 210 211 localfy.l(); 212 return localfy; 213 } 214 215 public void b() { 216 d.a(); 217 } 218 219 public void a(int paramInt1, int paramInt2, int paramInt3) { 220 d.a(paramInt1, paramInt2, paramInt3); 221 } 222 223 public void a(kx paramkx) { 224 for (int m = 0; m < b.size(); m++) { 225 fy localfy = (fy) b.get(m); 226 localfy.a.b(paramkx); 227 } 228 } 229 230 public String c() { 231 String str = ""; 232 for (int m = 0; m < b.size(); m++) { 233 if (m > 0) { 234 str = str + ", "; 235 } 236 str = str + ((fy) b.get(m)).aw; 237 } 238 return str; 239 } 240 241 public void a(String paramString) { 242 f.add(paramString.toLowerCase()); 243 f(); 244 } 245 246 public void b(String paramString) { 247 f.remove(paramString.toLowerCase()); 248 f(); 249 } 250 251 private void e() { 252 try { 253 f.clear(); 254 BufferedReader localBufferedReader = new BufferedReader(new FileReader(i)); 255 String str = ""; 256 while ((str = localBufferedReader.readLine()) != null) { 257 f.add(str.trim().toLowerCase()); 258 } 259 localBufferedReader.close(); 260 } catch (Exception localException) { 261 a.warning("Failed to load ban list: " + localException); 262 } 263 } 264 265 private void f() { 266 try { 267 PrintWriter localPrintWriter = new PrintWriter(new FileWriter(i, false)); 268 for (String str : f) { 269 localPrintWriter.println(str); 270 } 271 localPrintWriter.close(); 272 } catch (Exception localException) { 273 a.warning("Failed to save ban list: " + localException); 274 } 275 } 276 277 public void c(String paramString) { 278 g.add(paramString.toLowerCase()); 279 h(); 280 } 281 282 public void d(String paramString) { 283 g.remove(paramString.toLowerCase()); 284 h(); 285 } 286 287 private void g() { 288 try { 289 g.clear(); 290 BufferedReader localBufferedReader = new BufferedReader(new FileReader(j)); 291 String str = ""; 292 while ((str = localBufferedReader.readLine()) != null) { 293 g.add(str.trim().toLowerCase()); 294 } 295 localBufferedReader.close(); 296 } catch (Exception localException) { 297 a.warning("Failed to load ip ban list: " + localException); 298 } 299 } 300 301 private void h() { 302 try { 303 PrintWriter localPrintWriter = new PrintWriter(new FileWriter(j, false)); 304 for (String str : g) { 305 localPrintWriter.println(str); 306 } 307 localPrintWriter.close(); 308 } catch (Exception localException) { 309 a.warning("Failed to save ip ban list: " + localException); 310 } 311 } 312 313 public void e(String paramString) { 314 h.add(paramString.toLowerCase()); 315 j(); 316 } 317 318 public void f(String paramString) { 319 h.remove(paramString.toLowerCase()); 320 j(); 321 } 322 323 private void i() { 324 try { 325 h.clear(); 326 BufferedReader localBufferedReader = new BufferedReader(new FileReader(k)); 327 String str = ""; 328 while ((str = localBufferedReader.readLine()) != null) { 329 h.add(str.trim().toLowerCase()); 330 } 331 localBufferedReader.close(); 332 } catch (Exception localException) { 333 a.warning("Failed to load ip ban list: " + localException); 334 } 335 } 336 337 private void j() { 338 try { 339 PrintWriter localPrintWriter = new PrintWriter(new FileWriter(k, false)); 340 for (String str : h) { 341 localPrintWriter.println(str); 342 } 343 localPrintWriter.close(); 344 } catch (Exception localException) { 345 a.warning("Failed to save ip ban list: " + localException); 346 } 347 } 348 349 public boolean g(String paramString) { 350 return h.contains(paramString.trim().toLowerCase()); 351 } 352 353 public fy h(String paramString) { 354 for (int m = 0; m < b.size(); m++) { 355 fy localfy = (fy) b.get(m); 356 if (localfy.aw.equalsIgnoreCase(paramString)) { 357 return localfy; 358 } 359 } 360 return null; 361 } 362 363 public void a(String paramString1, String paramString2) { 364 fy localfy = h(paramString1); 365 if (localfy != null) { 366 localfy.a.b(new bz(paramString2)); 367 } 368 } 369 370 public void a(double paramDouble1, double paramDouble2, double paramDouble3, double paramDouble4, kx paramkx) { 371 for (int m = 0; m < b.size(); m++) { 372 fy localfy = (fy) b.get(m); 373 double d1 = paramDouble1 - localfy.p; 374 double d2 = paramDouble2 - localfy.q; 375 double d3 = paramDouble3 - localfy.r; 376 if (d1 * d1 + d2 * d2 + d3 * d3 < paramDouble4 * paramDouble4) { 377 localfy.a.b(paramkx); 378 } 379 } 380 } 381 382 public void i(String paramString) { 383 bz localbz = new bz(paramString); 384 for (int m = 0; m < b.size(); m++) { 385 fy localfy = (fy) b.get(m); 386 if (g(localfy.aw)) { 387 localfy.a.b(localbz); 388 } 389 } 390 } 391 392 public boolean a(String paramString, kx paramkx) { 393 fy localfy = h(paramString); 394 if (localfy != null) { 395 localfy.a.b(paramkx); 396 return true; 397 } 398 return false; 399 } 400 401 public void d() { 402 for (int m = 0; m < b.size(); m++) { 403 l.a((fy) b.get(m)); 404 } 405 } 406 407 public void a(int paramInt1, int paramInt2, int paramInt3, bm parambm) { 408 // hMod: fix sign updating in beta 1.1_02 409 // Check if bg (TileEntity) is a Sign 410 if (parambm instanceof lv) { 411 d.sendPacketToChunk((jv) parambm.g(), paramInt1, paramInt2, paramInt3); 412 } 413 // end hMod 414 } 415 }