diff options
Diffstat (limited to 'src')
3 files changed, 59 insertions, 2 deletions
diff --git a/src/main/java/net/minecraft/server/NetLoginHandler.java b/src/main/java/net/minecraft/server/NetLoginHandler.java index a980b479..f155254a 100644 --- a/src/main/java/net/minecraft/server/NetLoginHandler.java +++ b/src/main/java/net/minecraft/server/NetLoginHandler.java @@ -21,6 +21,12 @@ public class NetLoginHandler extends NetHandler { this.b = new NetworkManager(socket, s, this); this.b.d = 0; } + + // CraftBukkit start + public Socket getSocket() { + return b.f; + } + // CraftBukkit end public void a() { if (this.h != null) { @@ -67,7 +73,7 @@ public class NetLoginHandler extends NetHandler { if (!this.e.l) { this.b(packet1login); } else { - (new ThreadLoginVerifier(this, packet1login)).start(); + (new ThreadLoginVerifier(this, packet1login, e.server)).start(); } } } diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java index df04dc7f..649de1d9 100644 --- a/src/main/java/net/minecraft/server/NetworkManager.java +++ b/src/main/java/net/minecraft/server/NetworkManager.java @@ -18,7 +18,7 @@ public class NetworkManager { public static int b; public static int c; private Object e = new Object(); - private Socket f; + public Socket f; // CraftBukkit private->public private final SocketAddress g; private DataInputStream h; private DataOutputStream i; diff --git a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java new file mode 100644 index 00000000..dd6850b7 --- /dev/null +++ b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java @@ -0,0 +1,51 @@ +package net.minecraft.server;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLEncoder;
+import org.bukkit.craftbukkit.CraftServer;
+import org.bukkit.event.player.PlayerPreLoginEvent;
+
+class ThreadLoginVerifier extends Thread {
+
+ final Packet1Login a;
+
+ final NetLoginHandler b;
+
+ // CraftBukkit start
+ CraftServer server;
+
+ ThreadLoginVerifier(NetLoginHandler netloginhandler, Packet1Login packet1login, CraftServer server) {
+ this.server = server;
+ // CraftBukkit end
+ this.b = netloginhandler;
+ this.a = packet1login;
+ }
+
+ public void run() {
+ try {
+ String s = NetLoginHandler.a(this.b);
+ URL url = new URL("http://www.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(this.a.b, "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")) {
+ PlayerPreLoginEvent event = new PlayerPreLoginEvent(this.a.b, b.getSocket().getInetAddress());
+ server.getPluginManager().callEvent(event);
+
+ if (event.getResult() != PlayerPreLoginEvent.Result.ALLOWED) {
+ this.b.a(event.getKickMessage());
+ return;
+ }
+
+ NetLoginHandler.a(this.b, this.a);
+ } else {
+ this.b.a("Failed to verify username!");
+ }
+ } catch (Exception exception) {
+ exception.printStackTrace();
+ }
+ }
+}
|