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) {