From 726aead1c1de0c5785791d0d7d7416a23a12c54d Mon Sep 17 00:00:00 2001 From: HaHaWTH Date: Sat, 30 Mar 2024 21:15:20 +0800 Subject: [PATCH 01/25] Initial Velocity support --- src/main/java/fr/xephi/authme/AuthMe.java | 2 + .../authme/process/join/AsynchronousJoin.java | 9 ++ .../process/login/AsynchronousLogin.java | 8 ++ .../process/logout/AsynchronousLogout.java | 5 ++ .../register/ProcessSyncEmailRegister.java | 6 +- .../register/ProcessSyncPasswordRegister.java | 7 +- .../unregister/AsynchronousUnregister.java | 8 +- .../xephi/authme/service/BukkitService.java | 11 +++ .../authme/service/velocity/VMessageType.java | 5 ++ .../service/velocity/VelocityReceiver.java | 89 +++++++++++++++++++ .../service/velocity/VelocitySender.java | 76 ++++++++++++++++ .../settings/properties/HooksSettings.java | 3 + 12 files changed, 226 insertions(+), 3 deletions(-) create mode 100644 src/main/java/fr/xephi/authme/service/velocity/VMessageType.java create mode 100644 src/main/java/fr/xephi/authme/service/velocity/VelocityReceiver.java create mode 100644 src/main/java/fr/xephi/authme/service/velocity/VelocitySender.java diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java index 6c944738..82951bfc 100644 --- a/src/main/java/fr/xephi/authme/AuthMe.java +++ b/src/main/java/fr/xephi/authme/AuthMe.java @@ -35,6 +35,7 @@ import fr.xephi.authme.service.BackupService; import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.service.MigrationService; import fr.xephi.authme.service.bungeecord.BungeeReceiver; +import fr.xephi.authme.service.velocity.VelocityReceiver; import fr.xephi.authme.service.yaml.YamlParseException; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.SettingsWarner; @@ -300,6 +301,7 @@ public class AuthMe extends JavaPlugin { // Trigger instantiation (class not used elsewhere) injector.getSingleton(BungeeReceiver.class); + injector.getSingleton(VelocityReceiver.class); // Trigger construction of API classes; they will keep track of the singleton injector.getSingleton(AuthMeApi.class); diff --git a/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java b/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java index aca8d306..34e9ef43 100644 --- a/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java +++ b/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java @@ -17,6 +17,8 @@ import fr.xephi.authme.service.SessionService; import fr.xephi.authme.service.ValidationService; import fr.xephi.authme.service.bungeecord.BungeeSender; import fr.xephi.authme.service.bungeecord.MessageType; +import fr.xephi.authme.service.velocity.VMessageType; +import fr.xephi.authme.service.velocity.VelocitySender; import fr.xephi.authme.settings.commandconfig.CommandManager; import fr.xephi.authme.settings.properties.HooksSettings; import fr.xephi.authme.settings.properties.RegistrationSettings; @@ -75,6 +77,9 @@ public class AsynchronousJoin implements AsynchronousProcess { @Inject private BungeeSender bungeeSender; + @Inject + private VelocitySender velocitySender; + @Inject private ProxySessionManager proxySessionManager; @@ -154,6 +159,10 @@ public class AsynchronousJoin implements AsynchronousProcess { bukkitService.scheduleSyncDelayedTask(() -> bungeeSender.sendAuthMeBungeecordMessage(player, MessageType.LOGIN), 5L); } + if (velocitySender.isEnabled()) { + bukkitService.scheduleSyncDelayedTask(() -> + velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), 5L); + } return; } diff --git a/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java b/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java index b9ebbdb7..87cf85ba 100644 --- a/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java +++ b/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java @@ -26,6 +26,8 @@ import fr.xephi.authme.service.CommonService; import fr.xephi.authme.service.SessionService; import fr.xephi.authme.service.bungeecord.BungeeSender; import fr.xephi.authme.service.bungeecord.MessageType; +import fr.xephi.authme.service.velocity.VMessageType; +import fr.xephi.authme.service.velocity.VelocitySender; import fr.xephi.authme.settings.properties.DatabaseSettings; import fr.xephi.authme.settings.properties.EmailSettings; import fr.xephi.authme.settings.properties.HooksSettings; @@ -84,6 +86,8 @@ public class AsynchronousLogin implements AsynchronousProcess { @Inject private BungeeSender bungeeSender; + @Inject + private VelocitySender velocitySender; AsynchronousLogin() { } @@ -308,6 +312,10 @@ public class AsynchronousLogin implements AsynchronousProcess { bukkitService.scheduleSyncDelayedTask(() -> bungeeSender.sendAuthMeBungeecordMessage(player, MessageType.LOGIN), 5L); } + if (velocitySender.isEnabled()) { + bukkitService.scheduleSyncDelayedTask(() -> + velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), 5L); + } // As the scheduling executes the Task most likely after the current // task, we schedule it in the end diff --git a/src/main/java/fr/xephi/authme/process/logout/AsynchronousLogout.java b/src/main/java/fr/xephi/authme/process/logout/AsynchronousLogout.java index 2e5bd87c..5e6f953f 100644 --- a/src/main/java/fr/xephi/authme/process/logout/AsynchronousLogout.java +++ b/src/main/java/fr/xephi/authme/process/logout/AsynchronousLogout.java @@ -11,6 +11,8 @@ import fr.xephi.authme.service.CommonService; import fr.xephi.authme.service.SessionService; import fr.xephi.authme.service.bungeecord.BungeeSender; import fr.xephi.authme.service.bungeecord.MessageType; +import fr.xephi.authme.service.velocity.VMessageType; +import fr.xephi.authme.service.velocity.VelocitySender; import fr.xephi.authme.settings.properties.RestrictionSettings; import org.bukkit.entity.Player; @@ -42,6 +44,8 @@ public class AsynchronousLogout implements AsynchronousProcess { @Inject private BungeeSender bungeeSender; + @Inject + private VelocitySender velocitySender; AsynchronousLogout() { } @@ -72,6 +76,7 @@ public class AsynchronousLogout implements AsynchronousProcess { database.setUnlogged(name); sessionService.revokeSession(name); bungeeSender.sendAuthMeBungeecordMessage(player, MessageType.LOGOUT); + velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGOUT); syncProcessManager.processSyncPlayerLogout(player); } } diff --git a/src/main/java/fr/xephi/authme/process/register/ProcessSyncEmailRegister.java b/src/main/java/fr/xephi/authme/process/register/ProcessSyncEmailRegister.java index c1fae36c..0fe19acf 100644 --- a/src/main/java/fr/xephi/authme/process/register/ProcessSyncEmailRegister.java +++ b/src/main/java/fr/xephi/authme/process/register/ProcessSyncEmailRegister.java @@ -8,6 +8,8 @@ import fr.xephi.authme.output.ConsoleLoggerFactory; import fr.xephi.authme.process.SynchronousProcess; import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.service.CommonService; +import fr.xephi.authme.service.velocity.VMessageType; +import fr.xephi.authme.service.velocity.VelocitySender; import fr.xephi.authme.util.PlayerUtils; import org.bukkit.entity.Player; @@ -28,6 +30,8 @@ public class ProcessSyncEmailRegister implements SynchronousProcess { @Inject private LimboService limboService; + @Inject + private VelocitySender velocitySender; ProcessSyncEmailRegister() { } @@ -40,7 +44,7 @@ public class ProcessSyncEmailRegister implements SynchronousProcess { public void processEmailRegister(Player player) { service.send(player, MessageKey.ACCOUNT_NOT_ACTIVATED); limboService.replaceTasksAfterRegistration(player); - + velocitySender.sendAuthMeVelocityMessage(player, VMessageType.REGISTER); bukkitService.callEvent(new RegisterEvent(player)); logger.fine(player.getName() + " registered " + PlayerUtils.getPlayerIp(player)); } diff --git a/src/main/java/fr/xephi/authme/process/register/ProcessSyncPasswordRegister.java b/src/main/java/fr/xephi/authme/process/register/ProcessSyncPasswordRegister.java index ceed84ca..f68ba015 100644 --- a/src/main/java/fr/xephi/authme/process/register/ProcessSyncPasswordRegister.java +++ b/src/main/java/fr/xephi/authme/process/register/ProcessSyncPasswordRegister.java @@ -9,6 +9,8 @@ import fr.xephi.authme.process.SynchronousProcess; import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.service.CommonService; import fr.xephi.authme.service.bungeecord.BungeeSender; +import fr.xephi.authme.service.velocity.VMessageType; +import fr.xephi.authme.service.velocity.VelocitySender; import fr.xephi.authme.settings.commandconfig.CommandManager; import fr.xephi.authme.settings.properties.EmailSettings; import fr.xephi.authme.settings.properties.RegistrationSettings; @@ -27,6 +29,9 @@ public class ProcessSyncPasswordRegister implements SynchronousProcess { @Inject private BungeeSender bungeeSender; + @Inject + private VelocitySender velocitySender; + @Inject private CommonService service; @@ -66,7 +71,7 @@ public class ProcessSyncPasswordRegister implements SynchronousProcess { if (!service.getProperty(EmailSettings.MAIL_ACCOUNT).isEmpty()) { service.send(player, MessageKey.ADD_EMAIL_MESSAGE); } - + velocitySender.sendAuthMeVelocityMessage(player, VMessageType.REGISTER); bukkitService.callEvent(new RegisterEvent(player)); logger.fine(player.getName() + " registered " + PlayerUtils.getPlayerIp(player)); diff --git a/src/main/java/fr/xephi/authme/process/unregister/AsynchronousUnregister.java b/src/main/java/fr/xephi/authme/process/unregister/AsynchronousUnregister.java index b26fb93f..c7537236 100644 --- a/src/main/java/fr/xephi/authme/process/unregister/AsynchronousUnregister.java +++ b/src/main/java/fr/xephi/authme/process/unregister/AsynchronousUnregister.java @@ -16,6 +16,8 @@ import fr.xephi.authme.service.CommonService; import fr.xephi.authme.service.TeleportationService; import fr.xephi.authme.service.bungeecord.BungeeSender; import fr.xephi.authme.service.bungeecord.MessageType; +import fr.xephi.authme.service.velocity.VMessageType; +import fr.xephi.authme.service.velocity.VelocitySender; import fr.xephi.authme.settings.commandconfig.CommandManager; import fr.xephi.authme.settings.properties.RegistrationSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; @@ -56,6 +58,9 @@ public class AsynchronousUnregister implements AsynchronousProcess { @Inject private CommandManager commandManager; + @Inject + private VelocitySender velocitySender; + @Inject private BungeeSender bungeeSender; @@ -76,6 +81,7 @@ public class AsynchronousUnregister implements AsynchronousProcess { if (dataSource.removeAuth(name)) { performPostUnregisterActions(name, player); logger.info(name + " unregistered himself"); + velocitySender.sendAuthMeVelocityMessage(player, VMessageType.UNREGISTER); bukkitService.createAndCallEvent(isAsync -> new UnregisterByPlayerEvent(player, isAsync)); } else { service.send(player, MessageKey.ERROR); @@ -97,8 +103,8 @@ public class AsynchronousUnregister implements AsynchronousProcess { public void adminUnregister(CommandSender initiator, String name, Player player) { if (dataSource.removeAuth(name)) { performPostUnregisterActions(name, player); + velocitySender.sendAuthMeVelocityMessage(player, VMessageType.FORCE_UNREGISTER); bukkitService.createAndCallEvent(isAsync -> new UnregisterByAdminEvent(player, name, isAsync, initiator)); - if (initiator == null) { logger.info(name + " was unregistered"); } else { diff --git a/src/main/java/fr/xephi/authme/service/BukkitService.java b/src/main/java/fr/xephi/authme/service/BukkitService.java index 05e32d7a..19d08c10 100644 --- a/src/main/java/fr/xephi/authme/service/BukkitService.java +++ b/src/main/java/fr/xephi/authme/service/BukkitService.java @@ -369,6 +369,17 @@ public class BukkitService implements SettingsDependent { player.sendPluginMessage(authMe, "BungeeCord", bytes); } + /** + * Send the specified bytes to bungeecord using the specified player connection. + * + * @param player the player + * @param bytes the message + */ + public void sendVelocityMessage(Player player, byte[] bytes) { + player.sendPluginMessage(authMe, "authmevelocity:main", bytes); + } + + /** * Adds a ban to the list. If a previous ban exists, this will * update the previous entry. diff --git a/src/main/java/fr/xephi/authme/service/velocity/VMessageType.java b/src/main/java/fr/xephi/authme/service/velocity/VMessageType.java new file mode 100644 index 00000000..0e65db42 --- /dev/null +++ b/src/main/java/fr/xephi/authme/service/velocity/VMessageType.java @@ -0,0 +1,5 @@ +package fr.xephi.authme.service.velocity; + +public enum VMessageType { + LOGIN, REGISTER, LOGOUT, FORCE_UNREGISTER, UNREGISTER +} diff --git a/src/main/java/fr/xephi/authme/service/velocity/VelocityReceiver.java b/src/main/java/fr/xephi/authme/service/velocity/VelocityReceiver.java new file mode 100644 index 00000000..caa04e5f --- /dev/null +++ b/src/main/java/fr/xephi/authme/service/velocity/VelocityReceiver.java @@ -0,0 +1,89 @@ +package fr.xephi.authme.service.velocity; + +import com.google.common.io.ByteArrayDataInput; +import com.google.common.io.ByteStreams; +import fr.xephi.authme.AuthMe; +import fr.xephi.authme.ConsoleLogger; +import fr.xephi.authme.data.ProxySessionManager; +import fr.xephi.authme.initialization.SettingsDependent; +import fr.xephi.authme.output.ConsoleLoggerFactory; +import fr.xephi.authme.process.Management; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.settings.Settings; +import fr.xephi.authme.settings.properties.HooksSettings; +import org.bukkit.entity.Player; +import org.bukkit.plugin.messaging.Messenger; +import org.bukkit.plugin.messaging.PluginMessageListener; + +import javax.inject.Inject; + +public class VelocityReceiver implements PluginMessageListener, SettingsDependent { + + private final ConsoleLogger logger = ConsoleLoggerFactory.get(VelocityReceiver.class); + + private final AuthMe plugin; + private final BukkitService bukkitService; + private final ProxySessionManager proxySessionManager; + private final Management management; + + private boolean isEnabled; + + @Inject + VelocityReceiver(AuthMe plugin, BukkitService bukkitService, ProxySessionManager proxySessionManager, + Management management, Settings settings) { + this.plugin = plugin; + this.bukkitService = bukkitService; + this.proxySessionManager = proxySessionManager; + this.management = management; + reload(settings); + } + + @Override + public void reload(Settings settings) { + this.isEnabled = settings.getProperty(HooksSettings.VELOCITY); + if (this.isEnabled) { + final Messenger messenger = plugin.getServer().getMessenger(); + if (!messenger.isIncomingChannelRegistered(plugin, "authmevelocity:main")) { + messenger.registerIncomingPluginChannel(plugin, "authmevelocity:main", this); + } + } + } + + + @Override + public void onPluginMessageReceived(String channel, Player player, byte[] bytes) { + if (!isEnabled) { + return; + } + + if (channel.equals("authmevelocity:main")) { + final ByteArrayDataInput in = ByteStreams.newDataInput(bytes); + + final String data = in.readUTF(); + final String username = in.readUTF(); + processData(username, data); + logger.debug("PluginMessage | AuthMeVelocity identifier processed"); + } + } + + private void processData(String username, String data) { + if (VMessageType.LOGIN.toString().equals(data)) { + performLogin(username); + } + } + + private void performLogin(String name) { + Player player = bukkitService.getPlayerExact(name); + if (player != null && player.isOnline()) { + management.forceLogin(player, true); + logger.info("The user " + player.getName() + " has been automatically logged in, " + + "as requested via plugin messaging."); + } else { + proxySessionManager.processProxySessionMessage(name); + logger.info("The user " + name + " should be automatically logged in, " + + "as requested via plugin messaging but has not been detected, nickname has been" + + " added to autologin queue."); + } + } + +} diff --git a/src/main/java/fr/xephi/authme/service/velocity/VelocitySender.java b/src/main/java/fr/xephi/authme/service/velocity/VelocitySender.java new file mode 100644 index 00000000..16a0f2cb --- /dev/null +++ b/src/main/java/fr/xephi/authme/service/velocity/VelocitySender.java @@ -0,0 +1,76 @@ +package fr.xephi.authme.service.velocity; + +import com.google.common.io.ByteArrayDataOutput; +import com.google.common.io.ByteStreams; +import fr.xephi.authme.AuthMe; +import fr.xephi.authme.ConsoleLogger; +import fr.xephi.authme.initialization.SettingsDependent; +import fr.xephi.authme.output.ConsoleLoggerFactory; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.service.bungeecord.MessageType; +import fr.xephi.authme.settings.Settings; +import fr.xephi.authme.settings.properties.HooksSettings; +import org.bukkit.entity.Player; +import org.bukkit.plugin.messaging.Messenger; + +import javax.inject.Inject; + +public class VelocitySender implements SettingsDependent { + + private final ConsoleLogger logger = ConsoleLoggerFactory.get(VelocitySender.class); + private final AuthMe plugin; + private final BukkitService bukkitService; + + private boolean isEnabled; + + /* + * Constructor. + */ + @Inject + VelocitySender(AuthMe plugin, BukkitService bukkitService, Settings settings) { + this.plugin = plugin; + this.bukkitService = bukkitService; + reload(settings); + } + + @Override + public void reload(Settings settings) { + this.isEnabled = settings.getProperty(HooksSettings.VELOCITY); + + if (this.isEnabled) { + Messenger messenger = plugin.getServer().getMessenger(); + if (!messenger.isOutgoingChannelRegistered(plugin, "authmevelocity:main")) { + messenger.registerOutgoingPluginChannel(plugin, "authmevelocity:main"); + } + } + } + + public boolean isEnabled() { + return isEnabled; + } + + private void sendForwardedVelocityMessage(Player player, VMessageType type, String playerName) { + ByteArrayDataOutput out = ByteStreams.newDataOutput(); + out.writeUTF(type.toString()); + out.writeUTF(playerName); + bukkitService.sendVelocityMessage(player, out.toByteArray()); + } + + /** + * Sends a message to the AuthMe plugin messaging channel, if enabled. + * + * @param player The player related to the message + * @param type The message type, See {@link MessageType} + */ + public void sendAuthMeVelocityMessage(Player player, VMessageType type) { + if (!isEnabled) { + return; + } + if (!plugin.isEnabled()) { + logger.debug("Tried to send a " + type + " velocity message but the plugin was disabled!"); + return; + } + sendForwardedVelocityMessage(player, type, player.getName()); + } + +} diff --git a/src/main/java/fr/xephi/authme/settings/properties/HooksSettings.java b/src/main/java/fr/xephi/authme/settings/properties/HooksSettings.java index 5d27c052..9a8ddadd 100644 --- a/src/main/java/fr/xephi/authme/settings/properties/HooksSettings.java +++ b/src/main/java/fr/xephi/authme/settings/properties/HooksSettings.java @@ -18,6 +18,9 @@ public final class HooksSettings implements SettingsHolder { @Comment("Do we need to hook with BungeeCord?") public static final Property BUNGEECORD = newProperty("Hooks.bungeecord", false); + @Comment("Do we need to hook with Velocity?") + public static final Property VELOCITY = + newProperty("Hooks.velocity", false); @Comment({"Hook into floodgate.", "This must be true if you want to use other bedrock features." From 07b62d4bf2011b5305c00f608fcbe8d610888273 Mon Sep 17 00:00:00 2001 From: HaHaWTH Date: Sat, 30 Mar 2024 22:15:00 +0800 Subject: [PATCH 02/25] Purge dat_old file --- src/main/java/fr/xephi/authme/listener/PurgeListener.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/fr/xephi/authme/listener/PurgeListener.java b/src/main/java/fr/xephi/authme/listener/PurgeListener.java index 03f8a6ff..dcc3db4e 100644 --- a/src/main/java/fr/xephi/authme/listener/PurgeListener.java +++ b/src/main/java/fr/xephi/authme/listener/PurgeListener.java @@ -52,11 +52,15 @@ public class PurgeListener implements Listener { // 构建玩家数据文件路径 File playerDataFile = new File(playerDataFolder, File.separator + playerUUID + ".dat"); + File playerDataOldFile = new File(playerDataFolder, File.separator + playerUUID + ".dat_old"); // 删除玩家数据文件 if (playerDataFile.exists()) { playerDataFile.delete(); } + if (playerDataOldFile.exists()) { + playerDataOldFile.delete(); + } } private void deleteAuthMePlayerData(UUID playerUUID) { From 57be7b2dfeac13afb3fab7f689819d34ee438c5b Mon Sep 17 00:00:00 2001 From: HaHaWTH Date: Sun, 31 Mar 2024 01:22:25 +0800 Subject: [PATCH 03/25] Remove stupid warnings on Velocity --- src/main/java/fr/xephi/authme/settings/SettingsWarner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/xephi/authme/settings/SettingsWarner.java b/src/main/java/fr/xephi/authme/settings/SettingsWarner.java index b12f84ef..c63ffe71 100644 --- a/src/main/java/fr/xephi/authme/settings/SettingsWarner.java +++ b/src/main/java/fr/xephi/authme/settings/SettingsWarner.java @@ -61,7 +61,7 @@ public class SettingsWarner { // Warn if spigot.yml has settings.bungeecord set to true but config.yml has Hooks.bungeecord set to false if (isTrue(bukkitService.isBungeeCordConfiguredForSpigot()) - && !settings.getProperty(HooksSettings.BUNGEECORD)) { + && !settings.getProperty(HooksSettings.BUNGEECORD) && !settings.getProperty(HooksSettings.VELOCITY)) { logger.warning("Note: Hooks.bungeecord is set to false but your server appears to be running in" + " bungeecord mode (see your spigot.yml). In order to allow the datasource caching and the" + " AuthMeBungee add-on to work properly you have to enable this option!"); From d9c04a58c0a9c13f87c2394ea1ebeb9566215f3e Mon Sep 17 00:00:00 2001 From: lilingfengdev <145678359+lilingfengdev@users.noreply.github.com> Date: Sun, 31 Mar 2024 12:07:37 +0800 Subject: [PATCH 04/25] Create README-zh.md --- README-zh.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 README-zh.md diff --git a/README-zh.md b/README-zh.md new file mode 100644 index 00000000..5528d7cf --- /dev/null +++ b/README-zh.md @@ -0,0 +1,49 @@ +# AuthMeReReloaded +**"Bukkit modding API 的最佳身份验证插件的分支!"** + +![Graph](https://bstats.org/signatures/bukkit/AuthMeReloaded-Fork.svg) +

+ Code size + GitHub repo size + CodeFactor + Downloads +

+ +**详细改动:** + 1. 改进邮件发送逻辑,支持更多邮件 + 2. 关闭邮件发送(当服务器关闭时,向您发送邮件) + 3. 原有漏洞修复 + 4. 反幽灵播放器(双倍登录错误) + 5. 按服务器品牌使用最佳性能方法 + 6. 基岩兼容性(需要洪水门)(基于 UUID) + 7. 更新检查器 + 8. 集成 GUI 验证码功能(需要 Bedrock 兼容性和 ProtocolLib)(70% 异步) + 9. 改进监听器 + 10. 改进玩家登录逻辑以减少延迟 + 11. 自动清除机器人数据 + 12. 支持**Folia(正在测试中)** + 13. 手动菜单兼容性(太神奇了) + 14. 自动修复门户卡住问题 + 15. 床岩玩家自动登录(可配置) + 16. 修复旧版本(MC 1.13-)中的 "舒克盒子 "崩溃问题 + 17. 支持 **H2 数据库** + 18. **100% 兼容原版 authme 和扩展** + 19. 更多...... + +**下载链接:** +[发布](https://github.com/HaHaWTH/AuthMeReReloaded/releases/latest) +[操作(开发版,使用风险自负!)](https://github.com/HaHaWTH/AuthMeReReloaded/actions/workflows/maven.yml) + +如果您的服务器使用 FRP(内网穿透),此插件可能会有所帮助 [HAProxy-Detector](https://github.com/HaHaWTH/HAProxy-Detector) + +**欢迎提出请求和建议! ** + + + + Star History Chart + From 49c515169e97346f2b3ce9063ff77c515c8db836 Mon Sep 17 00:00:00 2001 From: lilingfengdev <145678359+lilingfengdev@users.noreply.github.com> Date: Sun, 31 Mar 2024 12:10:34 +0800 Subject: [PATCH 05/25] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-zh.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README-zh.md b/README-zh.md index 5528d7cf..9b9b3709 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ # AuthMeReReloaded -**"Bukkit modding API 的最佳身份验证插件的分支!"** +**"Bukkit 的最佳身份验证插件的分支!"** ![Graph](https://bstats.org/signatures/bukkit/AuthMeReloaded-Fork.svg)

@@ -13,9 +13,9 @@ 1. 改进邮件发送逻辑,支持更多邮件 2. 关闭邮件发送(当服务器关闭时,向您发送邮件) 3. 原有漏洞修复 - 4. 反幽灵播放器(双倍登录错误) - 5. 按服务器品牌使用最佳性能方法 - 6. 基岩兼容性(需要洪水门)(基于 UUID) + 4. 反幽灵玩家(重复登录错误) + 5. 按服务器分支使用最佳性能方法 + 6. 基岩兼容性(需要Floodgate)(基于 UUID) 7. 更新检查器 8. 集成 GUI 验证码功能(需要 Bedrock 兼容性和 ProtocolLib)(70% 异步) 9. 改进监听器 @@ -23,9 +23,9 @@ 11. 自动清除机器人数据 12. 支持**Folia(正在测试中)** 13. 手动菜单兼容性(太神奇了) - 14. 自动修复门户卡住问题 - 15. 床岩玩家自动登录(可配置) - 16. 修复旧版本(MC 1.13-)中的 "舒克盒子 "崩溃问题 + 14. 自动修复传送卡住问题 + 15. Bedrock 玩家自动登录(可配置) + 16. 修复旧版本(MC 1.13-)中的 "潜影盒 "崩溃问题 17. 支持 **H2 数据库** 18. **100% 兼容原版 authme 和扩展** 19. 更多...... From bfc21970890839db5df25e7249cad58a9405d1f4 Mon Sep 17 00:00:00 2001 From: lilingfengdev <145678359+lilingfengdev@users.noreply.github.com> Date: Sun, 31 Mar 2024 12:16:19 +0800 Subject: [PATCH 06/25] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 94895924..d51c0c05 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # AuthMeReReloaded **"A fork of the best authentication plugin for the Bukkit modding API!⭐"** +[English](https://github.com/HaHaWTH/AuthMeReReloaded) | [简体中文](https://github.com/HaHaWTH/AuthMeReReloaded/blob/master/README-zh.md) + ![Graph](https://bstats.org/signatures/bukkit/AuthMeReloaded-Fork.svg)

Code size From 26b3b3ea788c2ade76659ff910fad78f211f4194 Mon Sep 17 00:00:00 2001 From: DGun Otto Date: Sun, 31 Mar 2024 13:08:42 +0800 Subject: [PATCH 07/25] Update README-zh.md --- README-zh.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README-zh.md b/README-zh.md index 9b9b3709..be5a4208 100644 --- a/README-zh.md +++ b/README-zh.md @@ -22,21 +22,21 @@ 10. 改进玩家登录逻辑以减少延迟 11. 自动清除机器人数据 12. 支持**Folia(正在测试中)** - 13. 手动菜单兼容性(太神奇了) - 14. 自动修复传送卡住问题 - 15. Bedrock 玩家自动登录(可配置) + 13. F键菜单兼容 + 14. 自动修复传送卡传送门/地底问题 + 15. 基岩版玩家自动登录(可配置) 16. 修复旧版本(MC 1.13-)中的 "潜影盒 "崩溃问题 17. 支持 **H2 数据库** 18. **100% 兼容原版 authme 和扩展** 19. 更多...... **下载链接:** -[发布](https://github.com/HaHaWTH/AuthMeReReloaded/releases/latest) -[操作(开发版,使用风险自负!)](https://github.com/HaHaWTH/AuthMeReReloaded/actions/workflows/maven.yml) +[Release](https://github.com/HaHaWTH/AuthMeReReloaded/releases/latest) +[Actions(开发版,使用风险自负!)](https://github.com/HaHaWTH/AuthMeReReloaded/actions/workflows/maven.yml) 如果您的服务器使用 FRP(内网穿透),此插件可能会有所帮助 [HAProxy-Detector](https://github.com/HaHaWTH/HAProxy-Detector) -**欢迎提出请求和建议! ** +**欢迎提出请求和建议!** Date: Mon, 1 Apr 2024 00:39:43 +0800 Subject: [PATCH 08/25] [ci skip] Update README --- README-zh.md | 12 +++++++----- README.md | 14 ++++++++------ vc-support.md | 27 +++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 11 deletions(-) create mode 100644 vc-support.md diff --git a/README-zh.md b/README-zh.md index be5a4208..df5376b2 100644 --- a/README-zh.md +++ b/README-zh.md @@ -24,11 +24,13 @@ 12. 支持**Folia(正在测试中)** 13. F键菜单兼容 14. 自动修复传送卡传送门/地底问题 - 15. 基岩版玩家自动登录(可配置) - 16. 修复旧版本(MC 1.13-)中的 "潜影盒 "崩溃问题 - 17. 支持 **H2 数据库** - 18. **100% 兼容原版 authme 和扩展** - 19. 更多...... + 15. **Velocity支持 (详见 [Velocity Support](./vc-support.md))** + 16. 基岩版玩家自动登录(可配置) + 17. 修复旧版本(MC 1.13-)中的 "潜影盒 "崩溃问题 + 18. 支持 **H2 数据库** + 19. 虚拟线程支持 + 20. **100% 兼容原版 authme 和扩展** + 21. 更多...... **下载链接:** [Release](https://github.com/HaHaWTH/AuthMeReReloaded/releases/latest) diff --git a/README.md b/README.md index d51c0c05..33e6a388 100644 --- a/README.md +++ b/README.md @@ -25,12 +25,14 @@ 11. Automatically purge bot data 12. **Folia support (in active testing)** 13. Offhand Menu compatibility(Thats amazing) - 14. Automatically fix portal stuck issue - 15. Automatically login for Bedrock players(configurable) - 16. Fix shulker box crash bug on legacy versions(MC 1.13-) - 17. **H2 database support** - 18. **100% compatibility with original authme and extensions** - 19. More...... + 14. **Velocity support (See [Velocity Support](./vc-support.md))** + 15. Support Virtual Threads caching + 16. Automatically fix portal stuck issue + 17. Automatically login for Bedrock players(configurable) + 18. Fix shulker box crash bug on legacy versions(MC 1.13-) + 19. **H2 database support** + 20. **100% compatibility with original authme and extensions** + 21. More...... **Download links:** [Releases](https://github.com/HaHaWTH/AuthMeReReloaded/releases/latest) diff --git a/vc-support.md b/vc-support.md new file mode 100644 index 00000000..4b840e0a --- /dev/null +++ b/vc-support.md @@ -0,0 +1,27 @@ +## About Velocity support + +**AuthMeReReloaded offers integrated support for Velocity since b46, in order to use, please follow the instructions below.** + + +### Step 1: Enable Velocity hook in config.yml + +```yaml +Hooks: + # Do we need to hook with Velocity? + velocity: true # Set this to true +``` +**Then restart your server if you have done so.** + +### Step 2: Configure backend server and proxy + +**Before we can continue, you need to configure your Velocity proxy forwarding method following [PaperMC's instructions](https://docs.papermc.io/velocity/player-information-forwarding#configuring-modern-forwarding).** + +### Step 3: Install AuthMeVelocity on the Proxy + +AuthMeVelocity is a plugin that allows Velocity to forward player information to AuthMeReloaded. + +**Only install it on the proxy, not on the backend server.** + +**You can download it from [Modrinth](https://modrinth.com/plugin/authmevelocity).** + +**Then configure follow its instructions.** From 5e91ee98446c3454abcaa19000f31a440add8fa0 Mon Sep 17 00:00:00 2001 From: HaHaWTH Date: Mon, 1 Apr 2024 00:46:46 +0800 Subject: [PATCH 09/25] B46 release --- src/main/java/fr/xephi/authme/AuthMe.java | 2 +- src/main/resources/plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java index 82951bfc..82299d1f 100644 --- a/src/main/java/fr/xephi/authme/AuthMe.java +++ b/src/main/java/fr/xephi/authme/AuthMe.java @@ -80,7 +80,7 @@ public class AuthMe extends JavaPlugin { // Version and build number values private static String pluginVersion = "5.6.0-Fork"; private static final String pluginBuild = "b"; - private static String pluginBuildNumber = "45"; + private static String pluginBuildNumber = "46"; // Private instances private EmailService emailService; private CommandHandler commandHandler; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index a80a6371..30371bfb 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -4,7 +4,7 @@ website: http://github.com/HaHaWTH/AuthMeReReloaded/ description: A fork of AuthMeReloaded that contains bug fixes main: ${pluginDescription.main} folia-supported: true -version: 5.6.0-FORK-b45 +version: 5.6.0-FORK-b46 api-version: 1.13 softdepend: - Vault From abb85f005dffb9469bf33540c6952ac98a566b92 Mon Sep 17 00:00:00 2001 From: HaHaWTH Date: Tue, 2 Apr 2024 01:23:53 +0800 Subject: [PATCH 10/25] Delayed more --- .../java/fr/xephi/authme/process/join/AsynchronousJoin.java | 2 +- .../java/fr/xephi/authme/process/login/AsynchronousLogin.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java b/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java index 34e9ef43..b296a059 100644 --- a/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java +++ b/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java @@ -161,7 +161,7 @@ public class AsynchronousJoin implements AsynchronousProcess { } if (velocitySender.isEnabled()) { bukkitService.scheduleSyncDelayedTask(() -> - velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), 5L); + velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), 10L); } return; } diff --git a/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java b/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java index 87cf85ba..9800f554 100644 --- a/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java +++ b/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java @@ -314,7 +314,7 @@ public class AsynchronousLogin implements AsynchronousProcess { } if (velocitySender.isEnabled()) { bukkitService.scheduleSyncDelayedTask(() -> - velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), 5L); + velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), 10L); } // As the scheduling executes the Task most likely after the current From 73c11160470eb1e9a7b336dc98f84e14f5e8c47e Mon Sep 17 00:00:00 2001 From: HaHaWTH Date: Tue, 2 Apr 2024 01:27:58 +0800 Subject: [PATCH 11/25] Delayed more --- .../authme/listener/BedrockAutoLoginListener.java | 12 +++++++----- .../java/fr/xephi/authme/service/BukkitService.java | 4 ++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/fr/xephi/authme/listener/BedrockAutoLoginListener.java b/src/main/java/fr/xephi/authme/listener/BedrockAutoLoginListener.java index 52d39daa..9a0adfb3 100644 --- a/src/main/java/fr/xephi/authme/listener/BedrockAutoLoginListener.java +++ b/src/main/java/fr/xephi/authme/listener/BedrockAutoLoginListener.java @@ -39,14 +39,16 @@ public class BedrockAutoLoginListener implements Listener { return settings.getProperty(HooksSettings.HOOK_FLOODGATE_PLAYER) && settings.getProperty(SecuritySettings.FORCE_LOGIN_BEDROCK) && org.geysermc.floodgate.api.FloodgateApi.getInstance().isFloodgateId(uuid) && getServer().getPluginManager().getPlugin("floodgate") != null; } - @EventHandler(priority = EventPriority.HIGHEST) + @EventHandler(priority = EventPriority.MONITOR) public void onPlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); String name = event.getPlayer().getName(); UUID uuid = event.getPlayer().getUniqueId(); - if (isBedrockPlayer(uuid) && !authmeApi.isAuthenticated(player) && authmeApi.isRegistered(name)) { - authmeApi.forceLogin(player); - messages.send(player, MessageKey.BEDROCK_AUTO_LOGGED_IN); - } + bukkitService.runTaskLater(player, () -> { + if (isBedrockPlayer(uuid) && !authmeApi.isAuthenticated(player) && authmeApi.isRegistered(name)) { + authmeApi.forceLogin(player); + messages.send(player, MessageKey.BEDROCK_AUTO_LOGGED_IN); + } + },20L); } } diff --git a/src/main/java/fr/xephi/authme/service/BukkitService.java b/src/main/java/fr/xephi/authme/service/BukkitService.java index 19d08c10..002ca9fa 100644 --- a/src/main/java/fr/xephi/authme/service/BukkitService.java +++ b/src/main/java/fr/xephi/authme/service/BukkitService.java @@ -167,6 +167,10 @@ public class BukkitService implements SettingsDependent { return getScheduler().runTaskLater(task, delay); } + public MyScheduledTask runTaskLater(Entity entity, Runnable task, long delay) { + return getScheduler().runTaskLater(entity, task, delay); + } + /** * Schedules this task to run asynchronously or immediately executes it based on * AuthMe's configuration. From 54cef57ea5ff26c9afab4e8695beff47586eba1f Mon Sep 17 00:00:00 2001 From: HaHaWTH Date: Tue, 2 Apr 2024 17:34:03 +0800 Subject: [PATCH 12/25] Configurable send delay --- .../fr/xephi/authme/process/join/AsynchronousJoin.java | 8 ++++++-- .../fr/xephi/authme/process/login/AsynchronousLogin.java | 8 +++++--- .../xephi/authme/settings/properties/HooksSettings.java | 6 ++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java b/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java index b296a059..ed723f7b 100644 --- a/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java +++ b/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java @@ -19,6 +19,7 @@ import fr.xephi.authme.service.bungeecord.BungeeSender; import fr.xephi.authme.service.bungeecord.MessageType; import fr.xephi.authme.service.velocity.VMessageType; import fr.xephi.authme.service.velocity.VelocitySender; +import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.commandconfig.CommandManager; import fr.xephi.authme.settings.properties.HooksSettings; import fr.xephi.authme.settings.properties.RegistrationSettings; @@ -47,6 +48,9 @@ public class AsynchronousJoin implements AsynchronousProcess { @Inject private Server server; + @Inject + private Settings settings; + @Inject private DataSource database; @@ -157,11 +161,11 @@ public class AsynchronousJoin implements AsynchronousProcess { // As described at https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/ // "Keep in mind that you can't send plugin messages directly after a player joins." bukkitService.scheduleSyncDelayedTask(() -> - bungeeSender.sendAuthMeBungeecordMessage(player, MessageType.LOGIN), 5L); + bungeeSender.sendAuthMeBungeecordMessage(player, MessageType.LOGIN), settings.getProperty(HooksSettings.PROXY_SEND_DELAY)); } if (velocitySender.isEnabled()) { bukkitService.scheduleSyncDelayedTask(() -> - velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), 10L); + velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), settings.getProperty(HooksSettings.PROXY_SEND_DELAY)); } return; } diff --git a/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java b/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java index 9800f554..12ed97a0 100644 --- a/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java +++ b/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java @@ -28,6 +28,7 @@ import fr.xephi.authme.service.bungeecord.BungeeSender; import fr.xephi.authme.service.bungeecord.MessageType; import fr.xephi.authme.service.velocity.VMessageType; import fr.xephi.authme.service.velocity.VelocitySender; +import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.DatabaseSettings; import fr.xephi.authme.settings.properties.EmailSettings; import fr.xephi.authme.settings.properties.HooksSettings; @@ -83,7 +84,8 @@ public class AsynchronousLogin implements AsynchronousProcess { @Inject private SessionService sessionService; - + @Inject + private Settings settings; @Inject private BungeeSender bungeeSender; @Inject @@ -310,11 +312,11 @@ public class AsynchronousLogin implements AsynchronousProcess { // As described at https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/ // "Keep in mind that you can't send plugin messages directly after a player joins." bukkitService.scheduleSyncDelayedTask(() -> - bungeeSender.sendAuthMeBungeecordMessage(player, MessageType.LOGIN), 5L); + bungeeSender.sendAuthMeBungeecordMessage(player, MessageType.LOGIN), settings.getProperty(HooksSettings.PROXY_SEND_DELAY)); } if (velocitySender.isEnabled()) { bukkitService.scheduleSyncDelayedTask(() -> - velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), 10L); + velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), settings.getProperty(HooksSettings.PROXY_SEND_DELAY)); } // As the scheduling executes the Task most likely after the current diff --git a/src/main/java/fr/xephi/authme/settings/properties/HooksSettings.java b/src/main/java/fr/xephi/authme/settings/properties/HooksSettings.java index 9a8ddadd..08c91c6a 100644 --- a/src/main/java/fr/xephi/authme/settings/properties/HooksSettings.java +++ b/src/main/java/fr/xephi/authme/settings/properties/HooksSettings.java @@ -22,6 +22,12 @@ public final class HooksSettings implements SettingsHolder { public static final Property VELOCITY = newProperty("Hooks.velocity", false); + @Comment({"How many ticks should we wait before sending login info to proxy?", + "Change this to higher if your player has high ping.", + "See: https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/"}) + public static final Property PROXY_SEND_DELAY = + newProperty("Hooks.proxySendDelay", 10L); + @Comment({"Hook into floodgate.", "This must be true if you want to use other bedrock features." }) From 71a9c0c98f81d67db426723bf8b2a9fdc25ec39c Mon Sep 17 00:00:00 2001 From: DGun Otto Date: Tue, 2 Apr 2024 19:59:44 +0800 Subject: [PATCH 13/25] [ci skip] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 33e6a388..28b4c3f5 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,10 @@ Code size GitHub repo size CodeFactor - Downloads + GitHub Downloads (all assets, all releases) + Spiget Downloads + Modrinth Downloads + Hangar Downloads

**Detailed Changes:** From ec2e8d3654e11a0da2c8b7827602614ef327a50b Mon Sep 17 00:00:00 2001 From: DGun Otto Date: Tue, 2 Apr 2024 20:14:50 +0800 Subject: [PATCH 14/25] [ci skip] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 18464fe5..67e2beb9 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -47,8 +47,10 @@ body: description: Which server implementation are you using? multiple: false options: - - Standalone server (no proxy) + - Standalone(Spigot) + - Standalone(Folia) - BungeeCord + - Velocity validations: required: true @@ -60,6 +62,9 @@ body: options: - SQLite - MySQL + - H2 + - MariaDB + - PostgreSQL validations: required: true From 9938df3c28874b4f4d6a8875dd8977295ec0c67d Mon Sep 17 00:00:00 2001 From: DGun Otto Date: Tue, 2 Apr 2024 20:16:08 +0800 Subject: [PATCH 15/25] [ci skip] Update feature_request.yml --- .github/ISSUE_TEMPLATE/feature_request.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index cbb688c0..df46beec 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -1,6 +1,6 @@ name: Feature request description: Suggest an idea for AuthMe -labels: 'Type: enhancement' +labels: 'enhancement' body: - type: markdown From 22586e601f6a0d9993a55f357f057f337338fbf2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Apr 2024 05:02:43 +0000 Subject: [PATCH 16/25] Bump org.jacoco:jacoco-maven-plugin from 0.8.11 to 0.8.12 Bumps [org.jacoco:jacoco-maven-plugin](https://github.com/jacoco/jacoco) from 0.8.11 to 0.8.12. - [Release notes](https://github.com/jacoco/jacoco/releases) - [Commits](https://github.com/jacoco/jacoco/compare/v0.8.11...v0.8.12) --- updated-dependencies: - dependency-name: org.jacoco:jacoco-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6d004242..4917f8bc 100644 --- a/pom.xml +++ b/pom.xml @@ -222,7 +222,7 @@ org.jacoco jacoco-maven-plugin - 0.8.11 + 0.8.12 pre-unit-test From 5e54b8b10572f72e83e96fa5584fe17ec06646b3 Mon Sep 17 00:00:00 2001 From: HaHaWTH Date: Wed, 3 Apr 2024 13:55:42 +0800 Subject: [PATCH 17/25] Update build --- .github/workflows/maven.yml | 2 +- pom.xml | 59 +++++++++---------------------------- 2 files changed, 15 insertions(+), 46 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 06408062..c0190ee1 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -25,7 +25,7 @@ jobs: uses: actions/upload-artifact@v3.1.2 with: name: Download - path: ./target/AuthMe-5.6.0-FORK-Spigot-Universal.jar + path: ./target/AuthMe-5.6.0-FORK-Universal.jar runtime-test: name: Plugin Runtime Test needs: [Build] diff --git a/pom.xml b/pom.xml index 4917f8bc..210be151 100644 --- a/pom.xml +++ b/pom.xml @@ -82,54 +82,11 @@ sgdc3, games647, Hex3l, krusic22 - - - - - jenkins - - - env.BUILD_NUMBER - - - - ${env.BUILD_NUMBER} - - - - - skipLongHashTests - - - skipLongHashTests - - - - true - - - - - skipJavadocGeneration - - - - org.apache.maven.plugins - maven-javadoc-plugin - - true - - - - - - clean package ${project.finalNameBase}-noshade - . @@ -308,6 +265,7 @@ shade + ${project.finalNameBase}-Lite @@ -318,7 +276,7 @@ com.google.j2objc:j2objc-annotations com.google.code.gson:gson - + @@ -366,6 +324,17 @@ fr.xephi.authme.libs.com.github.benmanes.caffeine + + + *:* + + GeoLite2-Country.mmdb + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + @@ -375,7 +344,7 @@ shade - ${project.finalNameBase}-Spigot-Universal + ${project.finalNameBase}-Universal com.google.common From 948736b5ea103fd47ed399e675e0e674598e40b7 Mon Sep 17 00:00:00 2001 From: HaHaWTH Date: Wed, 3 Apr 2024 16:11:06 +0800 Subject: [PATCH 18/25] Merge upstream pull request #2777 --- .../fr/xephi/authme/datasource/MySQL.java | 17 +++++++++++++---- .../settings/properties/DatabaseSettings.java | 19 +++++++++++++++---- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/main/java/fr/xephi/authme/datasource/MySQL.java b/src/main/java/fr/xephi/authme/datasource/MySQL.java index 0a3fcd43..9a1cf216 100644 --- a/src/main/java/fr/xephi/authme/datasource/MySQL.java +++ b/src/main/java/fr/xephi/authme/datasource/MySQL.java @@ -41,6 +41,7 @@ public class MySQL extends AbstractSqlDataSource { private boolean useSsl; private boolean serverCertificateVerification; private boolean allowPublicKeyRetrieval; + private String mariaDbSslMode; private String host; private String port; private String username; @@ -121,6 +122,7 @@ public class MySQL extends AbstractSqlDataSource { this.useSsl = settings.getProperty(DatabaseSettings.MYSQL_USE_SSL); this.serverCertificateVerification = settings.getProperty(DatabaseSettings.MYSQL_CHECK_SERVER_CERTIFICATE); this.allowPublicKeyRetrieval = settings.getProperty(DatabaseSettings.MYSQL_ALLOW_PUBLIC_KEY_RETRIEVAL); + this.mariaDbSslMode = settings.getProperty(DatabaseSettings.MARIADB_SSL_MODE); } /** @@ -145,12 +147,19 @@ public class MySQL extends AbstractSqlDataSource { ds.setDriverClassName(this.getDriverClassName()); // Request mysql over SSL - ds.addDataSourceProperty("useSSL", String.valueOf(useSsl)); + if (this instanceof MariaDB) { + ds.addDataSourceProperty("sslMode", mariaDbSslMode); + } else { + ds.addDataSourceProperty("useSSL", String.valueOf(useSsl)); + + // Disabling server certificate verification on need + if (!serverCertificateVerification) { + ds.addDataSourceProperty("verifyServerCertificate", String.valueOf(false)); + } + } + // Disabling server certificate verification on need - if (!serverCertificateVerification) { - ds.addDataSourceProperty("verifyServerCertificate", String.valueOf(false)); - } // Disabling server certificate verification on need if (allowPublicKeyRetrieval) { ds.addDataSourceProperty("allowPublicKeyRetrieval", String.valueOf(true)); } diff --git a/src/main/java/fr/xephi/authme/settings/properties/DatabaseSettings.java b/src/main/java/fr/xephi/authme/settings/properties/DatabaseSettings.java index 3b799b3a..6103183d 100644 --- a/src/main/java/fr/xephi/authme/settings/properties/DatabaseSettings.java +++ b/src/main/java/fr/xephi/authme/settings/properties/DatabaseSettings.java @@ -31,7 +31,17 @@ public final class DatabaseSettings implements SettingsHolder { public static final Property MYSQL_PORT = newProperty("DataSource.mySQLPort", "3306"); - @Comment("Connect to MySQL database over SSL") + @Comment({"Replacement of Mysql's useSsl (for MariaDB only).", + "- disable: No SSL", + "- trust: Trust blindly (no validation)", + "- verify_ca: Encryption, certificates validation, BUT no hostname verification", + "- verify_full: Encryption, certificate validation and hostname validation", + "Read more: https://bit.ly/mariadb-sslmode"}) + public static final Property MARIADB_SSL_MODE = + newProperty("DataSource.MariaDbSslMode", "disabled"); + + @Comment({"Connect to MySQL database over SSL", + "If you're using MariaDB, use sslMode instead"}) public static final Property MYSQL_USE_SSL = newProperty("DataSource.mySQLUseSSL", true); @@ -39,12 +49,13 @@ public final class DatabaseSettings implements SettingsHolder { "We would not recommend to set this option to false.", "Set this option to false at your own risk if and only if you know what you're doing"}) public static final Property MYSQL_CHECK_SERVER_CERTIFICATE = - newProperty( "DataSource.mySQLCheckServerCertificate", true ); + newProperty( "DataSource.mySQLCheckServerCertificate", true); @Comment({"Authorize client to retrieve RSA server public key.", - "Advanced option, ignore if you don't know what it means."}) + "Advanced option, ignore if you don't know what it means.", + "If you are using MariaDB, use MariaDbSslMode instead."}) public static final Property MYSQL_ALLOW_PUBLIC_KEY_RETRIEVAL = - newProperty( "DataSource.mySQLAllowPublicKeyRetrieval", true ); + newProperty( "DataSource.mySQLAllowPublicKeyRetrieval", true); @Comment("Username to connect to the MySQL database") public static final Property MYSQL_USERNAME = From 74633937bc72bb39c1217d7b535a8c92c0c214c9 Mon Sep 17 00:00:00 2001 From: HaHaWTH Date: Wed, 3 Apr 2024 16:40:37 +0800 Subject: [PATCH 19/25] Revert stupid changes made by the original upstream --- .../executable/register/RegisterCommand.java | 19 ++++++++----------- .../properties/RegistrationSettings.java | 10 ++++++++++ 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java b/src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java index d2185491..29e98333 100644 --- a/src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java @@ -15,6 +15,7 @@ import fr.xephi.authme.process.register.executors.PasswordRegisterParams; import fr.xephi.authme.process.register.executors.RegistrationMethod; import fr.xephi.authme.process.register.executors.TwoFactorRegisterParams; import fr.xephi.authme.security.HashAlgorithm; +import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.service.CommonService; import fr.xephi.authme.service.ValidationService; import fr.xephi.authme.settings.properties.EmailSettings; @@ -24,8 +25,6 @@ import org.bukkit.entity.Player; import javax.inject.Inject; import java.util.List; -import java.util.Timer; -import java.util.TimerTask; import static fr.xephi.authme.process.register.RegisterSecondaryArgument.CONFIRMATION; import static fr.xephi.authme.process.register.RegisterSecondaryArgument.EMAIL_MANDATORY; @@ -46,6 +45,9 @@ public class RegisterCommand extends PlayerCommand { @Inject private CommonService commonService; + @Inject + private BukkitService bukkitService; + @Inject private DataSource dataSource; @@ -175,20 +177,15 @@ public class RegisterCommand extends PlayerCommand { } else if (isSecondArgValidForEmailRegistration(player, arguments)) { management.performRegister(RegistrationMethod.EMAIL_REGISTRATION, EmailRegisterParams.of(player, email)); - Timer timer = new Timer(); - timer.schedule(new TimerTask() { - @Override - public void run() { + if (commonService.getProperty(RegistrationSettings.UNREGISTER_ON_EMAIL_VERIFICATION_FAILURE) && commonService.getProperty(RegistrationSettings.UNREGISTER_AFTER_MINUTES) > 0) { + bukkitService.runTaskLater(player, () -> { if (dataSource.getAuth(player.getName()) != null) { if (dataSource.getAuth(player.getName()).getLastLogin() == null) { management.performUnregisterByAdmin(null, player.getName(), player); - timer.cancel(); } - } else { - timer.cancel(); } - } - }, 600000); + }, 60 * 20 * commonService.getProperty(RegistrationSettings.UNREGISTER_AFTER_MINUTES)); + } } } diff --git a/src/main/java/fr/xephi/authme/settings/properties/RegistrationSettings.java b/src/main/java/fr/xephi/authme/settings/properties/RegistrationSettings.java index ccf83cda..b15132d5 100644 --- a/src/main/java/fr/xephi/authme/settings/properties/RegistrationSettings.java +++ b/src/main/java/fr/xephi/authme/settings/properties/RegistrationSettings.java @@ -46,6 +46,16 @@ public final class RegistrationSettings implements SettingsHolder { newProperty(RegisterSecondaryArgument.class, "settings.registration.secondArg", RegisterSecondaryArgument.CONFIRMATION); + @Comment({ + "Should we unregister the player when he didn't verify the email?", + "This only works if you enabled email registration."}) + public static final Property UNREGISTER_ON_EMAIL_VERIFICATION_FAILURE = + newProperty("settings.registration.email.unregisterOnEmailVerificationFailure", false); + + @Comment({"How many minutes should we wait before unregister the player", + "when he didn't verify the email?"}) + public static final Property UNREGISTER_AFTER_MINUTES = + newProperty("settings.registration.email.unregisterAfterMinutes", 10L); @Comment({ "Do we force kick a player after a successful registration?", "Do not use with login feature below"}) From 555514f7ddaa04a19b9e2a68bcacc0227ca8a3c4 Mon Sep 17 00:00:00 2001 From: HaHaWTH Date: Wed, 3 Apr 2024 19:02:19 +0800 Subject: [PATCH 20/25] Add warning for H2 database --- .../java/fr/xephi/authme/initialization/DataSourceProvider.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/fr/xephi/authme/initialization/DataSourceProvider.java b/src/main/java/fr/xephi/authme/initialization/DataSourceProvider.java index 3593e7ea..07211ef2 100644 --- a/src/main/java/fr/xephi/authme/initialization/DataSourceProvider.java +++ b/src/main/java/fr/xephi/authme/initialization/DataSourceProvider.java @@ -79,6 +79,7 @@ public class DataSourceProvider implements Provider { break; case H2: dataSource = new H2(settings, dataFolder); + logger.warning("You are using H2 database, which is still in development!\nMake sure to backup and report any issues you encounter on GitHub!"); break; default: throw new UnsupportedOperationException("Unknown data source type '" + dataSourceType + "'"); From dfa831770670ff6e7546a4896f3c0a2c037d9998 Mon Sep 17 00:00:00 2001 From: DGun Otto Date: Thu, 4 Apr 2024 13:21:27 +0800 Subject: [PATCH 21/25] Update workflows --- .github/workflows/maven.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index c0190ee1..3dbe4eae 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -10,7 +10,7 @@ jobs: Build: strategy: matrix: - jdkversion: [ 17 ] + jdkversion: [ 17, 21 ] runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -37,8 +37,8 @@ jobs: javaVersion: '8' - mcVersion: '1.12.2' javaVersion: '8' - - mcVersion: '1.20.2' - javaVersion: '20' + - mcVersion: '1.20.4' + javaVersion: '21' steps: - uses: HaHaWTH/minecraft-plugin-runtime-test@paper with: From d04a69f481547dc6bec2f634bee4e478621dbb8c Mon Sep 17 00:00:00 2001 From: DGun Otto Date: Thu, 4 Apr 2024 13:26:41 +0800 Subject: [PATCH 22/25] Update workflows --- .github/workflows/maven.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 3dbe4eae..2e53184b 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -37,8 +37,8 @@ jobs: javaVersion: '8' - mcVersion: '1.12.2' javaVersion: '8' - - mcVersion: '1.20.4' - javaVersion: '21' + - mcVersion: '1.20.1' + javaVersion: '17' steps: - uses: HaHaWTH/minecraft-plugin-runtime-test@paper with: From 6876a6dd9f20768e1356c6c42b198a23e1b59f8f Mon Sep 17 00:00:00 2001 From: DGun Otto Date: Thu, 4 Apr 2024 14:51:02 +0800 Subject: [PATCH 23/25] Update workflows --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 2e53184b..ac8b4818 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -10,7 +10,7 @@ jobs: Build: strategy: matrix: - jdkversion: [ 17, 21 ] + jdkversion: [ 17 ] runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 From 219a7a34934c0a273eed6977a25ee7a12ae69a0a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Apr 2024 04:57:38 +0000 Subject: [PATCH 24/25] Bump org.apache.maven.plugins:maven-source-plugin from 3.3.0 to 3.3.1 Bumps [org.apache.maven.plugins:maven-source-plugin](https://github.com/apache/maven-source-plugin) from 3.3.0 to 3.3.1. - [Commits](https://github.com/apache/maven-source-plugin/compare/maven-source-plugin-3.3.0...maven-source-plugin-3.3.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-source-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 210be151..318a64ce 100644 --- a/pom.xml +++ b/pom.xml @@ -239,7 +239,7 @@ org.apache.maven.plugins maven-source-plugin - 3.3.0 + 3.3.1 ${project.finalNameBase} From e9fd7fd80fd918923f8740f146085fcb804627af Mon Sep 17 00:00:00 2001 From: HaHaWTH Date: Sun, 7 Apr 2024 12:37:34 +0800 Subject: [PATCH 25/25] B47 release --- pom.xml | 1 - src/main/java/fr/xephi/authme/AuthMe.java | 2 +- src/main/resources/plugin.yml | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 210be151..bde6a4f7 100644 --- a/pom.xml +++ b/pom.xml @@ -328,7 +328,6 @@ *:* - GeoLite2-Country.mmdb META-INF/*.SF META-INF/*.DSA META-INF/*.RSA diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java index 82299d1f..4d3acdd5 100644 --- a/src/main/java/fr/xephi/authme/AuthMe.java +++ b/src/main/java/fr/xephi/authme/AuthMe.java @@ -80,7 +80,7 @@ public class AuthMe extends JavaPlugin { // Version and build number values private static String pluginVersion = "5.6.0-Fork"; private static final String pluginBuild = "b"; - private static String pluginBuildNumber = "46"; + private static String pluginBuildNumber = "47"; // Private instances private EmailService emailService; private CommandHandler commandHandler; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 30371bfb..b043c435 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -4,7 +4,7 @@ website: http://github.com/HaHaWTH/AuthMeReReloaded/ description: A fork of AuthMeReloaded that contains bug fixes main: ${pluginDescription.main} folia-supported: true -version: 5.6.0-FORK-b46 +version: 5.6.0-FORK-b47 api-version: 1.13 softdepend: - Vault