package fr.xephi.authme; import java.io.File; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import fr.xephi.authme.settings.Settings; import net.milkbowl.vault.permission.Permission; public class DataManager { public AuthMe plugin; public DataManager(final AuthMe plugin) { this.plugin = plugin; } public synchronized OfflinePlayer getOfflinePlayer(final String name) { final ExecutorService executor = Executors.newSingleThreadExecutor(); final Future result = executor.submit(new Callable() { @Override public synchronized OfflinePlayer call() throws Exception { OfflinePlayer result = null; try { for (final OfflinePlayer op : Bukkit.getOfflinePlayers()) { if (op.getName().equalsIgnoreCase(name)) { result = op; break; } } } catch (final Exception e) { } return result; } }); try { return result.get(); } catch (final Exception e) { return (null); } finally { executor.shutdown(); } } public boolean isOnline(final Player player, final String name) { if (player.isOnline()) { return true; } final ExecutorService executor = Executors.newSingleThreadExecutor(); final Future result = executor.submit(new Callable() { @Override public synchronized Boolean call() throws Exception { for (final OfflinePlayer op : Utils.getOnlinePlayers()) { if (op.getName().equalsIgnoreCase(name)) { return true; } } return false; } }); try { return result.get(); } catch (final Exception e) { return false; } finally { executor.shutdown(); } } public synchronized void purgeAntiXray(final List cleared) { int i = 0; for (final String name : cleared) { try { final org.bukkit.OfflinePlayer player = getOfflinePlayer(name); if (player == null) { continue; } final String playerName = player.getName(); final File playerFile = new File("." + File.separator + "plugins" + File.separator + "AntiXRayData" + File.separator + "PlayerData" + File.separator + playerName); if (playerFile.exists()) { playerFile.delete(); i++; } } catch (final Exception e) { } } ConsoleLogger.info("AutoPurgeDatabase : Remove " + i + " AntiXRayData Files"); } public synchronized void purgeDat(final List cleared) { int i = 0; for (final String name : cleared) { try { final org.bukkit.OfflinePlayer player = getOfflinePlayer(name); File playerFile = null; if (player == null) { continue; } try { playerFile = new File( plugin.getServer().getWorldContainer() + File.separator + Settings.defaultWorld + File.separator + "players" + File.separator + player.getUniqueId() + ".dat"); } catch (final Exception ignore) { } if (playerFile != null && playerFile.exists()) { playerFile.delete(); i++; } else { playerFile = new File(plugin.getServer().getWorldContainer() + File.separator + Settings.defaultWorld + File.separator + "players" + File.separator + player.getName() + ".dat"); if (playerFile.exists()) { playerFile.delete(); i++; } } } catch (final Exception ignore) { } } ConsoleLogger.info("AutoPurgeDatabase : Remove " + i + " .dat Files"); } @SuppressWarnings("deprecation") public void purgeEssentials(final List cleared) { int i = 0; for (final String name : cleared) { try { File playerFile = null; try { playerFile = new File(plugin.ess.getDataFolder() + File.separator + "userdata" + File.separator + plugin.getServer().getOfflinePlayer(name).getUniqueId() + ".yml"); } catch (final Exception ignore) { } if (playerFile != null && playerFile.exists()) { playerFile.delete(); i++; } else { playerFile = new File(plugin.ess.getDataFolder() + File.separator + "userdata" + File.separator + name + ".yml"); if (playerFile.exists()) { playerFile.delete(); i++; } } } catch (final Exception e) { } } ConsoleLogger.info("AutoPurgeDatabase : Remove " + i + " EssentialsFiles"); } public synchronized void purgeLimitedCreative(final List cleared) { int i = 0; for (final String name : cleared) { try { final org.bukkit.OfflinePlayer player = getOfflinePlayer(name); if (player == null) { continue; } final String playerName = player.getName(); File playerFile = new File("." + File.separator + "plugins" + File.separator + "LimitedCreative" + File.separator + "inventories" + File.separator + playerName + ".yml"); if (playerFile.exists()) { playerFile.delete(); i++; } playerFile = new File("." + File.separator + "plugins" + File.separator + "LimitedCreative" + File.separator + "inventories" + File.separator + playerName + "_creative.yml"); if (playerFile.exists()) { playerFile.delete(); i++; } playerFile = new File("." + File.separator + "plugins" + File.separator + "LimitedCreative" + File.separator + "inventories" + File.separator + playerName + "_adventure.yml"); if (playerFile.exists()) { playerFile.delete(); i++; } } catch (final Exception e) { } } ConsoleLogger.info("AutoPurgeDatabase : Remove " + i + " LimitedCreative Survival, Creative and Adventure files"); } public synchronized void purgePermissions(final List cleared, final Permission permission) { int i = 0; for (final String name : cleared) { try { final OfflinePlayer p = this.getOfflinePlayer(name); for (final String group : permission.getPlayerGroups((Player) p)) { permission.playerRemoveGroup(null, p, group); } i++; } catch (final Exception e) { } } ConsoleLogger.info("AutoPurgeDatabase : Remove " + i + " Permissions"); } public void run() { } }