diff --git a/README.md b/README.md index fdb5a8f7..2da50d3a 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ So they don't need to enter passwords. This is also called auto login (auto-logi * [CrazyLogin](http://dev.bukkit.org/bukkit-plugins/crazylogin/) * [LoginSecurity](http://dev.bukkit.org/bukkit-plugins/loginsecurity/) * [RoyalAuth](http://dev.bukkit.org/bukkit-plugins/royalauth/) + * [UltraAuth](http://dev.bukkit.org/bukkit-plugins/ultraauth-aa/) ###Downloads diff --git a/bukkit/lib/UltraAuth v2.0.2.jar b/bukkit/lib/UltraAuth v2.0.2.jar new file mode 100644 index 00000000..203aaeff Binary files /dev/null and b/bukkit/lib/UltraAuth v2.0.2.jar differ diff --git a/bukkit/pom.xml b/bukkit/pom.xml index 5d874072..16564223 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -5,7 +5,7 @@ com.github.games647 fastlogin-parent - 0.5 + 0.6 ../pom.xml @@ -52,7 +52,7 @@ org.spigotmc spigot-api - 1.8.8-R0.1-SNAPSHOT + 1.9-R0.1-SNAPSHOT provided @@ -128,5 +128,14 @@ system ${project.basedir}/lib/CrazyLogin v7.23.2.jar + + + ultraauth + ultraauth + 2.0.2 + true + system + ${project.basedir}/lib/UltraAuth v2.0.2.jar + diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/UltraAuthHook.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/UltraAuthHook.java new file mode 100644 index 00000000..a9bdcad6 --- /dev/null +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/UltraAuthHook.java @@ -0,0 +1,58 @@ +package com.github.games647.fastlogin.bukkit.hooks; + +import java.lang.reflect.Method; + +import net.sf.cglib.proxy.Callback; +import net.sf.cglib.proxy.Enhancer; +import net.sf.cglib.proxy.MethodInterceptor; +import net.sf.cglib.proxy.MethodProxy; +import net.sf.cglib.proxy.NoOp; + +import org.bukkit.entity.Player; + +import ultraauth.api.UltraAuthAPI; + +/** + * Project page: http://dev.bukkit.org/bukkit-plugins/ultraauth-aa/ + */ +public class UltraAuthHook implements AuthPlugin { + + @Override + public void forceLogin(Player player) { + UltraAuthAPI.authenticatedPlayer(player); + } + + @Override + public boolean isRegistered(final String playerName) { + return UltraAuthAPI.isRegisterd(createFakePlayer(playerName)); + } + + private Player createFakePlayer(final String playerName) { + Callback implementation = new MethodInterceptor() { + @Override + public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { + String methodName = method.getName(); + + if (methodName.equals("getName")) { + return playerName; + } + + // Ignore all other methods + throw new UnsupportedOperationException( + "The method " + method.getName() + " is not supported for temporary players."); + } + }; + + // CGLib is amazing + Enhancer ex = new Enhancer(); + ex.setInterfaces(new Class[]{Player.class}); + ex.setCallbacks(new Callback[]{NoOp.INSTANCE, implementation}); + + return (Player) ex.create(); + } + + @Override + public void forceRegister(Player player, String password) { + UltraAuthAPI.setPlayerPasswordOnline(player, password); + } +} diff --git a/bukkit/src/main/resources/plugin.yml b/bukkit/src/main/resources/plugin.yml index 0355e5b7..4497e1a5 100644 --- a/bukkit/src/main/resources/plugin.yml +++ b/bukkit/src/main/resources/plugin.yml @@ -22,6 +22,7 @@ softdepend: - CrazyLogin - LoginSecurity - RoyalAuth + - UltraAuth commands: ${project.parent.name}: diff --git a/bungee/pom.xml b/bungee/pom.xml index b375260f..70d629c4 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -5,7 +5,7 @@ com.github.games647 fastlogin-parent - 0.5 + 0.6 ../pom.xml @@ -28,7 +28,7 @@ net.md-5 bungeecord-api - 1.8-SNAPSHOT + 1.9-SNAPSHOT jar provided diff --git a/pom.xml b/pom.xml index 2a5245a8..895f3bc3 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ pom FastLogin - 0.5 + 0.6 2015 https://www.spigotmc.org/resources/fastlogin.14153/ diff --git a/universal/pom.xml b/universal/pom.xml index 82349a1b..1223e977 100644 --- a/universal/pom.xml +++ b/universal/pom.xml @@ -5,7 +5,7 @@ com.github.games647 fastlogin-parent - 0.5 + 0.6 ../pom.xml