diff options
author | SpaceManiac <tad.hardesty@platymuus.com> | 2012-03-03 12:38:36 -0600 |
---|---|---|
committer | EvilSeph <evilseph@gmail.com> | 2012-03-09 11:46:06 -0500 |
commit | a602d5c8c1eb93671fd9073291dff8ea89db1bd8 (patch) | |
tree | d6abaee32df4de32946ed5b70a8dd47892d89803 /src/main/java | |
parent | 97669f8d90d782091b5b6bc3d1c724229c8797ec (diff) | |
download | craftbukkit-a602d5c8c1eb93671fd9073291dff8ea89db1bd8.tar craftbukkit-a602d5c8c1eb93671fd9073291dff8ea89db1bd8.tar.gz craftbukkit-a602d5c8c1eb93671fd9073291dff8ea89db1bd8.tar.lz craftbukkit-a602d5c8c1eb93671fd9073291dff8ea89db1bd8.tar.xz craftbukkit-a602d5c8c1eb93671fd9073291dff8ea89db1bd8.zip |
[Bleeding] Implemented getting the hostname a player used to log in. Addresses BUKKIT-984
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/net/minecraft/server/NetLoginHandler.java | 9 | ||||
-rw-r--r-- | src/main/java/net/minecraft/server/ServerConfigurationManager.java | 6 |
2 files changed, 11 insertions, 4 deletions
diff --git a/src/main/java/net/minecraft/server/NetLoginHandler.java b/src/main/java/net/minecraft/server/NetLoginHandler.java index 83f0afb9..3337f6b6 100644 --- a/src/main/java/net/minecraft/server/NetLoginHandler.java +++ b/src/main/java/net/minecraft/server/NetLoginHandler.java @@ -22,6 +22,7 @@ public class NetLoginHandler extends NetHandler { private String g = null; private Packet1Login h = null; private String loginKey = Long.toString(random.nextLong(), 16); // CraftBukkit - Security fix + public String hostname = ""; // CraftBukkit - add field public NetLoginHandler(MinecraftServer minecraftserver, Socket socket, String s) { this.server = minecraftserver; @@ -60,6 +61,12 @@ public class NetLoginHandler extends NetHandler { } public void a(Packet2Handshake packet2handshake) { + // CraftBukkit start + int i = packet2handshake.a.indexOf(';'); + if (i == -1) { + this.hostname = ""; + } else this.hostname = packet2handshake.a.substring(i + 1); + // CraftBukkit end if (this.server.onlineMode) { this.loginKey = Long.toString(random.nextLong(), 16); this.networkManager.queue(new Packet2Handshake(this.loginKey)); @@ -92,7 +99,7 @@ public class NetLoginHandler extends NetHandler { } public void b(Packet1Login packet1login) { - EntityPlayer entityplayer = this.server.serverConfigurationManager.attemptLogin(this, packet1login.name); + EntityPlayer entityplayer = this.server.serverConfigurationManager.attemptLogin(this, packet1login.name, this.hostname); // CraftBukkit - add hostname parameter if (entityplayer != null) { this.server.serverConfigurationManager.b(entityplayer); diff --git a/src/main/java/net/minecraft/server/ServerConfigurationManager.java b/src/main/java/net/minecraft/server/ServerConfigurationManager.java index da9f6d94..d1ab7d1d 100644 --- a/src/main/java/net/minecraft/server/ServerConfigurationManager.java +++ b/src/main/java/net/minecraft/server/ServerConfigurationManager.java @@ -199,14 +199,14 @@ public class ServerConfigurationManager { return playerQuitEvent.getQuitMessage(); // CraftBukkit } - public EntityPlayer attemptLogin(NetLoginHandler netloginhandler, String s) { + public EntityPlayer attemptLogin(NetLoginHandler netloginhandler, String s, String hostname) { // CraftBukkit - add hostname parameter // CraftBukkit start - note: this entire method needs to be changed // 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. Also change any reference to this.e.c to entity.world EntityPlayer entity = new EntityPlayer(this.server, this.server.getWorldServer(0), s, new ItemInWorldManager(this.server.getWorldServer(0))); - Player player = (entity == null) ? null : (Player) entity.getBukkitEntity(); - PlayerLoginEvent event = new PlayerLoginEvent(player); + Player player = (Player) entity.getBukkitEntity(); + PlayerLoginEvent event = new PlayerLoginEvent(player, hostname); String s1 = netloginhandler.networkManager.getSocketAddress().toString(); |