diff options
Diffstat (limited to 'src/main/java/net/minecraft/server/ThreadLoginVerifier.java')
-rw-r--r-- | src/main/java/net/minecraft/server/ThreadLoginVerifier.java | 52 |
1 files changed, 25 insertions, 27 deletions
diff --git a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java index 52685c21..fc198b26 100644 --- a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java +++ b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java @@ -2,6 +2,7 @@ package net.minecraft.server; import java.io.BufferedReader; import java.io.InputStreamReader; +import java.math.BigInteger; import java.net.URL; import java.net.URLEncoder; @@ -13,54 +14,51 @@ import org.bukkit.event.player.PlayerPreLoginEvent; class ThreadLoginVerifier extends Thread { - final Packet1Login loginPacket; - final NetLoginHandler netLoginHandler; // CraftBukkit start CraftServer server; - ThreadLoginVerifier(NetLoginHandler netloginhandler, Packet1Login packet1login, CraftServer server) { + ThreadLoginVerifier(NetLoginHandler netloginhandler, CraftServer server) { this.server = server; // CraftBukkit end - this.netLoginHandler = netloginhandler; - this.loginPacket = packet1login; } public void run() { try { - String s = NetLoginHandler.a(this.netLoginHandler); - URL url = new URL("http://session.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(this.loginPacket.name, "UTF-8") + "&serverId=" + URLEncoder.encode(s, "UTF-8")); + String s = (new BigInteger(MinecraftEncryption.a(NetLoginHandler.a(this.netLoginHandler), NetLoginHandler.b(this.netLoginHandler).E().getPublic(), NetLoginHandler.c(this.netLoginHandler)))).toString(16); + URL url = new URL("http://session.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(NetLoginHandler.d(this.netLoginHandler), "UTF-8") + "&serverId=" + URLEncoder.encode(s, "UTF-8")); BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openStream())); String s1 = bufferedreader.readLine(); bufferedreader.close(); - if (s1.equals("YES")) { - // CraftBukkit start - if (this.netLoginHandler.getSocket() == null) { - return; - } + if (!"YES".equals(s1)) { + this.netLoginHandler.disconnect("Failed to verify username!"); + return; + } - AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(this.loginPacket.name, this.netLoginHandler.getSocket().getInetAddress()); - this.server.getPluginManager().callEvent(asyncEvent); + // CraftBukkit start + if (this.netLoginHandler.getSocket() == null) { + return; + } - PlayerPreLoginEvent event = new PlayerPreLoginEvent(this.loginPacket.name, this.netLoginHandler.getSocket().getInetAddress()); - if (asyncEvent.getResult() != PlayerPreLoginEvent.Result.ALLOWED) { - event.disallow(asyncEvent.getResult(), asyncEvent.getKickMessage()); - } - this.server.getPluginManager().callEvent(event); + AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(NetLoginHandler.d(this.netLoginHandler), this.netLoginHandler.getSocket().getInetAddress()); + this.server.getPluginManager().callEvent(asyncEvent); - if (event.getResult() != PlayerPreLoginEvent.Result.ALLOWED) { - this.netLoginHandler.disconnect(event.getKickMessage()); - return; - } - // CraftBukkit end + PlayerPreLoginEvent event = new PlayerPreLoginEvent(NetLoginHandler.d(this.netLoginHandler), this.netLoginHandler.getSocket().getInetAddress()); + if (asyncEvent.getResult() != PlayerPreLoginEvent.Result.ALLOWED) { + event.disallow(asyncEvent.getResult(), asyncEvent.getKickMessage()); + } + this.server.getPluginManager().callEvent(event); - NetLoginHandler.a(this.netLoginHandler, this.loginPacket); - } else { - this.netLoginHandler.disconnect("Failed to verify username!"); + if (event.getResult() != PlayerPreLoginEvent.Result.ALLOWED) { + this.netLoginHandler.disconnect(event.getKickMessage()); + return; } + // CraftBukkit end + + NetLoginHandler.a(this.netLoginHandler, true); } catch (Exception exception) { this.netLoginHandler.disconnect("Failed to verify username! [internal error " + exception + "]"); exception.printStackTrace(); |