forked from TuxCoding/FastLogin
Add support for the new LoginSecurity version
This commit is contained in:
@ -98,11 +98,25 @@
|
|||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<!--Oringal owner is lenis, but maven always uses the newest version-->
|
||||||
|
<groupId>com.github.games647</groupId>
|
||||||
|
<artifactId>LoginSecurity-2</artifactId>
|
||||||
|
<!--Old version 2.0 -->
|
||||||
|
<version>-9c09e73b7f-1</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>*</groupId>
|
||||||
|
<artifactId>*</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.lenis0012</groupId>
|
<groupId>com.github.lenis0012</groupId>
|
||||||
<artifactId>LoginSecurity-2</artifactId>
|
<artifactId>LoginSecurity-2</artifactId>
|
||||||
<!--Old version 2.0-->
|
<!--New version 2.1-->
|
||||||
<version>-9c09e73b7f-1</version>
|
<version>3fa977c486</version>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
<groupId>*</groupId>
|
<groupId>*</groupId>
|
||||||
|
@ -1,7 +1,13 @@
|
|||||||
package com.github.games647.fastlogin.bukkit.hooks;
|
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.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 com.lenis0012.bukkit.ls.data.DataManager;
|
||||||
|
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
@ -17,24 +23,56 @@ import org.bukkit.entity.Player;
|
|||||||
/**
|
/**
|
||||||
* Github: https://github.com/lenis0012/LoginSecurity-2 Project page:
|
* Github: https://github.com/lenis0012/LoginSecurity-2 Project page:
|
||||||
*
|
*
|
||||||
* Bukkit: http://dev.bukkit.org/bukkit-plugins/loginsecurity/ Spigot:
|
* Bukkit: http://dev.bukkit.org/bukkit-plugins/loginsecurity/
|
||||||
* https://www.spigotmc.org/resources/loginsecurity.19362/
|
* 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
|
|
||||||
*/
|
*/
|
||||||
public class LoginSecurityHook implements BukkitAuthPlugin {
|
public class LoginSecurityHook implements BukkitAuthPlugin {
|
||||||
|
|
||||||
protected final LoginSecurity securityPlugin = LoginSecurity.instance;
|
protected final com.lenis0012.bukkit.ls.LoginSecurity securityPlugin;
|
||||||
// protected final boolean newVersion;
|
protected final FastLoginBukkit plugin = (FastLoginBukkit) Bukkit.getPluginManager().getPlugin("FastLogin");
|
||||||
|
protected final boolean newVersion;
|
||||||
|
|
||||||
public LoginSecurityHook() {
|
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
|
@Override
|
||||||
public boolean forceLogin(final Player player) {
|
public boolean forceLogin(Player player) {
|
||||||
//Login command of this plugin: (How the plugin logs the player in)
|
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
|
//https://github.com/lenis0012/LoginSecurity-2/blob/master/src/main/java/com/lenis0012/bukkit/ls/commands/LoginCommand.java#L39
|
||||||
|
|
||||||
//not thread-safe operation
|
//not thread-safe operation
|
||||||
@ -62,20 +100,16 @@ public class LoginSecurityHook implements BukkitAuthPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public boolean oldIsRegistred(String playerName) throws Exception {
|
||||||
public boolean isRegistered(String playerName) throws Exception {
|
|
||||||
//https://github.com/lenis0012/LoginSecurity-2/blob/master/src/main/java/com/lenis0012/bukkit/ls/LoginSecurity.java#L296
|
//https://github.com/lenis0012/LoginSecurity-2/blob/master/src/main/java/com/lenis0012/bukkit/ls/LoginSecurity.java#L296
|
||||||
DataManager dataManager = securityPlugin.data;
|
DataManager dataManager = securityPlugin.data;
|
||||||
|
|
||||||
//https://github.com/lenis0012/LoginSecurity-2/blob/master/src/main/java/com/lenis0012/bukkit/ls/LoginSecurity.java#L283
|
//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));
|
UUID offlineUuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + playerName).getBytes(Charsets.UTF_8));
|
||||||
return dataManager.isRegistered(offlineUuid.toString().replace("-", ""));
|
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 oldForceRegister(Player player, String password) {
|
||||||
public boolean forceRegister(Player player, String password) {
|
|
||||||
DataManager dataManager = securityPlugin.data;
|
DataManager dataManager = securityPlugin.data;
|
||||||
|
|
||||||
UUID playerUUID = player.getUniqueId();
|
UUID playerUUID = player.getUniqueId();
|
||||||
|
@ -8,6 +8,7 @@ import com.google.common.io.ByteArrayDataOutput;
|
|||||||
import com.google.common.io.ByteStreams;
|
import com.google.common.io.ByteStreams;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import net.md_5.bungee.api.connection.PendingConnection;
|
import net.md_5.bungee.api.connection.PendingConnection;
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
@ -27,40 +28,43 @@ public class ForceLoginTask implements Runnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
PendingConnection pendingConnection = player.getPendingConnection();
|
try {
|
||||||
BungeeLoginSession session = plugin.getSession().get(pendingConnection);
|
PendingConnection pendingConnection = player.getPendingConnection();
|
||||||
PlayerProfile playerProfile = session.getProfile();
|
BungeeLoginSession session = plugin.getSession().get(pendingConnection);
|
||||||
|
PlayerProfile playerProfile = session.getProfile();
|
||||||
|
|
||||||
if (!player.isConnected()) {
|
if (!player.isConnected()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//force login only on success
|
//force login only on success
|
||||||
if (pendingConnection.isOnlineMode()) {
|
if (pendingConnection.isOnlineMode()) {
|
||||||
boolean autoRegister = session.needsRegistration();
|
boolean autoRegister = session.needsRegistration();
|
||||||
|
|
||||||
BungeeAuthPlugin authPlugin = plugin.getBungeeAuthPlugin();
|
BungeeAuthPlugin authPlugin = plugin.getBungeeAuthPlugin();
|
||||||
if (authPlugin == null) {
|
if (authPlugin == null) {
|
||||||
//save will happen on success message from bukkit
|
//save will happen on success message from bukkit
|
||||||
sendBukkitLoginNotification(autoRegister);
|
sendBukkitLoginNotification(autoRegister);
|
||||||
} else if (session.needsRegistration()) {
|
} else if (session.needsRegistration()) {
|
||||||
String password = plugin.generateStringPassword();
|
String password = plugin.generateStringPassword();
|
||||||
if (authPlugin.forceRegister(player, password)) {
|
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
|
//save will happen on success message from bukkit
|
||||||
sendBukkitLoginNotification(autoRegister);
|
sendBukkitLoginNotification(autoRegister);
|
||||||
}
|
}
|
||||||
} else if (authPlugin.forceLogin(player)) {
|
} else //cracked player
|
||||||
//save will happen on success message from bukkit
|
|
||||||
sendBukkitLoginNotification(autoRegister);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//cracked player
|
|
||||||
if (!session.isAlreadySaved()) {
|
if (!session.isAlreadySaved()) {
|
||||||
playerProfile.setPremium(false);
|
playerProfile.setPremium(false);
|
||||||
plugin.getCore().getStorage().save(playerProfile);
|
plugin.getCore().getStorage().save(playerProfile);
|
||||||
session.setAlreadySaved(true);
|
session.setAlreadySaved(true);
|
||||||
}
|
}
|
||||||
|
} catch (Exception ex) {
|
||||||
|
plugin.getLogger().log(Level.INFO, "ERROR ON FORCE LOGIN", ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendBukkitLoginNotification(boolean autoRegister) {
|
private void sendBukkitLoginNotification(boolean autoRegister) {
|
||||||
|
Reference in New Issue
Block a user