Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
at develop 66 lines 2.7 kB view raw
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}