Last active
December 14, 2015 03:19
-
-
Save zh32/5020193 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From ee1ac62ba261caeab0f25671cc8daa5e0afd22a2 Mon Sep 17 00:00:00 2001 | |
From: zh32 <[email protected]> | |
Date: Sat, 23 Feb 2013 04:26:11 +0100 | |
Subject: [PATCH 1/2] it works :D | |
--- | |
pom.xml | 2 +- | |
src/main/java/de/zh32/auth/Auth.java | 13 +++++++++++++ | |
src/main/java/net/minecraft/server/EntityPlayer.java | 4 +++- | |
src/main/java/net/minecraft/server/PendingConnection.java | 7 +++++-- | |
src/main/java/net/minecraft/server/PlayerList.java | 4 ++-- | |
src/main/java/net/minecraft/server/ThreadLoginVerifier.java | 12 +++++++++--- | |
.../java/org/bukkit/craftbukkit/entity/CraftPlayer.java | 4 ++++ | |
7 files changed, 37 insertions(+), 9 deletions(-) | |
create mode 100644 src/main/java/de/zh32/auth/Auth.java | |
diff --git a/pom.xml b/pom.xml | |
index 6b314ec..0295fa9 100644 | |
--- a/pom.xml | |
+++ b/pom.xml | |
@@ -12,7 +12,7 @@ | |
<groupId>org.spigotmc</groupId> | |
<artifactId>spigot</artifactId> | |
<packaging>jar</packaging> | |
- <version>1.4.7-R1.1-SNAPSHOT</version> | |
+ <version>1.4.7-R1.1-SNAPSHOT-auth</version> | |
<name>Spigot</name> | |
<url>http://www.spigotmc.org</url> | |
diff --git a/src/main/java/de/zh32/auth/Auth.java b/src/main/java/de/zh32/auth/Auth.java | |
new file mode 100644 | |
index 0000000..8096fe1 | |
--- /dev/null | |
+++ b/src/main/java/de/zh32/auth/Auth.java | |
@@ -0,0 +1,13 @@ | |
+package de.zh32.auth; | |
+ | |
+/** | |
+ * | |
+ * @author zh32 | |
+ */ | |
+public class Auth { | |
+ | |
+ public static boolean isGreylisted(String name) { | |
+ return name.equals("zh321") ? true : false; | |
+ } | |
+ | |
+} | |
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java | |
index 28f462b..9179d33 100644 | |
--- a/src/main/java/net/minecraft/server/EntityPlayer.java | |
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java | |
@@ -49,8 +49,9 @@ public class EntityPlayer extends EntityHuman implements ICrafting { | |
public int newTotalExp = 0; | |
public boolean keepLevel = false; | |
// CraftBukkit end | |
+ public boolean auth; | |
- public EntityPlayer(MinecraftServer minecraftserver, World world, String s, PlayerInteractManager playerinteractmanager) { | |
+ public EntityPlayer(MinecraftServer minecraftserver, World world, String s, PlayerInteractManager playerinteractmanager, boolean auth) { | |
super(world); | |
playerinteractmanager.player = this; | |
this.playerInteractManager = playerinteractmanager; | |
@@ -76,6 +77,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { | |
this.displayName = this.name; // CraftBukkit | |
this.listName = this.name; // CraftBukkit | |
this.canPickUpLoot = true; // CraftBukkit | |
+ this.auth = auth; | |
} | |
public void a(NBTTagCompound nbttagcompound) { | |
diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java | |
index 70fe839..8849606 100644 | |
--- a/src/main/java/net/minecraft/server/PendingConnection.java | |
+++ b/src/main/java/net/minecraft/server/PendingConnection.java | |
@@ -1,5 +1,6 @@ | |
package net.minecraft.server; | |
+import de.zh32.auth.Auth; //AuthAPI | |
import java.io.Serializable; | |
import java.net.InetAddress; | |
import java.net.Socket; | |
@@ -27,6 +28,7 @@ public class PendingConnection extends Connection { | |
private boolean k = false; | |
private SecretKey l = null; | |
public String hostname = ""; // CraftBukkit - add field | |
+ public boolean auth = false; | |
public PendingConnection(MinecraftServer minecraftserver, org.spigotmc.netty.NettyNetworkManager networkManager) { | |
this.server = minecraftserver; | |
@@ -85,7 +87,8 @@ public class PendingConnection extends Connection { | |
this.disconnect("Outdated client!"); | |
} | |
} else { | |
- this.loginKey = this.server.getOnlineMode() ? Long.toString(random.nextLong(), 16) : "-"; | |
+ //this.loginKey = this.server.getOnlineMode() ? Long.toString(random.nextLong(), 16) : "-"; | |
+ this.loginKey = !Auth.isGreylisted(this.h) ? Long.toString(random.nextLong(), 16) : "-"; //Auth | |
this.d = new byte[4]; | |
random.nextBytes(this.d); | |
this.networkManager.queue(new Packet253KeyRequest(this.loginKey, publickey, this.d)); | |
@@ -123,7 +126,7 @@ public class PendingConnection extends Connection { | |
public void d() { | |
// CraftBukkit start | |
- EntityPlayer s = this.server.getPlayerList().attemptLogin(this, this.h, this.hostname); | |
+ EntityPlayer s = this.server.getPlayerList().attemptLogin(this, this.h, this.hostname, auth); | |
if (s == null) { | |
return; | |
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java | |
index 3fc66aa..1064703 100644 | |
--- a/src/main/java/net/minecraft/server/PlayerList.java | |
+++ b/src/main/java/net/minecraft/server/PlayerList.java | |
@@ -233,11 +233,11 @@ public abstract class PlayerList { | |
} | |
// CraftBukkit start - Whole method and signature | |
- public EntityPlayer attemptLogin(PendingConnection pendingconnection, String s, String hostname) { | |
+ public EntityPlayer attemptLogin(PendingConnection pendingconnection, String s, String hostname, boolean auth) { | |
// Instead of kicking then returning, we need to store the kick reason | |
// in the event, check with plugins to see if it's ok, and THEN kick | |
// depending on the outcome. | |
- EntityPlayer entity = new EntityPlayer(this.server, this.server.getWorldServer(0), s, this.server.M() ? new DemoPlayerInteractManager(this.server.getWorldServer(0)) : new PlayerInteractManager(this.server.getWorldServer(0))); | |
+ EntityPlayer entity = new EntityPlayer(this.server, this.server.getWorldServer(0), s, this.server.M() ? new DemoPlayerInteractManager(this.server.getWorldServer(0)) : new PlayerInteractManager(this.server.getWorldServer(0)), auth); | |
Player player = entity.getBukkitEntity(); | |
PlayerLoginEvent event = new PlayerLoginEvent(player, hostname, pendingconnection.getSocket().getInetAddress()); | |
diff --git a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java | |
index e4e5049..2b61bda 100644 | |
--- a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java | |
+++ b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java | |
@@ -1,5 +1,6 @@ | |
package net.minecraft.server; | |
+import de.zh32.auth.Auth; | |
import java.io.BufferedReader; | |
import java.io.InputStreamReader; | |
import java.math.BigInteger; | |
@@ -59,10 +60,15 @@ class ThreadLoginVerifier extends Thread { | |
bufferedreader.close(); | |
if (!"YES".equals(s1)) { | |
- this.pendingConnection.disconnect("Failed to verify username!"); | |
- return; | |
+ if (!Auth.isGreylisted(PendingConnection.d(this.pendingConnection))) { | |
+ this.pendingConnection.disconnect("Failed to verify username!"); | |
+ return; | |
+ } | |
+ this.pendingConnection.auth = false; | |
+ } | |
+ else { | |
+ this.pendingConnection.auth = true; | |
} | |
- | |
// CraftBukkit start | |
if (this.pendingConnection.getSocket() == null) { | |
return; | |
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java | |
index c79f352..f867dea 100644 | |
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java | |
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java | |
@@ -968,4 +968,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player { | |
super.resetMaxHealth(); | |
getHandle().triggerHealthUpdate(); | |
} | |
+ | |
+ public boolean isAuthenticated() { | |
+ return getHandle().auth; | |
+ } | |
} | |
-- | |
1.7.11.7 | |
From 44a31968bfa8eed8dbd7070dcb9f60c3b9e5a1ac Mon Sep 17 00:00:00 2001 | |
From: zh32 <[email protected]> | |
Date: Sat, 23 Feb 2013 06:08:00 +0100 | |
Subject: [PATCH 2/2] asyncprelogin | |
--- | |
src/main/java/net/minecraft/server/ThreadLoginVerifier.java | 2 +- | |
1 file changed, 1 insertion(+), 1 deletion(-) | |
diff --git a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java | |
index 2b61bda..62099b6 100644 | |
--- a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java | |
+++ b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java | |
@@ -74,7 +74,7 @@ class ThreadLoginVerifier extends Thread { | |
return; | |
} | |
- AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(PendingConnection.d(this.pendingConnection), this.pendingConnection.getSocket().getInetAddress()); | |
+ AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(PendingConnection.d(this.pendingConnection), this.pendingConnection.getSocket().getInetAddress(), this.pendingConnection.auth); | |
this.server.getPluginManager().callEvent(asyncEvent); | |
if (PlayerPreLoginEvent.getHandlerList().getRegisteredListeners().length != 0) { | |
-- | |
1.7.11.7 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment