From 24f1df5c2d5baa4d5a293d26b7b5b7dfeebe594b Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 25 Jun 2013 18:09:26 +1000 Subject: [PATCH] Always Fire PreLoginEvent diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java index e634575..c9dda32 100644 --- a/src/main/java/net/minecraft/server/PendingConnection.java +++ b/src/main/java/net/minecraft/server/PendingConnection.java @@ -111,7 +111,7 @@ public class PendingConnection extends Connection { } this.j = true; - if (this.server.getOnlineMode()) { + if (true) { // Spigot - Always fire (new ThreadLoginVerifier(this, server.server)).start(); // CraftBukkit - add CraftServer } else { this.h = true; diff --git a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java index 5e45cae..70f9fea 100644 --- a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java +++ b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java @@ -27,24 +27,29 @@ class ThreadLoginVerifier extends Thread { this.pendingConnection = pendingconnection; } + private boolean auth() throws java.io.IOException { + String s = (new BigInteger(MinecraftEncryption.a(PendingConnection.a(this.pendingConnection), PendingConnection.b(this.pendingConnection).H().getPublic(), PendingConnection.c(this.pendingConnection)))).toString(16); + URL url = new URL("http://session.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(PendingConnection.d(this.pendingConnection), "UTF-8") + "&serverId=" + URLEncoder.encode(s, "UTF-8")); + BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openConnection(PendingConnection.b(this.pendingConnection).ap()).getInputStream())); + String s1 = bufferedreader.readLine(); + + bufferedreader.close(); + if (!"YES".equals(s1)) { + this.pendingConnection.disconnect("Failed to verify username!"); + return false; + } + + // CraftBukkit start + if (this.pendingConnection.getSocket() == null) { + return false; + } + return true; + } + public void run() { try { if (org.spigotmc.SpamHaus.filterIp(pendingConnection)) return; // Spigot - String s = (new BigInteger(MinecraftEncryption.a(PendingConnection.a(this.pendingConnection), PendingConnection.b(this.pendingConnection).H().getPublic(), PendingConnection.c(this.pendingConnection)))).toString(16); - URL url = new URL("http://session.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(PendingConnection.d(this.pendingConnection), "UTF-8") + "&serverId=" + URLEncoder.encode(s, "UTF-8")); - BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openConnection(PendingConnection.b(this.pendingConnection).ap()).getInputStream())); - String s1 = bufferedreader.readLine(); - - bufferedreader.close(); - if (!"YES".equals(s1)) { - this.pendingConnection.disconnect("Failed to verify username!"); - return; - } - - // CraftBukkit start - if (this.pendingConnection.getSocket() == null) { - return; - } + if (server.getOnlineMode() && !auth()) return; // Spigot AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(PendingConnection.d(this.pendingConnection), ((java.net.InetSocketAddress) this.pendingConnection.networkManager.getSocketAddress()).getAddress()); // Spigot this.server.getPluginManager().callEvent(asyncEvent); -- 1.8.1.2