diff --git a/bukkit/pom.xml b/bukkit/pom.xml index 42cdb7f1..ea988e89 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -98,11 +98,25 @@ + + + com.github.games647 + LoginSecurity-2 + + -9c09e73b7f-1 + + + * + * + + + + com.github.lenis0012 LoginSecurity-2 - - -9c09e73b7f-1 + + 3fa977c486 * diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/LoginSecurityHook.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/LoginSecurityHook.java index 0ce7f5fa..16c01a0f 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/LoginSecurityHook.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/LoginSecurityHook.java @@ -1,7 +1,13 @@ package com.github.games647.fastlogin.bukkit.hooks; +import com.avaje.ebeaninternal.api.ClassUtil; +import com.github.games647.fastlogin.bukkit.FastLoginBukkit; import com.google.common.base.Charsets; -import com.lenis0012.bukkit.ls.LoginSecurity; +import com.lenis0012.bukkit.loginsecurity.LoginSecurity; +import com.lenis0012.bukkit.loginsecurity.session.AuthService; +import com.lenis0012.bukkit.loginsecurity.session.PlayerSession; +import com.lenis0012.bukkit.loginsecurity.session.action.LoginAction; +import com.lenis0012.bukkit.loginsecurity.session.action.RegisterAction; import com.lenis0012.bukkit.ls.data.DataManager; import java.net.InetAddress; @@ -17,24 +23,56 @@ import org.bukkit.entity.Player; /** * Github: https://github.com/lenis0012/LoginSecurity-2 Project page: * - * Bukkit: http://dev.bukkit.org/bukkit-plugins/loginsecurity/ Spigot: - * https://www.spigotmc.org/resources/loginsecurity.19362/ - * - * on join: - * https://github.com/lenis0012/LoginSecurity-2/blob/master/src/main/java/com/lenis0012/bukkit/ls/LoginSecurity.java#L282 + * Bukkit: http://dev.bukkit.org/bukkit-plugins/loginsecurity/ + * Spigot: https://www.spigotmc.org/resources/loginsecurity.19362/ */ public class LoginSecurityHook implements BukkitAuthPlugin { - protected final LoginSecurity securityPlugin = LoginSecurity.instance; -// protected final boolean newVersion; + protected final com.lenis0012.bukkit.ls.LoginSecurity securityPlugin; + protected final FastLoginBukkit plugin = (FastLoginBukkit) Bukkit.getPluginManager().getPlugin("FastLogin"); + protected final boolean newVersion; public LoginSecurityHook() { -// this.newVersion = ClassUtil.isPresent("com.lenis0012.bukkit.loginsecurity.session.action.LoginAction"); + this.newVersion = ClassUtil.isPresent("com.lenis0012.bukkit.loginsecurity.LoginSecurity", getClass()); + if (newVersion) { + this.securityPlugin = null; + } else { + this.securityPlugin = com.lenis0012.bukkit.ls.LoginSecurity.instance; + } } @Override - public boolean forceLogin(final Player player) { - //Login command of this plugin: (How the plugin logs the player in) + public boolean forceLogin(Player player) { + if (!newVersion) { + return oldForceLogin(player); + } + + PlayerSession session = LoginSecurity.getSessionManager().getPlayerSession(player); + return session.performAction(new LoginAction(AuthService.PLUGIN, plugin)).isSuccess(); + } + + @Override + public boolean isRegistered(String playerName) throws Exception { + if (!newVersion) { + return oldIsRegistred(playerName); + } + + PlayerSession session = LoginSecurity.getSessionManager().getOfflineSession(playerName); + return session.isRegistered(); + } + + @Override + public boolean forceRegister(Player player, String password) { + if (!newVersion) { + return oldForceRegister(player, password); + } + + PlayerSession session = LoginSecurity.getSessionManager().getPlayerSession(player); + return session.performAction(new RegisterAction(AuthService.PLUGIN, plugin, password)).isSuccess(); + } + + public boolean oldForceLogin(final Player player) { +//Login command of this plugin: (How the plugin logs the player in) //https://github.com/lenis0012/LoginSecurity-2/blob/master/src/main/java/com/lenis0012/bukkit/ls/commands/LoginCommand.java#L39 //not thread-safe operation @@ -62,20 +100,16 @@ public class LoginSecurityHook implements BukkitAuthPlugin { } } - @Override - public boolean isRegistered(String playerName) throws Exception { + public boolean oldIsRegistred(String playerName) throws Exception { //https://github.com/lenis0012/LoginSecurity-2/blob/master/src/main/java/com/lenis0012/bukkit/ls/LoginSecurity.java#L296 DataManager dataManager = securityPlugin.data; //https://github.com/lenis0012/LoginSecurity-2/blob/master/src/main/java/com/lenis0012/bukkit/ls/LoginSecurity.java#L283 UUID offlineUuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + playerName).getBytes(Charsets.UTF_8)); return dataManager.isRegistered(offlineUuid.toString().replace("-", "")); - //check for loginsecurity sessions in order to prevent a sql query? - //sesUse && thread.getSession().containsKey(uuid) && checkLastIp(player)) { } - @Override - public boolean forceRegister(Player player, String password) { + public boolean oldForceRegister(Player player, String password) { DataManager dataManager = securityPlugin.data; UUID playerUUID = player.getUniqueId(); diff --git a/bungee/src/main/java/com/github/games647/fastlogin/bungee/tasks/ForceLoginTask.java b/bungee/src/main/java/com/github/games647/fastlogin/bungee/tasks/ForceLoginTask.java index 6f9e93d6..4521df91 100644 --- a/bungee/src/main/java/com/github/games647/fastlogin/bungee/tasks/ForceLoginTask.java +++ b/bungee/src/main/java/com/github/games647/fastlogin/bungee/tasks/ForceLoginTask.java @@ -8,6 +8,7 @@ import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; import java.util.UUID; +import java.util.logging.Level; import net.md_5.bungee.api.connection.PendingConnection; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -27,40 +28,43 @@ public class ForceLoginTask implements Runnable { @Override public void run() { - PendingConnection pendingConnection = player.getPendingConnection(); - BungeeLoginSession session = plugin.getSession().get(pendingConnection); - PlayerProfile playerProfile = session.getProfile(); + try { + PendingConnection pendingConnection = player.getPendingConnection(); + BungeeLoginSession session = plugin.getSession().get(pendingConnection); + PlayerProfile playerProfile = session.getProfile(); - if (!player.isConnected()) { - return; - } + if (!player.isConnected()) { + return; + } - //force login only on success - if (pendingConnection.isOnlineMode()) { - boolean autoRegister = session.needsRegistration(); + //force login only on success + if (pendingConnection.isOnlineMode()) { + boolean autoRegister = session.needsRegistration(); - BungeeAuthPlugin authPlugin = plugin.getBungeeAuthPlugin(); - if (authPlugin == null) { - //save will happen on success message from bukkit - sendBukkitLoginNotification(autoRegister); - } else if (session.needsRegistration()) { - String password = plugin.generateStringPassword(); - if (authPlugin.forceRegister(player, password)) { + BungeeAuthPlugin authPlugin = plugin.getBungeeAuthPlugin(); + if (authPlugin == null) { + //save will happen on success message from bukkit + sendBukkitLoginNotification(autoRegister); + } else if (session.needsRegistration()) { + String password = plugin.generateStringPassword(); + if (authPlugin.forceRegister(player, password)) { + //save will happen on success message from bukkit + sendBukkitLoginNotification(autoRegister); + } + } else if (authPlugin.forceLogin(player)) { //save will happen on success message from bukkit sendBukkitLoginNotification(autoRegister); } - } else if (authPlugin.forceLogin(player)) { - //save will happen on success message from bukkit - sendBukkitLoginNotification(autoRegister); - } - } else { - //cracked player + } else //cracked player if (!session.isAlreadySaved()) { playerProfile.setPremium(false); plugin.getCore().getStorage().save(playerProfile); session.setAlreadySaved(true); } + } catch (Exception ex) { + plugin.getLogger().log(Level.INFO, "ERROR ON FORCE LOGIN", ex); } + } private void sendBukkitLoginNotification(boolean autoRegister) {