Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
1package net.minecraft.server;
2
3import com.projectposeidon.johnymuffin.LoginProcessHandler;
4import com.legacyminecraft.poseidon.util.SessionAPI;
5import org.bukkit.craftbukkit.CraftServer;
6
7import java.net.InetSocketAddress;
8
9// CraftBukkit start
10// CraftBukkit end
11
12public class ThreadLoginVerifier extends Thread {
13
14 final Packet1Login loginPacket;
15
16 final NetLoginHandler netLoginHandler;
17
18 final LoginProcessHandler loginProcessHandler; //Project Poseidon
19
20 // CraftBukkit start
21 CraftServer server;
22
23 public ThreadLoginVerifier(LoginProcessHandler loginProcessHandler, NetLoginHandler netloginhandler, Packet1Login packet1login, CraftServer server) {
24 this.server = server;
25 // CraftBukkit end
26 this.loginProcessHandler = loginProcessHandler; //Project Poseidon
27
28 this.netLoginHandler = netloginhandler;
29 this.loginPacket = packet1login;
30 }
31
32 private String getIP() {
33 return ((InetSocketAddress) netLoginHandler.networkManager.getSocketAddress()).getAddress().getHostAddress();
34 }
35
36 public void run() {
37 try {
38 SessionAPI.hasJoined(loginPacket.name, netLoginHandler.getServerID(), getIP(), (int responseCode, String username, String uuid, String ip) -> {
39 boolean checkIP = ip == "127.0.0.1" || ip == "localhost";
40
41 // make sure the request didn't fail (-1), and the response wasn't empty (204)
42 if (responseCode != -1 && responseCode != 204) {
43 // make sure username and ip match up (docs say username is case insensitive https://wiki.vg/Protocol_Encryption#Server)
44 if (username.equalsIgnoreCase(loginPacket.name)) {
45 if (checkIP) {
46 if (ip == getIP()) {
47 loginProcessHandler.userMojangSessionVerified();
48 }
49 } else {
50 loginProcessHandler.userMojangSessionVerified();
51 }
52 } else {
53 loginProcessHandler.cancelLoginProcess("Failed to verify username!");
54 }
55 } else {
56 //TODO: should this message be different? -moderator_man
57 loginProcessHandler.cancelLoginProcess("Failed to verify username!");
58 }
59 });
60 } catch (Exception exception) {
61 //this.netLoginHandler.disconnect("Failed to verify username! [internal error " + exception + "]");
62 this.loginProcessHandler.cancelLoginProcess("Failed to verify username! [internal error " + exception + "]");
63 exception.printStackTrace();
64 }
65 }
66}