mirror of
https://github.com/AuthMe/AuthMeReloaded.git
synced 2024-11-28 21:25:44 +01:00
Second try
This commit is contained in:
parent
74b301870f
commit
9a59738b81
@ -20,6 +20,7 @@ import fr.xephi.authme.listener.PlayerListener19;
|
|||||||
import fr.xephi.authme.listener.PlayerListener19Spigot;
|
import fr.xephi.authme.listener.PlayerListener19Spigot;
|
||||||
import fr.xephi.authme.listener.ServerListener;
|
import fr.xephi.authme.listener.ServerListener;
|
||||||
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
||||||
|
import fr.xephi.authme.process.AsyncUserScheduler;
|
||||||
import fr.xephi.authme.security.crypts.Sha256;
|
import fr.xephi.authme.security.crypts.Sha256;
|
||||||
import fr.xephi.authme.service.BackupService;
|
import fr.xephi.authme.service.BackupService;
|
||||||
import fr.xephi.authme.service.BukkitService;
|
import fr.xephi.authme.service.BukkitService;
|
||||||
@ -67,6 +68,7 @@ public class AuthMe extends JavaPlugin {
|
|||||||
private Settings settings;
|
private Settings settings;
|
||||||
private DataSource database;
|
private DataSource database;
|
||||||
private BukkitService bukkitService;
|
private BukkitService bukkitService;
|
||||||
|
private AsyncUserScheduler asyncUserScheduler;
|
||||||
private Injector injector;
|
private Injector injector;
|
||||||
private BackupService backupService;
|
private BackupService backupService;
|
||||||
private ConsoleLogger logger;
|
private ConsoleLogger logger;
|
||||||
@ -250,6 +252,7 @@ public class AuthMe extends JavaPlugin {
|
|||||||
void instantiateServices(Injector injector) {
|
void instantiateServices(Injector injector) {
|
||||||
database = injector.getSingleton(DataSource.class);
|
database = injector.getSingleton(DataSource.class);
|
||||||
bukkitService = injector.getSingleton(BukkitService.class);
|
bukkitService = injector.getSingleton(BukkitService.class);
|
||||||
|
asyncUserScheduler = injector.getSingleton(AsyncUserScheduler.class);
|
||||||
commandHandler = injector.getSingleton(CommandHandler.class);
|
commandHandler = injector.getSingleton(CommandHandler.class);
|
||||||
backupService = injector.getSingleton(BackupService.class);
|
backupService = injector.getSingleton(BackupService.class);
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import fr.xephi.authme.data.auth.PlayerAuth;
|
|||||||
import fr.xephi.authme.datasource.DataSource;
|
import fr.xephi.authme.datasource.DataSource;
|
||||||
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
||||||
import fr.xephi.authme.message.MessageKey;
|
import fr.xephi.authme.message.MessageKey;
|
||||||
|
import fr.xephi.authme.process.AsyncUserScheduler;
|
||||||
import fr.xephi.authme.security.PasswordSecurity;
|
import fr.xephi.authme.security.PasswordSecurity;
|
||||||
import fr.xephi.authme.security.crypts.HashedPassword;
|
import fr.xephi.authme.security.crypts.HashedPassword;
|
||||||
import fr.xephi.authme.service.BukkitService;
|
import fr.xephi.authme.service.BukkitService;
|
||||||
@ -40,6 +41,9 @@ public class RegisterAdminCommand implements ExecutableCommand {
|
|||||||
@Inject
|
@Inject
|
||||||
private ValidationService validationService;
|
private ValidationService validationService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private AsyncUserScheduler asyncUserScheduler;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void executeCommand(final CommandSender sender, List<String> arguments) {
|
public void executeCommand(final CommandSender sender, List<String> arguments) {
|
||||||
// Get the player name and password
|
// Get the player name and password
|
||||||
@ -54,7 +58,7 @@ public class RegisterAdminCommand implements ExecutableCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bukkitService.runTaskOptionallyAsync(() -> {
|
asyncUserScheduler.runTask(playerName, () -> {
|
||||||
if (dataSource.isAuthAvailable(playerNameLowerCase)) {
|
if (dataSource.isAuthAvailable(playerNameLowerCase)) {
|
||||||
commonService.send(sender, MessageKey.NAME_ALREADY_REGISTERED);
|
commonService.send(sender, MessageKey.NAME_ALREADY_REGISTERED);
|
||||||
return;
|
return;
|
||||||
|
@ -5,6 +5,7 @@ import fr.xephi.authme.data.auth.PlayerAuth;
|
|||||||
import fr.xephi.authme.data.auth.PlayerCache;
|
import fr.xephi.authme.data.auth.PlayerCache;
|
||||||
import fr.xephi.authme.datasource.DataSource;
|
import fr.xephi.authme.datasource.DataSource;
|
||||||
import fr.xephi.authme.message.MessageKey;
|
import fr.xephi.authme.message.MessageKey;
|
||||||
|
import fr.xephi.authme.process.AsyncUserScheduler;
|
||||||
import fr.xephi.authme.service.BukkitService;
|
import fr.xephi.authme.service.BukkitService;
|
||||||
import fr.xephi.authme.service.CommonService;
|
import fr.xephi.authme.service.CommonService;
|
||||||
import fr.xephi.authme.service.ValidationService;
|
import fr.xephi.authme.service.ValidationService;
|
||||||
@ -33,6 +34,9 @@ public class SetEmailCommand implements ExecutableCommand {
|
|||||||
@Inject
|
@Inject
|
||||||
private ValidationService validationService;
|
private ValidationService validationService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private AsyncUserScheduler asyncUserScheduler;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void executeCommand(final CommandSender sender, List<String> arguments) {
|
public void executeCommand(final CommandSender sender, List<String> arguments) {
|
||||||
// Get the player name and email address
|
// Get the player name and email address
|
||||||
@ -45,9 +49,7 @@ public class SetEmailCommand implements ExecutableCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bukkitService.runTaskOptionallyAsync(new Runnable() {
|
asyncUserScheduler.runTask(playerName, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
// Validate the user
|
// Validate the user
|
||||||
PlayerAuth auth = dataSource.getAuth(playerName);
|
PlayerAuth auth = dataSource.getAuth(playerName);
|
||||||
if (auth == null) {
|
if (auth == null) {
|
||||||
@ -72,7 +74,6 @@ public class SetEmailCommand implements ExecutableCommand {
|
|||||||
|
|
||||||
// Show a status message
|
// Show a status message
|
||||||
commonService.send(sender, MessageKey.EMAIL_CHANGED_SUCCESS);
|
commonService.send(sender, MessageKey.EMAIL_CHANGED_SUCCESS);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -231,9 +231,11 @@ public class PlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (antiBotService.wasPlayerKicked(player.getName())) {
|
if (antiBotService.wasPlayerKicked(player.getName())) {
|
||||||
|
System.err.println(player.getName() + " QUIT PROCESS SKIPPED DUE TO ANTIBOT");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
System.err.println(player.getName() + " STARTING QUIT PROCESS DUE TO QUIT");
|
||||||
management.performQuit(player);
|
management.performQuit(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,6 +251,7 @@ public class PlayerListener implements Listener {
|
|||||||
|
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
if (!antiBotService.wasPlayerKicked(player.getName())) {
|
if (!antiBotService.wasPlayerKicked(player.getName())) {
|
||||||
|
System.err.println(player.getName() + " STARTING QUIT PROCESS DUE TO KICK");
|
||||||
management.performQuit(player);
|
management.performQuit(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,82 @@
|
|||||||
|
package fr.xephi.authme.process;
|
||||||
|
|
||||||
|
import fr.xephi.authme.service.BukkitService;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Queue;
|
||||||
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
public class AsyncUserScheduler {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private BukkitService bukkitService;
|
||||||
|
|
||||||
|
private KeyedSequentialScheduler<String> asyncUserScheduler;
|
||||||
|
|
||||||
|
AsyncUserScheduler() {
|
||||||
|
this.asyncUserScheduler = new KeyedSequentialScheduler<>(runnable ->
|
||||||
|
bukkitService.runTaskAsynchronously(runnable));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void runTask(String playerName, Runnable runnable) {
|
||||||
|
if (bukkitService.isUseAsyncTasks()) {
|
||||||
|
asyncUserScheduler.submit(playerName.toLowerCase(), runnable);
|
||||||
|
} else {
|
||||||
|
runnable.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void runTask(Player player, Runnable runnable) {
|
||||||
|
runTask(player.getName(), runnable);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class KeyedSequentialScheduler<K> {
|
||||||
|
private Map<K, SequentialExecutor> executors;
|
||||||
|
private Function<Runnable, BukkitTask> scheduler;
|
||||||
|
|
||||||
|
public KeyedSequentialScheduler(Function<Runnable, BukkitTask> scheduler) {
|
||||||
|
this.executors = new LinkedHashMap<>();
|
||||||
|
this.scheduler = scheduler;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void submit(K key, Runnable runnable) {
|
||||||
|
SequentialExecutor executor = executors.get(key);
|
||||||
|
if (executor == null) {
|
||||||
|
executor = new SequentialExecutor(scheduler, () -> executors.remove(key));
|
||||||
|
executors.put(key, executor);
|
||||||
|
}
|
||||||
|
executor.submit(runnable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SequentialExecutor {
|
||||||
|
private Queue<Runnable> queue;
|
||||||
|
private Function<Runnable, BukkitTask> scheduler;
|
||||||
|
private Runnable callback;
|
||||||
|
|
||||||
|
private BukkitTask executor;
|
||||||
|
|
||||||
|
public SequentialExecutor(Function<Runnable, BukkitTask> scheduler, Runnable callback) {
|
||||||
|
this.queue = new LinkedBlockingQueue<>();
|
||||||
|
this.scheduler = scheduler;
|
||||||
|
this.callback = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void submit(Runnable task) {
|
||||||
|
queue.add(task);
|
||||||
|
if (executor == null || executor.isCancelled()) {
|
||||||
|
executor = scheduler.apply(() -> {
|
||||||
|
while (!queue.isEmpty()) {
|
||||||
|
queue.poll().run();
|
||||||
|
}
|
||||||
|
callback.run();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -30,6 +30,8 @@ public class Management {
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private BukkitService bukkitService;
|
private BukkitService bukkitService;
|
||||||
|
@Inject
|
||||||
|
private AsyncUserScheduler asyncUserScheduler;
|
||||||
|
|
||||||
// Processes
|
// Processes
|
||||||
@Inject
|
@Inject
|
||||||
@ -51,115 +53,51 @@ public class Management {
|
|||||||
@Inject
|
@Inject
|
||||||
private AsyncChangePassword asyncChangePassword;
|
private AsyncChangePassword asyncChangePassword;
|
||||||
|
|
||||||
private KeyedSequentialScheduler<String> asyncUserScheduler;
|
|
||||||
|
|
||||||
Management() {
|
|
||||||
this.asyncUserScheduler = new KeyedSequentialScheduler<>(runnable ->
|
|
||||||
bukkitService.runTaskAsynchronously(runnable));
|
|
||||||
}
|
|
||||||
|
|
||||||
public class KeyedSequentialScheduler<K> {
|
|
||||||
private Map<K, SequentialExecutor> executors;
|
|
||||||
private Function<Runnable, BukkitTask> scheduler;
|
|
||||||
|
|
||||||
public KeyedSequentialScheduler(Function<Runnable, BukkitTask> scheduler) {
|
|
||||||
this.executors = new LinkedHashMap<>();
|
|
||||||
this.scheduler = scheduler;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void submit(K key, Runnable runnable) {
|
|
||||||
SequentialExecutor executor = executors.get(key);
|
|
||||||
if (executor == null) {
|
|
||||||
executor = new SequentialExecutor(scheduler, () -> executors.remove(key));
|
|
||||||
executors.put(key, executor);
|
|
||||||
}
|
|
||||||
executor.submit(runnable);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class SequentialExecutor {
|
|
||||||
private Queue<Runnable> queue;
|
|
||||||
private Function<Runnable, BukkitTask> scheduler;
|
|
||||||
private Runnable callback;
|
|
||||||
|
|
||||||
private BukkitTask executor;
|
|
||||||
|
|
||||||
public SequentialExecutor(Function<Runnable, BukkitTask> scheduler, Runnable callback) {
|
|
||||||
this.queue = new LinkedBlockingQueue<>();
|
|
||||||
this.scheduler = scheduler;
|
|
||||||
this.callback = callback;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void submit(Runnable task) {
|
|
||||||
queue.add(task);
|
|
||||||
if (executor == null || executor.isCancelled()) {
|
|
||||||
executor = scheduler.apply(() -> {
|
|
||||||
while (!queue.isEmpty()) {
|
|
||||||
queue.poll().run();
|
|
||||||
}
|
|
||||||
callback.run();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void performLogin(Player player, String password) {
|
public void performLogin(Player player, String password) {
|
||||||
runTask(player, () -> asynchronousLogin.login(player, password));
|
asyncUserScheduler.runTask(player, () -> asynchronousLogin.login(player, password));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void forceLogin(Player player) {
|
public void forceLogin(Player player) {
|
||||||
runTask(player, () -> asynchronousLogin.forceLogin(player));
|
asyncUserScheduler.runTask(player, () -> asynchronousLogin.forceLogin(player));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void performLogout(Player player) {
|
public void performLogout(Player player) {
|
||||||
runTask(player, () -> asynchronousLogout.logout(player));
|
asyncUserScheduler.runTask(player, () -> asynchronousLogout.logout(player));
|
||||||
}
|
}
|
||||||
|
|
||||||
public <P extends RegistrationParameters> void performRegister(RegistrationMethod<P> variant, P parameters) {
|
public <P extends RegistrationParameters> void performRegister(RegistrationMethod<P> variant, P parameters) {
|
||||||
runTask(parameters.getPlayer(), () -> asyncRegister.register(variant, parameters));
|
asyncUserScheduler.runTask(parameters.getPlayer(), () -> asyncRegister.register(variant, parameters));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void performUnregister(Player player, String password) {
|
public void performUnregister(Player player, String password) {
|
||||||
runTask(player, () -> asynchronousUnregister.unregister(player, password));
|
asyncUserScheduler.runTask(player, () -> asynchronousUnregister.unregister(player, password));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void performUnregisterByAdmin(CommandSender initiator, String name, Player player) {
|
public void performUnregisterByAdmin(CommandSender initiator, String name, Player player) {
|
||||||
runTask(name, () -> asynchronousUnregister.adminUnregister(initiator, name, player));
|
asyncUserScheduler.runTask(name, () -> asynchronousUnregister.adminUnregister(initiator, name, player));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void performJoin(Player player) {
|
public void performJoin(Player player) {
|
||||||
runTask(player, () -> asynchronousJoin.processJoin(player));
|
asyncUserScheduler.runTask(player, () -> asynchronousJoin.processJoin(player));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void performQuit(Player player) {
|
public void performQuit(Player player) {
|
||||||
runTask(player, () -> asynchronousQuit.processQuit(player));
|
asyncUserScheduler.runTask(player, () -> asynchronousQuit.processQuit(player));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void performAddEmail(Player player, String newEmail) {
|
public void performAddEmail(Player player, String newEmail) {
|
||||||
runTask(player, () -> asyncAddEmail.addEmail(player, newEmail));
|
asyncUserScheduler.runTask(player, () -> asyncAddEmail.addEmail(player, newEmail));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void performChangeEmail(Player player, String oldEmail, String newEmail) {
|
public void performChangeEmail(Player player, String oldEmail, String newEmail) {
|
||||||
runTask(player, () -> asyncChangeEmail.changeEmail(player, oldEmail, newEmail));
|
asyncUserScheduler.runTask(player, () -> asyncChangeEmail.changeEmail(player, oldEmail, newEmail));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void performPasswordChange(Player player, String oldPassword, String newPassword) {
|
public void performPasswordChange(Player player, String oldPassword, String newPassword) {
|
||||||
runTask(player, () -> asyncChangePassword.changePassword(player, oldPassword, newPassword));
|
asyncUserScheduler.runTask(player, () -> asyncChangePassword.changePassword(player, oldPassword, newPassword));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void performPasswordChangeAsAdmin(CommandSender sender, String playerName, String newPassword) {
|
public void performPasswordChangeAsAdmin(CommandSender sender, String playerName, String newPassword) {
|
||||||
runTask(playerName, () -> asyncChangePassword.changePasswordAsAdmin(sender, playerName, newPassword));
|
asyncUserScheduler.runTask(playerName, () -> asyncChangePassword.changePasswordAsAdmin(sender, playerName, newPassword));
|
||||||
}
|
|
||||||
|
|
||||||
private void runTask(String playerName, Runnable runnable) {
|
|
||||||
if (bukkitService.isUseAsyncTasks()) {
|
|
||||||
asyncUserScheduler.submit(playerName.toLowerCase(), runnable);
|
|
||||||
} else {
|
|
||||||
runnable.run();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void runTask(Player player, Runnable runnable) {
|
|
||||||
runTask(player.getName(), runnable);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import fr.xephi.authme.events.ProtectInventoryEvent;
|
|||||||
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
||||||
import fr.xephi.authme.message.MessageKey;
|
import fr.xephi.authme.message.MessageKey;
|
||||||
import fr.xephi.authme.permission.PlayerStatePermission;
|
import fr.xephi.authme.permission.PlayerStatePermission;
|
||||||
|
import fr.xephi.authme.process.AsyncUserScheduler;
|
||||||
import fr.xephi.authme.process.AsynchronousProcess;
|
import fr.xephi.authme.process.AsynchronousProcess;
|
||||||
import fr.xephi.authme.process.login.AsynchronousLogin;
|
import fr.xephi.authme.process.login.AsynchronousLogin;
|
||||||
import fr.xephi.authme.service.BukkitService;
|
import fr.xephi.authme.service.BukkitService;
|
||||||
@ -72,6 +73,9 @@ public class AsynchronousJoin implements AsynchronousProcess {
|
|||||||
@Inject
|
@Inject
|
||||||
private SessionService sessionService;
|
private SessionService sessionService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private AsyncUserScheduler asyncUserScheduler;
|
||||||
|
|
||||||
AsynchronousJoin() {
|
AsynchronousJoin() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,11 +126,12 @@ public class AsynchronousJoin implements AsynchronousProcess {
|
|||||||
|
|
||||||
// Session logic
|
// Session logic
|
||||||
if (sessionService.canResumeSession(player)) {
|
if (sessionService.canResumeSession(player)) {
|
||||||
|
logger.warning("SESSION LOGIN");
|
||||||
service.send(player, MessageKey.SESSION_RECONNECTION);
|
service.send(player, MessageKey.SESSION_RECONNECTION);
|
||||||
// Run commands
|
// Run commands
|
||||||
bukkitService.scheduleSyncTaskFromOptionallyAsyncTask(
|
bukkitService.scheduleSyncTaskFromOptionallyAsyncTask(
|
||||||
() -> commandManager.runCommandsOnSessionLogin(player));
|
() -> commandManager.runCommandsOnSessionLogin(player));
|
||||||
bukkitService.runTaskOptionallyAsync(() -> asynchronousLogin.forceLogin(player));
|
asyncUserScheduler.runTask(player, () -> asynchronousLogin.forceLogin(player));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (!service.getProperty(RegistrationSettings.FORCE)) {
|
} else if (!service.getProperty(RegistrationSettings.FORCE)) {
|
||||||
|
@ -112,8 +112,10 @@ public class AsynchronousLogin implements AsynchronousProcess {
|
|||||||
* @param player the player to log in
|
* @param player the player to log in
|
||||||
*/
|
*/
|
||||||
public void forceLogin(Player player) {
|
public void forceLogin(Player player) {
|
||||||
|
logger.warning("FORCED LOGIN REQUEST");
|
||||||
PlayerAuth auth = getPlayerAuth(player);
|
PlayerAuth auth = getPlayerAuth(player);
|
||||||
if (auth != null) {
|
if (auth != null) {
|
||||||
|
logger.warning("FORCED LOGIN");
|
||||||
performLogin(player, auth);
|
performLogin(player, auth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -129,6 +131,7 @@ public class AsynchronousLogin implements AsynchronousProcess {
|
|||||||
private PlayerAuth getPlayerAuth(Player player) {
|
private PlayerAuth getPlayerAuth(Player player) {
|
||||||
final String name = player.getName().toLowerCase();
|
final String name = player.getName().toLowerCase();
|
||||||
if (playerCache.isAuthenticated(name)) {
|
if (playerCache.isAuthenticated(name)) {
|
||||||
|
logger.warning("PLAYER WAS ALREADY LOGGED IN CACHE!");
|
||||||
service.send(player, MessageKey.ALREADY_LOGGED_IN_ERROR);
|
service.send(player, MessageKey.ALREADY_LOGGED_IN_ERROR);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -149,6 +152,7 @@ public class AsynchronousLogin implements AsynchronousProcess {
|
|||||||
|
|
||||||
final String ip = PlayerUtils.getPlayerIp(player);
|
final String ip = PlayerUtils.getPlayerIp(player);
|
||||||
if (hasReachedMaxLoggedInPlayersForIp(player, ip)) {
|
if (hasReachedMaxLoggedInPlayersForIp(player, ip)) {
|
||||||
|
logger.warning("REACHED MAX LOGGED IN PLAYERS FOR IP!");
|
||||||
service.send(player, MessageKey.ALREADY_LOGGED_IN_ERROR);
|
service.send(player, MessageKey.ALREADY_LOGGED_IN_ERROR);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -262,6 +266,7 @@ public class AsynchronousLogin implements AsynchronousProcess {
|
|||||||
logger.fine(player.getName() + " logged in!");
|
logger.fine(player.getName() + " logged in!");
|
||||||
|
|
||||||
// makes player loggedin
|
// makes player loggedin
|
||||||
|
logger.warning(player.getName() + " BEING ADDED TO CACHE AS LOGGED IN");
|
||||||
playerCache.updatePlayer(auth);
|
playerCache.updatePlayer(auth);
|
||||||
dataSource.setLogged(name);
|
dataSource.setLogged(name);
|
||||||
sessionService.grantSession(name);
|
sessionService.grantSession(name);
|
||||||
|
@ -66,6 +66,7 @@ public class AsynchronousLogout implements AsynchronousProcess {
|
|||||||
bungeeSender.sendAuthMeBungeecordMessage(MessageType.REFRESH_QUITLOC, name);
|
bungeeSender.sendAuthMeBungeecordMessage(MessageType.REFRESH_QUITLOC, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
System.err.println(player.getName() + " BEING REMOVED FROM CACHE DUE TO LOGOUT");
|
||||||
playerCache.removePlayer(name);
|
playerCache.removePlayer(name);
|
||||||
codeManager.unverify(name);
|
codeManager.unverify(name);
|
||||||
database.setUnlogged(name);
|
database.setUnlogged(name);
|
||||||
|
@ -68,6 +68,7 @@ public class AsynchronousQuit implements AsynchronousProcess {
|
|||||||
if (player == null || validationService.isUnrestricted(player.getName())) {
|
if (player == null || validationService.isUnrestricted(player.getName())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
System.err.println(player.getName() + " QUIT PROCESS STARTED");
|
||||||
final String name = player.getName().toLowerCase();
|
final String name = player.getName().toLowerCase();
|
||||||
final boolean wasLoggedIn = playerCache.isAuthenticated(name);
|
final boolean wasLoggedIn = playerCache.isAuthenticated(name);
|
||||||
|
|
||||||
@ -92,6 +93,7 @@ public class AsynchronousQuit implements AsynchronousProcess {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//always unauthenticate the player - use session only for auto logins on the same ip
|
//always unauthenticate the player - use session only for auto logins on the same ip
|
||||||
|
System.err.println(player.getName() + " BEING REMOVED FROM CACHE DUE TO QUIT");
|
||||||
playerCache.removePlayer(name);
|
playerCache.removePlayer(name);
|
||||||
codeManager.unverify(name);
|
codeManager.unverify(name);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user