diff --git a/lib/BungeeCord.jar b/lib/BungeeCord.jar index 6e131460d..6a71d747c 100644 Binary files a/lib/BungeeCord.jar and b/lib/BungeeCord.jar differ diff --git a/pom.xml b/pom.xml index 018ea2e87..d4ab57d49 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ - 2.7.13b2 + 2.7.14 org.bukkit diff --git a/src/main/java/uk/org/whoami/authme/AuthMe.java b/src/main/java/uk/org/whoami/authme/AuthMe.java index 7cd12665f..824d9661a 100644 --- a/src/main/java/uk/org/whoami/authme/AuthMe.java +++ b/src/main/java/uk/org/whoami/authme/AuthMe.java @@ -97,28 +97,26 @@ public class AuthMe extends JavaPlugin { public HashMap captcha = new HashMap(); public HashMap cap = new HashMap(); public MultiverseCore mv = null; - + @Override public void onEnable() { instance = this; authme = instance; - + citizens = new CitizensCommunicator(this); settings = new Settings(this); settings.loadConfigOptions(); - + setMessages(Messages.getInstance()); pllog = PlayersLogs.getInstance(); - + server = getServer(); - - + //Set Console Filter if (Settings.removePassword) Bukkit.getLogger().setFilter(new ConsoleFilter()); - - + //Load MailApi File mailFile = new File("lib", "mail.jar"); if (mailFile.exists()) { @@ -127,22 +125,22 @@ public class AuthMe extends JavaPlugin { } else { mail = null; } - + //Check Citizens Version citizensVersion(); - + //Check Combat Tag Version combatTag(); - + //Check Notifications checkNotifications(); - + //Check Multiverse checkMultiverse(); - + //Check ChestShop checkChestShop(); - + /* * Back style on start if avaible */ @@ -151,7 +149,7 @@ public class AuthMe extends JavaPlugin { if(Backup) ConsoleLogger.info("Backup Complete"); else ConsoleLogger.showError("Error while making Backup"); } - + /* * Backend MYSQL - FILE - SQLITE */ @@ -230,11 +228,11 @@ public class AuthMe extends JavaPlugin { if (Settings.isCachingEnabled) { database = new CacheDataSource(this, database); } - + api = new API(this, database); - + management = new Management(database, this); - + PluginManager pm = getServer().getPluginManager(); if (pm.isPluginEnabled("Spout")) { pm.registerEvents(new AuthMeSpoutListener(database), this); @@ -247,8 +245,7 @@ public class AuthMe extends JavaPlugin { pm.registerEvents(new AuthMeChestShopListener(database, this), this); ConsoleLogger.info("Successfully hook with ChestShop!"); } - - + //Find Permissions if(Settings.isPermissionCheckEnabled) { RegisteredServiceProvider permissionProvider = @@ -257,10 +254,11 @@ public class AuthMe extends JavaPlugin { permission = permissionProvider.getProvider(); else { ConsoleLogger.showError("Vault and Permissions plugins is needed for enable AuthMe Reloaded!"); - this.getServer().getPluginManager().disablePlugin(this); + ConsoleLogger.showError("Server Shutdown for Security"); + this.getServer().shutdown(); } } - + this.getCommand("authme").setExecutor(new AdminCommand(this, database)); this.getCommand("register").setExecutor(new RegisterCommand(database, this)); this.getCommand("login").setExecutor(new LoginCommand(this)); @@ -270,11 +268,11 @@ public class AuthMe extends JavaPlugin { this.getCommand("passpartu").setExecutor(new PasspartuCommand(database, this)); this.getCommand("email").setExecutor(new EmailCommand(this, database)); this.getCommand("captcha").setExecutor(new CaptchaCommand(this)); - + if(!Settings.isForceSingleSessionEnabled) { ConsoleLogger.showError("ATTENTION by disabling ForceSingleSession, your server protection is set to low"); } - + if (Settings.reloadSupport) try { if (!new File(getDataFolder() + File.separator + "players.yml").exists()) { @@ -289,13 +287,10 @@ public class AuthMe extends JavaPlugin { } } } catch (NullPointerException ex) { - } - ConsoleLogger.info("Authme " + this.getDescription().getVersion() + " enabled"); } - private void checkChestShop() { if (!Settings.chestshop) { this.ChestShop = 0; @@ -320,16 +315,12 @@ public class AuthMe extends JavaPlugin { ConsoleLogger.showError("Please Update your ChestShop version!"); } } catch (NumberFormatException nfee) { - } - } - } catch (NullPointerException npe) {} catch (NoClassDefFoundError ncdfe) {} catch (ClassCastException cce) {} } - } private void checkMultiverse() { @@ -362,7 +353,6 @@ public class AuthMe extends JavaPlugin { } else { this.notifications = null; } - } private void combatTag() { @@ -395,23 +385,17 @@ public class AuthMe extends JavaPlugin { this.savePlayer(player); } pllog.save(); - + if (database != null) { database.close(); } - //utils = Utils.getInstance(); - - /* - * Back style on start if avaible - */ + if(Settings.isBackupActivated && Settings.isBackupOnStop) { Boolean Backup = new PerformBackup(this).DoBackup(); if(Backup) ConsoleLogger.info("Backup Complete"); else ConsoleLogger.showError("Error while making Backup"); } ConsoleLogger.info("Authme " + this.getDescription().getVersion() + " disabled"); - - } private void onReload() { @@ -421,7 +405,6 @@ public class AuthMe extends JavaPlugin { if (PlayersLogs.players.contains(player.getName())) { String name = player.getName().toLowerCase(); PlayerAuth pAuth = database.getAuth(name); - // if Mysql is unavaible if(pAuth == null) break; PlayerAuth auth = new PlayerAuth(name, pAuth.getHash(), pAuth.getIp(), new Date().getTime()); @@ -435,18 +418,17 @@ public class AuthMe extends JavaPlugin { return; } } - + public static AuthMe getInstance() { return instance; } - + public void savePlayer(Player player) throws IllegalStateException, NullPointerException { try { if ((citizens.isNPC(player, this)) || (Utils.getInstance().isUnrestricted(player)) || (CombatTagComunicator.isNPC(player))) { return; } } catch (Exception e) { } - try { String name = player.getName().toLowerCase(); if ((PlayerCache.getInstance().isAuthenticated(name)) && (!player.isDead()) && @@ -454,7 +436,6 @@ public class AuthMe extends JavaPlugin { PlayerAuth auth = new PlayerAuth(player.getName().toLowerCase(), (int)player.getLocation().getX(), (int)player.getLocation().getY(), (int)player.getLocation().getZ()); this.database.updateQuitLoc(auth); } - if (LimboCache.getInstance().hasLimboPlayer(name)) { LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name); @@ -468,14 +449,12 @@ public class AuthMe extends JavaPlugin { player.teleport(limbo.getLoc()); this.utils.addNormal(player, limbo.getGroup()); player.setOp(limbo.getOperator()); - this.plugin.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId()); LimboCache.getInstance().deleteLimboPlayer(name); if (this.playerBackup.doesCacheExist(name)) { this.playerBackup.removeCache(name); } } - PlayerCache.getInstance().removePlayer(name); player.saveData(); } catch (Exception ex) { @@ -497,7 +476,7 @@ public class AuthMe extends JavaPlugin { public Messages getMessages() { return m; } - + public Player generateKickPlayer(Player[] players) { Player player = null; int i; @@ -509,7 +488,13 @@ public class AuthMe extends JavaPlugin { break; } } + if (player == null) { + for (Player p : this.getServer().getOnlinePlayers()) { + if (p.hasPermission("authme.vip")) + player = p; + } + } return player; } - + } diff --git a/src/main/java/uk/org/whoami/authme/ConsoleLogger.java b/src/main/java/uk/org/whoami/authme/ConsoleLogger.java index 99bfb763f..937998981 100644 --- a/src/main/java/uk/org/whoami/authme/ConsoleLogger.java +++ b/src/main/java/uk/org/whoami/authme/ConsoleLogger.java @@ -16,17 +16,65 @@ package uk.org.whoami.authme; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.text.DateFormat; +import java.util.Calendar; import java.util.logging.Logger; +import org.bukkit.Bukkit; + +import uk.org.whoami.authme.settings.Settings; + public class ConsoleLogger { private static final Logger log = Logger.getLogger("Minecraft"); public static void info(String message) { - log.info("[AuthMe] " + message); + if (AuthMe.getInstance().isEnabled()) { + log.info("[AuthMe] " + message); + if (Settings.useLogging) { + Calendar date = Calendar.getInstance(); + final String actually = "[" + DateFormat.getDateInstance().format(date.getTime()) + ", " + date.get(Calendar.HOUR_OF_DAY) + ":" + date.get(Calendar.MINUTE) + ":" + date.get(Calendar.SECOND) + "] " + message; + Bukkit.getScheduler().runTaskAsynchronously(AuthMe.getInstance(), new Runnable() { + @Override + public void run() { + writeLog(actually); + } + }); + } + } } public static void showError(String message) { - log.severe("[AuthMe] ERROR: " + message); + if (AuthMe.getInstance().isEnabled()) { + log.severe("[AuthMe] ERROR: " + message); + if (Settings.useLogging) { + Calendar date = Calendar.getInstance(); + final String actually = "[" + DateFormat.getDateInstance().format(date.getTime()) + ", " + date.get(Calendar.HOUR_OF_DAY) + ":" + date.get(Calendar.MINUTE) + ":" + date.get(Calendar.SECOND) + "] ERROR : " + message; + Bukkit.getScheduler().runTaskAsynchronously(AuthMe.getInstance(), new Runnable() { + @Override + public void run() { + writeLog(actually); + } + }); + } + } } + + public static void writeLog(String string) { + try { + FileWriter fw = new FileWriter(AuthMe.getInstance().getDataFolder() + File.separator + "authme.log", true); + BufferedWriter w = null; + w = new BufferedWriter(fw); + w.write(string); + w.newLine(); + w.close(); + } catch (IOException e) { + ConsoleLogger.showError(e.getMessage()); + } + } + } diff --git a/src/main/java/uk/org/whoami/authme/Management.java b/src/main/java/uk/org/whoami/authme/Management.java index e4a0f3e58..73543d00c 100644 --- a/src/main/java/uk/org/whoami/authme/Management.java +++ b/src/main/java/uk/org/whoami/authme/Management.java @@ -6,6 +6,7 @@ import java.util.List; import me.muizers.Notifications.Notification; import net.md_5.bungee.BungeeCord; +import net.md_5.bungee.api.connection.ProxiedPlayer; import org.bukkit.Bukkit; import org.bukkit.GameMode; @@ -44,7 +45,7 @@ public class Management { private boolean passpartu = false; public static RandomString rdm = new RandomString(Settings.captchaLength); public PluginManager pm; - + public Management(DataSource database, AuthMe plugin) { this.database = database; this.plugin = plugin; @@ -57,342 +58,423 @@ public class Management { this.plugin = plugin; this.pm = plugin.getServer().getPluginManager(); } - - public String performLogin(Player player, String password) { - - String name = player.getName().toLowerCase(); - String ip = player.getAddress().getAddress().getHostAddress(); - if (Settings.bungee) { - try { - ip = BungeeCord.getInstance().getPlayer(player.getName()).getAddress().getAddress().getHostAddress(); - } catch (NoClassDefFoundError ncdfe) { - ConsoleLogger.showError("Your BungeeCord version is outdated, you need a version with the latest API"); - } - } - World world = player.getWorld(); - Location spawnLoc = world.getSpawnLocation(); - if (plugin.mv != null) { - try { - spawnLoc = plugin.mv.getMVWorldManager().getMVWorld(world).getSpawnLocation(); - } catch (NullPointerException npe) { - } catch (ClassCastException cce) { - } catch (NoClassDefFoundError ncdfe) { - } - } - if (Spawn.getInstance().getLocation() != null) - spawnLoc = Spawn.getInstance().getLocation(); - - if (PlayerCache.getInstance().isAuthenticated(name)) { - return m._("logged_in"); - - } - if (!database.isAuthAvailable(player.getName().toLowerCase())) { - return m._("user_unknown"); - } - - PlayerAuth pAuth = database.getAuth(name); - // if Mysql is unavaible - if(pAuth == null) - return m._("user_unknown"); - - //if columnGroup is set - if(!Settings.getMySQLColumnGroup.isEmpty() && pAuth.getGroupId() == Settings.getNonActivatedGroup) { - return m._("vb_nonActiv"); - } - - String hash = pAuth.getHash(); - String email = pAuth.getEmail(); - + public void performLogin(final Player player, final String password) { + final String name = player.getName().toLowerCase(); - try { - if(!passpartu) { - if (Settings.useCaptcha) { - if(!plugin.captcha.containsKey(name)) { - plugin.captcha.put(name, 1); - } else { - int i = plugin.captcha.get(name) + 1; - plugin.captcha.remove(name); - plugin.captcha.put(name, i); - } - - if(plugin.captcha.containsKey(name) && plugin.captcha.get(name) > Settings.maxLoginTry) { - player.sendMessage(m._("need_captcha")); - plugin.cap.put(name, rdm.nextString()); - return "Type : /captcha " + plugin.cap.get(name); - } else if (plugin.captcha.containsKey(name) && plugin.captcha.get(name) > Settings.maxLoginTry) { - try { - plugin.captcha.remove(name); - plugin.cap.remove(name); - } catch (NullPointerException npe) { - } + Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { - } - } - if (PasswordSecurity.comparePasswordWithHash(password, hash, name)) { - PlayerAuth auth = new PlayerAuth(name, hash, ip, new Date().getTime(), email); - - database.updateSession(auth); - PlayerCache.getInstance().addPlayer(auth); - LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name); - if (limbo != null) { + @Override + public void run() { + String ip = player.getAddress().getAddress().getHostAddress(); + if (Settings.bungee) { + try { + for (ProxiedPlayer pp : BungeeCord.getInstance().getPlayers()) { + if (pp.getName().toLowerCase() == name) { + ip = pp.getAddress().getAddress().getHostAddress(); + break; + } + } + } catch (NoClassDefFoundError ncdfe) { + } + } + World world = player.getWorld(); + Location spawnLoc = world.getSpawnLocation(); + if (plugin.mv != null) { + try { + spawnLoc = plugin.mv.getMVWorldManager().getMVWorld(world).getSpawnLocation(); + } catch (NullPointerException npe) { + } catch (ClassCastException cce) { + } catch (NoClassDefFoundError ncdfe) { + } + } + if (Spawn.getInstance().getLocation() != null) + spawnLoc = Spawn.getInstance().getLocation(); + if (PlayerCache.getInstance().isAuthenticated(name)) { + player.sendMessage(m._("logged_in")); + return; + } + if (!database.isAuthAvailable(player.getName().toLowerCase())) { + player.sendMessage(m._("user_unknown")); + return; + } + PlayerAuth pAuth = database.getAuth(name); + if(pAuth == null) { + player.sendMessage(m._("user_unknown")); + return; + } + if(!Settings.getMySQLColumnGroup.isEmpty() && pAuth.getGroupId() == Settings.getNonActivatedGroup) { + player.sendMessage(m._("vb_nonActiv")); + return; + } + String hash = pAuth.getHash(); + String email = pAuth.getEmail(); + try { + if(!passpartu) { + if (Settings.useCaptcha) { + if(!plugin.captcha.containsKey(name)) { + plugin.captcha.put(name, 1); + } else { + int i = plugin.captcha.get(name) + 1; + plugin.captcha.remove(name); + plugin.captcha.put(name, i); + } + if(plugin.captcha.containsKey(name) && plugin.captcha.get(name) > Settings.maxLoginTry) { + player.sendMessage(m._("need_captcha")); + plugin.cap.put(name, rdm.nextString()); + player.sendMessage("Type : /captcha " + plugin.cap.get(name)); + return; + } else if (plugin.captcha.containsKey(name) && plugin.captcha.get(name) > Settings.maxLoginTry) { + try { + plugin.captcha.remove(name); + plugin.cap.remove(name); + } catch (NullPointerException npe) { + } + } + } + if (PasswordSecurity.comparePasswordWithHash(password, hash, name)) { + PlayerAuth auth = new PlayerAuth(name, hash, ip, new Date().getTime(), email); + database.updateSession(auth); + PlayerCache.getInstance().addPlayer(auth); + final LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name); + PlayerAuth getAuth = database.getAuth(name); + if (limbo != null) { + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + player.setOp(limbo.getOperator()); + } + }); - - player.setOp(limbo.getOperator()); - - this.utils.addNormal(player, limbo.getGroup()); - - - if ((Settings.isTeleportToSpawnEnabled) && (!Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName()))) - { - if ((Settings.isSaveQuitLocationEnabled) && (this.database.getAuth(name).getQuitLocY() != 0)) - { - this.utils.packCoords(this.database.getAuth(name).getQuitLocX(), this.database.getAuth(name).getQuitLocY(), this.database.getAuth(name).getQuitLocZ(), player); - } - else { + utils.addNormal(player, limbo.getGroup()); - AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc()); - pm.callEvent(tpEvent); - if(!tpEvent.isCancelled()) { - if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { - tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); - } - player.teleport(tpEvent.getTo()); - } - - } - - } - else if (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())) { - SpawnTeleportEvent tpEvent = new SpawnTeleportEvent(player, player.getLocation(), spawnLoc, true); - pm.callEvent(tpEvent); - if(!tpEvent.isCancelled()) { - if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { - tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); - } - player.teleport(tpEvent.getTo()); - } - } - else if ((Settings.isSaveQuitLocationEnabled) && (this.database.getAuth(name).getQuitLocY() != 0)) - { - this.utils.packCoords(this.database.getAuth(name).getQuitLocX(), this.database.getAuth(name).getQuitLocY(), this.database.getAuth(name).getQuitLocZ(), player); - } - else { - AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc()); - pm.callEvent(tpEvent); - if(!tpEvent.isCancelled()) { - if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { - tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); - } - player.teleport(tpEvent.getTo()); - } - } - - - player.setGameMode(GameMode.getByValue(limbo.getGameMode())); - - if (Settings.protectInventoryBeforeLogInEnabled && player.hasPlayedBefore()) { - RestoreInventoryEvent event = new RestoreInventoryEvent(player, limbo.getInventory(), limbo.getArmour()); - Bukkit.getServer().getPluginManager().callEvent(event); - if (!event.isCancelled()) { - API.setPlayerInventory(player, limbo.getInventory(), limbo.getArmour()); - } - } + if ((Settings.isTeleportToSpawnEnabled) && (!Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName()))) + { + if ((Settings.isSaveQuitLocationEnabled) && (getAuth.getQuitLocY() != 0)) + { + utils.packCoords(getAuth.getQuitLocX(), getAuth.getQuitLocY(), getAuth.getQuitLocZ(), player); + } + else { - - player.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId()); - player.getServer().getScheduler().cancelTask(limbo.getMessageTaskId()); - LimboCache.getInstance().deleteLimboPlayer(name); - if (this.playerCache.doesCacheExist(name)) { - this.playerCache.removeCache(name); - } - - } - - /* - * Little Work Around under Registration Group Switching for admins that - * add Registration thru a web Scripts. - */ - if ( Settings.isPermissionCheckEnabled && AuthMe.permission.playerInGroup(player, Settings.unRegisteredGroup) && !Settings.unRegisteredGroup.isEmpty() ) { - AuthMe.permission.playerRemoveGroup(player.getWorld(), player.getName(), Settings.unRegisteredGroup); - AuthMe.permission.playerAddGroup(player.getWorld(), player.getName(), Settings.getRegisteredGroup); - } - - try { - if (!PlayersLogs.players.contains(player.getName())) - PlayersLogs.players.add(player.getName()); - pllog.save(); - } catch (NullPointerException ex) { - - } - - Bukkit.getServer().getPluginManager().callEvent(new LoginEvent(player, true)); - if (Settings.useCaptcha) { - if(plugin.captcha.containsKey(name)) { - plugin.captcha.remove(name); - } - if(plugin.cap.containsKey(name)) { - plugin.cap.containsKey(name); - } - } - player.sendMessage(m._("login")); - displayOtherAccounts(auth); - if(!Settings.noConsoleSpam) - ConsoleLogger.info(player.getName() + " logged in!"); - if(plugin.notifications != null) { - plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " logged in!")); - } - player.saveData(); - - } else { - if (!Settings.noConsoleSpam) - ConsoleLogger.info(player.getName() + " used the wrong password"); - if (Settings.isKickOnWrongPasswordEnabled) { - try { - int gm = AuthMePlayerListener.gameMode.get(name); - player.setGameMode(GameMode.getByValue(gm)); - } catch (NullPointerException npe) {} - player.kickPlayer(m._("wrong_pwd")); - } else { - return (m._("wrong_pwd")); - } - } - } else { - // need for bypass password check if passpartu command is enabled - PlayerAuth auth = new PlayerAuth(name, hash, ip, new Date().getTime(), email); - database.updateSession(auth); - PlayerCache.getInstance().addPlayer(auth); - LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name); - if (limbo != null) { + AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc()); + pm.callEvent(tpEvent); + if(!tpEvent.isCancelled()) { + if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { + tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); + } + final Location fLoc = tpEvent.getTo(); + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + player.teleport(fLoc); + } + }); + } + } + } + else if (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())) { + SpawnTeleportEvent tpEvent = new SpawnTeleportEvent(player, player.getLocation(), spawnLoc, true); + pm.callEvent(tpEvent); + if(!tpEvent.isCancelled()) { + if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { + tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); + } + final Location fLoc = tpEvent.getTo(); + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + player.teleport(fLoc); + } + }); + } + } + else if ((Settings.isSaveQuitLocationEnabled) && (getAuth.getQuitLocY() != 0)) + { + utils.packCoords(getAuth.getQuitLocX(), getAuth.getQuitLocY(), getAuth.getQuitLocZ(), player); + } + else { + AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc()); + pm.callEvent(tpEvent); + if(!tpEvent.isCancelled()) { + if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { + tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); + } + final Location fLoc = tpEvent.getTo(); + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + player.teleport(fLoc); + } + }); + } + } - - player.setOp(limbo.getOperator()); - - this.utils.addNormal(player, limbo.getGroup()); - + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + player.setGameMode(GameMode.getByValue(limbo.getGameMode())); + } + }); - if ((Settings.isTeleportToSpawnEnabled) && (!Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName()))) - { - if ((Settings.isSaveQuitLocationEnabled) && (this.database.getAuth(name).getQuitLocY() != 0)) { - Location quitLoc = new Location(player.getWorld(), this.database.getAuth(name).getQuitLocX() + 0.5D, this.database.getAuth(name).getQuitLocY() + 0.5D, this.database.getAuth(name).getQuitLocZ() + 0.5D); - AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, quitLoc); - pm.callEvent(tpEvent); - if(!tpEvent.isCancelled()) { - if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { - tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); - } - player.teleport(tpEvent.getTo()); - } - } - else - { - AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc()); - pm.callEvent(tpEvent); - if(!tpEvent.isCancelled()) { - if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { - tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); - } - player.teleport(tpEvent.getTo()); - } - } - - } - else if (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())) { + if (Settings.protectInventoryBeforeLogInEnabled && player.hasPlayedBefore()) { + RestoreInventoryEvent event = new RestoreInventoryEvent(player, limbo.getInventory(), limbo.getArmour()); + Bukkit.getServer().getPluginManager().callEvent(event); + if (!event.isCancelled()) { + API.setPlayerInventory(player, limbo.getInventory(), limbo.getArmour()); + } + } + + player.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId()); + player.getServer().getScheduler().cancelTask(limbo.getMessageTaskId()); + LimboCache.getInstance().deleteLimboPlayer(name); + if (playerCache.doesCacheExist(name)) { + playerCache.removeCache(name); + } + } + + /* + * Little Work Around under Registration Group Switching for admins that + * add Registration thru a web Scripts. + */ + if ( Settings.isPermissionCheckEnabled && AuthMe.permission.playerInGroup(player, Settings.unRegisteredGroup) && !Settings.unRegisteredGroup.isEmpty() ) { + AuthMe.permission.playerRemoveGroup(player.getWorld(), player.getName(), Settings.unRegisteredGroup); + AuthMe.permission.playerAddGroup(player.getWorld(), player.getName(), Settings.getRegisteredGroup); + } + + try { + if (!PlayersLogs.players.contains(player.getName())) + PlayersLogs.players.add(player.getName()); + pllog.save(); + } catch (NullPointerException ex) { + } + + Bukkit.getServer().getPluginManager().callEvent(new LoginEvent(player, true)); + if (Settings.useCaptcha) { + if(plugin.captcha.containsKey(name)) { + plugin.captcha.remove(name); + } + if(plugin.cap.containsKey(name)) { + plugin.cap.containsKey(name); + } + } + player.sendMessage(m._("login")); + displayOtherAccounts(auth); + if(!Settings.noConsoleSpam) + ConsoleLogger.info(player.getName() + " logged in!"); + if(plugin.notifications != null) { + plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " logged in!")); + } + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + player.saveData(); + } + }); + + } else { + if (!Settings.noConsoleSpam) + ConsoleLogger.info(player.getName() + " used the wrong password"); + if (Settings.isKickOnWrongPasswordEnabled) { + try { + final int gm = AuthMePlayerListener.gameMode.get(name); + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + player.setGameMode(GameMode.getByValue(gm)); + } + }); + } catch (NullPointerException npe) {} + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + player.kickPlayer(m._("wrong_pwd")); + } + }); + } else { + player.sendMessage(m._("wrong_pwd")); + return; + } + } + } else { + // need for bypass password check if passpartu command is enabled + PlayerAuth auth = new PlayerAuth(name, hash, ip, new Date().getTime(), email); + database.updateSession(auth); + PlayerCache.getInstance().addPlayer(auth); + final LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name); + if (limbo != null) { + + Bukkit.getScheduler().runTask(plugin, new Runnable(){ + @Override + public void run() { + player.setOp(limbo.getOperator()); + } + }); + + utils.addNormal(player, limbo.getGroup()); + + if ((Settings.isTeleportToSpawnEnabled) && (!Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName()))) + { + if ((Settings.isSaveQuitLocationEnabled) && (database.getAuth(name).getQuitLocY() != 0)) { + Location quitLoc = new Location(player.getWorld(), database.getAuth(name).getQuitLocX() + 0.5D, database.getAuth(name).getQuitLocY() + 0.5D, database.getAuth(name).getQuitLocZ() + 0.5D); + AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, quitLoc); + pm.callEvent(tpEvent); + if(!tpEvent.isCancelled()) { + if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { + tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); + } + final Location fLoc = tpEvent.getTo(); + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + player.teleport(fLoc); + } + }); + } + } + else + { + AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc()); + pm.callEvent(tpEvent); + if(!tpEvent.isCancelled()) { + if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { + tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); + } + final Location fLoc = tpEvent.getTo(); + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + player.teleport(fLoc); + } + }); + } + } + } + else if (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())) { + + SpawnTeleportEvent tpEvent = new SpawnTeleportEvent(player, player.getLocation(), spawnLoc, true); + pm.callEvent(tpEvent); + if(!tpEvent.isCancelled()) { + if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { + tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); + } + final Location fLoc = tpEvent.getTo(); + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + player.teleport(fLoc); + } + }); + } + } + else if ((Settings.isSaveQuitLocationEnabled) && (database.getAuth(name).getQuitLocY() != 0)) { + Location quitLoc = new Location(player.getWorld(), database.getAuth(name).getQuitLocX() + 0.5D, database.getAuth(name).getQuitLocY() + 0.5D, database.getAuth(name).getQuitLocZ() + 0.5D); + AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, quitLoc); + pm.callEvent(tpEvent); + if(!tpEvent.isCancelled()) { + if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { + tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); + } + final Location fLoc = tpEvent.getTo(); + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + player.teleport(fLoc); + } + }); + } + } + else + { + AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc()); + pm.callEvent(tpEvent); + if(!tpEvent.isCancelled()) { + if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { + tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); + } + final Location fLoc = tpEvent.getTo(); + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + player.teleport(fLoc); + } + }); + } + } + + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + player.setGameMode(GameMode.getByValue(limbo.getGameMode())); + } + }); + + if (Settings.protectInventoryBeforeLogInEnabled && player.hasPlayedBefore()) { + RestoreInventoryEvent event = new RestoreInventoryEvent(player, limbo.getInventory(), limbo.getArmour()); + Bukkit.getServer().getPluginManager().callEvent(event); + if (!event.isCancelled()) { + API.setPlayerInventory(player, limbo.getInventory(), limbo.getArmour()); + } + } + + player.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId()); + player.getServer().getScheduler().cancelTask(limbo.getMessageTaskId()); + LimboCache.getInstance().deleteLimboPlayer(name); + if (playerCache.doesCacheExist(name)) { + playerCache.removeCache(name); + } + } + + /* + * Little Work Around under Registration Group Switching for admins that + * add Registration thru a web Scripts. + */ + if ( Settings.isPermissionCheckEnabled && AuthMe.permission.playerInGroup(player, Settings.unRegisteredGroup) && !Settings.unRegisteredGroup.isEmpty() ) { + AuthMe.permission.playerRemoveGroup(player.getWorld(), player.getName(), Settings.unRegisteredGroup); + AuthMe.permission.playerAddGroup(player.getWorld(), player.getName(), Settings.getRegisteredGroup); + } + + try { + if (!PlayersLogs.players.contains(player.getName())) + PlayersLogs.players.add(player.getName()); + pllog.save(); + } catch (NullPointerException ex) { } + + Bukkit.getServer().getPluginManager().callEvent(new LoginEvent(player, true)); + if (Settings.useCaptcha) { + if(plugin.captcha.containsKey(name)) { + plugin.captcha.remove(name); + } + if(plugin.cap.containsKey(name)) { + plugin.cap.containsKey(name); + } + } + player.sendMessage(m._("login")); + displayOtherAccounts(auth); + if(!Settings.noConsoleSpam) + ConsoleLogger.info(player.getName() + " logged in!"); + if(plugin.notifications != null) { + plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " logged in!")); + } + Bukkit.getScheduler().runTask(plugin, new Runnable() { + @Override + public void run() { + player.saveData(); + } + }); + passpartu = false; + } + } catch (NoSuchAlgorithmException ex) { + ConsoleLogger.showError(ex.getMessage()); + player.sendMessage(m._("error")); + return; + } + return; + } + + }); - SpawnTeleportEvent tpEvent = new SpawnTeleportEvent(player, player.getLocation(), spawnLoc, true); - pm.callEvent(tpEvent); - if(!tpEvent.isCancelled()) { - if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { - tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); - } - player.teleport(tpEvent.getTo()); - } - } - else if ((Settings.isSaveQuitLocationEnabled) && (this.database.getAuth(name).getQuitLocY() != 0)) { - Location quitLoc = new Location(player.getWorld(), this.database.getAuth(name).getQuitLocX() + 0.5D, this.database.getAuth(name).getQuitLocY() + 0.5D, this.database.getAuth(name).getQuitLocZ() + 0.5D); - AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, quitLoc); - pm.callEvent(tpEvent); - if(!tpEvent.isCancelled()) { - if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { - tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); - } - player.teleport(tpEvent.getTo()); - } - } - else - { - AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc()); - pm.callEvent(tpEvent); - if(!tpEvent.isCancelled()) { - if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { - tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); - } - player.teleport(tpEvent.getTo()); - } - } - - - player.setGameMode(GameMode.getByValue(limbo.getGameMode())); - - if (Settings.protectInventoryBeforeLogInEnabled && player.hasPlayedBefore()) { - RestoreInventoryEvent event = new RestoreInventoryEvent(player, limbo.getInventory(), limbo.getArmour()); - Bukkit.getServer().getPluginManager().callEvent(event); - if (!event.isCancelled()) { - API.setPlayerInventory(player, limbo.getInventory(), limbo.getArmour()); - } - } - - - player.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId()); - player.getServer().getScheduler().cancelTask(limbo.getMessageTaskId()); - LimboCache.getInstance().deleteLimboPlayer(name); - if (this.playerCache.doesCacheExist(name)) { - this.playerCache.removeCache(name); - } - } - - /* - * Little Work Around under Registration Group Switching for admins that - * add Registration thru a web Scripts. - */ - if ( Settings.isPermissionCheckEnabled && AuthMe.permission.playerInGroup(player, Settings.unRegisteredGroup) && !Settings.unRegisteredGroup.isEmpty() ) { - AuthMe.permission.playerRemoveGroup(player.getWorld(), player.getName(), Settings.unRegisteredGroup); - AuthMe.permission.playerAddGroup(player.getWorld(), player.getName(), Settings.getRegisteredGroup); - } - - try { - if (!PlayersLogs.players.contains(player.getName())) - PlayersLogs.players.add(player.getName()); - pllog.save(); - } catch (NullPointerException ex) { } - - Bukkit.getServer().getPluginManager().callEvent(new LoginEvent(player, true)); - if (Settings.useCaptcha) { - if(plugin.captcha.containsKey(name)) { - plugin.captcha.remove(name); - } - if(plugin.cap.containsKey(name)) { - plugin.cap.containsKey(name); - } - } - player.sendMessage(m._("login")); - displayOtherAccounts(auth); - if(!Settings.noConsoleSpam) - ConsoleLogger.info(player.getName() + " logged in!"); - if(plugin.notifications != null) { - plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " logged in!")); - } - player.saveData(); - this.passpartu = false; - } - - } catch (NoSuchAlgorithmException ex) { - ConsoleLogger.showError(ex.getMessage()); - return (m._("error")); - } - return ""; } - + private void displayOtherAccounts(PlayerAuth auth) { if (!Settings.displayOtherAccounts) { return; @@ -417,7 +499,7 @@ public class Management { } else { message = message + "."; } - + } for (Player player : AuthMe.getInstance().getServer().getOnlinePlayers()) { if (player.hasPermission("authme.seeOtherAccounts")) { @@ -426,6 +508,5 @@ public class Management { } } } - - + } diff --git a/src/main/java/uk/org/whoami/authme/PerformBackup.java b/src/main/java/uk/org/whoami/authme/PerformBackup.java index 5d995f1e4..dd69ceb29 100644 --- a/src/main/java/uk/org/whoami/authme/PerformBackup.java +++ b/src/main/java/uk/org/whoami/authme/PerformBackup.java @@ -4,7 +4,6 @@ */ package uk.org.whoami.authme; - import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -20,7 +19,7 @@ import uk.org.whoami.authme.settings.Settings; * @author stefano */ public class PerformBackup { - + private String dbName = Settings.getMySQLDatabase; private String dbUserName = Settings.getMySQLUsername; private String dbPassword = Settings.getMySQLPassword; @@ -29,14 +28,13 @@ public class PerformBackup { String dateString = format.format( new Date() ); private String path = AuthMe.getInstance().getDataFolder()+"/backups/backup"+dateString; private AuthMe instance; - + public PerformBackup(AuthMe instance) { this.setInstance(instance); - } - + public boolean DoBackup() { - + switch(Settings.getDataSource) { case FILE: return FileBackup("auths.db"); @@ -45,24 +43,21 @@ public class PerformBackup { case SQLITE: return FileBackup(Settings.getMySQLDatabase+".db"); } - + return false; } - + private boolean MySqlBackup() { File dirBackup = new File(AuthMe.getInstance().getDataFolder()+"/backups"); - + if(!dirBackup.exists()) dirBackup.mkdir(); if(checkWindows(Settings.backupWindowsPath)) { String executeCmd = Settings.backupWindowsPath+"\\bin\\mysqldump.exe -u " + dbUserName + " -p" + dbPassword + " " + dbName + " --tables " + tblname + " -r " + path+".sql"; - //ConsoleLogger.info(executeCmd); Process runtimeProcess; try { - //System.out.println("path "+path+" cmd "+executeCmd); runtimeProcess = Runtime.getRuntime().exec(executeCmd); int processComplete = runtimeProcess.waitFor(); - if (processComplete == 0) { ConsoleLogger.info("Backup created successfully"); return true; @@ -76,10 +71,8 @@ public class PerformBackup { String executeCmd = "mysqldump -u " + dbUserName + " -p" + dbPassword + " " + dbName + " --tables " + tblname + " -r " + path+".sql"; Process runtimeProcess; try { - //System.out.println("path "+path+" cmd "+executeCmd); runtimeProcess = Runtime.getRuntime().exec(executeCmd); int processComplete = runtimeProcess.waitFor(); - if (processComplete == 0) { ConsoleLogger.info("Backup created successfully"); return true; @@ -92,35 +85,30 @@ public class PerformBackup { } return false; } - + private boolean FileBackup(String backend) { File dirBackup = new File(AuthMe.getInstance().getDataFolder()+"/backups"); - + if(!dirBackup.exists()) dirBackup.mkdir(); - + try { - copy(new File("plugins/AuthMe/"+backend),new File(path+".db")); return true; - + } catch (Exception ex) { ex.printStackTrace(); } - - return false; } - + /* * Check if we are under Windows and correct location * of mysqldump.exe otherwise return error. */ private boolean checkWindows(String windowsPath) { String isWin = System.getProperty("os.name").toLowerCase(); - if(isWin.indexOf("win") >= 0) { - //ConsoleLogger.info(windowsPath+"\\bin\\mysqldump.exe"); if(new File(windowsPath+"\\bin\\mysqldump.exe").exists()) { return true; } else { @@ -128,8 +116,6 @@ public class PerformBackup { return true; } } else return false; - - } /* @@ -156,5 +142,5 @@ public void setInstance(AuthMe instance) { public AuthMe getInstance() { return instance; } - + } diff --git a/src/main/java/uk/org/whoami/authme/SendMailSSL.java b/src/main/java/uk/org/whoami/authme/SendMailSSL.java index f15a906f4..1f8bc4377 100644 --- a/src/main/java/uk/org/whoami/authme/SendMailSSL.java +++ b/src/main/java/uk/org/whoami/authme/SendMailSSL.java @@ -14,24 +14,28 @@ import org.bukkit.Bukkit; import uk.org.whoami.authme.cache.auth.PlayerAuth; import uk.org.whoami.authme.settings.Settings; - + +/** +* +* @author Xephi59 +*/ public class SendMailSSL { - + public AuthMe instance; - + public SendMailSSL(AuthMe instance) { this.instance = instance; } public void main(final PlayerAuth auth, final String newPass) { - + String sendername; - + if (Settings.getmailSenderName.isEmpty() || Settings.getmailSenderName == null) { sendername = Settings.getmailAccount; } else { sendername = Settings.getmailSenderName; } - + Properties props = new Properties(); props.put("mail.smtp.host", Settings.getmailSMTP); props.put("mail.smtp.socketFactory.port", String.valueOf(Settings.getMailPort)); @@ -39,7 +43,7 @@ public class SendMailSSL { "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.port", String.valueOf(Settings.getMailPort)); - + Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { @@ -48,7 +52,7 @@ public class SendMailSSL { }); try { - + final Message message = new MimeMessage(session); try { message.setFrom(new InternetAddress(Settings.getmailAccount, sendername)); @@ -63,9 +67,7 @@ public class SendMailSSL { text = text.replaceAll("", instance.getServer().getServerName()); text = text.replaceAll("", newPass); message.setText(text); - Bukkit.getScheduler().runTaskAsynchronously(instance, new Runnable() { - @Override public void run() { try { @@ -73,16 +75,13 @@ public class SendMailSSL { } catch (MessagingException e) { e.printStackTrace(); } - } - }); - if(!Settings.noConsoleSpam) ConsoleLogger.info("Email sent to : " + auth.getNickname()); - } catch (MessagingException e) { throw new RuntimeException(e); } } -} \ No newline at end of file + +} diff --git a/src/main/java/uk/org/whoami/authme/Utils.java b/src/main/java/uk/org/whoami/authme/Utils.java index 9e28d0e8d..f313422e7 100644 --- a/src/main/java/uk/org/whoami/authme/Utils.java +++ b/src/main/java/uk/org/whoami/authme/Utils.java @@ -24,23 +24,17 @@ import uk.org.whoami.authme.settings.Settings; * @author stefano */ public class Utils { - //private Settings settings = Settings.getInstance(); private String currentGroup; private static Utils singleton; private String unLoggedGroup = Settings.getUnloggedinGroup; BukkitTask id; - /* - public Utils(Player player) { - this.player = player; - - } - */ + public void setGroup(Player player, groupType group) { if (!player.isOnline()) return; if(!Settings.isPermissionCheckEnabled) return; - + switch(group) { case UNREGISTERED: { currentGroup = AuthMe.permission.getPrimaryGroup(player); @@ -57,95 +51,74 @@ public class Utils { } return; } - + public String removeAll(Player player) { + if(!Utils.getInstance().useGroupSystem()){ return null; } - if( !Settings.getJoinPermissions.isEmpty() ) { hasPermOnJoin(player); } - this.currentGroup = AuthMe.permission.getPrimaryGroup(player.getWorld(),player.getName().toString()); - //System.out.println("current grop" + currentGroup); if(AuthMe.permission.playerRemoveGroup(player.getWorld(),player.getName().toString(), currentGroup) && AuthMe.permission.playerAddGroup(player.getWorld(),player.getName().toString(),this.unLoggedGroup)) { - return currentGroup; } - return null; - } - + public boolean addNormal(Player player, String group) { if(!Utils.getInstance().useGroupSystem()){ return false; - } - // System.out.println("in add normal"); - /* if (AuthMe.permission.playerRemove(this.player, "-*")) - return true; - */ + } if(AuthMe.permission.playerRemoveGroup(player.getWorld(),player.getName().toString(),this.unLoggedGroup) && AuthMe.permission.playerAddGroup(player.getWorld(),player.getName().toString(),group)) { - //System.out.println("vecchio "+this.unLoggedGroup+ "nuovo" + group); return true; - } return false; - } + } private String hasPermOnJoin(Player player) { - /* if(Settings.getJoinPermissions.isEmpty()) - return null; */ - Iterator iter = Settings.getJoinPermissions.iterator(); - while (iter.hasNext()) { - String permission = iter.next(); - // System.out.println("permissions? "+ permission); - - if(AuthMe.permission.playerHas(player, permission)){ - // System.out.println("player has permissions " +permission); - AuthMe.permission.playerAddTransient(player, permission); - } - } - return null; + + Iterator iter = Settings.getJoinPermissions.iterator(); + while (iter.hasNext()) { + String permission = iter.next(); + if(AuthMe.permission.playerHas(player, permission)){ + AuthMe.permission.playerAddTransient(player, permission); + } + } + return null; } - + public boolean isUnrestricted(Player player) { - - + if(Settings.getUnrestrictedName.isEmpty() || Settings.getUnrestrictedName == null) return false; - - // System.out.println("name to escape "+player.getName()); - if(Settings.getUnrestrictedName.contains(player.getName())) { - // System.out.println("name to escape correctly"+player.getName()); + + if(Settings.getUnrestrictedName.contains(player.getName())) return true; - } - + return false; - - + } public static Utils getInstance() { - - singleton = new Utils(); - - return singleton; + + singleton = new Utils(); + + return singleton; } - + private boolean useGroupSystem() { - + if(Settings.isPermissionCheckEnabled && !Settings.getUnloggedinGroup.isEmpty()) { return true; } return false; - } - + public void packCoords(int x, int y, int z, final Player pl) { final World world = pl.getWorld(); final int fY = y; - final Location loc = new Location(world, x + 0.5D, y + 0.6D, z + 0.5D); + final Location loc = new Location(world, x, y + 0.6D, z); AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(pl, loc); AuthMe.getInstance().getServer().getPluginManager().callEvent(tpEvent); @@ -154,31 +127,25 @@ public class Utils { tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); pl.teleport(tpEvent.getTo()); } - + id = Bukkit.getScheduler().runTaskTimer(AuthMe.authme, new Runnable() { @Override public void run() { int current = (int)pl.getLocation().getY(); World currentWorld = pl.getWorld(); - if (current != fY && world.getName() == currentWorld.getName()) { pl.teleport(loc); } } - }, 1L, 20L); - - Bukkit.getScheduler().runTaskLaterAsynchronously(AuthMe.authme, new Runnable() { - @Override public void run() { id.cancel(); } - }, 60L); } @@ -205,34 +172,27 @@ public class Utils { } catch(Exception e) { e.printStackTrace(); } - - return false; } - + /* * Read Toekn */ public boolean readToken(String inputToken) { File file = new File("plugins/AuthMe/passpartu.token"); - + if (!file.exists()) return false; - + if (inputToken.isEmpty() ) return false; - Scanner reader = null; try { reader = new Scanner(file); - while (reader.hasNextLine()) { final String line = reader.nextLine(); - if (line.contains(":")) { String[] tokenInfo = line.split(":"); - //System.err.println("Authme input token "+inputToken+" saved token "+tokenInfo[0]); - //System.err.println("Authme time "+System.currentTimeMillis()/1000+"saved time "+Integer.parseInt(tokenInfo[1])); if(tokenInfo[0].equals(inputToken) && System.currentTimeMillis()/1000-30 <= Integer.parseInt(tokenInfo[1]) ) { file.delete(); reader.close(); @@ -243,7 +203,6 @@ public class Utils { } catch(Exception e) { e.printStackTrace(); } - reader.close(); return false; } @@ -251,19 +210,18 @@ public class Utils { * Generate Random Token */ private String generateToken() { - // obtain new random token + // obtain new random token Random rnd = new Random (); char[] arr = new char[5]; - for (int i=0; i<5; i++) { int n = rnd.nextInt (36); arr[i] = (char) (n < 10 ? '0'+n : 'a'+n-10); } - return new String(arr); } + public enum groupType { UNREGISTERED, REGISTERED, NOTLOGGEDIN, LOGGEDIN } - + } diff --git a/src/main/java/uk/org/whoami/authme/api/API.java b/src/main/java/uk/org/whoami/authme/api/API.java index eb0a8e318..6cec7d55e 100644 --- a/src/main/java/uk/org/whoami/authme/api/API.java +++ b/src/main/java/uk/org/whoami/authme/api/API.java @@ -19,10 +19,10 @@ import uk.org.whoami.authme.security.PasswordSecurity.HashAlgorithm; import uk.org.whoami.authme.settings.Settings; public class API { - + public AuthMe instance; public DataSource database; - + public API(AuthMe instance, DataSource database) { this.instance = instance; this.database = database; @@ -42,7 +42,7 @@ public class API { public AuthMe getPlugin() { return instance; } - + /** * * @param player @@ -51,7 +51,7 @@ public class API { public static boolean isAuthenticated(Player player) { return PlayerCache.getInstance().isAuthenticated(player.getName()); } - + /** * * @param player @@ -60,7 +60,7 @@ public class API { public boolean isaNPC(Player player) { return instance.getCitizensCommunicator().isNPC(player, instance); } - + /** * * @param player @@ -69,43 +69,43 @@ public class API { public static boolean isUnrestricted(Player player) { return Utils.getInstance().isUnrestricted(player); } - + public static boolean isChatAllowed() { return Settings.isChatAllowed; } - + public static boolean isAllowRestrictedIp() { return Settings.isAllowRestrictedIp; } - + public static boolean isBackupActivated() { return Settings.isBackupActivated; } - + public static boolean isForceSpawnLocOnJoinEnabled() { return Settings.isForceSpawnLocOnJoinEnabled; } - + public static DataSourceType getDataSource() { return Settings.getDataSource; } - + public static int getMovementRadius() { return Settings.getMovementRadius; } - + public static List getJoinPermissions() { return Settings.getJoinPermissions; } - + public static Boolean isPasspartuEnable() { return Settings.enablePasspartu; } - + public static String getcUnrestrictedName() { return Settings.getcUnrestrictedName; } - + public static Boolean getEnablePasswordVerifier() { return Settings.getEnablePasswordVerifier; } @@ -113,11 +113,11 @@ public class API { public static int getMaxNickLength() { return Settings.getMaxNickLength; } - + public static int getMinNickLength() { return Settings.getMinNickLength; } - + public static Array getLastLocationColumns() { Array columns = null; Array.set(columns, 0, Settings.getMySQLlastlocX); @@ -125,7 +125,7 @@ public class API { Array.set(columns, 2, Settings.getMySQLlastlocZ); return columns; } - + public static Location getLastLocation(Player player) { try { PlayerAuth auth = PlayerCache.getInstance().getAuth(player.getName()); @@ -140,52 +140,47 @@ public class API { } catch (NullPointerException ex) { return null; } - } - + public static String getNickRegex() { return Settings.getNickRegex; } - + public static int getPasswordMinLen() { return Settings.getPasswordMinLen; } - + public static HashAlgorithm getPasswordHash() { return Settings.getPasswordHash; } - + public static int getRegistrationTimeout() { return Settings.getRegistrationTimeout; } - + public static int getSessionTimeout() { return Settings.getSessionTimeout; } - + public static String getUnloggedinGroup() { return Settings.getUnloggedinGroup; } - + public static void setPlayerInventory(Player player, ItemStack[] content, ItemStack[] armor) { try { player.getInventory().setContents(content); player.getInventory().setArmorContents(armor); } catch (NullPointerException npe) { } - - } - + public void saveAuth(final PlayerAuth auth) { instance.getServer().getScheduler().runTask(instance, new Runnable() { - @Override public void run() { database.saveAuth(auth); } - }); } - + } diff --git a/src/main/java/uk/org/whoami/authme/cache/auth/PlayerAuth.java b/src/main/java/uk/org/whoami/authme/cache/auth/PlayerAuth.java index 37cff4f95..eab1ccaf6 100644 --- a/src/main/java/uk/org/whoami/authme/cache/auth/PlayerAuth.java +++ b/src/main/java/uk/org/whoami/authme/cache/auth/PlayerAuth.java @@ -19,7 +19,6 @@ package uk.org.whoami.authme.cache.auth; import uk.org.whoami.authme.security.PasswordSecurity; import uk.org.whoami.authme.settings.Settings; - public class PlayerAuth { private String nickname; @@ -33,14 +32,14 @@ public class PlayerAuth { private String vBhash = null; private int groupId; private String email = "your@email.com"; - + public PlayerAuth(String nickname, String hash, String ip, long lastLogin) { this.nickname = nickname; this.hash = hash; this.ip = ip; this.lastLogin = lastLogin; } - + public PlayerAuth(String nickname, String hash, String ip, long lastLogin, String email) { this.nickname = nickname; this.hash = hash; @@ -48,14 +47,14 @@ public class PlayerAuth { this.lastLogin = lastLogin; this.email = email; } - + public PlayerAuth(String nickname, int x, int y, int z) { this.nickname = nickname; this.x = x; this.y = y; this.z = z; } - + public PlayerAuth(String nickname, String hash, String ip, long lastLogin, int x, int y, int z, String email) { this.nickname = nickname; this.hash = hash; @@ -66,10 +65,7 @@ public class PlayerAuth { this.z = z; this.email = email; } - - // - // This constructor is needed for Vbulletin board Auth! - // + public PlayerAuth(String nickname, String hash, String salt, int groupId, String ip, long lastLogin, int x, int y, int z, String email) { this.nickname = nickname; this.hash = hash; @@ -82,8 +78,7 @@ public class PlayerAuth { this.groupId = groupId; this.email = email; } - - // IPB Constructor with groups + public PlayerAuth(String nickname, String hash, String salt, int groupId , String ip, long lastLogin) { this.nickname = nickname; this.hash = hash; @@ -92,8 +87,7 @@ public class PlayerAuth { this.salt = salt; this.groupId = groupId; } - - // IPB Constructor without groups + public PlayerAuth(String nickname, String hash, String salt, String ip, long lastLogin) { this.nickname = nickname; this.hash = hash; @@ -101,7 +95,7 @@ public class PlayerAuth { this.lastLogin = lastLogin; this.salt = salt; } - + public PlayerAuth(String nickname, String hash, String salt, String ip, long lastLogin, int x, int y, int z, String email) { this.nickname = nickname; this.hash = hash; @@ -114,7 +108,6 @@ public class PlayerAuth { this.email = email; } - public PlayerAuth(String nickname, String hash, String ip, long lastLogin, int x, int y, int z) { this.nickname = nickname; this.hash = hash; @@ -126,7 +119,6 @@ public class PlayerAuth { this.email = "your@email.com"; } - public String getIp() { return ip; } @@ -138,26 +130,21 @@ public class PlayerAuth { public String getHash() { if(!salt.isEmpty() && Settings.getPasswordHash == PasswordSecurity.HashAlgorithm.MD5VB) { vBhash = "$MD5vb$"+salt+"$"+hash; - // Compose Vbullettin Hash System! return vBhash; } else { return hash; } } - - //Get Salt + public String getSalt() { return this.salt; } - - // - // GroupId for unactivated User on Vbullettin Board - // + public int getGroupId() { return groupId; } - + public int getQuitLocX() { return x; } @@ -194,11 +181,11 @@ public class PlayerAuth { public void setLastLogin(long lastLogin) { this.lastLogin = lastLogin; } - + public void setEmail(String email) { this.email = email; } - + public void setSalt(String salt) { this.salt = salt; } @@ -209,7 +196,6 @@ public class PlayerAuth { return false; } PlayerAuth other = (PlayerAuth) obj; - return other.getIp().equals(this.ip) && other.getNickname().equals(this.nickname); } @@ -220,4 +206,5 @@ public class PlayerAuth { hashCode = 71 * hashCode + (this.ip != null ? this.ip.hashCode() : 0); return hashCode; } + } diff --git a/src/main/java/uk/org/whoami/authme/cache/auth/PlayerCache.java b/src/main/java/uk/org/whoami/authme/cache/auth/PlayerCache.java index 505fdad42..ccba6ef29 100644 --- a/src/main/java/uk/org/whoami/authme/cache/auth/PlayerCache.java +++ b/src/main/java/uk/org/whoami/authme/cache/auth/PlayerCache.java @@ -54,4 +54,5 @@ public class PlayerCache { } return singleton; } + } diff --git a/src/main/java/uk/org/whoami/authme/cache/backup/DataFileCache.java b/src/main/java/uk/org/whoami/authme/cache/backup/DataFileCache.java index 908163a22..eaf7b6565 100644 --- a/src/main/java/uk/org/whoami/authme/cache/backup/DataFileCache.java +++ b/src/main/java/uk/org/whoami/authme/cache/backup/DataFileCache.java @@ -12,24 +12,22 @@ import org.bukkit.inventory.ItemStack; public class DataFileCache { - private ItemStack[] inventory; private ItemStack[] armor; - private String group; - private boolean operator; + private String group; + private boolean operator; public DataFileCache(ItemStack[] inventory, ItemStack[] armor){ this.inventory = inventory; this.armor = armor; - } public DataFileCache(ItemStack[] inventory, ItemStack[] armor, String group, boolean operator){ this.inventory = inventory; this.armor = armor; - this.group = group; - this.operator = operator; - } + this.group = group; + this.operator = operator; + } public ItemStack[] getInventory(){ return inventory; } @@ -37,13 +35,13 @@ public class DataFileCache { public ItemStack[] getArmour(){ return armor; } - + public String getGroup(){ return group; } - + public Boolean getOperator(){ return operator; - } -} + } +} diff --git a/src/main/java/uk/org/whoami/authme/cache/backup/FileCache.java b/src/main/java/uk/org/whoami/authme/cache/backup/FileCache.java index 240d35b2e..a5841af8d 100644 --- a/src/main/java/uk/org/whoami/authme/cache/backup/FileCache.java +++ b/src/main/java/uk/org/whoami/authme/cache/backup/FileCache.java @@ -15,11 +15,8 @@ import java.util.Scanner; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; - public class FileCache { - //private HashMap ench; - - + public FileCache() { final File folder = new File("cache"); if (!folder.exists()) { @@ -40,17 +37,13 @@ public class FileCache { file.createNewFile(); writer = new FileWriter(file); - - // put player group in cache - // put if player is an op or not 1: is op 0: isnet op! - // line format Group|OperatorStatus - - if(operator) - writer.write(group+";1\r\n"); - else writer.write(group+";0\r\n"); - - writer.flush(); - + + // line format Group|OperatorStatus + if(operator) + writer.write(group+";1\r\n"); + else writer.write(group+";0\r\n"); + writer.flush(); + ItemStack[] invstack = playerData.getInventory(); for (int i = 0; i < invstack.length; i++) { @@ -58,24 +51,15 @@ public class FileCache { int itemid = 0; int amount = 0; int durability = 0; - String enchList = ""; - //ench = new HashMap(); - + String enchList = ""; if (invstack[i] != null) { itemid = invstack[i].getTypeId(); amount = invstack[i].getAmount(); durability = invstack[i].getDurability(); - - - for(Enchantment e : invstack[i].getEnchantments().keySet()) - { - //System.out.println("enchant "+e.getName()+" bog "+invstack[i].getEnchantmentLevel(e)); - enchList = enchList.concat(e.getName()+":"+invstack[i].getEnchantmentLevel(e)+":"); - //System.out.println(enchList); - - } - } - + for(Enchantment e : invstack[i].getEnchantments().keySet()) { + enchList = enchList.concat(e.getName()+":"+invstack[i].getEnchantmentLevel(e)+":"); + } + } writer.write("i" + ":" + itemid + ":" + amount + ":" + durability + ":"+ enchList + "\r\n"); writer.flush(); @@ -87,27 +71,19 @@ public class FileCache { int itemid = 0; int amount = 0; int durability = 0; - String enchList = ""; - + String enchList = ""; if (armorstack[i] != null) { itemid = armorstack[i].getTypeId(); amount = armorstack[i].getAmount(); durability = armorstack[i].getDurability(); - - for(Enchantment e : armorstack[i].getEnchantments().keySet()) - { - //System.out.println("enchant "+e.getName()+" bog "+armorstack[i].getEnchantmentLevel(e)); - enchList = enchList.concat(e.getName()+":"+armorstack[i].getEnchantmentLevel(e)+":"); - //System.out.println(enchList); - - } + for(Enchantment e : armorstack[i].getEnchantments().keySet()) { + enchList = enchList.concat(e.getName()+":"+armorstack[i].getEnchantmentLevel(e)+":"); + } } - writer.write("w" + ":" + itemid + ":" + amount + ":" + durability + ":"+ enchList + "\r\n"); writer.flush(); } - writer.close(); } catch (final Exception e) { e.printStackTrace(); @@ -120,9 +96,8 @@ public class FileCache { ItemStack[] stacki = new ItemStack[36]; ItemStack[] stacka = new ItemStack[4]; - String group = null; - boolean op = false; - + String group = null; + boolean op = false; if (!file.exists()) { return new DataFileCache(stacki, stacka); } @@ -149,41 +124,31 @@ public class FileCache { } final String[] in = line.split(":"); - - /*if (in.length != 4) { - continue; - } */ - if (!in[0].equals("i") && !in[0].equals("w")) { continue; } // can enchant item? size ofstring in file - 4 all / 2 = number of enchant if (in[0].equals("i")) { - stacki[i] = new ItemStack(Integer.parseInt(in[1]), - Integer.parseInt(in[2]), Short.parseShort((in[3]))); - // qui c'e' un problema serio! - if(in.length > 4 && !in[4].isEmpty()) { - for(int k=4;k 4 && !in[4].isEmpty()) { + for(int k=4;k 4 && !in[4].isEmpty()) { - for(int k=4;k 4 && !in[4].isEmpty()) { + for(int k=4;k cache; private FileCache playerData = new FileCache(); public AuthMe plugin; - + private LimboCache(AuthMe plugin) { this.plugin = plugin; this.cache = new HashMap(); @@ -49,7 +49,7 @@ public class LimboCache { ItemStack[] inv; boolean operator; String playerGroup = ""; - + if (playerData.doesCacheExist(name)) { StoreInventoryEvent event = new StoreInventoryEvent(player, playerData); Bukkit.getServer().getPluginManager().callEvent(event); @@ -72,7 +72,6 @@ public class LimboCache { inv = null; arm = null; } - if(player.isOp() ) { operator = true; } else { @@ -80,8 +79,6 @@ public class LimboCache { } } - - if(Settings.isForceSurvivalModeEnabled) { if(Settings.isResetInventoryIfCreative && gameMode != 0 ) { ResetInventoryEvent event = new ResetInventoryEvent(player); @@ -100,7 +97,6 @@ public class LimboCache { loc = plugin.mv.getMVWorldManager().getMVWorld(player.getWorld().getName()).getSpawnLocation(); } catch (NullPointerException npe) {} } - } try { if(cache.containsKey(name) && playerGroup.isEmpty()) { @@ -109,15 +105,13 @@ public class LimboCache { } } catch (NullPointerException ex) { } - cache.put(player.getName().toLowerCase(), new LimboPlayer(name, loc, inv, arm, gameMode, operator, playerGroup)); } - + public void addLimboPlayer(Player player, String group) { - cache.put(player.getName().toLowerCase(), new LimboPlayer(player.getName().toLowerCase(), group)); } - + public void deleteLimboPlayer(String name) { cache.remove(name); } @@ -129,8 +123,7 @@ public class LimboCache { public boolean hasLimboPlayer(String name) { return cache.containsKey(name); } - - + public static LimboCache getInstance() { if (singleton == null) { singleton = new LimboCache(AuthMe.getInstance()); @@ -144,4 +137,5 @@ public class LimboCache { } this.addLimboPlayer(player); } + } diff --git a/src/main/java/uk/org/whoami/authme/cache/limbo/LimboPlayer.java b/src/main/java/uk/org/whoami/authme/cache/limbo/LimboPlayer.java index a688f3707..d4291b233 100644 --- a/src/main/java/uk/org/whoami/authme/cache/limbo/LimboPlayer.java +++ b/src/main/java/uk/org/whoami/authme/cache/limbo/LimboPlayer.java @@ -40,7 +40,7 @@ public class LimboPlayer { this.operator = operator; this.group = group; } - + public LimboPlayer(String name, Location loc, int gameMode, boolean operator, String group) { this.name = name; this.loc = loc; @@ -48,13 +48,12 @@ public class LimboPlayer { this.operator = operator; this.group = group; } - + public LimboPlayer(String name, String group) { this.name = name; this.group = group; } - - + public String getName() { return name; } @@ -74,11 +73,11 @@ public class LimboPlayer { public int getGameMode() { return gameMode; } - + public boolean getOperator() { return operator; } - + public String getGroup() { return group; } diff --git a/src/main/java/uk/org/whoami/authme/commands/AdminCommand.java b/src/main/java/uk/org/whoami/authme/commands/AdminCommand.java index e47552835..ed9f89b06 100644 --- a/src/main/java/uk/org/whoami/authme/commands/AdminCommand.java +++ b/src/main/java/uk/org/whoami/authme/commands/AdminCommand.java @@ -21,12 +21,14 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -52,14 +54,12 @@ import uk.org.whoami.authme.settings.Spawn; import uk.org.whoami.authme.settings.SpoutCfg; public class AdminCommand implements CommandExecutor { - - public AuthMe plugin; + public AuthMe plugin; private Messages m = Messages.getInstance(); private SpoutCfg s = SpoutCfg.getInstance(); - //private Settings settings = Settings.getInstance(); public DataSource database; - + public AdminCommand(AuthMe plugin, DataSource database) { this.database = database; this.plugin = plugin; @@ -77,13 +77,12 @@ public class AdminCommand implements CommandExecutor { sender.sendMessage("/authme lastlogin - Display Date about the Player's LastLogin"); return true; } - + if((sender instanceof ConsoleCommandSender) && args[0].equalsIgnoreCase("passpartuToken")) { if(args.length > 1) { System.out.println("[AuthMe] command usage: authme passpartuToken"); return true; } - if(Utils.getInstance().obtainToken()) { System.out.println("[AuthMe] You have 30s for insert this token ingame with /passpartu [token]"); } else { @@ -91,40 +90,32 @@ public class AdminCommand implements CommandExecutor { } return true; } - - + if (!sender.hasPermission("authme.admin." + args[0].toLowerCase())) { sender.sendMessage(m._("no_perm")); return true; } - - + if (args[0].equalsIgnoreCase("version")) { sender.sendMessage("AuthMe Version: "+AuthMe.getInstance().getDescription().getVersion()); return true; } - - + if (args[0].equalsIgnoreCase("purge")) { if (args.length != 2) { sender.sendMessage("Usage: /authme purge "); return true; } - try { long days = Long.parseLong(args[1]) * 86400000; long until = new Date().getTime() - days; - sender.sendMessage("Deleted " + database.purgeDatabase(until) + " user accounts"); - } catch (NumberFormatException e) { sender.sendMessage("Usage: /authme purge "); return true; } } else if (args[0].equalsIgnoreCase("reload")) { database.reload(); - - //Trying to load config from JAR-Ressources, if config.yml doesn't exist... File newConfigFile = new File("plugins/AuthMe","config.yml"); if (!newConfigFile.exists()) { InputStream fis = getClass().getResourceAsStream("/config.yml"); @@ -186,7 +177,6 @@ public class AdminCommand implements CommandExecutor { final CommandSender fSender = sender; final String[] arguments = args; Bukkit.getScheduler().runTask(plugin, new Runnable() { - @Override public void run() { PlayerAuth pAuth = null; @@ -223,16 +213,13 @@ public class AdminCommand implements CommandExecutor { fSender.sendMessage("[AuthMe] This player is unknown"); return; } - } - }); return true; } else { final CommandSender fSender = sender; final String[] arguments = args; Bukkit.getScheduler().runTask(plugin, new Runnable() { - @Override public void run() { String message = "[AuthMe] "; @@ -262,9 +249,7 @@ public class AdminCommand implements CommandExecutor { fSender.sendMessage("[AuthMe] Please put a valid IP"); return; } - } - }); return true; } @@ -273,16 +258,13 @@ public class AdminCommand implements CommandExecutor { sender.sendMessage("Usage: /authme register playername password"); return true; } - try { String name = args[1].toLowerCase(); String hash = PasswordSecurity.getHash(Settings.getPasswordHash, args[2], name); - if (database.isAuthAvailable(name)) { sender.sendMessage(m._("user_regged")); return true; } - PlayerAuth auth = new PlayerAuth(name, hash, "198.18.0.1", 0); if (!database.saveAuth(auth)) { sender.sendMessage(m._("error")); @@ -304,7 +286,6 @@ public class AdminCommand implements CommandExecutor { } catch (NullPointerException ex) { System.out.println(ex.getMessage()); } - } else if (args[0].equalsIgnoreCase("xauthimport")) { xAuthToFlat converter = new xAuthToFlat(plugin, database); if (converter.convert(sender)) { @@ -312,7 +293,6 @@ public class AdminCommand implements CommandExecutor { } else { sender.sendMessage("[AuthMe] Error while trying to convert from xAuth database"); } - } else if (args[0].equalsIgnoreCase("getemail")) { if (args.length != 2) { sender.sendMessage("Usage: /authme getemail playername"); @@ -322,7 +302,6 @@ public class AdminCommand implements CommandExecutor { PlayerAuth getAuth = PlayerCache.getInstance().getAuth(playername); sender.sendMessage("[AuthMe] " + args[1] + " email : " + getAuth.getEmail()); return true; - } else if (args[0].equalsIgnoreCase("chgemail")) { if (args.length != 3) { sender.sendMessage("Usage: /authme chgemail playername email"); @@ -337,7 +316,6 @@ public class AdminCommand implements CommandExecutor { } PlayerCache.getInstance().updatePlayer(getAuth); return true; - } else if (args[0].equalsIgnoreCase("convertfromrakamak")) { try { RakamakConverter.RakamakConvert(); @@ -348,7 +326,6 @@ public class AdminCommand implements CommandExecutor { } catch (NullPointerException ex) { ConsoleLogger.showError(ex.getMessage()); } - } else if (args[0].equalsIgnoreCase("setspawn")) { try { if (sender instanceof Player) { @@ -361,7 +338,18 @@ public class AdminCommand implements CommandExecutor { } catch (NullPointerException ex) { ConsoleLogger.showError(ex.getMessage()); } - + } else if (args[0].equalsIgnoreCase("purgebannedplayers")) { + List bannedPlayers = new ArrayList(); + for (OfflinePlayer off : plugin.getServer().getBannedPlayers()) { + bannedPlayers.add(off.getName().toLowerCase()); + } + final List bP = bannedPlayers; + Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { + @Override + public void run() { + database.purgeBanned(bP); + } + }); } else if (args[0].equalsIgnoreCase("spawn")) { try { if (sender instanceof Player) { @@ -374,17 +362,14 @@ public class AdminCommand implements CommandExecutor { } catch (NullPointerException ex) { ConsoleLogger.showError(ex.getMessage()); } - } else if (args[0].equalsIgnoreCase("changepassword") || args[0].equalsIgnoreCase("cp")) { if (args.length != 3) { sender.sendMessage("Usage: /authme changepassword playername newpassword"); return true; } - try { String name = args[1].toLowerCase(); String hash = PasswordSecurity.getHash(Settings.getPasswordHash, args[2], name); - PlayerAuth auth = null; if (PlayerCache.getInstance().isAuthenticated(name)) { auth = PlayerCache.getInstance().getAuth(name); @@ -395,12 +380,10 @@ public class AdminCommand implements CommandExecutor { return true; } auth.setHash(hash); - if (!database.updatePassword(auth)) { sender.sendMessage(m._("error")); return true; } - sender.sendMessage("pwd_changed"); ConsoleLogger.info(args[1] + "'s password changed"); } catch (NoSuchAlgorithmException ex) { @@ -412,17 +395,13 @@ public class AdminCommand implements CommandExecutor { sender.sendMessage("Usage: /authme unregister playername"); return true; } - String name = args[1].toLowerCase(); - if (!database.removeAuth(name)) { sender.sendMessage(m._("error")); return true; } - PlayerCache.getInstance().removePlayer(name); sender.sendMessage("unregistered"); - ConsoleLogger.info(args[1] + " unregistered"); } else { sender.sendMessage("Usage: /authme reload|register playername password|changepassword playername password|unregister playername"); diff --git a/src/main/java/uk/org/whoami/authme/commands/CaptchaCommand.java b/src/main/java/uk/org/whoami/authme/commands/CaptchaCommand.java index fbb854410..406c4efea 100644 --- a/src/main/java/uk/org/whoami/authme/commands/CaptchaCommand.java +++ b/src/main/java/uk/org/whoami/authme/commands/CaptchaCommand.java @@ -12,33 +12,31 @@ import uk.org.whoami.authme.settings.Messages; import uk.org.whoami.authme.settings.Settings; public class CaptchaCommand implements CommandExecutor { - + public AuthMe plugin; private Messages m = Messages.getInstance(); public static RandomString rdm = new RandomString(Settings.captchaLength); - + public CaptchaCommand(AuthMe plugin) { this.plugin = plugin; } - - + @Override public boolean onCommand(CommandSender sender, Command cmnd, String label, String[] args) { - + if (!(sender instanceof Player)) { return true; } - + Player player = (Player) sender; String name = player.getName().toLowerCase(); - - + if (args.length == 0) { player.sendMessage(m._("usage_captcha")); return true; } - + if (PlayerCache.getInstance().isAuthenticated(name)) { player.sendMessage(m._("logged_in")); return true; @@ -48,12 +46,12 @@ public class CaptchaCommand implements CommandExecutor { player.sendMessage(m._("no_perm")); return true; } - + if (!Settings.useCaptcha) { player.sendMessage(m._("usage_log")); return true; } - + if(!plugin.cap.containsKey(name)) { player.sendMessage(m._("usage_log")); return true; @@ -70,12 +68,9 @@ public class CaptchaCommand implements CommandExecutor { plugin.cap.remove(name); } catch (NullPointerException npe) { } - player.sendMessage("Your captcha is correct"); player.sendMessage(m._("login_msg")); return true; - - } } diff --git a/src/main/java/uk/org/whoami/authme/commands/ChangePasswordCommand.java b/src/main/java/uk/org/whoami/authme/commands/ChangePasswordCommand.java index 32e0c5f4b..2c0d71e52 100644 --- a/src/main/java/uk/org/whoami/authme/commands/ChangePasswordCommand.java +++ b/src/main/java/uk/org/whoami/authme/commands/ChangePasswordCommand.java @@ -37,7 +37,6 @@ import uk.org.whoami.authme.settings.Settings; public class ChangePasswordCommand implements CommandExecutor { private Messages m = Messages.getInstance(); - //private Settings settings = Settings.getInstance(); private DataSource database; public AuthMe plugin; @@ -63,7 +62,7 @@ public class ChangePasswordCommand implements CommandExecutor { player.sendMessage(m._("not_logged_in")); return true; } - + if (args.length != 2) { player.sendMessage(m._("usage_changepassword")); return true; diff --git a/src/main/java/uk/org/whoami/authme/commands/EmailCommand.java b/src/main/java/uk/org/whoami/authme/commands/EmailCommand.java index f686f1189..54830dd18 100644 --- a/src/main/java/uk/org/whoami/authme/commands/EmailCommand.java +++ b/src/main/java/uk/org/whoami/authme/commands/EmailCommand.java @@ -34,25 +34,25 @@ import uk.org.whoami.authme.settings.Settings; /** * - * @author darkwarriors + * @author Xephi59 */ public class EmailCommand implements CommandExecutor { public AuthMe plugin; private DataSource data; private Messages m = Messages.getInstance(); - + public EmailCommand(AuthMe plugin, DataSource data) { this.plugin = plugin; this.data = data; } - + @Override public boolean onCommand(CommandSender sender, Command cmnd, String label, String[] args) { if (!(sender instanceof Player)) { return true; } - + if (!sender.hasPermission("authme." + label.toLowerCase())) { sender.sendMessage(m._("no_perm")); return true; @@ -61,13 +61,13 @@ public class EmailCommand implements CommandExecutor { Player player = (Player) sender; String name = player.getName().toLowerCase(); - if (args.length == 0) { - player.sendMessage("usage: /email add "); - player.sendMessage("usage: /email change "); - player.sendMessage("usage: /email recovery "); - return true; - } - + if (args.length == 0) { + player.sendMessage("usage: /email add "); + player.sendMessage("usage: /email change "); + player.sendMessage("usage: /email recovery "); + return true; + } + if(args[0].equalsIgnoreCase("add")) { if (args.length != 3) { player.sendMessage("[AuthMe] /email add "); @@ -148,7 +148,6 @@ public class EmailCommand implements CommandExecutor { player.sendMessage(m._("logged_in")); return true; } - try { RandomString rand = new RandomString(Settings.getRecoveryPassLength); String thePass = rand.nextString(); @@ -171,19 +170,14 @@ public class EmailCommand implements CommandExecutor { player.sendMessage("[AuthMe] Invalid Email"); return true; } - final String finalhashnew = hashnew; final PlayerAuth finalauth = auth; - - Bukkit.getScheduler().runTask(plugin, new Runnable() { - + Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { @Override public void run() { finalauth.setHash(finalhashnew); data.updatePassword(finalauth); - } - }); plugin.mail.main(auth, thePass); player.sendMessage("[AuthMe] Recovery Email Send !"); @@ -198,7 +192,6 @@ public class EmailCommand implements CommandExecutor { player.sendMessage(m._("reg_msg")); } } - return true; } } diff --git a/src/main/java/uk/org/whoami/authme/commands/LoginCommand.java b/src/main/java/uk/org/whoami/authme/commands/LoginCommand.java index 01018725f..e8c8f546b 100644 --- a/src/main/java/uk/org/whoami/authme/commands/LoginCommand.java +++ b/src/main/java/uk/org/whoami/authme/commands/LoginCommand.java @@ -23,13 +23,12 @@ import org.bukkit.entity.Player; import uk.org.whoami.authme.AuthMe; import uk.org.whoami.authme.settings.Messages; -import uk.org.whoami.authme.settings.Settings; public class LoginCommand implements CommandExecutor { private AuthMe plugin; private Messages m = Messages.getInstance(); - + public LoginCommand(AuthMe plugin) { this.plugin = plugin; } @@ -39,13 +38,9 @@ public class LoginCommand implements CommandExecutor { if (!(sender instanceof Player)) { return true; } - - if(!Settings.useCaptcha) { - - } - + final Player player = (Player) sender; - + if (args.length == 0) { player.sendMessage(m._("usage_log")); return true; @@ -56,10 +51,7 @@ public class LoginCommand implements CommandExecutor { return true; } - String result = plugin.management.performLogin(player, args[0]); - if (result != "") player.sendMessage(result); - + plugin.management.performLogin(player, args[0]); return true; } } - diff --git a/src/main/java/uk/org/whoami/authme/commands/LogoutCommand.java b/src/main/java/uk/org/whoami/authme/commands/LogoutCommand.java index 909f414d1..ce6c1d849 100644 --- a/src/main/java/uk/org/whoami/authme/commands/LogoutCommand.java +++ b/src/main/java/uk/org/whoami/authme/commands/LogoutCommand.java @@ -48,12 +48,11 @@ public class LogoutCommand implements CommandExecutor { private Messages m = Messages.getInstance(); private PlayersLogs pllog = PlayersLogs.getInstance(); - //private Settings settings = Settings.getInstance(); private AuthMe plugin; private DataSource database; private Utils utils = Utils.getInstance(); private FileCache playerBackup = new FileCache(); - + public LogoutCommand(AuthMe plugin, DataSource database) { this.plugin = plugin; this.database = database; @@ -78,13 +77,12 @@ public class LogoutCommand implements CommandExecutor { return true; } - //clear session PlayerAuth auth = PlayerCache.getInstance().getAuth(name); auth.setIp("198.18.0.1"); database.updateSession(auth); PlayerCache.getInstance().removePlayer(name); - + LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player)); LimboCache.getInstance().addLimboPlayer(player); if(Settings.protectInventoryBeforeLogInEnabled) { @@ -117,22 +115,19 @@ public class LogoutCommand implements CommandExecutor { } BukkitTask msgT = sched.runTask(plugin, new MessageTask(plugin, name, m._("login_msg"), interval)); LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT.getTaskId()); - try { if (PlayersLogs.players.contains(player.getName())) { PlayersLogs.players.remove(player.getName()); pllog.save(); } } catch (NullPointerException npe) { - } - player.sendMessage(m._("logout")); ConsoleLogger.info(player.getDisplayName() + " logged out"); if(plugin.notifications != null) { plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " logged out!")); } - return true; } + } diff --git a/src/main/java/uk/org/whoami/authme/commands/PasspartuCommand.java b/src/main/java/uk/org/whoami/authme/commands/PasspartuCommand.java index 537de5445..f044f5720 100644 --- a/src/main/java/uk/org/whoami/authme/commands/PasspartuCommand.java +++ b/src/main/java/uk/org/whoami/authme/commands/PasspartuCommand.java @@ -23,7 +23,7 @@ public class PasspartuCommand implements CommandExecutor { private Utils utils = new Utils(); private DataSource database; public AuthMe plugin; - + public PasspartuCommand(DataSource database, AuthMe plugin) { this.database = database; this.plugin = plugin; @@ -31,20 +31,18 @@ public class PasspartuCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command cmnd, String label, String[] args) { - + if (PlayerCache.getInstance().isAuthenticated(sender.getName().toLowerCase())) { return true; } - + if ((sender instanceof Player) && args.length == 1) { if(utils.readToken(args[0])) { //bypass login! Management bypass = new Management(database,true, plugin); - String result = bypass.performLogin((Player)sender, "dontneed"); - if (result != "") sender.sendMessage(result); + bypass.performLogin((Player)sender, "dontneed"); return true; } - sender.sendMessage("Time is expired or Token is Wrong!"); return true; } diff --git a/src/main/java/uk/org/whoami/authme/commands/RecoveryCommand.java b/src/main/java/uk/org/whoami/authme/commands/RecoveryCommand.java deleted file mode 100644 index 14bcbb08d..000000000 --- a/src/main/java/uk/org/whoami/authme/commands/RecoveryCommand.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2012 darkwarriors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package uk.org.whoami.authme.commands; - -/** - * - * @author darkwarriors - */ -public class RecoveryCommand { - -} diff --git a/src/main/java/uk/org/whoami/authme/commands/RegisterCommand.java b/src/main/java/uk/org/whoami/authme/commands/RegisterCommand.java index c0b923706..d858cc61b 100644 --- a/src/main/java/uk/org/whoami/authme/commands/RegisterCommand.java +++ b/src/main/java/uk/org/whoami/authme/commands/RegisterCommand.java @@ -21,6 +21,7 @@ import java.util.Date; import me.muizers.Notifications.Notification; import net.md_5.bungee.BungeeCord; +import net.md_5.bungee.api.connection.ProxiedPlayer; import org.bukkit.Bukkit; import org.bukkit.GameMode; @@ -75,21 +76,24 @@ public class RegisterCommand implements CommandExecutor { sender.sendMessage(m._("no_perm")); return true; } - + final Player player = (Player) sender; final String name = player.getName().toLowerCase(); String ipA = player.getAddress().getAddress().getHostAddress(); - + if (Settings.bungee) { try { - ipA = BungeeCord.getInstance().getPlayer(player.getName()).getAddress().getAddress().getHostAddress(); + for (ProxiedPlayer pp : BungeeCord.getInstance().getPlayers()) { + if (pp.getName().toLowerCase() == name) { + ipA = pp.getAddress().getAddress().getHostAddress(); + break; + } + } } catch (NoClassDefFoundError ncdfe) { - ConsoleLogger.showError("Your BungeeCord version is outdated, you need a version with the latest API"); } } - - final String ip = ipA; + final String ip = ipA; if (PlayerCache.getInstance().isAuthenticated(name)) { player.sendMessage(m._("logged_in")); return true; @@ -107,18 +111,14 @@ public class RegisterCommand implements CommandExecutor { } return true; } - // - // Check if player exeded the max number of registration - // - + if(Settings.getmaxRegPerIp > 0 ){ - - if(!sender.hasPermission("authme.allow2accounts") && database.getAllAuthsByIp(ipA).size() >= Settings.getmaxRegPerIp) { - player.sendMessage(m._("max_reg")); + if(!sender.hasPermission("authme.allow2accounts") && database.getAllAuthsByIp(ipA).size() >= Settings.getmaxRegPerIp) { + player.sendMessage(m._("max_reg")); return true; - } - } - + } + } + if(Settings.emailRegistration && !Settings.getmailAccount.isEmpty()) { if(!args[0].contains("@")) { player.sendMessage(m._("usage_reg")); @@ -143,10 +143,8 @@ public class RegisterCommand implements CommandExecutor { } RandomString rand = new RandomString(Settings.getRecoveryPassLength); final String thePass = rand.nextString(); - if (!thePass.isEmpty()) { Bukkit.getScheduler().runTask(plugin, new Runnable() { - @Override public void run() { if (PasswordSecurity.userSalt.containsKey(name)) { @@ -173,10 +171,8 @@ public class RegisterCommand implements CommandExecutor { } } } - }); - if(!Settings.getRegisteredGroup.isEmpty()){ Utils.getInstance().setGroup(player, Utils.groupType.REGISTERED); } @@ -202,16 +198,12 @@ public class RegisterCommand implements CommandExecutor { try { loca = plugin.mv.getMVWorldManager().getMVWorld(world).getSpawnLocation(); } catch (NullPointerException npe) { - } catch (ClassCastException cce) { - } catch (NoClassDefFoundError ncdfe) { - } } if (Spawn.getInstance().getLocation() != null) loca = Spawn.getInstance().getLocation(); - RegisterTeleportEvent tpEvent = new RegisterTeleportEvent(player, loca); plugin.getServer().getPluginManager().callEvent(tpEvent); if(!tpEvent.isCancelled()) { @@ -231,20 +223,16 @@ public class RegisterCommand implements CommandExecutor { return true; } } - + if (args.length == 0 || (Settings.getEnablePasswordVerifier && args.length < 2) ) { player.sendMessage(m._("usage_reg")); return true; } - //System.out.println("pass legth "+args[0].length()); - //System.out.println("pass length permit"+Settings.passwordMaxLength); + if(args[0].length() < Settings.getPasswordMinLen || args[0].length() > Settings.passwordMaxLength) { player.sendMessage(m._("pass_len")); return true; } - - - try { String hash; if(Settings.getEnablePasswordVerifier) { @@ -256,7 +244,6 @@ public class RegisterCommand implements CommandExecutor { } } else hash = PasswordSecurity.getHash(Settings.getPasswordHash, args[0], name); - if (Settings.getMySQLColumnSalt.isEmpty()) { auth = new PlayerAuth(name, hash, ip, new Date().getTime()); @@ -268,7 +255,6 @@ public class RegisterCommand implements CommandExecutor { return true; } PlayerCache.getInstance().addPlayer(auth); - LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name); if (limbo != null) { player.setGameMode(GameMode.getByValue(limbo.getGameMode())); @@ -297,13 +283,11 @@ public class RegisterCommand implements CommandExecutor { player.teleport(tpEvent.getTo()); } } - sender.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId()); sender.getServer().getScheduler().cancelTask(limbo.getMessageTaskId()); LimboCache.getInstance().deleteLimboPlayer(name); } - - + if(!Settings.getRegisteredGroup.isEmpty()){ Utils.getInstance().setGroup(player, Utils.groupType.REGISTERED); } @@ -317,7 +301,6 @@ public class RegisterCommand implements CommandExecutor { if(plugin.notifications != null) { plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " has registered!")); } - } catch (NoSuchAlgorithmException ex) { ConsoleLogger.showError(ex.getMessage()); sender.sendMessage(m._("error")); diff --git a/src/main/java/uk/org/whoami/authme/commands/UnregisterCommand.java b/src/main/java/uk/org/whoami/authme/commands/UnregisterCommand.java index 62e87c74a..252c1c973 100644 --- a/src/main/java/uk/org/whoami/authme/commands/UnregisterCommand.java +++ b/src/main/java/uk/org/whoami/authme/commands/UnregisterCommand.java @@ -49,11 +49,10 @@ public class UnregisterCommand implements CommandExecutor { private Messages m = Messages.getInstance(); private PlayersLogs pllog = PlayersLogs.getInstance(); - //private Settings settings = Settings.getInstance(); public AuthMe plugin; private DataSource database; private FileCache playerCache = new FileCache(); - + public UnregisterCommand(AuthMe plugin, DataSource database) { this.plugin = plugin; this.database = database; @@ -94,8 +93,6 @@ public class UnregisterCommand implements CommandExecutor { player.saveData(); PlayerCache.getInstance().removePlayer(player.getName().toLowerCase()); LimboCache.getInstance().addLimboPlayer(player); - - int delay = Settings.getRegistrationTimeout * 20; int interval = Settings.getWarnMessageInterval; BukkitScheduler sched = sender.getServer().getScheduler(); @@ -121,8 +118,7 @@ public class UnregisterCommand implements CommandExecutor { // check if Player cache File Exist and delete it, preventing duplication of items if(playerCache.doesCacheExist(name)) { playerCache.removeCache(name); - } - + } if (PlayersLogs.players.contains(player.getName())) { PlayersLogs.players.remove(player.getName()); pllog.save(); diff --git a/src/main/java/uk/org/whoami/authme/converter/FlatToSql.java b/src/main/java/uk/org/whoami/authme/converter/FlatToSql.java index eed144b7b..178554e3e 100644 --- a/src/main/java/uk/org/whoami/authme/converter/FlatToSql.java +++ b/src/main/java/uk/org/whoami/authme/converter/FlatToSql.java @@ -12,15 +12,18 @@ import uk.org.whoami.authme.AuthMe; import uk.org.whoami.authme.ConsoleLogger; import uk.org.whoami.authme.settings.Settings; - +/** +* +* @author Xephi59 +*/ public class FlatToSql { - + public AuthMe instance; - + public FlatToSql (AuthMe instance) { this.instance = instance; } - + public FlatToSql getInstance() { return this; } @@ -34,10 +37,9 @@ public class FlatToSql { private static String lastlocY; private static String lastlocZ; private static String columnEmail; - private static File source; private static File output; - + public static void FlatToSqlConverter() throws IOException { tableName = Settings.getMySQLTablename; columnName = Settings.getMySQLColumnName; @@ -76,9 +78,9 @@ public class FlatToSql { sql.newLine(); String[] args = line.split(":"); if (args.length == 4) - newline = "INSERT INTO " + tableName + " VALUES (" + i + ", '" + args[0] + "', '" + args[1] + "', '" + args[2] + "', " + args[3] + ", 0, 0, 0, " + "your@email.com" + ");"; + newline = "INSERT INTO " + tableName + " VALUES (" + i + ", '" + args[0] + "', '" + args[1] + "', '" + args[2] + "', " + args[3] + ", 0, 0, 0, " + "'your@email.com'" + ");"; else if (args.length == 7) - newline = "INSERT INTO " + tableName + " VALUES (" + i + ", '" + args[0] + "', '" + args[1] + "', '" + args[2] + "', " + args[3] + ", " + args[4] + ", " + args[5] + ", " + args[6] + ", " + "your@email.com" + ");"; + newline = "INSERT INTO " + tableName + " VALUES (" + i + ", '" + args[0] + "', '" + args[1] + "', '" + args[2] + "', " + args[3] + ", " + args[4] + ", " + args[5] + ", " + args[6] + ", " + "'your@email.com'" + ");"; else newline = ""; if (newline != "") @@ -87,8 +89,7 @@ public class FlatToSql { } sql.close(); br.close(); - System.out.println("[AuthMe] The FlatFile has been converted to authme.sql file"); - + ConsoleLogger.info("The FlatFile has been converted to authme.sql file"); } catch (FileNotFoundException ex) { ConsoleLogger.showError(ex.getMessage()); } catch (IOException ex) { diff --git a/src/main/java/uk/org/whoami/authme/converter/RakamakConverter.java b/src/main/java/uk/org/whoami/authme/converter/RakamakConverter.java index a1c21c1d7..546d4e974 100644 --- a/src/main/java/uk/org/whoami/authme/converter/RakamakConverter.java +++ b/src/main/java/uk/org/whoami/authme/converter/RakamakConverter.java @@ -17,15 +17,18 @@ import uk.org.whoami.authme.security.PasswordSecurity; import uk.org.whoami.authme.security.PasswordSecurity.HashAlgorithm; import uk.org.whoami.authme.settings.Settings; - +/** +* +* @author Xephi59 +*/ public class RakamakConverter { - + public AuthMe instance; - + public RakamakConverter (AuthMe instance) { this.instance = instance; } - + public RakamakConverter getInstance() { return this; } @@ -34,12 +37,11 @@ public class RakamakConverter { private static Boolean useIP; private static String fileName; private static String ipFileName; - private static File source; private static File output; private static File ipfiles; private static boolean alreadyExist = false; - + public static void RakamakConvert() throws IOException { hash = Settings.rakamakHash; useIP = Settings.rakamakUseIp; @@ -47,8 +49,6 @@ public class RakamakConverter { ipFileName = Settings.rakamakUsersIp; HashMap playerIP = new HashMap(); HashMap playerPSW = new HashMap(); - - try { source = new File(AuthMe.getInstance().getDataFolder() + File.separator + fileName); ipfiles = new File(AuthMe.getInstance().getDataFolder() + File.separator + ipFileName); @@ -86,8 +86,6 @@ public class RakamakConverter { } } } - - users.close(); outputDB = new BufferedWriter(new FileWriter(output)); for (Entry m : playerPSW.entrySet()) { @@ -96,7 +94,6 @@ public class RakamakConverter { String psw = playerPSW.get(player); String ip = playerIP.get(player); newLine = player + ":" + psw + ":" + ip + ":1325376060:0:0:0"; - } else { String player = m.getKey(); String psw = playerPSW.get(player); @@ -108,14 +105,8 @@ public class RakamakConverter { System.out.println("Write line"); outputDB.newLine(); } - - outputDB.close(); - - System.out.println("[AuthMe] Rakamak database has been converted to auths.db"); - - - + ConsoleLogger.info("Rakamak database has been converted to auths.db"); } catch (FileNotFoundException ex) { ConsoleLogger.showError(ex.getMessage()); } catch (IOException ex) { diff --git a/src/main/java/uk/org/whoami/authme/converter/xAuthToFlat.java b/src/main/java/uk/org/whoami/authme/converter/xAuthToFlat.java index 68746e4b9..255313434 100644 --- a/src/main/java/uk/org/whoami/authme/converter/xAuthToFlat.java +++ b/src/main/java/uk/org/whoami/authme/converter/xAuthToFlat.java @@ -18,16 +18,20 @@ import uk.org.whoami.authme.AuthMe; import uk.org.whoami.authme.cache.auth.PlayerAuth; import uk.org.whoami.authme.datasource.DataSource; +/** +* +* @author Xephi59 +*/ public class xAuthToFlat { public AuthMe instance; public DataSource database; - + public xAuthToFlat(AuthMe instance, DataSource database) { this.instance = instance; this.database = database; } - + public boolean convert(CommandSender sender) { if (instance.getServer().getPluginManager().getPlugin("xAuth") == null) { sender.sendMessage("[AuthMe] xAuth plugin not found"); @@ -41,7 +45,6 @@ public class xAuthToFlat { sender.sendMessage("[AuthMe] Error while import xAuthPlayers"); return false; } - sender.sendMessage("[AuthMe] Starting import..."); for (int id : players) { String pl = getIdPlayer(id); @@ -54,13 +57,12 @@ public class xAuthToFlat { sender.sendMessage("[AuthMe] Import done!"); return true; } - + public String getIdPlayer(int id) { String realPass = ""; Connection conn = xAuth.getPlugin().getDatabaseController().getConnection(); PreparedStatement ps = null; ResultSet rs = null; - try { String sql = String.format("SELECT `playername` FROM `%s` WHERE `id` = ?", xAuth.getPlugin().getDatabaseController().getTable(Table.ACCOUNT)); @@ -69,7 +71,6 @@ public class xAuthToFlat { rs = ps.executeQuery(); if (!rs.next()) return null; - realPass = rs.getString("playername").toLowerCase(); } catch (SQLException e) { xAuthLog.severe("Failed to retrieve name for account: " + id, e); @@ -107,7 +108,6 @@ public class xAuthToFlat { Connection conn = xAuth.getPlugin().getDatabaseController().getConnection(); PreparedStatement ps = null; ResultSet rs = null; - try { String sql = String.format("SELECT `password`, `pwtype` FROM `%s` WHERE `id` = ?", xAuth.getPlugin().getDatabaseController().getTable(Table.ACCOUNT)); @@ -116,7 +116,6 @@ public class xAuthToFlat { rs = ps.executeQuery(); if (!rs.next()) return null; - realPass = rs.getString("password"); } catch (SQLException e) { xAuthLog.severe("Failed to retrieve password hash for account: " + accountId, e); diff --git a/src/main/java/uk/org/whoami/authme/datasource/CacheDataSource.java b/src/main/java/uk/org/whoami/authme/datasource/CacheDataSource.java index 1ea0a4e91..4d443858b 100644 --- a/src/main/java/uk/org/whoami/authme/datasource/CacheDataSource.java +++ b/src/main/java/uk/org/whoami/authme/datasource/CacheDataSource.java @@ -35,7 +35,7 @@ public class CacheDataSource implements DataSource { this.plugin = plugin; this.source = source; } - + @Override public synchronized boolean isAuthAvailable(String user) { return cache.containsKey(user) ? true : source.isAuthAvailable(user); @@ -79,30 +79,26 @@ public class CacheDataSource implements DataSource { } return false; } - + @Override public boolean updateQuitLoc(PlayerAuth auth) { - //System.out.println("[debug name chace non work]"+auth.getNickname()+"[debug loc]"+auth.getQuitLocX()); if (source.updateQuitLoc(auth)) { - //System.out.println("[debug name chace]"+auth.getNickname()+"[debug loc]"+auth.getQuitLocX()); cache.get(auth.getNickname()).setQuitLocX(auth.getQuitLocX()); cache.get(auth.getNickname()).setQuitLocY(auth.getQuitLocY()); cache.get(auth.getNickname()).setQuitLocZ(auth.getQuitLocZ()); return true; - } return false; } - + @Override public int getIps(String ip) { return source.getIps(ip); } - + @Override public int purgeDatabase(long until) { int cleared = source.purgeDatabase(until); - if (cleared > 0) { for (PlayerAuth auth : cache.values()) { if(auth.getLastLogin() < until) { @@ -151,7 +147,7 @@ public class CacheDataSource implements DataSource { } return false; } - + @Override public boolean updateSalt(PlayerAuth auth) { if(source.updateSalt(auth)) { @@ -170,9 +166,19 @@ public class CacheDataSource implements DataSource { public List getAllAuthsByIp(String ip) { return source.getAllAuthsByIp(ip); } - + @Override public List getAllAuthsByEmail(String email) { return source.getAllAuthsByEmail(email); } + + @Override + public void purgeBanned(List banned) { + source.purgeBanned(banned); + for (PlayerAuth auth : cache.values()) { + if (banned.contains(auth.getNickname())) { + cache.remove(auth.getNickname()); + } + } + } } diff --git a/src/main/java/uk/org/whoami/authme/datasource/DataSource.java b/src/main/java/uk/org/whoami/authme/datasource/DataSource.java index 21fc0568b..b3b5a8306 100644 --- a/src/main/java/uk/org/whoami/authme/datasource/DataSource.java +++ b/src/main/java/uk/org/whoami/authme/datasource/DataSource.java @@ -40,23 +40,25 @@ public interface DataSource { int purgeDatabase(long until); boolean removeAuth(String user); - + boolean updateQuitLoc(PlayerAuth auth); - + int getIps(String ip); - + List getAllAuthsByName(PlayerAuth auth); - + List getAllAuthsByIp(String ip); - + List getAllAuthsByEmail(String email); - + boolean updateEmail(PlayerAuth auth); - + boolean updateSalt(PlayerAuth auth); - + void close(); void reload(); - + + void purgeBanned(List banned); + } diff --git a/src/main/java/uk/org/whoami/authme/datasource/FileDataSource.java b/src/main/java/uk/org/whoami/authme/datasource/FileDataSource.java index 436163f83..a169c248b 100644 --- a/src/main/java/uk/org/whoami/authme/datasource/FileDataSource.java +++ b/src/main/java/uk/org/whoami/authme/datasource/FileDataSource.java @@ -32,7 +32,6 @@ import uk.org.whoami.authme.settings.Settings; public class FileDataSource implements DataSource { - /* file layout: * * PLAYERNAME:HASHSUM:IP:LOGININMILLIESECONDS:COORDS @@ -48,7 +47,7 @@ public class FileDataSource implements DataSource { source = new File(Settings.AUTH_FILE); source.createNewFile(); } - + @Override public synchronized boolean isAuthAvailable(String user) { BufferedReader br = null; @@ -83,17 +82,14 @@ public class FileDataSource implements DataSource { if (isAuthAvailable(auth.getNickname())) { return false; } - BufferedWriter bw = null; try { if( auth.getQuitLocY() == 0 ) { bw = new BufferedWriter(new FileWriter(source, true)); bw.write(auth.getNickname() + ":" + auth.getHash() + ":" + auth.getIp() + ":" + auth.getLastLogin() + "\n"); - //System.out.println("[Debug save1] "+auth.getQuitLocY()); } else { bw = new BufferedWriter(new FileWriter(source, true)); - bw.write(auth.getNickname() + ":" + auth.getHash() + ":" + auth.getIp() + ":" + auth.getLastLogin() + ":" + auth.getQuitLocX() + ":" + auth.getQuitLocY() + ":" + auth.getQuitLocZ() + "\n"); - //System.out.println("[Debug save2] "+auth.getQuitLocY()); + bw.write(auth.getNickname() + ":" + auth.getHash() + ":" + auth.getIp() + ":" + auth.getLastLogin() + ":" + auth.getQuitLocX() + ":" + auth.getQuitLocY() + ":" + auth.getQuitLocZ() + "\n"); } } catch (IOException ex) { ConsoleLogger.showError(ex.getMessage()); @@ -114,9 +110,7 @@ public class FileDataSource implements DataSource { if (!isAuthAvailable(auth.getNickname())) { return false; } - PlayerAuth newAuth = null; - BufferedReader br = null; try { br = new BufferedReader(new FileReader(source)); @@ -152,9 +146,7 @@ public class FileDataSource implements DataSource { if (!isAuthAvailable(auth.getNickname())) { return false; } - PlayerAuth newAuth = null; - BufferedReader br = null; try { br = new BufferedReader(new FileReader(source)); @@ -187,13 +179,10 @@ public class FileDataSource implements DataSource { @Override public boolean updateQuitLoc(PlayerAuth auth) { - if (!isAuthAvailable(auth.getNickname())) { return false; } - PlayerAuth newAuth = null; - BufferedReader br = null; try { br = new BufferedReader(new FileReader(source)); @@ -201,7 +190,6 @@ public class FileDataSource implements DataSource { while ((line = br.readLine()) != null) { String[] args = line.split(":"); if (args[0].equals(auth.getNickname())) { - //System.out.println("[Debug update] "+auth.getQuitLocX()); newAuth = new PlayerAuth(args[0], args[1], args[2], Long.parseLong(args[3]), auth.getQuitLocX(), auth.getQuitLocY(), auth.getQuitLocZ()); break; } @@ -224,7 +212,7 @@ public class FileDataSource implements DataSource { saveAuth(newAuth); return true; } - + @Override public int getIps(String ip) { BufferedReader br = null; @@ -234,7 +222,6 @@ public class FileDataSource implements DataSource { String line; while ((line = br.readLine()) != null) { String[] args = line.split(":"); - //System.out.println(ip+" match? "+args[2]); if (args.length > 3 && args[2].equals(ip)) { countIp++; } @@ -255,14 +242,13 @@ public class FileDataSource implements DataSource { } } } - + @Override public int purgeDatabase(long until) { BufferedReader br = null; BufferedWriter bw = null; ArrayList lines = new ArrayList(); int cleared = 0; - try { br = new BufferedReader(new FileReader(source)); String line; @@ -276,7 +262,6 @@ public class FileDataSource implements DataSource { } cleared++; } - bw = new BufferedWriter(new FileWriter(source)); for (String l : lines) { bw.write(l + "\n"); @@ -309,7 +294,6 @@ public class FileDataSource implements DataSource { if (!isAuthAvailable(user)) { return false; } - BufferedReader br = null; BufferedWriter bw = null; ArrayList lines = new ArrayList(); @@ -322,7 +306,6 @@ public class FileDataSource implements DataSource { lines.add(line); } } - bw = new BufferedWriter(new FileWriter(source)); for (String l : lines) { bw.write(l + "\n"); @@ -400,7 +383,7 @@ public class FileDataSource implements DataSource { public boolean updateEmail(PlayerAuth auth) { return false; } - + @Override public boolean updateSalt(PlayerAuth auth) { return false; @@ -415,7 +398,6 @@ public class FileDataSource implements DataSource { String line; while ((line = br.readLine()) != null) { String[] args = line.split(":"); - //System.out.println(ip+" match? "+args[2]); if (args.length > 3 && args[2].equals(auth.getIp())) { countIp.add(args[0]); } @@ -471,4 +453,49 @@ public class FileDataSource implements DataSource { public List getAllAuthsByEmail(String email) { return new ArrayList(); } + + @Override + public void purgeBanned(List banned) { + BufferedReader br = null; + BufferedWriter bw = null; + ArrayList lines = new ArrayList(); + try { + br = new BufferedReader(new FileReader(source)); + String line; + while ((line = br.readLine()) != null) { + String[] args = line.split(":"); + try { + if (banned.contains(args[0])) { + lines.add(line); + } + } catch (NullPointerException npe) {} + catch (ArrayIndexOutOfBoundsException aioobe) {} + } + bw = new BufferedWriter(new FileWriter(source)); + for (String l : lines) { + bw.write(l + "\n"); + } + } catch (FileNotFoundException ex) { + ConsoleLogger.showError(ex.getMessage()); + return; + } catch (IOException ex) { + ConsoleLogger.showError(ex.getMessage()); + return; + } finally { + if (br != null) { + try { + br.close(); + } catch (IOException ex) { + } + } + if (bw != null) { + try { + bw.close(); + } catch (IOException ex) { + } + } + } + return; + } + } diff --git a/src/main/java/uk/org/whoami/authme/datasource/MySQLDataSource.java b/src/main/java/uk/org/whoami/authme/datasource/MySQLDataSource.java index 7999bc18b..08b963979 100644 --- a/src/main/java/uk/org/whoami/authme/datasource/MySQLDataSource.java +++ b/src/main/java/uk/org/whoami/authme/datasource/MySQLDataSource.java @@ -58,7 +58,6 @@ public class MySQLDataSource implements DataSource { this.port = Settings.getMySQLPort; this.username = Settings.getMySQLUsername; this.password = Settings.getMySQLPassword; - this.database = Settings.getMySQLDatabase; this.tableName = Settings.getMySQLTablename; this.columnName = Settings.getMySQLColumnName; @@ -73,7 +72,7 @@ public class MySQLDataSource implements DataSource { this.columnEmail = Settings.getMySQLColumnEmail; this.columnOthers = Settings.getMySQLOtherUsernameColumn; this.columnID = Settings.getMySQLColumnId; - + connect(); setup(); } @@ -87,7 +86,6 @@ public class MySQLDataSource implements DataSource { dataSource.setPort(Integer.parseInt(port)); dataSource.setUser(username); dataSource.setPassword(password); - conPool = new MiniConnectionPoolManager(dataSource, 10); ConsoleLogger.info("Connection pool ready"); } @@ -110,7 +108,6 @@ public class MySQLDataSource implements DataSource { + lastlocZ + " smallint(6) DEFAULT '0'," + columnEmail + " VARCHAR(255) DEFAULT 'your@email.com'," + "CONSTRAINT table_const_prim PRIMARY KEY (" + columnID + "));"); - rs = con.getMetaData().getColumns(null, null, tableName, columnPassword); if (!rs.next()) { st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN " @@ -343,7 +340,7 @@ public class MySQLDataSource implements DataSource { } return true; } - + @Override public boolean updateQuitLoc(PlayerAuth auth) { Connection con = null; @@ -368,11 +365,7 @@ public class MySQLDataSource implements DataSource { } return true; } - - // - // Check how many registration by given ip has been done - // - + @Override public int getIps(String ip) { Connection con = null; @@ -401,7 +394,7 @@ public class MySQLDataSource implements DataSource { close(con); } } - + @Override public boolean updateEmail(PlayerAuth auth) { Connection con = null; @@ -424,7 +417,7 @@ public class MySQLDataSource implements DataSource { } return true; } - + @Override public boolean updateSalt(PlayerAuth auth) { if (columnSalt.isEmpty()) { @@ -450,7 +443,7 @@ public class MySQLDataSource implements DataSource { } return true; } - + @Override public synchronized void close() { try { @@ -551,7 +544,7 @@ public class MySQLDataSource implements DataSource { close(con); } } - + @Override public List getAllAuthsByEmail(String email) { Connection con = null; @@ -581,5 +574,23 @@ public class MySQLDataSource implements DataSource { } } + @Override + public void purgeBanned(List banned) { + Connection con = null; + PreparedStatement pst = null; + try { + for (String name : banned) { + con = conPool.getValidConnection(); + pst = con.prepareStatement("DELETE FROM " + tableName + " WHERE " + columnName + "=?;"); + pst.setString(1, name); + pst.executeUpdate(); + } + } catch (SQLException ex) { + ConsoleLogger.showError(ex.getMessage()); + } finally { + close(pst); + close(con); + } + } } diff --git a/src/main/java/uk/org/whoami/authme/datasource/SqliteDataSource.java b/src/main/java/uk/org/whoami/authme/datasource/SqliteDataSource.java index 2abef34fc..5438cbdf1 100644 --- a/src/main/java/uk/org/whoami/authme/datasource/SqliteDataSource.java +++ b/src/main/java/uk/org/whoami/authme/datasource/SqliteDataSource.java @@ -4,7 +4,6 @@ */ package uk.org.whoami.authme.datasource; - import java.sql.*; import java.util.ArrayList; import java.util.List; @@ -43,12 +42,10 @@ public class SqliteDataSource implements DataSource { private Connection con; public SqliteDataSource() throws ClassNotFoundException, SQLException { - //Settings s = Settings.getInstance(); this.host = Settings.getMySQLHost; this.port = Settings.getMySQLPort; this.username = Settings.getMySQLUsername; this.password = Settings.getMySQLPassword; - this.database = Settings.getMySQLDatabase; this.tableName = Settings.getMySQLTablename; this.columnName = Settings.getMySQLColumnName; @@ -63,7 +60,7 @@ public class SqliteDataSource implements DataSource { this.nonActivatedGroup = Settings.getNonActivatedGroup; this.columnEmail = Settings.getMySQLColumnEmail; this.columnID = Settings.getMySQLColumnId; - + connect(); setup(); } @@ -71,13 +68,11 @@ public class SqliteDataSource implements DataSource { private synchronized void connect() throws ClassNotFoundException, SQLException { Class.forName("org.sqlite.JDBC"); ConsoleLogger.info("SQLite driver loaded"); - this.con = DriverManager.getConnection("jdbc:sqlite:plugins/AuthMe/"+database+".db"); } private synchronized void setup() throws SQLException { - //Connection con = null; Statement st = null; ResultSet rs = null; try { @@ -93,7 +88,6 @@ public class SqliteDataSource implements DataSource { + lastlocZ + " smallint(6) DEFAULT '0'," + columnEmail + " VARCHAR(255) DEFAULT 'your@email.com'," + "CONSTRAINT table_const_prim PRIMARY KEY (" + columnID + "));"); - rs = con.getMetaData().getColumns(null, null, tableName, columnPassword); if (!rs.next()) { st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN " @@ -126,7 +120,6 @@ public class SqliteDataSource implements DataSource { } finally { close(rs); close(st); - //close(con); } ConsoleLogger.info("SQLite Setup finished"); } @@ -146,33 +139,26 @@ public class SqliteDataSource implements DataSource { } finally { close(rs); close(pst); - //close(con); } } @Override public synchronized PlayerAuth getAuth(String user) { - //Connection con = null; PreparedStatement pst = null; ResultSet rs = null; try { - pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE " + columnName + "=?;"); pst.setString(1, user); rs = pst.executeQuery(); if (rs.next()) { if (rs.getString(columnIp).isEmpty() ) { - //System.out.println("[Authme Debug] ColumnIp is empty"); return new PlayerAuth(rs.getString(columnName), rs.getString(columnPassword), "198.18.0.1", rs.getLong(columnLastLogin), rs.getInt(lastlocX), rs.getInt(lastlocY), rs.getInt(lastlocZ), rs.getString(columnEmail)); } else { if(!columnSalt.isEmpty()){ - //System.out.println("[Authme Debug] column Salt is" + rs.getString(columnSalt)); return new PlayerAuth(rs.getString(columnName), rs.getString(columnPassword),rs.getString(columnSalt), rs.getInt(columnGroup), rs.getString(columnIp), rs.getLong(columnLastLogin), rs.getInt(lastlocX), rs.getInt(lastlocY), rs.getInt(lastlocZ), rs.getString(columnEmail)); } else { - //System.out.println("[Authme Debug] column Salt is empty"); return new PlayerAuth(rs.getString(columnName), rs.getString(columnPassword), rs.getString(columnIp), rs.getLong(columnLastLogin), rs.getInt(lastlocX), rs.getInt(lastlocY), rs.getInt(lastlocZ), rs.getString(columnEmail)); - } } } else { @@ -184,13 +170,11 @@ public class SqliteDataSource implements DataSource { } finally { close(rs); close(pst); - //close(con); } } @Override public synchronized boolean saveAuth(PlayerAuth auth) { - //Connection con = null; PreparedStatement pst = null; try { if (columnSalt.isEmpty() && auth.getSalt().isEmpty()) { @@ -214,14 +198,12 @@ public class SqliteDataSource implements DataSource { return false; } finally { close(pst); - //close(con); } return true; } @Override public synchronized boolean updatePassword(PlayerAuth auth) { - //Connection con = null; PreparedStatement pst = null; try { pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnPassword + "=? WHERE " + columnName + "=?;"); @@ -233,14 +215,12 @@ public class SqliteDataSource implements DataSource { return false; } finally { close(pst); - //close(con); } return true; } @Override public boolean updateSession(PlayerAuth auth) { - //Connection con = null; PreparedStatement pst = null; try { pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnIp + "=?, " + columnLastLogin + "=? WHERE " + columnName + "=?;"); @@ -253,14 +233,12 @@ public class SqliteDataSource implements DataSource { return false; } finally { close(pst); - //close(con); } return true; } @Override public int purgeDatabase(long until) { - //Connection con = null; PreparedStatement pst = null; try { @@ -272,16 +250,13 @@ public class SqliteDataSource implements DataSource { return 0; } finally { close(pst); - //close(con); } } @Override public synchronized boolean removeAuth(String user) { - //Connection con = null; PreparedStatement pst = null; try { - pst = con.prepareStatement("DELETE FROM " + tableName + " WHERE " + columnName + "=?;"); pst.setString(1, user); pst.executeUpdate(); @@ -290,17 +265,14 @@ public class SqliteDataSource implements DataSource { return false; } finally { close(pst); - //close(con); } return true; } - + @Override public boolean updateQuitLoc(PlayerAuth auth) { - //Connection con = null; PreparedStatement pst = null; try { - pst = con.prepareStatement("UPDATE " + tableName + " SET " + lastlocX + "=?, "+ lastlocY +"=?, "+ lastlocZ +"=? WHERE " + columnName + "=?;"); pst.setLong(1, auth.getQuitLocX()); pst.setLong(2, auth.getQuitLocY()); @@ -312,23 +284,16 @@ public class SqliteDataSource implements DataSource { return false; } finally { close(pst); - //close(con); } return true; } - - // - // Check how many registration by given ip has been done - // - + @Override public int getIps(String ip) { - //Connection con = null; PreparedStatement pst = null; ResultSet rs = null; int countIp=0; try { - pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE " + columnIp + "=?;"); pst.setString(1, ip); @@ -343,13 +308,11 @@ public class SqliteDataSource implements DataSource { } finally { close(rs); close(pst); - //close(con); } } - + @Override public boolean updateEmail(PlayerAuth auth) { - //Connection con = null; PreparedStatement pst = null; try { pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnEmail + "=? WHERE " + columnName + "=?;"); @@ -361,17 +324,15 @@ public class SqliteDataSource implements DataSource { return false; } finally { close(pst); - //close(con); } return true; } - + @Override public boolean updateSalt(PlayerAuth auth) { if(columnSalt.isEmpty()) { return false; } - //Connection con = null; PreparedStatement pst = null; try { pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnSalt + "=? WHERE " + columnName + "=?;"); @@ -383,11 +344,10 @@ public class SqliteDataSource implements DataSource { return false; } finally { close(pst); - //close(con); } return true; } - + @Override public synchronized void close() { try { @@ -456,7 +416,6 @@ public class SqliteDataSource implements DataSource { } finally { close(rs); close(pst); - //close(con); } } @@ -485,10 +444,9 @@ public class SqliteDataSource implements DataSource { } finally { close(rs); close(pst); - //close(con); } } - + @Override public List getAllAuthsByEmail(String email) { PreparedStatement pst = null; @@ -516,5 +474,21 @@ public class SqliteDataSource implements DataSource { close(pst); } } - + + @Override + public void purgeBanned(List banned) { + PreparedStatement pst = null; + try { + for (String name : banned) { + pst = con.prepareStatement("DELETE FROM " + tableName + " WHERE " + columnName + "=?;"); + pst.setString(1, name); + pst.executeUpdate(); + } + } catch (SQLException ex) { + ConsoleLogger.showError(ex.getMessage()); + } finally { + close(pst); + } + } + } diff --git a/src/main/java/uk/org/whoami/authme/debug/CardboardBox.java b/src/main/java/uk/org/whoami/authme/debug/CardboardBox.java index 161d8d244..dce062740 100644 --- a/src/main/java/uk/org/whoami/authme/debug/CardboardBox.java +++ b/src/main/java/uk/org/whoami/authme/debug/CardboardBox.java @@ -15,10 +15,8 @@ import org.bukkit.inventory.ItemStack; public class CardboardBox implements Serializable { private static final long serialVersionUID = 729890133797629668L; - private final int type, amount; private final short damage; - private final HashMap enchants; public CardboardBox(ItemStack item) { diff --git a/src/main/java/uk/org/whoami/authme/debug/CardboardEnchantment.java b/src/main/java/uk/org/whoami/authme/debug/CardboardEnchantment.java index c056ac2d3..e1da30c5e 100644 --- a/src/main/java/uk/org/whoami/authme/debug/CardboardEnchantment.java +++ b/src/main/java/uk/org/whoami/authme/debug/CardboardEnchantment.java @@ -22,4 +22,5 @@ public class CardboardEnchantment implements Serializable { public Enchantment unbox() { return Enchantment.getById(this.id); } -} \ No newline at end of file + +} diff --git a/src/main/java/uk/org/whoami/authme/events/AuthMeTeleportEvent.java b/src/main/java/uk/org/whoami/authme/events/AuthMeTeleportEvent.java index be6ea5b0d..7f8b9a333 100644 --- a/src/main/java/uk/org/whoami/authme/events/AuthMeTeleportEvent.java +++ b/src/main/java/uk/org/whoami/authme/events/AuthMeTeleportEvent.java @@ -3,12 +3,16 @@ package uk.org.whoami.authme.events; import org.bukkit.Location; import org.bukkit.entity.Player; +/** +* +* @author Xephi59 +*/ public class AuthMeTeleportEvent extends CustomEvent { - + private Player player; private Location to; private Location from; - + public AuthMeTeleportEvent(Player player, Location to) { this.player = player; this.from = player.getLocation(); diff --git a/src/main/java/uk/org/whoami/authme/events/CustomEvent.java b/src/main/java/uk/org/whoami/authme/events/CustomEvent.java index b5f610e0c..31bdee99c 100644 --- a/src/main/java/uk/org/whoami/authme/events/CustomEvent.java +++ b/src/main/java/uk/org/whoami/authme/events/CustomEvent.java @@ -4,31 +4,32 @@ import org.bukkit.Server; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; +/** +* +* @author Xephi59 +*/ public class CustomEvent extends Event { - - + private boolean isCancelled; private static final HandlerList handlers = new HandlerList(); private static Server s; - public HandlerList getHandlers() { return handlers; } - + public static HandlerList getHandlerList() { return handlers; } - + public boolean isCancelled() { return this.isCancelled; } - + public void setCancelled(boolean cancelled) { this.isCancelled = cancelled; } - public static Server getServer() { return s; } diff --git a/src/main/java/uk/org/whoami/authme/events/LoginEvent.java b/src/main/java/uk/org/whoami/authme/events/LoginEvent.java index 4c6cca342..b7d0f7d42 100644 --- a/src/main/java/uk/org/whoami/authme/events/LoginEvent.java +++ b/src/main/java/uk/org/whoami/authme/events/LoginEvent.java @@ -2,21 +2,24 @@ package uk.org.whoami.authme.events; import org.bukkit.entity.Player; +/** +* +* @author Xephi59 +*/ public class LoginEvent extends UncancellableEvent { - private Player player; private boolean isLogin; - + public LoginEvent(Player player, boolean isLogin) { this.player = player; this.isLogin = isLogin; } - + public Player getPlayer() { return this.player; } - + public void setPlayer(Player player) { this.player = player; } @@ -28,4 +31,5 @@ public class LoginEvent extends UncancellableEvent { public boolean isLogin() { return isLogin; } + } diff --git a/src/main/java/uk/org/whoami/authme/events/ProtectInventoryEvent.java b/src/main/java/uk/org/whoami/authme/events/ProtectInventoryEvent.java index b6fd1551b..db4ca2610 100644 --- a/src/main/java/uk/org/whoami/authme/events/ProtectInventoryEvent.java +++ b/src/main/java/uk/org/whoami/authme/events/ProtectInventoryEvent.java @@ -5,20 +5,24 @@ import org.bukkit.inventory.ItemStack; import uk.org.whoami.authme.api.API; +/** +* +* @author Xephi59 +*/ public class ProtectInventoryEvent extends CustomEvent { - + private ItemStack[] storedinventory; private ItemStack[] storedarmor; private ItemStack[] emptyInventory = null; private ItemStack[] emptyArmor = null; private Player player; - + public ProtectInventoryEvent(Player player, ItemStack[] storedinventory, ItemStack[] storedarmor) { this.player = player; this.storedinventory = storedinventory; this.storedarmor = storedarmor; } - + public ProtectInventoryEvent(Player player, ItemStack[] storedinventory, ItemStack[] storedarmor, int newInventory, int newArmor) { this.player = player; this.storedinventory = storedinventory; @@ -31,11 +35,11 @@ public class ProtectInventoryEvent extends CustomEvent { public ItemStack[] getStoredInventory() { return this.storedinventory; } - + public ItemStack[] getStoredArmor() { return this.storedarmor; } - + public Player getPlayer() { return this.player; } @@ -55,4 +59,5 @@ public class ProtectInventoryEvent extends CustomEvent { public ItemStack[] getEmptyArmor() { return this.emptyArmor; } + } diff --git a/src/main/java/uk/org/whoami/authme/events/RegisterTeleportEvent.java b/src/main/java/uk/org/whoami/authme/events/RegisterTeleportEvent.java index e2e8b9a59..fb553b909 100644 --- a/src/main/java/uk/org/whoami/authme/events/RegisterTeleportEvent.java +++ b/src/main/java/uk/org/whoami/authme/events/RegisterTeleportEvent.java @@ -3,12 +3,16 @@ package uk.org.whoami.authme.events; import org.bukkit.Location; import org.bukkit.entity.Player; +/** +* +* @author Xephi59 +*/ public class RegisterTeleportEvent extends CustomEvent { private Player player; private Location to; private Location from; - + public RegisterTeleportEvent(Player player, Location to) { this.player = player; this.from = player.getLocation(); @@ -26,4 +30,5 @@ public class RegisterTeleportEvent extends CustomEvent { public Location getFrom() { return from; } + } diff --git a/src/main/java/uk/org/whoami/authme/events/ResetInventoryEvent.java b/src/main/java/uk/org/whoami/authme/events/ResetInventoryEvent.java index e2eff2098..cbb6f8237 100644 --- a/src/main/java/uk/org/whoami/authme/events/ResetInventoryEvent.java +++ b/src/main/java/uk/org/whoami/authme/events/ResetInventoryEvent.java @@ -5,20 +5,25 @@ import org.bukkit.inventory.ItemStack; import uk.org.whoami.authme.api.API; +/** +* +* @author Xephi59 +*/ public class ResetInventoryEvent extends CustomEvent { - + private Player player; - + public ResetInventoryEvent(Player player) { this.player = player; API.setPlayerInventory(player, new ItemStack[36], new ItemStack[4]); } - + public Player getPlayer() { return this.player; } - + public void setPlayer(Player player) { this.player = player; } + } diff --git a/src/main/java/uk/org/whoami/authme/events/RestoreInventoryEvent.java b/src/main/java/uk/org/whoami/authme/events/RestoreInventoryEvent.java index b2232195c..c14423152 100644 --- a/src/main/java/uk/org/whoami/authme/events/RestoreInventoryEvent.java +++ b/src/main/java/uk/org/whoami/authme/events/RestoreInventoryEvent.java @@ -3,12 +3,16 @@ package uk.org.whoami.authme.events; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +/** +* +* @author Xephi59 +*/ public class RestoreInventoryEvent extends CustomEvent { - + private ItemStack[] inventory; private ItemStack[] armor; private Player player; - + public RestoreInventoryEvent(Player player, ItemStack[] inventory, ItemStack[] armor) { this.player = player; this.inventory = inventory; @@ -18,24 +22,25 @@ public class RestoreInventoryEvent extends CustomEvent { public ItemStack[] getInventory() { return this.inventory; } - + public void setInventory(ItemStack[] inventory) { this.inventory = inventory; } - + public ItemStack[] getArmor() { return this.armor; } - + public void setArmor(ItemStack[] armor) { this.armor = armor; } - + public Player getPlayer() { return this.player; } - + public void setPlayer(Player player) { this.player = player; } + } diff --git a/src/main/java/uk/org/whoami/authme/events/SessionEvent.java b/src/main/java/uk/org/whoami/authme/events/SessionEvent.java index 9b88cd3a8..0259716d0 100644 --- a/src/main/java/uk/org/whoami/authme/events/SessionEvent.java +++ b/src/main/java/uk/org/whoami/authme/events/SessionEvent.java @@ -2,21 +2,24 @@ package uk.org.whoami.authme.events; import uk.org.whoami.authme.cache.auth.PlayerAuth; +/** +* +* @author Xephi59 +*/ public class SessionEvent extends CustomEvent { - private PlayerAuth player; private boolean isLogin; - + public SessionEvent(PlayerAuth auth, boolean isLogin) { this.player = auth; this.isLogin = isLogin; } - + public PlayerAuth getPlayerAuth() { return this.player; } - + public void setPlayer(PlayerAuth player) { this.player = player; } @@ -24,4 +27,5 @@ public class SessionEvent extends CustomEvent { public boolean isLogin() { return isLogin; } + } diff --git a/src/main/java/uk/org/whoami/authme/events/SpawnTeleportEvent.java b/src/main/java/uk/org/whoami/authme/events/SpawnTeleportEvent.java index 7bbfc6288..f615b618f 100644 --- a/src/main/java/uk/org/whoami/authme/events/SpawnTeleportEvent.java +++ b/src/main/java/uk/org/whoami/authme/events/SpawnTeleportEvent.java @@ -3,13 +3,17 @@ package uk.org.whoami.authme.events; import org.bukkit.Location; import org.bukkit.entity.Player; +/** +* +* @author Xephi59 +*/ public class SpawnTeleportEvent extends CustomEvent { - + private Player player; private Location to; private Location from; private boolean isAuthenticated; - + public SpawnTeleportEvent(Player player, Location from, Location to, boolean isAuthenticated) { this.player = player; this.from = from; diff --git a/src/main/java/uk/org/whoami/authme/events/StoreInventoryEvent.java b/src/main/java/uk/org/whoami/authme/events/StoreInventoryEvent.java index 1d5a11a83..a7387f241 100644 --- a/src/main/java/uk/org/whoami/authme/events/StoreInventoryEvent.java +++ b/src/main/java/uk/org/whoami/authme/events/StoreInventoryEvent.java @@ -5,19 +5,22 @@ import org.bukkit.inventory.ItemStack; import uk.org.whoami.authme.cache.backup.FileCache; +/** +* +* @author Xephi59 +*/ public class StoreInventoryEvent extends CustomEvent { - private ItemStack[] inventory; private ItemStack[] armor; private Player player; - + public StoreInventoryEvent(Player player) { this.player = player; this.inventory = player.getInventory().getContents(); this.armor = player.getInventory().getArmorContents(); } - + public StoreInventoryEvent(Player player, FileCache fileCache) { this.player = player; this.inventory = fileCache.readCache(player.getName().toLowerCase()).getInventory(); @@ -27,24 +30,25 @@ public class StoreInventoryEvent extends CustomEvent { public ItemStack[] getInventory() { return this.inventory; } - + public void setInventory(ItemStack[] inventory) { this.inventory = inventory; } - + public ItemStack[] getArmor() { return this.armor; } - + public void setArmor(ItemStack[] armor) { this.armor = armor; } - + public Player getPlayer() { return this.player; } - + public void setPlayer(Player player) { this.player = player; } + } diff --git a/src/main/java/uk/org/whoami/authme/events/UncancellableEvent.java b/src/main/java/uk/org/whoami/authme/events/UncancellableEvent.java index 1c6f17e40..c746ac73b 100644 --- a/src/main/java/uk/org/whoami/authme/events/UncancellableEvent.java +++ b/src/main/java/uk/org/whoami/authme/events/UncancellableEvent.java @@ -4,21 +4,23 @@ import org.bukkit.Server; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; +/** +* +* @author Xephi59 +*/ public class UncancellableEvent extends Event { - - + private static final HandlerList handlers = new HandlerList(); private static Server s; - public HandlerList getHandlers() { return handlers; } - + public static HandlerList getHandlerList() { return handlers; } - + public static Server getServer() { return s; } diff --git a/src/main/java/uk/org/whoami/authme/filter/ConsoleFilter.java b/src/main/java/uk/org/whoami/authme/filter/ConsoleFilter.java index 190495737..b86512080 100644 --- a/src/main/java/uk/org/whoami/authme/filter/ConsoleFilter.java +++ b/src/main/java/uk/org/whoami/authme/filter/ConsoleFilter.java @@ -3,10 +3,14 @@ package uk.org.whoami.authme.filter; import java.util.logging.Filter; import java.util.logging.LogRecord; +/** +* +* @author Xephi59 +*/ public class ConsoleFilter implements Filter { public ConsoleFilter() {} - + @Override public boolean isLoggable(LogRecord record) { String logM = record.getMessage().toLowerCase(); @@ -17,7 +21,5 @@ public class ConsoleFilter implements Filter { record.setMessage(playername + " issued an AuthMe command!"); return true; } - - - + } diff --git a/src/main/java/uk/org/whoami/authme/gui/CustomButton.java b/src/main/java/uk/org/whoami/authme/gui/CustomButton.java index 67ad0695d..9ba873a85 100644 --- a/src/main/java/uk/org/whoami/authme/gui/CustomButton.java +++ b/src/main/java/uk/org/whoami/authme/gui/CustomButton.java @@ -6,7 +6,7 @@ import org.getspout.spoutapi.gui.GenericButton; public class CustomButton extends GenericButton { public Clickable handleRef = null; - + public CustomButton(Clickable c) { handleRef = c; } @@ -15,7 +15,7 @@ public class CustomButton extends GenericButton public void onButtonClick(ButtonClickEvent event) { handleRef.handleClick(event); } - + public CustomButton setMidPos(int x, int y) { this.setX(x) @@ -24,4 +24,5 @@ public class CustomButton extends GenericButton .shiftYPos(-(height / 2)); return this; } + } diff --git a/src/main/java/uk/org/whoami/authme/gui/screens/LoginScreen.java b/src/main/java/uk/org/whoami/authme/gui/screens/LoginScreen.java index 91e9b13f3..654445267 100644 --- a/src/main/java/uk/org/whoami/authme/gui/screens/LoginScreen.java +++ b/src/main/java/uk/org/whoami/authme/gui/screens/LoginScreen.java @@ -27,7 +27,6 @@ public class LoginScreen extends GenericPopup implements Clickable{ public AuthMe plugin = AuthMe.getInstance(); private SpoutCfg spoutCfg = SpoutCfg.getInstance(); - private CustomButton exitBtn; private CustomButton loginBtn; private GenericTextField passBox; @@ -35,17 +34,16 @@ public class LoginScreen extends GenericPopup implements Clickable{ private GenericLabel textLbl; private GenericLabel errorLbl; - String exitTxt = spoutCfg.getString("LoginScreen.exit button"); //"Quit"; - String loginTxt = spoutCfg.getString("LoginScreen.login button"); //"Login"; - String exitMsg = spoutCfg.getString("LoginScreen.exit message"); //"Good Bye"; - String title = spoutCfg.getString("LoginScreen.title"); //"LOGIN" + String exitTxt = spoutCfg.getString("LoginScreen.exit button"); + String loginTxt = spoutCfg.getString("LoginScreen.login button"); + String exitMsg = spoutCfg.getString("LoginScreen.exit message"); + String title = spoutCfg.getString("LoginScreen.title"); @SuppressWarnings("unchecked") List textlines = (List) spoutCfg.getList("LoginScreen.text"); public SpoutPlayer splayer; - + public LoginScreen(SpoutPlayer player) { this.splayer = player; - createScreen(); } @@ -53,7 +51,6 @@ public class LoginScreen extends GenericPopup implements Clickable{ int objects = textlines.size() + 4; int part = !(textlines.size() <= 5) ? 195 / objects : 20; int h = 3*part/4, w = 8*part; - titleLbl = new GenericLabel(); titleLbl .setText(title) @@ -64,7 +61,6 @@ public class LoginScreen extends GenericPopup implements Clickable{ .setX(maxWidth / 2 ) .setY(25); this.attachWidget(plugin, titleLbl); - int ystart = 25 + h + part/2; for (int x=0; x gameMode = new HashMap(); private Utils utils = Utils.getInstance(); @@ -96,8 +95,7 @@ public class AuthMePlayerListener implements Listener { Player player = event.getPlayer(); String name = player.getName().toLowerCase(); - - + if (Utils.getInstance().isUnrestricted(player)) { return; } @@ -122,30 +120,28 @@ public class AuthMePlayerListener implements Listener { if (cmd.equalsIgnoreCase("/login") || cmd.equalsIgnoreCase("/register") || cmd.equalsIgnoreCase("/passpartu") || cmd.equalsIgnoreCase("/l") || cmd.equalsIgnoreCase("/reg") || cmd.equalsIgnoreCase("/email") || cmd.equalsIgnoreCase("/captcha")) { return; } - if (Settings.allowCommands.contains(cmd)) { return; } - event.setMessage("/notloggedin"); event.setCancelled(true); } - + @EventHandler( priority = EventPriority.NORMAL) public void onPlayerNormalChat(AsyncPlayerChatEvent event) { if (event.isCancelled() || event.getPlayer() == null) { return; } - + final Player player = event.getPlayer(); final String name = player.getName().toLowerCase(); - + if(plugin.CitizensVersion != 0) { if (plugin.getCitizensCommunicator().isNPC(player, plugin)) { return; } } - + if(plugin.CombatTag != 0) { if (CombatTagComunicator.isNPC(player)) { return; @@ -159,7 +155,7 @@ public class AuthMePlayerListener implements Listener { if (PlayerCache.getInstance().isAuthenticated(name)) { return; } - + String cmd = event.getMessage().split(" ")[0]; if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) { @@ -167,7 +163,7 @@ public class AuthMePlayerListener implements Listener { event.setCancelled(true); return; } - + if (!event.isAsynchronous()) { if (data.isAuthAvailable(name)) { player.sendMessage(m._("login_msg")); @@ -178,7 +174,6 @@ public class AuthMePlayerListener implements Listener { player.sendMessage(m._("reg_msg")); } } else { - Bukkit.getScheduler().runTask(plugin, new Runnable() { @Override @@ -193,14 +188,13 @@ public class AuthMePlayerListener implements Listener { }}); } } - + @EventHandler( priority = EventPriority.HIGH) public void onPlayerHighChat(AsyncPlayerChatEvent event) { if (event.isCancelled() || event.getPlayer() == null) { return; } - - + final Player player = event.getPlayer(); final String name = player.getName().toLowerCase(); @@ -223,7 +217,7 @@ public class AuthMePlayerListener implements Listener { if (PlayerCache.getInstance().isAuthenticated(name)) { return; } - + String cmd = event.getMessage().split(" ")[0]; if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) { @@ -231,7 +225,7 @@ public class AuthMePlayerListener implements Listener { event.setCancelled(true); return; } - + if (!event.isAsynchronous()) { if (data.isAuthAvailable(name)) { player.sendMessage(m._("login_msg")); @@ -242,7 +236,6 @@ public class AuthMePlayerListener implements Listener { player.sendMessage(m._("reg_msg")); } } else { - Bukkit.getScheduler().runTask(plugin, new Runnable() { @Override @@ -257,14 +250,13 @@ public class AuthMePlayerListener implements Listener { }}); } } - + @EventHandler( priority = EventPriority.MONITOR) public void onPlayerChat(AsyncPlayerChatEvent event) { if (event.isCancelled() || event.getPlayer() == null) { return; } - - + final Player player = event.getPlayer(); final String name = player.getName().toLowerCase(); @@ -287,7 +279,7 @@ public class AuthMePlayerListener implements Listener { if (PlayerCache.getInstance().isAuthenticated(name)) { return; } - + String cmd = event.getMessage().split(" ")[0]; if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) { @@ -295,7 +287,7 @@ public class AuthMePlayerListener implements Listener { event.setCancelled(true); return; } - + if (!event.isAsynchronous()) { if (data.isAuthAvailable(name)) { player.sendMessage(m._("login_msg")); @@ -306,7 +298,6 @@ public class AuthMePlayerListener implements Listener { player.sendMessage(m._("reg_msg")); } } else { - Bukkit.getScheduler().runTask(plugin, new Runnable() { @Override @@ -321,14 +312,13 @@ public class AuthMePlayerListener implements Listener { }}); } } - + @EventHandler( priority = EventPriority.HIGHEST) public void onPlayerHighestChat(AsyncPlayerChatEvent event) { if (event.isCancelled() || event.getPlayer() == null) { return; } - - + final Player player = event.getPlayer(); final String name = player.getName().toLowerCase(); @@ -351,7 +341,7 @@ public class AuthMePlayerListener implements Listener { if (PlayerCache.getInstance().isAuthenticated(name)) { return; } - + String cmd = event.getMessage().split(" ")[0]; if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) { @@ -359,7 +349,7 @@ public class AuthMePlayerListener implements Listener { event.setCancelled(true); return; } - + if (!event.isAsynchronous()) { if (data.isAuthAvailable(name)) { player.sendMessage(m._("login_msg")); @@ -370,7 +360,6 @@ public class AuthMePlayerListener implements Listener { player.sendMessage(m._("reg_msg")); } } else { - Bukkit.getScheduler().runTask(plugin, new Runnable() { @Override @@ -385,15 +374,13 @@ public class AuthMePlayerListener implements Listener { }}); } } - - + @EventHandler( priority = EventPriority.LOWEST) public void onPlayerEarlyChat(AsyncPlayerChatEvent event) { if (event.isCancelled() || event.getPlayer() == null) { return; } - - + final Player player = event.getPlayer(); final String name = player.getName().toLowerCase(); @@ -416,7 +403,7 @@ public class AuthMePlayerListener implements Listener { if (PlayerCache.getInstance().isAuthenticated(name)) { return; } - + String cmd = event.getMessage().split(" ")[0]; if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) { @@ -424,7 +411,7 @@ public class AuthMePlayerListener implements Listener { event.setCancelled(true); return; } - + if (!event.isAsynchronous()) { if (data.isAuthAvailable(name)) { player.sendMessage(m._("login_msg")); @@ -435,7 +422,6 @@ public class AuthMePlayerListener implements Listener { player.sendMessage(m._("reg_msg")); } } else { - Bukkit.getScheduler().runTask(plugin, new Runnable() { @Override @@ -456,8 +442,7 @@ public class AuthMePlayerListener implements Listener { if (event.isCancelled() || event.getPlayer() == null) { return; } - - + final Player player = event.getPlayer(); final String name = player.getName().toLowerCase(); @@ -480,7 +465,7 @@ public class AuthMePlayerListener implements Listener { if (PlayerCache.getInstance().isAuthenticated(name)) { return; } - + String cmd = event.getMessage().split(" ")[0]; if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) { @@ -488,7 +473,7 @@ public class AuthMePlayerListener implements Listener { event.setCancelled(true); return; } - + if (!event.isAsynchronous()) { if (data.isAuthAvailable(name)) { player.sendMessage(m._("login_msg")); @@ -499,7 +484,6 @@ public class AuthMePlayerListener implements Listener { player.sendMessage(m._("reg_msg")); } } else { - Bukkit.getScheduler().runTask(plugin, new Runnable() { @Override @@ -520,7 +504,6 @@ public class AuthMePlayerListener implements Listener { if (event.isCancelled() || event.getPlayer() == null) { return; } - Player player = event.getPlayer(); String name = player.getName().toLowerCase(); @@ -536,7 +519,7 @@ public class AuthMePlayerListener implements Listener { if (!Settings.isForcedRegistrationEnabled) { return; } - + if (!Settings.isMovementAllowed) { event.setTo(event.getFrom()); return; @@ -545,7 +528,6 @@ public class AuthMePlayerListener implements Listener { if (Settings.getMovementRadius == 0) { return; } - int radius = Settings.getMovementRadius; Location spawn = player.getWorld().getSpawnLocation(); @@ -559,62 +541,44 @@ public class AuthMePlayerListener implements Listener { } if (Spawn.getInstance().getLocation() != null) spawn = Spawn.getInstance().getLocation(); - + if ((spawn.distance(player.getLocation()) > radius) ) { event.getPlayer().teleport(spawn); } - } - + @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerLogin(PlayerLoginEvent event) { final Player player = event.getPlayer(); final String name = player.getName().toLowerCase(); - + if (plugin.getCitizensCommunicator().isNPC(player, plugin) || Utils.getInstance().isUnrestricted(player) || CombatTagComunicator.isNPC(player)) { return; } - + if (player.isOnline() && Settings.isForceSingleSessionEnabled) { event.disallow(PlayerLoginEvent.Result.KICK_OTHER, m._("same_nick")); return; } - - if(!event.isAsynchronous()) { - if(data.isAuthAvailable(name) && !LimboCache.getInstance().hasLimboPlayer(name)) { - if(!Settings.isSessionsEnabled) { - LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player)); - } else if(PlayerCache.getInstance().isAuthenticated(name)) { - if(!Settings.sessionExpireOnIpChange) - if(LimboCache.getInstance().hasLimboPlayer(player.getName().toLowerCase())) { - LimboCache.getInstance().deleteLimboPlayer(name); - } - LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player)); - } - } - } else { - Bukkit.getScheduler().runTask(plugin, new Runnable() { - @Override - public void run() { - if(data.isAuthAvailable(name) && !LimboCache.getInstance().hasLimboPlayer(name)) { - if(!Settings.isSessionsEnabled) { - LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player)); - } else if(PlayerCache.getInstance().isAuthenticated(name)) { - if(!Settings.sessionExpireOnIpChange) - if(LimboCache.getInstance().hasLimboPlayer(player.getName().toLowerCase())) { - LimboCache.getInstance().deleteLimboPlayer(name); - } - LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player)); - } - } - - } - - }); - } - + //Run that asynchronous + Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { + @Override + public void run() { + if(data.isAuthAvailable(name) && !LimboCache.getInstance().hasLimboPlayer(name)) { + if(!Settings.isSessionsEnabled) { + LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player)); + } else if(PlayerCache.getInstance().isAuthenticated(name)) { + if(!Settings.sessionExpireOnIpChange) + if(LimboCache.getInstance().hasLimboPlayer(player.getName().toLowerCase())) { + LimboCache.getInstance().deleteLimboPlayer(name); + } + LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player)); + } + } + } + }); //Check if forceSingleSession is set to true, so kick player that has joined with same nick of online player if(player.isOnline() && Settings.isForceSingleSessionEnabled ) { LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(player.getName().toLowerCase()); @@ -625,9 +589,8 @@ public class AuthMePlayerListener implements Listener { LimboCache.getInstance().deleteLimboPlayer(player.getName().toLowerCase()); } return; - } - + int min = Settings.getMinNickLength; int max = Settings.getMaxNickLength; String regex = Settings.getNickRegex; @@ -645,7 +608,7 @@ public class AuthMePlayerListener implements Listener { } return; } - + if (Settings.isKickNonRegisteredEnabled) { if (!data.isAuthAvailable(name)) { event.disallow(Result.KICK_OTHER, m._("reg_only")); @@ -658,6 +621,7 @@ public class AuthMePlayerListener implements Listener { event.disallow(Result.KICK_FULL, m._("kick_fullserver")); return; } + if (plugin.getServer().getOnlinePlayers().length > plugin.getServer().getMaxPlayers()) { event.allow(); return; @@ -673,7 +637,6 @@ public class AuthMePlayerListener implements Listener { } } } - @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerJoin(PlayerJoinEvent event) { @@ -699,9 +662,13 @@ public class AuthMePlayerListener implements Listener { String ip = player.getAddress().getAddress().getHostAddress(); if (Settings.bungee) { try { - ip = BungeeCord.getInstance().getPlayer(player.getName()).getAddress().getAddress().getHostAddress(); + for (ProxiedPlayer pp : BungeeCord.getInstance().getPlayers()) { + if (pp.getName().toLowerCase() == name) { + ip = pp.getAddress().getAddress().getHostAddress(); + break; + } + } } catch (NoClassDefFoundError ncdfe) { - ConsoleLogger.showError("Your BungeeCord version is outdated, you need a version with the latest API"); } } if(Settings.isAllowRestrictedIp && !Settings.getRestrictedIp(name, ip)) { @@ -712,17 +679,13 @@ public class AuthMePlayerListener implements Listener { plugin.getServer().banIP(ip); return; } - + if (data.isAuthAvailable(name)) { - - if (Settings.isSessionsEnabled) { PlayerAuth auth = data.getAuth(name); long timeout = Settings.getSessionTimeout * 60000; long lastLogin = auth.getLastLogin(); long cur = new Date().getTime(); - - if((cur - lastLogin < timeout || timeout == 0) && !auth.getIp().equals("198.18.0.1") ) { if (auth.getNickname().equalsIgnoreCase(name) && auth.getIp().equals(ip) ) { plugin.getServer().getPluginManager().callEvent(new SessionEvent(auth, true)); @@ -756,10 +719,8 @@ public class AuthMePlayerListener implements Listener { } // isent in session or session was ended correctly LimboCache.getInstance().addLimboPlayer(player); - DataFileCache dataFile = new DataFileCache(LimboCache.getInstance().getLimboPlayer(name).getInventory(),LimboCache.getInstance().getLimboPlayer(name).getArmour()); playerBackup.createCache(name, dataFile, LimboCache.getInstance().getLimboPlayer(name).getGroup(),LimboCache.getInstance().getLimboPlayer(name).getOperator()); - } else { if(!Settings.unRegisteredGroup.isEmpty()){ utils.setGroup(player, Utils.groupType.UNREGISTERED); @@ -768,9 +729,6 @@ public class AuthMePlayerListener implements Listener { return; } } - - - if(Settings.protectInventoryBeforeLogInEnabled) { try { LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(player.getName().toLowerCase()); @@ -783,10 +741,8 @@ public class AuthMePlayerListener implements Listener { } catch (NullPointerException ex) { } } - if(player.isOp()) player.setOp(false); - if (Settings.isTeleportToSpawnEnabled || (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName()))) { SpawnTeleportEvent tpEvent = new SpawnTeleportEvent(player, player.getLocation(), spawnLoc, PlayerCache.getInstance().isAuthenticated(name)); plugin.getServer().getPluginManager().callEvent(tpEvent); @@ -797,25 +753,19 @@ public class AuthMePlayerListener implements Listener { player.teleport(tpEvent.getTo()); } } - - String msg = data.isAuthAvailable(name) ? m._("login_msg") : m._("reg_msg"); int time = Settings.getRegistrationTimeout * 20; int msgInterval = Settings.getWarnMessageInterval; if (time != 0) { - BukkitTask id = sched.runTaskLater(plugin, new TimeoutTask(plugin, name), time); if(!LimboCache.getInstance().hasLimboPlayer(name)) LimboCache.getInstance().addLimboPlayer(player); - LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id.getTaskId()); } - if(!LimboCache.getInstance().hasLimboPlayer(name)) LimboCache.getInstance().addLimboPlayer(player); BukkitTask msgT = sched.runTask(plugin, new MessageTask(plugin, name, msg, msgInterval)); LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT.getTaskId()); - if (Settings.isForceSurvivalModeEnabled) sched.runTask(plugin, new Runnable() { public void run() { @@ -823,32 +773,34 @@ public class AuthMePlayerListener implements Listener { } }); } - @EventHandler(priority = EventPriority.MONITOR) public void onPlayerQuit(PlayerQuitEvent event) { if (event.getPlayer() == null) { return; } - - + Player player = event.getPlayer(); String name = player.getName().toLowerCase(); - + if (plugin.getCitizensCommunicator().isNPC(player, plugin) || Utils.getInstance().isUnrestricted(player) || CombatTagComunicator.isNPC(player)) { return; } - - if (PlayerCache.getInstance().isAuthenticated(name) && !player.isDead()) { - if(Settings.isSaveQuitLocationEnabled && data.isAuthAvailable(name)) { - PlayerAuth auth = new PlayerAuth(event.getPlayer().getName().toLowerCase(),(int)player.getLocation().getX(),(int)player.getLocation().getY(),(int)player.getLocation().getZ()); - try { - data.updateQuitLoc(auth); - } catch (NullPointerException npe) { } - - } - } - + + if (PlayerCache.getInstance().isAuthenticated(name) && !player.isDead()) { + if(Settings.isSaveQuitLocationEnabled && data.isAuthAvailable(name)) { + final PlayerAuth auth = new PlayerAuth(event.getPlayer().getName().toLowerCase(),(int)player.getLocation().getX(),(int)player.getLocation().getY(),(int)player.getLocation().getZ()); + try { + Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { + @Override + public void run() { + data.updateQuitLoc(auth); + } + }); + } catch (NullPointerException npe) { } + } + } + if (LimboCache.getInstance().hasLimboPlayer(name)) { //System.out.println("e' nel quit"); LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name); @@ -870,18 +822,13 @@ public class AuthMePlayerListener implements Listener { } try { PlayerCache.getInstance().removePlayer(name); - } catch (NullPointerException npe) { - - } - try { PlayersLogs.players.remove(player.getName()); PlayersLogs.getInstance().save(); + player.getVehicle().eject(); } catch (NullPointerException ex) { - } if (gameMode.containsKey(name)) gameMode.remove(name); player.saveData(); - } @EventHandler(priority=EventPriority.MONITOR) @@ -908,8 +855,13 @@ public class AuthMePlayerListener implements Listener { String name = player.getName().toLowerCase(); if ((PlayerCache.getInstance().isAuthenticated(name)) && (!player.isDead()) && (Settings.isSaveQuitLocationEnabled.booleanValue()) && data.isAuthAvailable(name)) { - PlayerAuth auth = new PlayerAuth(event.getPlayer().getName().toLowerCase(), (int)player.getLocation().getX(), (int)player.getLocation().getY(), (int)player.getLocation().getZ()); - this.data.updateQuitLoc(auth); + final PlayerAuth auth = new PlayerAuth(event.getPlayer().getName().toLowerCase(), (int)player.getLocation().getX(), (int)player.getLocation().getY(), (int)player.getLocation().getZ()); + Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { + @Override + public void run() { + data.updateQuitLoc(auth); + } + }); } if (LimboCache.getInstance().hasLimboPlayer(name)) @@ -936,7 +888,6 @@ public class AuthMePlayerListener implements Listener { player.teleport(tpEvent.getTo()); } } catch (NullPointerException npe) { - } this.utils.addNormal(player, limbo.getGroup()); player.setOp(limbo.getOperator()); @@ -952,6 +903,7 @@ public class AuthMePlayerListener implements Listener { PlayersLogs.players.remove(player.getName()); PlayersLogs.getInstance().save(); if (gameMode.containsKey(name)) gameMode.remove(name); + player.getVehicle().eject(); player.saveData(); } catch (NullPointerException ex) {} } @@ -982,11 +934,11 @@ public class AuthMePlayerListener implements Listener { event.setCancelled(true); } - @EventHandler(priority = EventPriority.MONITOR) + @EventHandler(priority = EventPriority.LOWEST) public void onPlayerInteract(PlayerInteractEvent event) { if (event.isCancelled() || event.getPlayer() == null) return; if (event.getClickedBlock() == null) return; - + Player player = event.getPlayer(); String name = player.getName().toLowerCase(); @@ -1003,17 +955,14 @@ public class AuthMePlayerListener implements Listener { return; } } - + try { final int sign = event.getClickedBlock().getTypeId(); if (sign == Material.SIGN_POST.getId() || sign == Material.WALL_SIGN.getId()) { event.setUseInteractedBlock(org.bukkit.event.Event.Result.DENY); } } catch (NullPointerException npe) { - } - - event.setCancelled(true); } @@ -1063,8 +1012,6 @@ public class AuthMePlayerListener implements Listener { return; } } - //System.out.println("player try to drop item"); - event.setCancelled(true); } @@ -1091,8 +1038,8 @@ public class AuthMePlayerListener implements Listener { } event.setCancelled(true); } - - @EventHandler(priority = EventPriority.MONITOR) + + @EventHandler(priority = EventPriority.LOWEST) public void onSignChange(SignChangeEvent event) { if (event.isCancelled() || event.getPlayer() == null || event == null) { return; @@ -1114,8 +1061,5 @@ public class AuthMePlayerListener implements Listener { } } event.setCancelled(true); - } - - -} \ No newline at end of file +} diff --git a/src/main/java/uk/org/whoami/authme/listener/AuthMeSpoutListener.java b/src/main/java/uk/org/whoami/authme/listener/AuthMeSpoutListener.java index 1357ce6cf..2846408cc 100644 --- a/src/main/java/uk/org/whoami/authme/listener/AuthMeSpoutListener.java +++ b/src/main/java/uk/org/whoami/authme/listener/AuthMeSpoutListener.java @@ -17,19 +17,16 @@ import uk.org.whoami.authme.settings.SpoutCfg; public class AuthMeSpoutListener implements Listener { private DataSource data; - public AuthMeSpoutListener(DataSource data) { - this.data = data; } - + @EventHandler - public void onSpoutCraftEnable(final SpoutCraftEnableEvent event) - { - if(SpoutCfg.getInstance().getBoolean("LoginScreen.enabled")) { - if (data.isAuthAvailable(event.getPlayer().getName().toLowerCase()) && !PlayerCache.getInstance().isAuthenticated(event.getPlayer().getName().toLowerCase()) ) { - event.getPlayer().getMainScreen().attachPopupScreen(new LoginScreen(event.getPlayer())); - } - } - } + public void onSpoutCraftEnable(final SpoutCraftEnableEvent event) { + if(SpoutCfg.getInstance().getBoolean("LoginScreen.enabled")) { + if (data.isAuthAvailable(event.getPlayer().getName().toLowerCase()) && !PlayerCache.getInstance().isAuthenticated(event.getPlayer().getName().toLowerCase()) ) { + event.getPlayer().getMainScreen().attachPopupScreen(new LoginScreen(event.getPlayer())); + } + } + } } diff --git a/src/main/java/uk/org/whoami/authme/plugin/manager/CitizensCommunicator.java b/src/main/java/uk/org/whoami/authme/plugin/manager/CitizensCommunicator.java index 81fe7a60a..c57674711 100644 --- a/src/main/java/uk/org/whoami/authme/plugin/manager/CitizensCommunicator.java +++ b/src/main/java/uk/org/whoami/authme/plugin/manager/CitizensCommunicator.java @@ -8,9 +8,9 @@ import org.bukkit.entity.Entity; import uk.org.whoami.authme.AuthMe; public class CitizensCommunicator { - + public AuthMe instance; - + public CitizensCommunicator(AuthMe instance) { this.instance = instance; } diff --git a/src/main/java/uk/org/whoami/authme/plugin/manager/CombatTagComunicator.java b/src/main/java/uk/org/whoami/authme/plugin/manager/CombatTagComunicator.java index dafa9b3af..caa7b5a56 100644 --- a/src/main/java/uk/org/whoami/authme/plugin/manager/CombatTagComunicator.java +++ b/src/main/java/uk/org/whoami/authme/plugin/manager/CombatTagComunicator.java @@ -16,8 +16,9 @@ import org.bukkit.entity.Player; * @author stefano */ public abstract class CombatTagComunicator { - static CombatTagApi combatApi; - + + static CombatTagApi combatApi; + public CombatTagComunicator() { if(Bukkit.getServer().getPluginManager().getPlugin("CombatTag") != null){ combatApi = new CombatTagApi((CombatTag)Bukkit.getServer().getPluginManager().getPlugin("CombatTag")); @@ -30,16 +31,15 @@ public abstract class CombatTagComunicator { * @return true if player is in combat */ public abstract boolean isInCombat(String player); - - /** + + /** * Checks to see if the player is in combat. The combat time can be configured by the server owner * If the player has died while in combat the player is no longer considered in combat and as such will return false * @param player * @return true if player is in combat */ - public abstract boolean isInCombat(Player player); - - /** + public abstract boolean isInCombat(Player player); + /** * Returns the time before the tag is over * -1 if the tag has expired * -2 if the player is not in combat @@ -48,25 +48,25 @@ public abstract class CombatTagComunicator { */ public abstract long getRemainingTagTime(String player); - //(Implemented in 3.8) - /** + /** * Returns if the entity is an NPC * @param player * @return true if the player is an NPC */ - public static boolean isNPC(Entity player) { - try { - if(Bukkit.getServer().getPluginManager().getPlugin("CombatTag") != null){ - combatApi = new CombatTagApi((CombatTag) Bukkit.getServer().getPluginManager().getPlugin("CombatTag")); - return combatApi.isNPC(player); - } - } catch (ClassCastException ex) { - return false; - } catch (NullPointerException npe) { - return false; - } catch (NoClassDefFoundError ncdfe) { - return false; - } - return false; - } + public static boolean isNPC(Entity player) { + try { + if(Bukkit.getServer().getPluginManager().getPlugin("CombatTag") != null){ + combatApi = new CombatTagApi((CombatTag) Bukkit.getServer().getPluginManager().getPlugin("CombatTag")); + return combatApi.isNPC(player); + } + } catch (ClassCastException ex) { + return false; + } catch (NullPointerException npe) { + return false; + } catch (NoClassDefFoundError ncdfe) { + return false; + } + return false; + } + } diff --git a/src/main/java/uk/org/whoami/authme/security/PasswordSecurity.java b/src/main/java/uk/org/whoami/authme/security/PasswordSecurity.java index efea449a4..e16affc40 100644 --- a/src/main/java/uk/org/whoami/authme/security/PasswordSecurity.java +++ b/src/main/java/uk/org/whoami/authme/security/PasswordSecurity.java @@ -31,19 +31,16 @@ import uk.org.whoami.authme.AuthMe; import uk.org.whoami.authme.settings.Settings; public class PasswordSecurity { - + private static SecureRandom rnd = new SecureRandom(); public static HashMap userSalt = new HashMap(); private static String getMD5(String message) throws NoSuchAlgorithmException { MessageDigest md5 = MessageDigest.getInstance("MD5"); - md5.reset(); md5.update(message.getBytes()); byte[] digest = md5.digest(); - - return String.format("%0" + (digest.length << 1) + "x", new BigInteger(1, - digest)); + return String.format("%0" + (digest.length << 1) + "x", new BigInteger(1,digest)); } private static String getSHA1(String message) throws NoSuchAlgorithmException { @@ -51,20 +48,15 @@ public class PasswordSecurity { sha1.reset(); sha1.update(message.getBytes()); byte[] digest = sha1.digest(); - - return String.format("%0" + (digest.length << 1) + "x", new BigInteger(1, - digest)); + return String.format("%0" + (digest.length << 1) + "x", new BigInteger(1,digest)); } private static String getSHA256(String message) throws NoSuchAlgorithmException { MessageDigest sha256 = MessageDigest.getInstance("SHA-256"); - sha256.reset(); sha256.update(message.getBytes()); byte[] digest = sha256.digest(); - - return String.format("%0" + (digest.length << 1) + "x", new BigInteger(1, - digest)); + return String.format("%0" + (digest.length << 1) + "x", new BigInteger(1,digest)); } public static String getWhirlpool(String message) { @@ -79,35 +71,28 @@ public class PasswordSecurity { private static String getSaltedHash(String message, String salt) throws NoSuchAlgorithmException { return "$SHA$" + salt + "$" + getSHA256(getSHA256(message) + salt); } - - // - // VBULLETIN 3.X 4.X METHOD - // - + private static String getSaltedMd5(String message, String salt) throws NoSuchAlgorithmException { return "$MD5vb$" + salt + "$" + getMD5(getMD5(message) + salt); } - + private static String getSaltedMyBB(String message, String salt) throws NoSuchAlgorithmException { return getMD5(getMD5(salt)+ getMD5(message)); } - + private static String getXAuth(String message, String salt) { String hash = getWhirlpool(salt + message).toLowerCase(); int saltPos = (message.length() >= hash.length() ? hash.length() - 1 : message.length()); return hash.substring(0, saltPos) + salt + hash.substring(saltPos); } - - private static String getSaltedIPB3(String message, String salt) throws NoSuchAlgorithmException { - return getMD5(getMD5(salt) + getMD5(message)); - + private static String getSaltedIPB3(String message, String salt) throws NoSuchAlgorithmException { + return getMD5(getMD5(salt) + getMD5(message)); } private static String createSalt(int length) throws NoSuchAlgorithmException { byte[] msg = new byte[40]; rnd.nextBytes(msg); - MessageDigest sha1 = MessageDigest.getInstance("SHA1"); sha1.reset(); byte[] digest = sha1.digest(msg); @@ -203,10 +188,9 @@ public class PasswordSecurity { } public static boolean comparePasswordWithHash(String password, String hash, String playername) throws NoSuchAlgorithmException { - //System.out.println("[Authme Debug] debug hashString"+hash); if(hash.contains("$H$")) { - PhpBB checkHash = new PhpBB(); - return checkHash.phpbb_check_hash(password, hash); + PhpBB checkHash = new PhpBB(); + return checkHash.phpbb_check_hash(password, hash); } if(!Settings.getMySQLColumnSalt.isEmpty() && Settings.getPasswordHash == HashAlgorithm.IPB3) { String saltipb = AuthMe.getInstance().database.getAuth(playername).getSalt(); @@ -241,32 +225,23 @@ public class PasswordSecurity { if(hash.length() < 32 ) { return hash.equals(password); } - if (hash.length() == 32) { return hash.equals(getMD5(password)); } - if (hash.length() == 40) { return hash.equals(getSHA1(password)); } - if (hash.length() == 140) { int saltPos = (password.length() >= hash.length() ? hash.length() - 1 : password.length()); String salt = hash.substring(saltPos, saltPos + 12); return hash.equals(getXAuth(password, salt)); } - if (hash.contains("$")) { - //System.out.println("[Authme Debug] debug hashString"+hash); String[] line = hash.split("\\$"); if (line.length > 3 && line[1].equals("SHA")) { return hash.equals(getSaltedHash(password, line[2])); } else { if(line[1].equals("MD5vb")) { - //System.out.println("[Authme Debug] password hashed from Authme"+getSaltedMd5(password, line[2])); - //System.out.println("[Authme Debug] salt from Authme"+line[2]); - //System.out.println("[Authme Debug] equals? Authme: "+hash); - //hash = "$MD5vb$" + salt + "$" + hash; return hash.equals(getSaltedMd5(password, line[2])); } } @@ -280,11 +255,10 @@ public class PasswordSecurity { return phpBBhash; } - private static String getPlainText(String password) { return password; } - + public static String getPhPFusion(String msg, String keyString) { String digest = null; String algo = "HmacSHA256"; @@ -292,9 +266,7 @@ public class PasswordSecurity { SecretKeySpec key = new SecretKeySpec((keyString).getBytes("UTF-8"), algo); Mac mac = Mac.getInstance(algo); mac.init(key); - byte[] bytes = mac.doFinal(msg.getBytes("ASCII")); - StringBuffer hash = new StringBuffer(); for (int i = 0; i < bytes.length; i++) { String hex = Integer.toHexString(0xFF & bytes[i]); @@ -315,4 +287,5 @@ public class PasswordSecurity { MD5, SHA1, SHA256, WHIRLPOOL, XAUTH, MD5VB, PHPBB, PLAINTEXT, MYBB, IPB3, PHPFUSION, SMF, XFSHA1, XFSHA256, SALTED2MD5, JOOMLA } + } diff --git a/src/main/java/uk/org/whoami/authme/security/PhpBB.java b/src/main/java/uk/org/whoami/authme/security/PhpBB.java index 8532c243e..e9af72c66 100644 --- a/src/main/java/uk/org/whoami/authme/security/PhpBB.java +++ b/src/main/java/uk/org/whoami/authme/security/PhpBB.java @@ -17,43 +17,34 @@ public class PhpBB { private String itoa64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - public String phpbb_hash(String password) { String random_state = unique_id(); String random = ""; int count = 6; - if (random.length() < count) { random = ""; - for (int i = 0; i < count; i += 16) { random_state = md5(unique_id() + random_state); random += pack(md5(random_state)); } random = random.substring(0, count); } - String hash = _hash_crypt_private( password, _hash_gensalt_private(random, itoa64)); if (hash.length() == 34) return hash; - return md5(password); } - // global $config; - // private boolean dss_seeded = false; - private String unique_id() { return unique_id("c"); } - + private String unique_id(String extra) { //TODO: Maybe check the salt? return "1234567890abcdef"; } - private String _hash_gensalt_private(String input, String itoa64) { return _hash_gensalt_private(input, itoa64, 6); } @@ -64,13 +55,11 @@ private String _hash_gensalt_private( if (iteration_count_log2 < 4 || iteration_count_log2 > 31) { iteration_count_log2 = 8; } - String output = "$H$"; output += itoa64.charAt( Math.min(iteration_count_log2 + ((PHP_VERSION >= 5) ? 5 : 3), 30)); output += _hash_encode64(input, 6); - return output; } @@ -80,58 +69,41 @@ private String _hash_gensalt_private( private String _hash_encode64(String input, int count) { String output = ""; int i = 0; - do { int value = input.charAt(i++); output += itoa64.charAt(value & 0x3f); - if (i < count) value |= input.charAt(i) << 8; - output += itoa64.charAt((value >> 6) & 0x3f); - if (i++ >= count) break; - if (i < count) value |= input.charAt(i) << 16; - output += itoa64.charAt((value >> 12) & 0x3f); - if (i++ >= count) break; - output += itoa64.charAt((value >> 18) & 0x3f); } while (i < count); - return output; } - String _hash_crypt_private(String password, String setting) { - String output = "*"; - - // Check for correct hash + String output = "*"; if (!setting.substring(0, 3).equals("$H$")) return output; - int count_log2 = itoa64.indexOf(setting.charAt(3)); if (count_log2 < 7 || count_log2 > 30) return output; - int count = 1 << count_log2; String salt = setting.substring(4, 12); if (salt.length() != 8) return output; - String m1 = md5(salt + password); String hash = pack(m1); do { hash = pack(md5(hash + password)); } while (--count > 0); - output = setting.substring(0, 12); output += _hash_encode64(hash, 16); - return output; } @@ -154,18 +126,16 @@ private String _hash_gensalt_private( throw new RuntimeException(e); } } - + static int hexToInt(char ch) { if(ch >= '0' && ch <= '9') return ch - '0'; - ch = Character.toUpperCase(ch); if(ch >= 'A' && ch <= 'F') return ch - 'A' + 0xA; - throw new IllegalArgumentException("Not a hex character: " + ch); } - + private static String bytes2hex(byte[] bytes) { StringBuffer r = new StringBuffer(32); for (int i = 0; i < bytes.length; i++) { @@ -188,4 +158,3 @@ private String _hash_gensalt_private( return buf.toString(); } } - diff --git a/src/main/java/uk/org/whoami/authme/security/RandomString.java b/src/main/java/uk/org/whoami/authme/security/RandomString.java index e599d8e60..4ae022a1b 100644 --- a/src/main/java/uk/org/whoami/authme/security/RandomString.java +++ b/src/main/java/uk/org/whoami/authme/security/RandomString.java @@ -2,16 +2,20 @@ package uk.org.whoami.authme.security; import java.util.Random; +/** +* +* @author Xephi59 +*/ public class RandomString { - private static final char[] symbols = new char[36]; + private static final char[] chars = new char[36]; static { for (int idx = 0; idx < 10; ++idx) - symbols[idx] = (char) ('0' + idx); + chars[idx] = (char) ('0' + idx); for (int idx = 10; idx < 36; ++idx) - symbols[idx] = (char) ('a' + idx - 10); + chars[idx] = (char) ('a' + idx - 10); } private final Random random = new Random(); @@ -28,7 +32,7 @@ public class RandomString public String nextString() { for (int idx = 0; idx < buf.length; ++idx) - buf[idx] = symbols[random.nextInt(symbols.length)]; + buf[idx] = chars[random.nextInt(chars.length)]; return new String(buf); } diff --git a/src/main/java/uk/org/whoami/authme/security/Whirlpool.java b/src/main/java/uk/org/whoami/authme/security/Whirlpool.java index 01201c5b5..0066bfa3c 100644 --- a/src/main/java/uk/org/whoami/authme/security/Whirlpool.java +++ b/src/main/java/uk/org/whoami/authme/security/Whirlpool.java @@ -131,26 +131,6 @@ class Whirlpool { C[t][x] = (C[t - 1][x] >>> 8) | ((C[t - 1][x] << 56)); } } - /* - for (int t = 0; t < 8; t++) { - System.out.println("static const u64 C" + t + "[256] = {"); - for (int i = 0; i < 64; i++) { - System.out.print(" "); - for (int j = 0; j < 4; j++) { - String v = Long.toHexString(C[t][4*i + j]); - while (v.length() < 16) { - v = "0" + v; - } - System.out.print(" LL(0x" + v + "),"); - } - System.out.println(); - } - System.out.println("};"); - System.out.println(); - } - System.out.println(); - //*/ - /* * build the round constants: */ @@ -167,18 +147,6 @@ class Whirlpool { (C[6][i + 6] & 0x000000000000ff00L) ^ (C[7][i + 7] & 0x00000000000000ffL); } - /* - System.out.println("static const u64 rc[R + 1] = {"); - for (int r = 0; r <= R; r++) { - String v = Long.toHexString(rc[r]); - while (v.length() < 16) { - v = "0" + v; - } - System.out.println(" LL(0x" + v + "),"); - } - System.out.println("};"); - System.out.println(); - //*/ } /** @@ -205,10 +173,10 @@ class Whirlpool { * The hashing state. */ protected long[] hash = new long[8]; - protected long[] K = new long[8]; // the round key + protected long[] K = new long[8]; protected long[] L = new long[8]; - protected long[] block = new long[8]; // mu(buffer) - protected long[] state = new long[8]; // the cipher state + protected long[] block = new long[8]; + protected long[] state = new long[8]; public Whirlpool() { } @@ -281,8 +249,8 @@ class Whirlpool { public void NESSIEinit() { Arrays.fill(bitLength, (byte)0); bufferBits = bufferPos = 0; - buffer[0] = 0; // it's only necessary to cleanup buffer[bufferPos]. - Arrays.fill(hash, 0L); // initial value + buffer[0] = 0; + Arrays.fill(hash, 0L); } /** diff --git a/src/main/java/uk/org/whoami/authme/settings/CustomConfiguration.java b/src/main/java/uk/org/whoami/authme/settings/CustomConfiguration.java index 66523665e..c98e5895a 100644 --- a/src/main/java/uk/org/whoami/authme/settings/CustomConfiguration.java +++ b/src/main/java/uk/org/whoami/authme/settings/CustomConfiguration.java @@ -19,10 +19,10 @@ public class CustomConfiguration extends YamlConfiguration{ public CustomConfiguration(File file) { this.configFile = file; - + load(); } - + public void load() { try { @@ -36,7 +36,7 @@ public class CustomConfiguration extends YamlConfiguration{ Logger.getLogger(JavaPlugin.class.getName()).log(Level.SEVERE, configFile.getName() + " is no valid configuration file", e); } } - + public boolean reload() { boolean out = true; if (!configFile.exists()) @@ -46,7 +46,7 @@ public class CustomConfiguration extends YamlConfiguration{ if (out) load(); return out; } - + public void save() { try { super.save(configFile); @@ -54,7 +54,7 @@ public class CustomConfiguration extends YamlConfiguration{ Logger.getLogger(JavaPlugin.class.getName()).log(Level.SEVERE, "Could not save config to " + configFile.getName(), ex); } } - + public boolean loadRessource(File file) { boolean out = true; if (!file.exists()) { @@ -64,7 +64,6 @@ public class CustomConfiguration extends YamlConfiguration{ fos = new FileOutputStream(file); byte[] buf = new byte[1024]; int i = 0; - while ((i = fis.read(buf)) != -1) { fos.write(buf, 0, i); } diff --git a/src/main/java/uk/org/whoami/authme/settings/Messages.java b/src/main/java/uk/org/whoami/authme/settings/Messages.java index 630a90c34..db47a950b 100644 --- a/src/main/java/uk/org/whoami/authme/settings/Messages.java +++ b/src/main/java/uk/org/whoami/authme/settings/Messages.java @@ -21,17 +21,14 @@ import java.io.File; public class Messages extends CustomConfiguration { private static Messages singleton = null; - public Messages() { - super(new File(Settings.MESSAGE_FILE+"_"+Settings.messagesLanguage+".yml")); loadDefaults(); loadFile(); singleton = this; - } - + private void loadDefaults() { this.set("logged_in", "&cAlready logged in!"); this.set("not_logged_in", "&cNot logged in!"); @@ -80,7 +77,6 @@ public class Messages extends CustomConfiguration { private void loadFile() { this.load(); this.save(); - } public String _(String msg) { @@ -90,13 +86,12 @@ public class Messages extends CustomConfiguration { } return msg; } - - + public static Messages getInstance() { if (singleton == null) { singleton = new Messages(); } return singleton; } - + } diff --git a/src/main/java/uk/org/whoami/authme/settings/PlayersLogs.java b/src/main/java/uk/org/whoami/authme/settings/PlayersLogs.java index c84e7f974..d439d012b 100644 --- a/src/main/java/uk/org/whoami/authme/settings/PlayersLogs.java +++ b/src/main/java/uk/org/whoami/authme/settings/PlayersLogs.java @@ -3,11 +3,15 @@ package uk.org.whoami.authme.settings; import java.io.File; import java.util.List; +/** +* +* @author Xephi59 +*/ public class PlayersLogs extends CustomConfiguration { private static PlayersLogs pllog = null; public static List players; - + @SuppressWarnings("unchecked") public PlayersLogs() { super(new File("./plugins/AuthMe/players.yml")); @@ -15,16 +19,13 @@ public class PlayersLogs extends CustomConfiguration { load(); save(); players = (List) this.getList("players"); - } - + public static PlayersLogs getInstance() { if (pllog == null) { pllog = new PlayersLogs(); } return pllog; } - - } diff --git a/src/main/java/uk/org/whoami/authme/settings/Settings.java b/src/main/java/uk/org/whoami/authme/settings/Settings.java index b066e6477..60e5ff39a 100644 --- a/src/main/java/uk/org/whoami/authme/settings/Settings.java +++ b/src/main/java/uk/org/whoami/authme/settings/Settings.java @@ -45,14 +45,13 @@ public final class Settings extends YamlConfiguration { private static List getRestrictedIp; public static List getMySQLOtherUsernameColumn = null; public static List getForcedWorlds = null; - public final Plugin plugin; private final File file; - public static DataSourceType getDataSource; public static HashAlgorithm getPasswordHash; public static HashAlgorithm rakamakHash; - + public static Boolean useLogging = false; + public static Boolean isPermissionCheckEnabled, isRegistrationEnabled, isForcedRegistrationEnabled, isTeleportToSpawnEnabled, isSessionsEnabled, isChatAllowed, isAllowRestrictedIp, isMovementAllowed, isKickNonRegisteredEnabled, isForceSingleSessionEnabled, @@ -61,8 +60,7 @@ public final class Settings extends YamlConfiguration { getEnablePasswordVerifier, protectInventoryBeforeLogInEnabled, isBackupActivated, isBackupOnStart, isBackupOnStop, enablePasspartu, isStopEnabled, reloadSupport, rakamakUseIp, noConsoleSpam, removePassword, displayOtherAccounts, useCaptcha, emailRegistration, multiverse, notifications, chestshop, bungee, banUnsafeIp, doubleEmailCheck, sessionExpireOnIpChange; - - + public static String getNickRegex, getUnloggedinGroup, getMySQLHost, getMySQLPort, getMySQLUsername, getMySQLPassword, getMySQLDatabase, getMySQLTablename, getMySQLColumnName, getMySQLColumnPassword, getMySQLColumnIp, getMySQLColumnLastLogin, @@ -70,24 +68,16 @@ public final class Settings extends YamlConfiguration { getcUnrestrictedName, getRegisteredGroup, messagesLanguage, getMySQLlastlocX, getMySQLlastlocY, getMySQLlastlocZ, rakamakUsers, rakamakUsersIp, getmailAccount, getmailPassword, getmailSMTP, getMySQLColumnId, getmailSenderName, getPredefinedSalt, getMailSubject, getMailText; - - + public static int getWarnMessageInterval, getSessionTimeout, getRegistrationTimeout, getMaxNickLength, getMinNickLength, getPasswordMinLen, getMovementRadius, getmaxRegPerIp, getNonActivatedGroup, passwordMaxLength, getRecoveryPassLength, getMailPort, maxLoginTry, captchaLength, saltLength, getmaxRegPerEmail; - + protected static YamlConfiguration configFile; - + public Settings(Plugin plugin) { - //super(new File(Settings.PLUGIN_FOLDER + "/config.yml"), this.plugin); this.file = new File(plugin.getDataFolder(),"config.yml"); - this.plugin = plugin; - - - - //options().indent(4); - // Override to always indent 4 spaces if(exists()) { load(); } @@ -95,21 +85,14 @@ public final class Settings extends YamlConfiguration { loadDefaults(file.getName()); load(); } - configFile = (YamlConfiguration) plugin.getConfig(); - - //saveDefaults(); - } - @SuppressWarnings("unchecked") public void loadConfigOptions() { - plugin.getLogger().info("Loading Configuration File..."); - mergeConfig(); - + messagesLanguage = checkLang(configFile.getString("settings.messagesLanguage","en")); isPermissionCheckEnabled = configFile.getBoolean("permission.EnablePermissionCheck", false); isForcedRegistrationEnabled = configFile.getBoolean("settings.registration.force", true); @@ -220,16 +203,15 @@ public void loadConfigOptions() { banUnsafeIp = configFile.getBoolean("settings.restrictions.banUnsafedIP", false); doubleEmailCheck = configFile.getBoolean("settings.registration.doubleEmailCheck", false); sessionExpireOnIpChange = configFile.getBoolean("settings.sessions.sessionExpireOnIpChange", false); + useLogging = configFile.getBoolean("Security.console.logConsole", false); saveDefaults(); } - @SuppressWarnings("unchecked") public static void reloadConfigOptions(YamlConfiguration newConfig) { configFile = newConfig; - - //plugin.getLogger().info("RELoading Configuration File..."); + messagesLanguage = checkLang(configFile.getString("settings.messagesLanguage","en")); isPermissionCheckEnabled = configFile.getBoolean("permission.EnablePermissionCheck", false); isForcedRegistrationEnabled = configFile.getBoolean("settings.registration.force", true); @@ -340,114 +322,84 @@ public static void reloadConfigOptions(YamlConfiguration newConfig) { banUnsafeIp = configFile.getBoolean("settings.restrictions.banUnsafedIP", false); doubleEmailCheck = configFile.getBoolean("settings.registration.doubleEmailCheck", false); sessionExpireOnIpChange = configFile.getBoolean("settings.sessions.sessionExpireOnIpChange", false); - + useLogging = configFile.getBoolean("Security.console.logConsole", false); + } - public void mergeConfig() { - if (contains("settings.restrictions.allowedPluginTeleportHandler")) set("settings.restrictions.allowedPluginTeleportHandler", null); - if(!contains("DataSource.mySQLColumnEmail")) set("DataSource.mySQLColumnEmail","email"); - if(contains("Email.GmailAccount")) { set("Email.mailAccount", getString("Email.GmailAccount")); set("Email.GmailAccount", null); } - if(contains("Email.GmailPassword")) { set("Email.mailPassword", getString("Email.GmailPassword")); set("Email.GmailPassword", null); } - if(!contains("Email.RecoveryPasswordLength")) set("Email.RecoveryPasswordLength", 8); - if(!contains("Email.mailPort")) set("Email.mailPort", 465); - if(!contains("Email.mailSMTP")) set("Email.mailSMTP", "smtp.gmail.com"); - if(!contains("Email.mailAccount")) set("Email.mailAccount", ""); - if(!contains("Email.mailPassword")) set("Email.mailPassword", ""); - if(!contains("ExternalBoardOptions.mySQLOtherUsernameColumns")) set("ExternalBoardOptions.mySQLOtherUsernameColumns", new ArrayList()); - if(!contains("settings.restrictions.displayOtherAccounts")) set("settings.restrictions.displayOtherAccounts", true); - if(!contains("DataSource.mySQLColumnId")) set("DataSource.mySQLColumnId", "id"); - if(!contains("Email.mailSenderName")) set("Email.mailSenderName", ""); - if(!contains("Xenoforo.predefinedSalt")) set("Xenoforo.predefinedSalt", ""); - if(!contains("Security.captcha.useCaptcha")) set("Security.captcha.useCaptcha", false); - if(!contains("Security.captcha.maxLoginTry")) set("Security.captcha.maxLoginTry", 5); - if(!contains("Security.captcha.captchaLength")) set("Security.captcha.captchaLength", 5); - if(!contains("Email.mailSubject")) set("Email.mailSubject", ""); - if(!contains("Email.mailText")) set("Email.mailText", "Dear , \n\n This is your new AuthMe password for the server : \n\n \n\n \n\n Do not forget to change password after login! \n /changepassword newPassword"); - if(!contains("settings.registration.enableEmailRegistrationSystem")) set("settings.registration.enableEmailRegistrationSystem", false); - if(!contains("settings.security.doubleMD5SaltLength")) set("settings.security.doubleMD5SaltLength", 8); - if(!contains("Email.maxRegPerEmail")) set("Email.maxRegPerEmail", 1); - if(!contains("Hooks.multiverse")) { set("Hooks.multiverse", true); set("Hooks.chestshop", true); set("Hooks.notifications", true); set("Hooks.bungeecord", false); } - if(!contains("settings.restrictions.ForceSpawnOnTheseWorlds")) set("settings.restrictions.ForceSpawnOnTheseWorlds", new ArrayList()); - if(!contains("settings.restrictions.banUnsafedIP")) set("settings.restrictions.banUnsafedIP", false); - if(!contains("settings.registration.doubleEmailCheck")) set("settings.registration.doubleEmailCheck", false); - if(!contains("settings.sessions.sessionExpireOnIpChange")) set("settings.sessions.sessionExpireOnIpChange", false); + if(!contains("Security.console.logConsole")) + set("Security.console.logConsole", false); plugin.getLogger().info("Merge new Config Options if needed.."); plugin.saveConfig(); - + return; } - /** - * - * - * - */ + private static HashAlgorithm getPasswordHash() { String key = "settings.security.passwordHash"; - try { return PasswordSecurity.HashAlgorithm.valueOf(configFile.getString(key,"SHA256").toUpperCase()); } catch (IllegalArgumentException ex) { @@ -455,8 +407,7 @@ public void mergeConfig() { return PasswordSecurity.HashAlgorithm.SHA256; } } - - + private static HashAlgorithm getRakamakHash() { String key = "Converter.Rakamak.newPasswordHash"; @@ -467,15 +418,9 @@ public void mergeConfig() { return PasswordSecurity.HashAlgorithm.SHA256; } } - - /** - * - * - * - */ + private static DataSourceType getDataSource() { String key = "DataSource.backend"; - try { return DataSource.DataSourceType.valueOf(configFile.getString(key).toUpperCase()); } catch (IllegalArgumentException ex) { @@ -490,48 +435,33 @@ public void mergeConfig() { * player that join the server, so player has a restricted access */ public static Boolean getRestrictedIp(String name, String ip) { - + Iterator iter = getRestrictedIp.iterator(); - - /* setup a few boolean variables to test the parameters */ Boolean trueonce = false; Boolean namefound = false; - while (iter.hasNext()) { String[] args = iter.next().split(";"); - String testname = args[0]; String testip = args[1]; - - /** Changing this logic to be more customized - * test each case against the entire - * list not just the first one in the list.*/ - - /* Fist Check the name */ if(testname.equalsIgnoreCase(name) ) { - namefound = true; - /* Check to see if the IP is the same */ - if(testip.equalsIgnoreCase(ip)) { - trueonce = true; - }; - } - } - // if the name is not found in the list let the user pass they are not being monitored + namefound = true; + if(testip.equalsIgnoreCase(ip)) { + trueonce = true; + }; + } + } if ( namefound == false){ return true; } else { - // if the name and IP was found once in the list let the user pass they are in the config if ( trueonce == true ){ return true; - // otherwise nip them in the bud and THEY SHALL NOT PASS! } else { return false; } } } - /** * Loads the configuration from disk * @@ -545,7 +475,7 @@ public void mergeConfig() { return false; } } - + public final void reload() { load(); loadDefaults(file.getName()); @@ -599,11 +529,9 @@ public void mergeConfig() { boolean success = save(); options().copyDefaults(false); options().copyHeader(false); - return success; } - /** * Clears current configuration defaults */ @@ -611,7 +539,7 @@ public void mergeConfig() { setDefaults(new MemoryConfiguration()); } - /** +/** * Check loaded defaults against current configuration * * @return false When all defaults aren't present in config @@ -622,17 +550,9 @@ public void mergeConfig() { } return getKeys(true).containsAll(getDefaults().getKeys(true)); } - /* - public static Settings getInstance() { - if (singleton == null) { - singleton = new Settings(); - } - return singleton; - } -*/ + public static String checkLang(String lang) { for(messagesLang language: messagesLang.values()) { - //System.out.println(language.toString()); if(lang.toLowerCase().contains(language.toString())) { ConsoleLogger.info("Set Language: "+lang); return lang; @@ -641,8 +561,9 @@ public void mergeConfig() { ConsoleLogger.info("Set Default Language: En "); return "en"; } - + public enum messagesLang { en, de, br, cz, pl, fr, ru, hu, sk, es, zhtw, fi, zhcn - } + } + } diff --git a/src/main/java/uk/org/whoami/authme/settings/Spawn.java b/src/main/java/uk/org/whoami/authme/settings/Spawn.java index 29b27c9b8..16a85d104 100644 --- a/src/main/java/uk/org/whoami/authme/settings/Spawn.java +++ b/src/main/java/uk/org/whoami/authme/settings/Spawn.java @@ -7,8 +7,12 @@ import java.util.List; import org.bukkit.Bukkit; import org.bukkit.Location; +/** +* +* @author Xephi59 +*/ public class Spawn extends CustomConfiguration { - + private static Spawn spawn; private static List emptyList = new ArrayList(); @@ -19,7 +23,7 @@ public class Spawn extends CustomConfiguration { save(); saveDefault(); } - + private void saveDefault() { if (!contains("spawn")) { set("spawn", emptyList); @@ -31,7 +35,6 @@ public class Spawn extends CustomConfiguration { set("spawn.pitch", ""); save(); } - } public static Spawn getInstance() { @@ -40,7 +43,7 @@ public class Spawn extends CustomConfiguration { } return spawn; } - + public boolean setSpawn(Location location) { try { set("spawn.world", location.getWorld().getName()); @@ -55,7 +58,7 @@ public class Spawn extends CustomConfiguration { return false; } } - + public Location getLocation() { try { if (this.getString("spawn.world").isEmpty() || this.getString("spawn.world") == "") return null; @@ -65,4 +68,5 @@ public class Spawn extends CustomConfiguration { return null; } } + } diff --git a/src/main/java/uk/org/whoami/authme/settings/SpoutCfg.java b/src/main/java/uk/org/whoami/authme/settings/SpoutCfg.java index 93efed4f3..7b6197c60 100644 --- a/src/main/java/uk/org/whoami/authme/settings/SpoutCfg.java +++ b/src/main/java/uk/org/whoami/authme/settings/SpoutCfg.java @@ -7,7 +7,7 @@ import java.io.File; import java.util.ArrayList; public class SpoutCfg extends CustomConfiguration{ - + private static SpoutCfg instance = null; public SpoutCfg(File file) @@ -21,7 +21,6 @@ public class SpoutCfg extends CustomConfiguration{ @SuppressWarnings("serial") private void loadDefaults() { this.set("Spout GUI enabled", true); - //Login: this.set("LoginScreen.enabled", true); this.set("LoginScreen.exit button", "Quit"); this.set("LoginScreen.exit message", "Good Bye"); @@ -30,16 +29,13 @@ public class SpoutCfg extends CustomConfiguration{ this.set("LoginScreen.text", new ArrayList() {{ add("Sample text"); add("Change this at spout.yml"); - add("------------------"); - add("AuthMe Reloaded by d4rkwarriors"); + add("--- AuthMe Reloaded by ---"); + add("d4rkwarriors and Xephi59"); }}); - //Registration: - //this.set("RegistrationScreen.enabled",true); - } public static SpoutCfg getInstance() { if (instance == null) instance = new SpoutCfg(new File("plugins/AuthMe", "spout.yml")); return instance; } -} \ No newline at end of file +} diff --git a/src/main/java/uk/org/whoami/authme/task/MessageTask.java b/src/main/java/uk/org/whoami/authme/task/MessageTask.java index 2bb0613b7..44d08ea42 100644 --- a/src/main/java/uk/org/whoami/authme/task/MessageTask.java +++ b/src/main/java/uk/org/whoami/authme/task/MessageTask.java @@ -43,17 +43,14 @@ public class MessageTask implements Runnable { if (PlayerCache.getInstance().isAuthenticated(name)) { return; } - for (Player player : plugin.getServer().getOnlinePlayers()) { if (player.getName().toLowerCase().equals(name)) { player.sendMessage(msg); - BukkitScheduler sched = plugin.getServer().getScheduler(); BukkitTask late = sched.runTaskLater(plugin, this, interval * 20); if(LimboCache.getInstance().hasLimboPlayer(name)) { LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(late.getTaskId()); } - } } } diff --git a/src/main/java/uk/org/whoami/authme/task/TimeoutTask.java b/src/main/java/uk/org/whoami/authme/task/TimeoutTask.java index 4b3e013a1..ff8993137 100644 --- a/src/main/java/uk/org/whoami/authme/task/TimeoutTask.java +++ b/src/main/java/uk/org/whoami/authme/task/TimeoutTask.java @@ -50,13 +50,11 @@ public class TimeoutTask implements Runnable { if (PlayerCache.getInstance().isAuthenticated(name)) { return; } - for (Player player : plugin.getServer().getOnlinePlayers()) { if (player.getName().toLowerCase().equals(name)) { if (LimboCache.getInstance().hasLimboPlayer(name)) { LimboPlayer inv = LimboCache.getInstance().getLimboPlayer(name); player.getServer().getScheduler().cancelTask(inv.getTimeoutTaskId()); - if(playerCache.doesCacheExist(name)) { playerCache.removeCache(name); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 7350973eb..acff6f222 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -100,6 +100,7 @@ Security: console: noConsoleSpam: false removePassword: true + logConsole: false captcha: useCaptcha: false maxLoginTry: 5 diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 03553ef62..eb52aa2c0 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,7 +3,7 @@ author: darkwarriros,Xephi website: http://www.multiplayer-italia.com/ description: AuthMe prevents people, which aren't logged in, from doing stuff like placing blocks, moving, typing commands or seeing the inventory of the current player. main: uk.org.whoami.authme.AuthMe -version: 2.7.13b2 +version: 2.7.14 softdepend: [Vault, ChestShop, Spout, Multiverse-Core, Notifications, Citizens, CombatTag] commands: register: @@ -134,4 +134,7 @@ permissions: default: op authme.vip: description: Allow vip slot when the server is full + default: op + authme.admin.purgebannedplayers: + description: Purge banned players default: op \ No newline at end of file