Update 2.7.14

* Add Slot Reservation system ( permission : authme.vip )
* Add ConsoleLogging in authme.log file ( disabled by default, check
config )
* Save the main thread by different database access and saves
* Perform login more quickly
* CleanUp the code entirely
* BungeeCord should be fixed :'(
* Fix the Flat To MySQL converter
* Teleport players correctly
This commit is contained in:
Xephi 2013-04-13 01:27:23 +02:00
parent 468aaa18a3
commit 73c97a39e6
71 changed files with 1225 additions and 1584 deletions

Binary file not shown.

View File

@ -28,7 +28,7 @@
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
<version>2.7.13b2</version> <version>2.7.14</version>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.bukkit</groupId> <groupId>org.bukkit</groupId>

View File

@ -113,12 +113,10 @@ public class AuthMe extends JavaPlugin {
server = getServer(); server = getServer();
//Set Console Filter //Set Console Filter
if (Settings.removePassword) if (Settings.removePassword)
Bukkit.getLogger().setFilter(new ConsoleFilter()); Bukkit.getLogger().setFilter(new ConsoleFilter());
//Load MailApi //Load MailApi
File mailFile = new File("lib", "mail.jar"); File mailFile = new File("lib", "mail.jar");
if (mailFile.exists()) { if (mailFile.exists()) {
@ -248,7 +246,6 @@ public class AuthMe extends JavaPlugin {
ConsoleLogger.info("Successfully hook with ChestShop!"); ConsoleLogger.info("Successfully hook with ChestShop!");
} }
//Find Permissions //Find Permissions
if(Settings.isPermissionCheckEnabled) { if(Settings.isPermissionCheckEnabled) {
RegisteredServiceProvider<Permission> permissionProvider = RegisteredServiceProvider<Permission> permissionProvider =
@ -257,7 +254,8 @@ public class AuthMe extends JavaPlugin {
permission = permissionProvider.getProvider(); permission = permissionProvider.getProvider();
else { else {
ConsoleLogger.showError("Vault and Permissions plugins is needed for enable AuthMe Reloaded!"); 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();
} }
} }
@ -289,13 +287,10 @@ public class AuthMe extends JavaPlugin {
} }
} }
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
} }
ConsoleLogger.info("Authme " + this.getDescription().getVersion() + " enabled"); ConsoleLogger.info("Authme " + this.getDescription().getVersion() + " enabled");
} }
private void checkChestShop() { private void checkChestShop() {
if (!Settings.chestshop) { if (!Settings.chestshop) {
this.ChestShop = 0; this.ChestShop = 0;
@ -320,16 +315,12 @@ public class AuthMe extends JavaPlugin {
ConsoleLogger.showError("Please Update your ChestShop version!"); ConsoleLogger.showError("Please Update your ChestShop version!");
} }
} catch (NumberFormatException nfee) { } catch (NumberFormatException nfee) {
} }
} }
} catch (NullPointerException npe) {} } catch (NullPointerException npe) {}
catch (NoClassDefFoundError ncdfe) {} catch (NoClassDefFoundError ncdfe) {}
catch (ClassCastException cce) {} catch (ClassCastException cce) {}
} }
} }
private void checkMultiverse() { private void checkMultiverse() {
@ -362,7 +353,6 @@ public class AuthMe extends JavaPlugin {
} else { } else {
this.notifications = null; this.notifications = null;
} }
} }
private void combatTag() { private void combatTag() {
@ -399,19 +389,13 @@ public class AuthMe extends JavaPlugin {
if (database != null) { if (database != null) {
database.close(); database.close();
} }
//utils = Utils.getInstance();
/*
* Back style on start if avaible
*/
if(Settings.isBackupActivated && Settings.isBackupOnStop) { if(Settings.isBackupActivated && Settings.isBackupOnStop) {
Boolean Backup = new PerformBackup(this).DoBackup(); Boolean Backup = new PerformBackup(this).DoBackup();
if(Backup) ConsoleLogger.info("Backup Complete"); if(Backup) ConsoleLogger.info("Backup Complete");
else ConsoleLogger.showError("Error while making Backup"); else ConsoleLogger.showError("Error while making Backup");
} }
ConsoleLogger.info("Authme " + this.getDescription().getVersion() + " disabled"); ConsoleLogger.info("Authme " + this.getDescription().getVersion() + " disabled");
} }
private void onReload() { private void onReload() {
@ -421,7 +405,6 @@ public class AuthMe extends JavaPlugin {
if (PlayersLogs.players.contains(player.getName())) { if (PlayersLogs.players.contains(player.getName())) {
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
PlayerAuth pAuth = database.getAuth(name); PlayerAuth pAuth = database.getAuth(name);
// if Mysql is unavaible
if(pAuth == null) if(pAuth == null)
break; break;
PlayerAuth auth = new PlayerAuth(name, pAuth.getHash(), pAuth.getIp(), new Date().getTime()); PlayerAuth auth = new PlayerAuth(name, pAuth.getHash(), pAuth.getIp(), new Date().getTime());
@ -446,7 +429,6 @@ public class AuthMe extends JavaPlugin {
return; return;
} }
} catch (Exception e) { } } catch (Exception e) { }
try { try {
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
if ((PlayerCache.getInstance().isAuthenticated(name)) && (!player.isDead()) && 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()); PlayerAuth auth = new PlayerAuth(player.getName().toLowerCase(), (int)player.getLocation().getX(), (int)player.getLocation().getY(), (int)player.getLocation().getZ());
this.database.updateQuitLoc(auth); this.database.updateQuitLoc(auth);
} }
if (LimboCache.getInstance().hasLimboPlayer(name)) if (LimboCache.getInstance().hasLimboPlayer(name))
{ {
LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name); LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name);
@ -468,14 +449,12 @@ public class AuthMe extends JavaPlugin {
player.teleport(limbo.getLoc()); player.teleport(limbo.getLoc());
this.utils.addNormal(player, limbo.getGroup()); this.utils.addNormal(player, limbo.getGroup());
player.setOp(limbo.getOperator()); player.setOp(limbo.getOperator());
this.plugin.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId()); this.plugin.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId());
LimboCache.getInstance().deleteLimboPlayer(name); LimboCache.getInstance().deleteLimboPlayer(name);
if (this.playerBackup.doesCacheExist(name)) { if (this.playerBackup.doesCacheExist(name)) {
this.playerBackup.removeCache(name); this.playerBackup.removeCache(name);
} }
} }
PlayerCache.getInstance().removePlayer(name); PlayerCache.getInstance().removePlayer(name);
player.saveData(); player.saveData();
} catch (Exception ex) { } catch (Exception ex) {
@ -509,6 +488,12 @@ public class AuthMe extends JavaPlugin {
break; break;
} }
} }
if (player == null) {
for (Player p : this.getServer().getOnlinePlayers()) {
if (p.hasPermission("authme.vip"))
player = p;
}
}
return player; return player;
} }

View File

@ -16,17 +16,65 @@
package uk.org.whoami.authme; 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 java.util.logging.Logger;
import org.bukkit.Bukkit;
import uk.org.whoami.authme.settings.Settings;
public class ConsoleLogger { public class ConsoleLogger {
private static final Logger log = Logger.getLogger("Minecraft"); private static final Logger log = Logger.getLogger("Minecraft");
public static void info(String message) { public static void info(String message) {
if (AuthMe.getInstance().isEnabled()) {
log.info("[AuthMe] " + message); 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) { public static void showError(String message) {
if (AuthMe.getInstance().isEnabled()) {
log.severe("[AuthMe] ERROR: " + message); 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());
}
}
}

View File

@ -6,6 +6,7 @@ import java.util.List;
import me.muizers.Notifications.Notification; import me.muizers.Notifications.Notification;
import net.md_5.bungee.BungeeCord; import net.md_5.bungee.BungeeCord;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.GameMode; import org.bukkit.GameMode;
@ -58,15 +59,23 @@ public class Management {
this.pm = plugin.getServer().getPluginManager(); this.pm = plugin.getServer().getPluginManager();
} }
public String performLogin(Player player, String password) { public void performLogin(final Player player, final String password) {
final String name = player.getName().toLowerCase();
String name = player.getName().toLowerCase(); Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
String ip = player.getAddress().getAddress().getHostAddress(); String ip = player.getAddress().getAddress().getHostAddress();
if (Settings.bungee) { if (Settings.bungee) {
try { 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) { } catch (NoClassDefFoundError ncdfe) {
ConsoleLogger.showError("Your BungeeCord version is outdated, you need a version with the latest API");
} }
} }
World world = player.getWorld(); World world = player.getWorld();
@ -81,30 +90,25 @@ public class Management {
} }
if (Spawn.getInstance().getLocation() != null) if (Spawn.getInstance().getLocation() != null)
spawnLoc = Spawn.getInstance().getLocation(); spawnLoc = Spawn.getInstance().getLocation();
if (PlayerCache.getInstance().isAuthenticated(name)) { if (PlayerCache.getInstance().isAuthenticated(name)) {
return m._("logged_in"); player.sendMessage(m._("logged_in"));
return;
} }
if (!database.isAuthAvailable(player.getName().toLowerCase())) { if (!database.isAuthAvailable(player.getName().toLowerCase())) {
return m._("user_unknown"); player.sendMessage(m._("user_unknown"));
return;
} }
PlayerAuth pAuth = database.getAuth(name); PlayerAuth pAuth = database.getAuth(name);
// if Mysql is unavaible if(pAuth == null) {
if(pAuth == null) player.sendMessage(m._("user_unknown"));
return m._("user_unknown"); return;
}
//if columnGroup is set if(!Settings.getMySQLColumnGroup.isEmpty() && pAuth.getGroupId() == Settings.getNonActivatedGroup) {
if(!Settings.getMySQLColumnGroup.isEmpty() && pAuth.getGroupId() == Settings.getNonActivatedGroup) { player.sendMessage(m._("vb_nonActiv"));
return m._("vb_nonActiv"); return;
} }
String hash = pAuth.getHash(); String hash = pAuth.getHash();
String email = pAuth.getEmail(); String email = pAuth.getEmail();
try { try {
if(!passpartu) { if(!passpartu) {
if (Settings.useCaptcha) { if (Settings.useCaptcha) {
@ -115,39 +119,40 @@ public class Management {
plugin.captcha.remove(name); plugin.captcha.remove(name);
plugin.captcha.put(name, i); plugin.captcha.put(name, i);
} }
if(plugin.captcha.containsKey(name) && plugin.captcha.get(name) > Settings.maxLoginTry) { if(plugin.captcha.containsKey(name) && plugin.captcha.get(name) > Settings.maxLoginTry) {
player.sendMessage(m._("need_captcha")); player.sendMessage(m._("need_captcha"));
plugin.cap.put(name, rdm.nextString()); plugin.cap.put(name, rdm.nextString());
return "Type : /captcha " + plugin.cap.get(name); player.sendMessage("Type : /captcha " + plugin.cap.get(name));
return;
} else if (plugin.captcha.containsKey(name) && plugin.captcha.get(name) > Settings.maxLoginTry) { } else if (plugin.captcha.containsKey(name) && plugin.captcha.get(name) > Settings.maxLoginTry) {
try { try {
plugin.captcha.remove(name); plugin.captcha.remove(name);
plugin.cap.remove(name); plugin.cap.remove(name);
} catch (NullPointerException npe) { } catch (NullPointerException npe) {
} }
} }
} }
if (PasswordSecurity.comparePasswordWithHash(password, hash, name)) { if (PasswordSecurity.comparePasswordWithHash(password, hash, name)) {
PlayerAuth auth = new PlayerAuth(name, hash, ip, new Date().getTime(), email); PlayerAuth auth = new PlayerAuth(name, hash, ip, new Date().getTime(), email);
database.updateSession(auth); database.updateSession(auth);
PlayerCache.getInstance().addPlayer(auth); PlayerCache.getInstance().addPlayer(auth);
LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name); final LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name);
PlayerAuth getAuth = database.getAuth(name);
if (limbo != null) { 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()); utils.addNormal(player, limbo.getGroup());
if ((Settings.isTeleportToSpawnEnabled) && (!Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName()))) if ((Settings.isTeleportToSpawnEnabled) && (!Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())))
{ {
if ((Settings.isSaveQuitLocationEnabled) && (this.database.getAuth(name).getQuitLocY() != 0)) if ((Settings.isSaveQuitLocationEnabled) && (getAuth.getQuitLocY() != 0))
{ {
this.utils.packCoords(this.database.getAuth(name).getQuitLocX(), this.database.getAuth(name).getQuitLocY(), this.database.getAuth(name).getQuitLocZ(), player); utils.packCoords(getAuth.getQuitLocX(), getAuth.getQuitLocY(), getAuth.getQuitLocZ(), player);
} }
else { else {
@ -157,11 +162,15 @@ public class Management {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
} }
player.teleport(tpEvent.getTo()); 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())) { else if (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())) {
SpawnTeleportEvent tpEvent = new SpawnTeleportEvent(player, player.getLocation(), spawnLoc, true); SpawnTeleportEvent tpEvent = new SpawnTeleportEvent(player, player.getLocation(), spawnLoc, true);
@ -170,12 +179,18 @@ public class Management {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
} }
player.teleport(tpEvent.getTo()); final Location fLoc = tpEvent.getTo();
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.teleport(fLoc);
}
});
} }
} }
else if ((Settings.isSaveQuitLocationEnabled) && (this.database.getAuth(name).getQuitLocY() != 0)) else if ((Settings.isSaveQuitLocationEnabled) && (getAuth.getQuitLocY() != 0))
{ {
this.utils.packCoords(this.database.getAuth(name).getQuitLocX(), this.database.getAuth(name).getQuitLocY(), this.database.getAuth(name).getQuitLocZ(), player); utils.packCoords(getAuth.getQuitLocX(), getAuth.getQuitLocY(), getAuth.getQuitLocZ(), player);
} }
else { else {
AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc()); AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc());
@ -184,12 +199,22 @@ public class Management {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
} }
player.teleport(tpEvent.getTo()); 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())); player.setGameMode(GameMode.getByValue(limbo.getGameMode()));
}
});
if (Settings.protectInventoryBeforeLogInEnabled && player.hasPlayedBefore()) { if (Settings.protectInventoryBeforeLogInEnabled && player.hasPlayedBefore()) {
RestoreInventoryEvent event = new RestoreInventoryEvent(player, limbo.getInventory(), limbo.getArmour()); RestoreInventoryEvent event = new RestoreInventoryEvent(player, limbo.getInventory(), limbo.getArmour());
@ -199,14 +224,12 @@ public class Management {
} }
} }
player.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId()); player.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId());
player.getServer().getScheduler().cancelTask(limbo.getMessageTaskId()); player.getServer().getScheduler().cancelTask(limbo.getMessageTaskId());
LimboCache.getInstance().deleteLimboPlayer(name); LimboCache.getInstance().deleteLimboPlayer(name);
if (this.playerCache.doesCacheExist(name)) { if (playerCache.doesCacheExist(name)) {
this.playerCache.removeCache(name); playerCache.removeCache(name);
} }
} }
/* /*
@ -223,7 +246,6 @@ public class Management {
PlayersLogs.players.add(player.getName()); PlayersLogs.players.add(player.getName());
pllog.save(); pllog.save();
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
} }
Bukkit.getServer().getPluginManager().callEvent(new LoginEvent(player, true)); Bukkit.getServer().getPluginManager().callEvent(new LoginEvent(player, true));
@ -242,19 +264,35 @@ public class Management {
if(plugin.notifications != null) { if(plugin.notifications != null) {
plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " logged in!")); plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " logged in!"));
} }
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.saveData(); player.saveData();
}
});
} else { } else {
if (!Settings.noConsoleSpam) if (!Settings.noConsoleSpam)
ConsoleLogger.info(player.getName() + " used the wrong password"); ConsoleLogger.info(player.getName() + " used the wrong password");
if (Settings.isKickOnWrongPasswordEnabled) { if (Settings.isKickOnWrongPasswordEnabled) {
try { try {
int gm = AuthMePlayerListener.gameMode.get(name); final int gm = AuthMePlayerListener.gameMode.get(name);
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.setGameMode(GameMode.getByValue(gm)); player.setGameMode(GameMode.getByValue(gm));
}
});
} catch (NullPointerException npe) {} } catch (NullPointerException npe) {}
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.kickPlayer(m._("wrong_pwd")); player.kickPlayer(m._("wrong_pwd"));
}
});
} else { } else {
return (m._("wrong_pwd")); player.sendMessage(m._("wrong_pwd"));
return;
} }
} }
} else { } else {
@ -262,26 +300,35 @@ public class Management {
PlayerAuth auth = new PlayerAuth(name, hash, ip, new Date().getTime(), email); PlayerAuth auth = new PlayerAuth(name, hash, ip, new Date().getTime(), email);
database.updateSession(auth); database.updateSession(auth);
PlayerCache.getInstance().addPlayer(auth); PlayerCache.getInstance().addPlayer(auth);
LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name); final LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name);
if (limbo != null) { 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()); utils.addNormal(player, limbo.getGroup());
if ((Settings.isTeleportToSpawnEnabled) && (!Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName()))) if ((Settings.isTeleportToSpawnEnabled) && (!Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())))
{ {
if ((Settings.isSaveQuitLocationEnabled) && (this.database.getAuth(name).getQuitLocY() != 0)) { if ((Settings.isSaveQuitLocationEnabled) && (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); 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); AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, quitLoc);
pm.callEvent(tpEvent); pm.callEvent(tpEvent);
if(!tpEvent.isCancelled()) { if(!tpEvent.isCancelled()) {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
} }
player.teleport(tpEvent.getTo()); final Location fLoc = tpEvent.getTo();
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.teleport(fLoc);
}
});
} }
} }
else else
@ -292,10 +339,15 @@ public class Management {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
} }
player.teleport(tpEvent.getTo()); 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())) { else if (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())) {
@ -305,18 +357,30 @@ public class Management {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
} }
player.teleport(tpEvent.getTo()); final Location fLoc = tpEvent.getTo();
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.teleport(fLoc);
}
});
} }
} }
else if ((Settings.isSaveQuitLocationEnabled) && (this.database.getAuth(name).getQuitLocY() != 0)) { else if ((Settings.isSaveQuitLocationEnabled) && (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); 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); AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, quitLoc);
pm.callEvent(tpEvent); pm.callEvent(tpEvent);
if(!tpEvent.isCancelled()) { if(!tpEvent.isCancelled()) {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
} }
player.teleport(tpEvent.getTo()); final Location fLoc = tpEvent.getTo();
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.teleport(fLoc);
}
});
} }
} }
else else
@ -327,12 +391,22 @@ public class Management {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
} }
player.teleport(tpEvent.getTo()); 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())); player.setGameMode(GameMode.getByValue(limbo.getGameMode()));
}
});
if (Settings.protectInventoryBeforeLogInEnabled && player.hasPlayedBefore()) { if (Settings.protectInventoryBeforeLogInEnabled && player.hasPlayedBefore()) {
RestoreInventoryEvent event = new RestoreInventoryEvent(player, limbo.getInventory(), limbo.getArmour()); RestoreInventoryEvent event = new RestoreInventoryEvent(player, limbo.getInventory(), limbo.getArmour());
@ -342,12 +416,11 @@ public class Management {
} }
} }
player.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId()); player.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId());
player.getServer().getScheduler().cancelTask(limbo.getMessageTaskId()); player.getServer().getScheduler().cancelTask(limbo.getMessageTaskId());
LimboCache.getInstance().deleteLimboPlayer(name); LimboCache.getInstance().deleteLimboPlayer(name);
if (this.playerCache.doesCacheExist(name)) { if (playerCache.doesCacheExist(name)) {
this.playerCache.removeCache(name); playerCache.removeCache(name);
} }
} }
@ -382,15 +455,24 @@ public class Management {
if(plugin.notifications != null) { if(plugin.notifications != null) {
plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " logged in!")); plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " logged in!"));
} }
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.saveData(); player.saveData();
this.passpartu = false;
} }
});
passpartu = false;
}
} catch (NoSuchAlgorithmException ex) { } catch (NoSuchAlgorithmException ex) {
ConsoleLogger.showError(ex.getMessage()); ConsoleLogger.showError(ex.getMessage());
return (m._("error")); player.sendMessage(m._("error"));
return;
} }
return ""; return;
}
});
} }
private void displayOtherAccounts(PlayerAuth auth) { private void displayOtherAccounts(PlayerAuth auth) {
@ -427,5 +509,4 @@ public class Management {
} }
} }
} }

View File

@ -4,7 +4,6 @@
*/ */
package uk.org.whoami.authme; package uk.org.whoami.authme;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
@ -32,7 +31,6 @@ public class PerformBackup {
public PerformBackup(AuthMe instance) { public PerformBackup(AuthMe instance) {
this.setInstance(instance); this.setInstance(instance);
} }
public boolean DoBackup() { public boolean DoBackup() {
@ -56,13 +54,10 @@ public class PerformBackup {
dirBackup.mkdir(); dirBackup.mkdir();
if(checkWindows(Settings.backupWindowsPath)) { if(checkWindows(Settings.backupWindowsPath)) {
String executeCmd = Settings.backupWindowsPath+"\\bin\\mysqldump.exe -u " + dbUserName + " -p" + dbPassword + " " + dbName + " --tables " + tblname + " -r " + path+".sql"; String executeCmd = Settings.backupWindowsPath+"\\bin\\mysqldump.exe -u " + dbUserName + " -p" + dbPassword + " " + dbName + " --tables " + tblname + " -r " + path+".sql";
//ConsoleLogger.info(executeCmd);
Process runtimeProcess; Process runtimeProcess;
try { try {
//System.out.println("path "+path+" cmd "+executeCmd);
runtimeProcess = Runtime.getRuntime().exec(executeCmd); runtimeProcess = Runtime.getRuntime().exec(executeCmd);
int processComplete = runtimeProcess.waitFor(); int processComplete = runtimeProcess.waitFor();
if (processComplete == 0) { if (processComplete == 0) {
ConsoleLogger.info("Backup created successfully"); ConsoleLogger.info("Backup created successfully");
return true; return true;
@ -76,10 +71,8 @@ public class PerformBackup {
String executeCmd = "mysqldump -u " + dbUserName + " -p" + dbPassword + " " + dbName + " --tables " + tblname + " -r " + path+".sql"; String executeCmd = "mysqldump -u " + dbUserName + " -p" + dbPassword + " " + dbName + " --tables " + tblname + " -r " + path+".sql";
Process runtimeProcess; Process runtimeProcess;
try { try {
//System.out.println("path "+path+" cmd "+executeCmd);
runtimeProcess = Runtime.getRuntime().exec(executeCmd); runtimeProcess = Runtime.getRuntime().exec(executeCmd);
int processComplete = runtimeProcess.waitFor(); int processComplete = runtimeProcess.waitFor();
if (processComplete == 0) { if (processComplete == 0) {
ConsoleLogger.info("Backup created successfully"); ConsoleLogger.info("Backup created successfully");
return true; return true;
@ -100,15 +93,12 @@ public class PerformBackup {
dirBackup.mkdir(); dirBackup.mkdir();
try { try {
copy(new File("plugins/AuthMe/"+backend),new File(path+".db")); copy(new File("plugins/AuthMe/"+backend),new File(path+".db"));
return true; return true;
} catch (Exception ex) { } catch (Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
} }
return false; return false;
} }
@ -118,9 +108,7 @@ public class PerformBackup {
*/ */
private boolean checkWindows(String windowsPath) { private boolean checkWindows(String windowsPath) {
String isWin = System.getProperty("os.name").toLowerCase(); String isWin = System.getProperty("os.name").toLowerCase();
if(isWin.indexOf("win") >= 0) { if(isWin.indexOf("win") >= 0) {
//ConsoleLogger.info(windowsPath+"\\bin\\mysqldump.exe");
if(new File(windowsPath+"\\bin\\mysqldump.exe").exists()) { if(new File(windowsPath+"\\bin\\mysqldump.exe").exists()) {
return true; return true;
} else { } else {
@ -128,8 +116,6 @@ public class PerformBackup {
return true; return true;
} }
} else return false; } else return false;
} }
/* /*

View File

@ -15,6 +15,10 @@ import org.bukkit.Bukkit;
import uk.org.whoami.authme.cache.auth.PlayerAuth; import uk.org.whoami.authme.cache.auth.PlayerAuth;
import uk.org.whoami.authme.settings.Settings; import uk.org.whoami.authme.settings.Settings;
/**
*
* @author Xephi59
*/
public class SendMailSSL { public class SendMailSSL {
public AuthMe instance; public AuthMe instance;
@ -63,9 +67,7 @@ public class SendMailSSL {
text = text.replaceAll("<servername>", instance.getServer().getServerName()); text = text.replaceAll("<servername>", instance.getServer().getServerName());
text = text.replaceAll("<generatedpass>", newPass); text = text.replaceAll("<generatedpass>", newPass);
message.setText(text); message.setText(text);
Bukkit.getScheduler().runTaskAsynchronously(instance, new Runnable() { Bukkit.getScheduler().runTaskAsynchronously(instance, new Runnable() {
@Override @Override
public void run() { public void run() {
try { try {
@ -73,16 +75,13 @@ public class SendMailSSL {
} catch (MessagingException e) { } catch (MessagingException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
}); });
if(!Settings.noConsoleSpam) if(!Settings.noConsoleSpam)
ConsoleLogger.info("Email sent to : " + auth.getNickname()); ConsoleLogger.info("Email sent to : " + auth.getNickname());
} catch (MessagingException e) { } catch (MessagingException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
} }

View File

@ -24,17 +24,11 @@ import uk.org.whoami.authme.settings.Settings;
* @author stefano * @author stefano
*/ */
public class Utils { public class Utils {
//private Settings settings = Settings.getInstance();
private String currentGroup; private String currentGroup;
private static Utils singleton; private static Utils singleton;
private String unLoggedGroup = Settings.getUnloggedinGroup; private String unLoggedGroup = Settings.getUnloggedinGroup;
BukkitTask id; BukkitTask id;
/*
public Utils(Player player) {
this.player = player;
}
*/
public void setGroup(Player player, groupType group) { public void setGroup(Player player, groupType group) {
if (!player.isOnline()) if (!player.isOnline())
return; return;
@ -59,51 +53,36 @@ public class Utils {
} }
public String removeAll(Player player) { public String removeAll(Player player) {
if(!Utils.getInstance().useGroupSystem()){ if(!Utils.getInstance().useGroupSystem()){
return null; return null;
} }
if( !Settings.getJoinPermissions.isEmpty() ) { if( !Settings.getJoinPermissions.isEmpty() ) {
hasPermOnJoin(player); hasPermOnJoin(player);
} }
this.currentGroup = AuthMe.permission.getPrimaryGroup(player.getWorld(),player.getName().toString()); 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)) { if(AuthMe.permission.playerRemoveGroup(player.getWorld(),player.getName().toString(), currentGroup) && AuthMe.permission.playerAddGroup(player.getWorld(),player.getName().toString(),this.unLoggedGroup)) {
return currentGroup; return currentGroup;
} }
return null; return null;
} }
public boolean addNormal(Player player, String group) { public boolean addNormal(Player player, String group) {
if(!Utils.getInstance().useGroupSystem()){ if(!Utils.getInstance().useGroupSystem()){
return false; 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)) { 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 true;
} }
return false; return false;
} }
private String hasPermOnJoin(Player player) { private String hasPermOnJoin(Player player) {
/* if(Settings.getJoinPermissions.isEmpty())
return null; */
Iterator<String> iter = Settings.getJoinPermissions.iterator(); Iterator<String> iter = Settings.getJoinPermissions.iterator();
while (iter.hasNext()) { while (iter.hasNext()) {
String permission = iter.next(); String permission = iter.next();
// System.out.println("permissions? "+ permission);
if(AuthMe.permission.playerHas(player, permission)){ if(AuthMe.permission.playerHas(player, permission)){
// System.out.println("player has permissions " +permission);
AuthMe.permission.playerAddTransient(player, permission); AuthMe.permission.playerAddTransient(player, permission);
} }
} }
@ -112,19 +91,14 @@ public class Utils {
public boolean isUnrestricted(Player player) { public boolean isUnrestricted(Player player) {
if(Settings.getUnrestrictedName.isEmpty() || Settings.getUnrestrictedName == null) if(Settings.getUnrestrictedName.isEmpty() || Settings.getUnrestrictedName == null)
return false; return false;
// System.out.println("name to escape "+player.getName()); if(Settings.getUnrestrictedName.contains(player.getName()))
if(Settings.getUnrestrictedName.contains(player.getName())) {
// System.out.println("name to escape correctly"+player.getName());
return true; return true;
}
return false; return false;
} }
public static Utils getInstance() { public static Utils getInstance() {
@ -138,14 +112,13 @@ public class Utils {
if(Settings.isPermissionCheckEnabled && !Settings.getUnloggedinGroup.isEmpty()) { if(Settings.isPermissionCheckEnabled && !Settings.getUnloggedinGroup.isEmpty()) {
return true; return true;
} return false; } return false;
} }
public void packCoords(int x, int y, int z, final Player pl) public void packCoords(int x, int y, int z, final Player pl)
{ {
final World world = pl.getWorld(); final World world = pl.getWorld();
final int fY = y; 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); AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(pl, loc);
AuthMe.getInstance().getServer().getPluginManager().callEvent(tpEvent); AuthMe.getInstance().getServer().getPluginManager().callEvent(tpEvent);
@ -161,24 +134,18 @@ public class Utils {
public void run() { public void run() {
int current = (int)pl.getLocation().getY(); int current = (int)pl.getLocation().getY();
World currentWorld = pl.getWorld(); World currentWorld = pl.getWorld();
if (current != fY && world.getName() == currentWorld.getName()) { if (current != fY && world.getName() == currentWorld.getName()) {
pl.teleport(loc); pl.teleport(loc);
} }
} }
}, 1L, 20L); }, 1L, 20L);
Bukkit.getScheduler().runTaskLaterAsynchronously(AuthMe.authme, new Runnable() Bukkit.getScheduler().runTaskLaterAsynchronously(AuthMe.authme, new Runnable()
{ {
@Override @Override
public void run() { public void run() {
id.cancel(); id.cancel();
} }
}, 60L); }, 60L);
} }
@ -205,8 +172,6 @@ public class Utils {
} catch(Exception e) { } catch(Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return false; return false;
} }
@ -221,18 +186,13 @@ public class Utils {
if (inputToken.isEmpty() ) if (inputToken.isEmpty() )
return false; return false;
Scanner reader = null; Scanner reader = null;
try { try {
reader = new Scanner(file); reader = new Scanner(file);
while (reader.hasNextLine()) { while (reader.hasNextLine()) {
final String line = reader.nextLine(); final String line = reader.nextLine();
if (line.contains(":")) { if (line.contains(":")) {
String[] tokenInfo = line.split(":"); 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]) ) { if(tokenInfo[0].equals(inputToken) && System.currentTimeMillis()/1000-30 <= Integer.parseInt(tokenInfo[1]) ) {
file.delete(); file.delete();
reader.close(); reader.close();
@ -243,7 +203,6 @@ public class Utils {
} catch(Exception e) { } catch(Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
reader.close(); reader.close();
return false; return false;
} }
@ -254,14 +213,13 @@ public class Utils {
// obtain new random token // obtain new random token
Random rnd = new Random (); Random rnd = new Random ();
char[] arr = new char[5]; char[] arr = new char[5];
for (int i=0; i<5; i++) { for (int i=0; i<5; i++) {
int n = rnd.nextInt (36); int n = rnd.nextInt (36);
arr[i] = (char) (n < 10 ? '0'+n : 'a'+n-10); arr[i] = (char) (n < 10 ? '0'+n : 'a'+n-10);
} }
return new String(arr); return new String(arr);
} }
public enum groupType { public enum groupType {
UNREGISTERED, REGISTERED, NOTLOGGEDIN, LOGGEDIN UNREGISTERED, REGISTERED, NOTLOGGEDIN, LOGGEDIN
} }

View File

@ -140,7 +140,6 @@ public class API {
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
return null; return null;
} }
} }
public static String getNickRegex() { public static String getNickRegex() {
@ -173,18 +172,14 @@ public class API {
player.getInventory().setArmorContents(armor); player.getInventory().setArmorContents(armor);
} catch (NullPointerException npe) { } catch (NullPointerException npe) {
} }
} }
public void saveAuth(final PlayerAuth auth) { public void saveAuth(final PlayerAuth auth) {
instance.getServer().getScheduler().runTask(instance, new Runnable() { instance.getServer().getScheduler().runTask(instance, new Runnable() {
@Override @Override
public void run() { public void run() {
database.saveAuth(auth); database.saveAuth(auth);
} }
}); });
} }

View File

@ -19,7 +19,6 @@ package uk.org.whoami.authme.cache.auth;
import uk.org.whoami.authme.security.PasswordSecurity; import uk.org.whoami.authme.security.PasswordSecurity;
import uk.org.whoami.authme.settings.Settings; import uk.org.whoami.authme.settings.Settings;
public class PlayerAuth { public class PlayerAuth {
private String nickname; private String nickname;
@ -67,9 +66,6 @@ public class PlayerAuth {
this.email = email; 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) { 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.nickname = nickname;
this.hash = hash; this.hash = hash;
@ -83,7 +79,6 @@ public class PlayerAuth {
this.email = email; this.email = email;
} }
// IPB Constructor with groups
public PlayerAuth(String nickname, String hash, String salt, int groupId , String ip, long lastLogin) { public PlayerAuth(String nickname, String hash, String salt, int groupId , String ip, long lastLogin) {
this.nickname = nickname; this.nickname = nickname;
this.hash = hash; this.hash = hash;
@ -93,7 +88,6 @@ public class PlayerAuth {
this.groupId = groupId; this.groupId = groupId;
} }
// IPB Constructor without groups
public PlayerAuth(String nickname, String hash, String salt, String ip, long lastLogin) { public PlayerAuth(String nickname, String hash, String salt, String ip, long lastLogin) {
this.nickname = nickname; this.nickname = nickname;
this.hash = hash; this.hash = hash;
@ -114,7 +108,6 @@ public class PlayerAuth {
this.email = email; this.email = email;
} }
public PlayerAuth(String nickname, String hash, String ip, long lastLogin, int x, int y, int z) { public PlayerAuth(String nickname, String hash, String ip, long lastLogin, int x, int y, int z) {
this.nickname = nickname; this.nickname = nickname;
this.hash = hash; this.hash = hash;
@ -126,7 +119,6 @@ public class PlayerAuth {
this.email = "your@email.com"; this.email = "your@email.com";
} }
public String getIp() { public String getIp() {
return ip; return ip;
} }
@ -138,7 +130,6 @@ public class PlayerAuth {
public String getHash() { public String getHash() {
if(!salt.isEmpty() && Settings.getPasswordHash == PasswordSecurity.HashAlgorithm.MD5VB) { if(!salt.isEmpty() && Settings.getPasswordHash == PasswordSecurity.HashAlgorithm.MD5VB) {
vBhash = "$MD5vb$"+salt+"$"+hash; vBhash = "$MD5vb$"+salt+"$"+hash;
// Compose Vbullettin Hash System!
return vBhash; return vBhash;
} }
else { else {
@ -146,14 +137,10 @@ public class PlayerAuth {
} }
} }
//Get Salt
public String getSalt() { public String getSalt() {
return this.salt; return this.salt;
} }
//
// GroupId for unactivated User on Vbullettin Board
//
public int getGroupId() { public int getGroupId() {
return groupId; return groupId;
} }
@ -209,7 +196,6 @@ public class PlayerAuth {
return false; return false;
} }
PlayerAuth other = (PlayerAuth) obj; PlayerAuth other = (PlayerAuth) obj;
return other.getIp().equals(this.ip) && other.getNickname().equals(this.nickname); 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); hashCode = 71 * hashCode + (this.ip != null ? this.ip.hashCode() : 0);
return hashCode; return hashCode;
} }
} }

View File

@ -54,4 +54,5 @@ public class PlayerCache {
} }
return singleton; return singleton;
} }
} }

View File

@ -12,7 +12,6 @@ import org.bukkit.inventory.ItemStack;
public class DataFileCache { public class DataFileCache {
private ItemStack[] inventory; private ItemStack[] inventory;
private ItemStack[] armor; private ItemStack[] armor;
private String group; private String group;
@ -21,7 +20,6 @@ public class DataFileCache {
public DataFileCache(ItemStack[] inventory, ItemStack[] armor){ public DataFileCache(ItemStack[] inventory, ItemStack[] armor){
this.inventory = inventory; this.inventory = inventory;
this.armor = armor; this.armor = armor;
} }
public DataFileCache(ItemStack[] inventory, ItemStack[] armor, String group, boolean operator){ public DataFileCache(ItemStack[] inventory, ItemStack[] armor, String group, boolean operator){
@ -45,5 +43,5 @@ public class DataFileCache {
public Boolean getOperator(){ public Boolean getOperator(){
return operator; return operator;
} }
}
}

View File

@ -15,10 +15,7 @@ import java.util.Scanner;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
public class FileCache { public class FileCache {
//private HashMap<Enchantment, Integer> ench;
public FileCache() { public FileCache() {
final File folder = new File("cache"); final File folder = new File("cache");
@ -41,14 +38,10 @@ public class FileCache {
writer = new FileWriter(file); 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 // line format Group|OperatorStatus
if(operator) if(operator)
writer.write(group+";1\r\n"); writer.write(group+";1\r\n");
else writer.write(group+";0\r\n"); else writer.write(group+";0\r\n");
writer.flush(); writer.flush();
ItemStack[] invstack = playerData.getInventory(); ItemStack[] invstack = playerData.getInventory();
@ -59,23 +52,14 @@ public class FileCache {
int amount = 0; int amount = 0;
int durability = 0; int durability = 0;
String enchList = ""; String enchList = "";
//ench = new HashMap<Enchantment, Integer>();
if (invstack[i] != null) { if (invstack[i] != null) {
itemid = invstack[i].getTypeId(); itemid = invstack[i].getTypeId();
amount = invstack[i].getAmount(); amount = invstack[i].getAmount();
durability = invstack[i].getDurability(); durability = invstack[i].getDurability();
for(Enchantment e : invstack[i].getEnchantments().keySet()) {
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)+":"); enchList = enchList.concat(e.getName()+":"+invstack[i].getEnchantmentLevel(e)+":");
//System.out.println(enchList);
} }
} }
writer.write("i" + ":" + itemid + ":" + amount + ":" writer.write("i" + ":" + itemid + ":" + amount + ":"
+ durability + ":"+ enchList + "\r\n"); + durability + ":"+ enchList + "\r\n");
writer.flush(); writer.flush();
@ -88,26 +72,18 @@ public class FileCache {
int amount = 0; int amount = 0;
int durability = 0; int durability = 0;
String enchList = ""; String enchList = "";
if (armorstack[i] != null) { if (armorstack[i] != null) {
itemid = armorstack[i].getTypeId(); itemid = armorstack[i].getTypeId();
amount = armorstack[i].getAmount(); amount = armorstack[i].getAmount();
durability = armorstack[i].getDurability(); durability = armorstack[i].getDurability();
for(Enchantment e : armorstack[i].getEnchantments().keySet()) {
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)+":"); enchList = enchList.concat(e.getName()+":"+armorstack[i].getEnchantmentLevel(e)+":");
//System.out.println(enchList);
} }
} }
writer.write("w" + ":" + itemid + ":" + amount + ":" writer.write("w" + ":" + itemid + ":" + amount + ":"
+ durability + ":"+ enchList + "\r\n"); + durability + ":"+ enchList + "\r\n");
writer.flush(); writer.flush();
} }
writer.close(); writer.close();
} catch (final Exception e) { } catch (final Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -122,7 +98,6 @@ public class FileCache {
ItemStack[] stacka = new ItemStack[4]; ItemStack[] stacka = new ItemStack[4];
String group = null; String group = null;
boolean op = false; boolean op = false;
if (!file.exists()) { if (!file.exists()) {
return new DataFileCache(stacki, stacka); return new DataFileCache(stacki, stacka);
} }
@ -149,23 +124,15 @@ public class FileCache {
} }
final String[] in = line.split(":"); final String[] in = line.split(":");
/*if (in.length != 4) {
continue;
} */
if (!in[0].equals("i") && !in[0].equals("w")) { if (!in[0].equals("i") && !in[0].equals("w")) {
continue; continue;
} }
// can enchant item? size ofstring in file - 4 all / 2 = number of enchant // can enchant item? size ofstring in file - 4 all / 2 = number of enchant
if (in[0].equals("i")) { if (in[0].equals("i")) {
stacki[i] = new ItemStack(Integer.parseInt(in[1]), stacki[i] = new ItemStack(Integer.parseInt(in[1]),
Integer.parseInt(in[2]), Short.parseShort((in[3]))); Integer.parseInt(in[2]), Short.parseShort((in[3])));
// qui c'e' un problema serio!
if(in.length > 4 && !in[4].isEmpty()) { if(in.length > 4 && !in[4].isEmpty()) {
for(int k=4;k<in.length-1;k++) { for(int k=4;k<in.length-1;k++) {
//System.out.println("enchant "+in[k]);
stacki[i].addUnsafeEnchantment(Enchantment.getByName(in[k]) ,Integer.parseInt(in[k+1])); stacki[i].addUnsafeEnchantment(Enchantment.getByName(in[k]) ,Integer.parseInt(in[k+1]));
k++; k++;
} }
@ -176,14 +143,12 @@ public class FileCache {
Integer.parseInt(in[2]), Short.parseShort((in[3]))); Integer.parseInt(in[2]), Short.parseShort((in[3])));
if(in.length > 4 && !in[4].isEmpty()) { if(in.length > 4 && !in[4].isEmpty()) {
for(int k=4;k<in.length-1;k++) { for(int k=4;k<in.length-1;k++) {
//System.out.println("enchant "+in[k]);
stacka[a].addUnsafeEnchantment(Enchantment.getByName(in[k]) ,Integer.parseInt(in[k+1])); stacka[a].addUnsafeEnchantment(Enchantment.getByName(in[k]) ,Integer.parseInt(in[k+1]));
k++; k++;
} }
} }
a++; a++;
} }
} }
} catch (final Exception e) { } catch (final Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -214,5 +179,4 @@ public class FileCache {
return false; return false;
} }
} }

View File

@ -72,7 +72,6 @@ public class LimboCache {
inv = null; inv = null;
arm = null; arm = null;
} }
if(player.isOp() ) { if(player.isOp() ) {
operator = true; operator = true;
} else { } else {
@ -80,8 +79,6 @@ public class LimboCache {
} }
} }
if(Settings.isForceSurvivalModeEnabled) { if(Settings.isForceSurvivalModeEnabled) {
if(Settings.isResetInventoryIfCreative && gameMode != 0 ) { if(Settings.isResetInventoryIfCreative && gameMode != 0 ) {
ResetInventoryEvent event = new ResetInventoryEvent(player); ResetInventoryEvent event = new ResetInventoryEvent(player);
@ -100,7 +97,6 @@ public class LimboCache {
loc = plugin.mv.getMVWorldManager().getMVWorld(player.getWorld().getName()).getSpawnLocation(); loc = plugin.mv.getMVWorldManager().getMVWorld(player.getWorld().getName()).getSpawnLocation();
} catch (NullPointerException npe) {} } catch (NullPointerException npe) {}
} }
} }
try { try {
if(cache.containsKey(name) && playerGroup.isEmpty()) { if(cache.containsKey(name) && playerGroup.isEmpty()) {
@ -109,12 +105,10 @@ public class LimboCache {
} }
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
} }
cache.put(player.getName().toLowerCase(), new LimboPlayer(name, loc, inv, arm, gameMode, operator, playerGroup)); cache.put(player.getName().toLowerCase(), new LimboPlayer(name, loc, inv, arm, gameMode, operator, playerGroup));
} }
public void addLimboPlayer(Player player, String group) { public void addLimboPlayer(Player player, String group) {
cache.put(player.getName().toLowerCase(), new LimboPlayer(player.getName().toLowerCase(), group)); cache.put(player.getName().toLowerCase(), new LimboPlayer(player.getName().toLowerCase(), group));
} }
@ -130,7 +124,6 @@ public class LimboCache {
return cache.containsKey(name); return cache.containsKey(name);
} }
public static LimboCache getInstance() { public static LimboCache getInstance() {
if (singleton == null) { if (singleton == null) {
singleton = new LimboCache(AuthMe.getInstance()); singleton = new LimboCache(AuthMe.getInstance());
@ -144,4 +137,5 @@ public class LimboCache {
} }
this.addLimboPlayer(player); this.addLimboPlayer(player);
} }
} }

View File

@ -54,7 +54,6 @@ public class LimboPlayer {
this.group = group; this.group = group;
} }
public String getName() { public String getName() {
return name; return name;
} }

View File

@ -21,12 +21,14 @@ import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -54,10 +56,8 @@ import uk.org.whoami.authme.settings.SpoutCfg;
public class AdminCommand implements CommandExecutor { public class AdminCommand implements CommandExecutor {
public AuthMe plugin; public AuthMe plugin;
private Messages m = Messages.getInstance(); private Messages m = Messages.getInstance();
private SpoutCfg s = SpoutCfg.getInstance(); private SpoutCfg s = SpoutCfg.getInstance();
//private Settings settings = Settings.getInstance();
public DataSource database; public DataSource database;
public AdminCommand(AuthMe plugin, DataSource database) { public AdminCommand(AuthMe plugin, DataSource database) {
@ -83,7 +83,6 @@ public class AdminCommand implements CommandExecutor {
System.out.println("[AuthMe] command usage: authme passpartuToken"); System.out.println("[AuthMe] command usage: authme passpartuToken");
return true; return true;
} }
if(Utils.getInstance().obtainToken()) { if(Utils.getInstance().obtainToken()) {
System.out.println("[AuthMe] You have 30s for insert this token ingame with /passpartu [token]"); System.out.println("[AuthMe] You have 30s for insert this token ingame with /passpartu [token]");
} else { } else {
@ -92,39 +91,31 @@ public class AdminCommand implements CommandExecutor {
return true; return true;
} }
if (!sender.hasPermission("authme.admin." + args[0].toLowerCase())) { if (!sender.hasPermission("authme.admin." + args[0].toLowerCase())) {
sender.sendMessage(m._("no_perm")); sender.sendMessage(m._("no_perm"));
return true; return true;
} }
if (args[0].equalsIgnoreCase("version")) { if (args[0].equalsIgnoreCase("version")) {
sender.sendMessage("AuthMe Version: "+AuthMe.getInstance().getDescription().getVersion()); sender.sendMessage("AuthMe Version: "+AuthMe.getInstance().getDescription().getVersion());
return true; return true;
} }
if (args[0].equalsIgnoreCase("purge")) { if (args[0].equalsIgnoreCase("purge")) {
if (args.length != 2) { if (args.length != 2) {
sender.sendMessage("Usage: /authme purge <DAYS>"); sender.sendMessage("Usage: /authme purge <DAYS>");
return true; return true;
} }
try { try {
long days = Long.parseLong(args[1]) * 86400000; long days = Long.parseLong(args[1]) * 86400000;
long until = new Date().getTime() - days; long until = new Date().getTime() - days;
sender.sendMessage("Deleted " + database.purgeDatabase(until) + " user accounts"); sender.sendMessage("Deleted " + database.purgeDatabase(until) + " user accounts");
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
sender.sendMessage("Usage: /authme purge <DAYS>"); sender.sendMessage("Usage: /authme purge <DAYS>");
return true; return true;
} }
} else if (args[0].equalsIgnoreCase("reload")) { } else if (args[0].equalsIgnoreCase("reload")) {
database.reload(); database.reload();
//Trying to load config from JAR-Ressources, if config.yml doesn't exist...
File newConfigFile = new File("plugins/AuthMe","config.yml"); File newConfigFile = new File("plugins/AuthMe","config.yml");
if (!newConfigFile.exists()) { if (!newConfigFile.exists()) {
InputStream fis = getClass().getResourceAsStream("/config.yml"); InputStream fis = getClass().getResourceAsStream("/config.yml");
@ -186,7 +177,6 @@ public class AdminCommand implements CommandExecutor {
final CommandSender fSender = sender; final CommandSender fSender = sender;
final String[] arguments = args; final String[] arguments = args;
Bukkit.getScheduler().runTask(plugin, new Runnable() { Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override @Override
public void run() { public void run() {
PlayerAuth pAuth = null; PlayerAuth pAuth = null;
@ -223,16 +213,13 @@ public class AdminCommand implements CommandExecutor {
fSender.sendMessage("[AuthMe] This player is unknown"); fSender.sendMessage("[AuthMe] This player is unknown");
return; return;
} }
} }
}); });
return true; return true;
} else { } else {
final CommandSender fSender = sender; final CommandSender fSender = sender;
final String[] arguments = args; final String[] arguments = args;
Bukkit.getScheduler().runTask(plugin, new Runnable() { Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override @Override
public void run() { public void run() {
String message = "[AuthMe] "; String message = "[AuthMe] ";
@ -262,9 +249,7 @@ public class AdminCommand implements CommandExecutor {
fSender.sendMessage("[AuthMe] Please put a valid IP"); fSender.sendMessage("[AuthMe] Please put a valid IP");
return; return;
} }
} }
}); });
return true; return true;
} }
@ -273,16 +258,13 @@ public class AdminCommand implements CommandExecutor {
sender.sendMessage("Usage: /authme register playername password"); sender.sendMessage("Usage: /authme register playername password");
return true; return true;
} }
try { try {
String name = args[1].toLowerCase(); String name = args[1].toLowerCase();
String hash = PasswordSecurity.getHash(Settings.getPasswordHash, args[2], name); String hash = PasswordSecurity.getHash(Settings.getPasswordHash, args[2], name);
if (database.isAuthAvailable(name)) { if (database.isAuthAvailable(name)) {
sender.sendMessage(m._("user_regged")); sender.sendMessage(m._("user_regged"));
return true; return true;
} }
PlayerAuth auth = new PlayerAuth(name, hash, "198.18.0.1", 0); PlayerAuth auth = new PlayerAuth(name, hash, "198.18.0.1", 0);
if (!database.saveAuth(auth)) { if (!database.saveAuth(auth)) {
sender.sendMessage(m._("error")); sender.sendMessage(m._("error"));
@ -304,7 +286,6 @@ public class AdminCommand implements CommandExecutor {
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
System.out.println(ex.getMessage()); System.out.println(ex.getMessage());
} }
} else if (args[0].equalsIgnoreCase("xauthimport")) { } else if (args[0].equalsIgnoreCase("xauthimport")) {
xAuthToFlat converter = new xAuthToFlat(plugin, database); xAuthToFlat converter = new xAuthToFlat(plugin, database);
if (converter.convert(sender)) { if (converter.convert(sender)) {
@ -312,7 +293,6 @@ public class AdminCommand implements CommandExecutor {
} else { } else {
sender.sendMessage("[AuthMe] Error while trying to convert from xAuth database"); sender.sendMessage("[AuthMe] Error while trying to convert from xAuth database");
} }
} else if (args[0].equalsIgnoreCase("getemail")) { } else if (args[0].equalsIgnoreCase("getemail")) {
if (args.length != 2) { if (args.length != 2) {
sender.sendMessage("Usage: /authme getemail playername"); sender.sendMessage("Usage: /authme getemail playername");
@ -322,7 +302,6 @@ public class AdminCommand implements CommandExecutor {
PlayerAuth getAuth = PlayerCache.getInstance().getAuth(playername); PlayerAuth getAuth = PlayerCache.getInstance().getAuth(playername);
sender.sendMessage("[AuthMe] " + args[1] + " email : " + getAuth.getEmail()); sender.sendMessage("[AuthMe] " + args[1] + " email : " + getAuth.getEmail());
return true; return true;
} else if (args[0].equalsIgnoreCase("chgemail")) { } else if (args[0].equalsIgnoreCase("chgemail")) {
if (args.length != 3) { if (args.length != 3) {
sender.sendMessage("Usage: /authme chgemail playername email"); sender.sendMessage("Usage: /authme chgemail playername email");
@ -337,7 +316,6 @@ public class AdminCommand implements CommandExecutor {
} }
PlayerCache.getInstance().updatePlayer(getAuth); PlayerCache.getInstance().updatePlayer(getAuth);
return true; return true;
} else if (args[0].equalsIgnoreCase("convertfromrakamak")) { } else if (args[0].equalsIgnoreCase("convertfromrakamak")) {
try { try {
RakamakConverter.RakamakConvert(); RakamakConverter.RakamakConvert();
@ -348,7 +326,6 @@ public class AdminCommand implements CommandExecutor {
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
ConsoleLogger.showError(ex.getMessage()); ConsoleLogger.showError(ex.getMessage());
} }
} else if (args[0].equalsIgnoreCase("setspawn")) { } else if (args[0].equalsIgnoreCase("setspawn")) {
try { try {
if (sender instanceof Player) { if (sender instanceof Player) {
@ -361,7 +338,18 @@ public class AdminCommand implements CommandExecutor {
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
ConsoleLogger.showError(ex.getMessage()); ConsoleLogger.showError(ex.getMessage());
} }
} else if (args[0].equalsIgnoreCase("purgebannedplayers")) {
List<String> bannedPlayers = new ArrayList<String>();
for (OfflinePlayer off : plugin.getServer().getBannedPlayers()) {
bannedPlayers.add(off.getName().toLowerCase());
}
final List<String> bP = bannedPlayers;
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
database.purgeBanned(bP);
}
});
} else if (args[0].equalsIgnoreCase("spawn")) { } else if (args[0].equalsIgnoreCase("spawn")) {
try { try {
if (sender instanceof Player) { if (sender instanceof Player) {
@ -374,17 +362,14 @@ public class AdminCommand implements CommandExecutor {
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
ConsoleLogger.showError(ex.getMessage()); ConsoleLogger.showError(ex.getMessage());
} }
} else if (args[0].equalsIgnoreCase("changepassword") || args[0].equalsIgnoreCase("cp")) { } else if (args[0].equalsIgnoreCase("changepassword") || args[0].equalsIgnoreCase("cp")) {
if (args.length != 3) { if (args.length != 3) {
sender.sendMessage("Usage: /authme changepassword playername newpassword"); sender.sendMessage("Usage: /authme changepassword playername newpassword");
return true; return true;
} }
try { try {
String name = args[1].toLowerCase(); String name = args[1].toLowerCase();
String hash = PasswordSecurity.getHash(Settings.getPasswordHash, args[2], name); String hash = PasswordSecurity.getHash(Settings.getPasswordHash, args[2], name);
PlayerAuth auth = null; PlayerAuth auth = null;
if (PlayerCache.getInstance().isAuthenticated(name)) { if (PlayerCache.getInstance().isAuthenticated(name)) {
auth = PlayerCache.getInstance().getAuth(name); auth = PlayerCache.getInstance().getAuth(name);
@ -395,12 +380,10 @@ public class AdminCommand implements CommandExecutor {
return true; return true;
} }
auth.setHash(hash); auth.setHash(hash);
if (!database.updatePassword(auth)) { if (!database.updatePassword(auth)) {
sender.sendMessage(m._("error")); sender.sendMessage(m._("error"));
return true; return true;
} }
sender.sendMessage("pwd_changed"); sender.sendMessage("pwd_changed");
ConsoleLogger.info(args[1] + "'s password changed"); ConsoleLogger.info(args[1] + "'s password changed");
} catch (NoSuchAlgorithmException ex) { } catch (NoSuchAlgorithmException ex) {
@ -412,17 +395,13 @@ public class AdminCommand implements CommandExecutor {
sender.sendMessage("Usage: /authme unregister playername"); sender.sendMessage("Usage: /authme unregister playername");
return true; return true;
} }
String name = args[1].toLowerCase(); String name = args[1].toLowerCase();
if (!database.removeAuth(name)) { if (!database.removeAuth(name)) {
sender.sendMessage(m._("error")); sender.sendMessage(m._("error"));
return true; return true;
} }
PlayerCache.getInstance().removePlayer(name); PlayerCache.getInstance().removePlayer(name);
sender.sendMessage("unregistered"); sender.sendMessage("unregistered");
ConsoleLogger.info(args[1] + " unregistered"); ConsoleLogger.info(args[1] + " unregistered");
} else { } else {
sender.sendMessage("Usage: /authme reload|register playername password|changepassword playername password|unregister playername"); sender.sendMessage("Usage: /authme reload|register playername password|changepassword playername password|unregister playername");

View File

@ -21,7 +21,6 @@ public class CaptchaCommand implements CommandExecutor {
this.plugin = plugin; this.plugin = plugin;
} }
@Override @Override
public boolean onCommand(CommandSender sender, Command cmnd, public boolean onCommand(CommandSender sender, Command cmnd,
String label, String[] args) { String label, String[] args) {
@ -33,7 +32,6 @@ public class CaptchaCommand implements CommandExecutor {
Player player = (Player) sender; Player player = (Player) sender;
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
if (args.length == 0) { if (args.length == 0) {
player.sendMessage(m._("usage_captcha")); player.sendMessage(m._("usage_captcha"));
return true; return true;
@ -70,12 +68,9 @@ public class CaptchaCommand implements CommandExecutor {
plugin.cap.remove(name); plugin.cap.remove(name);
} catch (NullPointerException npe) { } catch (NullPointerException npe) {
} }
player.sendMessage("Your captcha is correct"); player.sendMessage("Your captcha is correct");
player.sendMessage(m._("login_msg")); player.sendMessage(m._("login_msg"));
return true; return true;
} }
} }

View File

@ -37,7 +37,6 @@ import uk.org.whoami.authme.settings.Settings;
public class ChangePasswordCommand implements CommandExecutor { public class ChangePasswordCommand implements CommandExecutor {
private Messages m = Messages.getInstance(); private Messages m = Messages.getInstance();
//private Settings settings = Settings.getInstance();
private DataSource database; private DataSource database;
public AuthMe plugin; public AuthMe plugin;

View File

@ -34,7 +34,7 @@ import uk.org.whoami.authme.settings.Settings;
/** /**
* *
* @author darkwarriors * @author Xephi59
*/ */
public class EmailCommand implements CommandExecutor { public class EmailCommand implements CommandExecutor {
@ -148,7 +148,6 @@ public class EmailCommand implements CommandExecutor {
player.sendMessage(m._("logged_in")); player.sendMessage(m._("logged_in"));
return true; return true;
} }
try { try {
RandomString rand = new RandomString(Settings.getRecoveryPassLength); RandomString rand = new RandomString(Settings.getRecoveryPassLength);
String thePass = rand.nextString(); String thePass = rand.nextString();
@ -171,19 +170,14 @@ public class EmailCommand implements CommandExecutor {
player.sendMessage("[AuthMe] Invalid Email"); player.sendMessage("[AuthMe] Invalid Email");
return true; return true;
} }
final String finalhashnew = hashnew; final String finalhashnew = hashnew;
final PlayerAuth finalauth = auth; final PlayerAuth finalauth = auth;
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override @Override
public void run() { public void run() {
finalauth.setHash(finalhashnew); finalauth.setHash(finalhashnew);
data.updatePassword(finalauth); data.updatePassword(finalauth);
} }
}); });
plugin.mail.main(auth, thePass); plugin.mail.main(auth, thePass);
player.sendMessage("[AuthMe] Recovery Email Send !"); player.sendMessage("[AuthMe] Recovery Email Send !");
@ -198,7 +192,6 @@ public class EmailCommand implements CommandExecutor {
player.sendMessage(m._("reg_msg")); player.sendMessage(m._("reg_msg"));
} }
} }
return true; return true;
} }
} }

View File

@ -23,7 +23,6 @@ import org.bukkit.entity.Player;
import uk.org.whoami.authme.AuthMe; import uk.org.whoami.authme.AuthMe;
import uk.org.whoami.authme.settings.Messages; import uk.org.whoami.authme.settings.Messages;
import uk.org.whoami.authme.settings.Settings;
public class LoginCommand implements CommandExecutor { public class LoginCommand implements CommandExecutor {
@ -40,10 +39,6 @@ public class LoginCommand implements CommandExecutor {
return true; return true;
} }
if(!Settings.useCaptcha) {
}
final Player player = (Player) sender; final Player player = (Player) sender;
if (args.length == 0) { if (args.length == 0) {
@ -56,10 +51,7 @@ public class LoginCommand implements CommandExecutor {
return true; return true;
} }
String result = plugin.management.performLogin(player, args[0]); plugin.management.performLogin(player, args[0]);
if (result != "") player.sendMessage(result);
return true; return true;
} }
} }

View File

@ -48,7 +48,6 @@ public class LogoutCommand implements CommandExecutor {
private Messages m = Messages.getInstance(); private Messages m = Messages.getInstance();
private PlayersLogs pllog = PlayersLogs.getInstance(); private PlayersLogs pllog = PlayersLogs.getInstance();
//private Settings settings = Settings.getInstance();
private AuthMe plugin; private AuthMe plugin;
private DataSource database; private DataSource database;
private Utils utils = Utils.getInstance(); private Utils utils = Utils.getInstance();
@ -78,7 +77,6 @@ public class LogoutCommand implements CommandExecutor {
return true; return true;
} }
//clear session
PlayerAuth auth = PlayerCache.getInstance().getAuth(name); PlayerAuth auth = PlayerCache.getInstance().getAuth(name);
auth.setIp("198.18.0.1"); auth.setIp("198.18.0.1");
database.updateSession(auth); database.updateSession(auth);
@ -117,22 +115,19 @@ public class LogoutCommand implements CommandExecutor {
} }
BukkitTask msgT = sched.runTask(plugin, new MessageTask(plugin, name, m._("login_msg"), interval)); BukkitTask msgT = sched.runTask(plugin, new MessageTask(plugin, name, m._("login_msg"), interval));
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT.getTaskId()); LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT.getTaskId());
try { try {
if (PlayersLogs.players.contains(player.getName())) { if (PlayersLogs.players.contains(player.getName())) {
PlayersLogs.players.remove(player.getName()); PlayersLogs.players.remove(player.getName());
pllog.save(); pllog.save();
} }
} catch (NullPointerException npe) { } catch (NullPointerException npe) {
} }
player.sendMessage(m._("logout")); player.sendMessage(m._("logout"));
ConsoleLogger.info(player.getDisplayName() + " logged out"); ConsoleLogger.info(player.getDisplayName() + " logged out");
if(plugin.notifications != null) { if(plugin.notifications != null) {
plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " logged out!")); plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " logged out!"));
} }
return true; return true;
} }
} }

View File

@ -40,11 +40,9 @@ public class PasspartuCommand implements CommandExecutor {
if(utils.readToken(args[0])) { if(utils.readToken(args[0])) {
//bypass login! //bypass login!
Management bypass = new Management(database,true, plugin); Management bypass = new Management(database,true, plugin);
String result = bypass.performLogin((Player)sender, "dontneed"); bypass.performLogin((Player)sender, "dontneed");
if (result != "") sender.sendMessage(result);
return true; return true;
} }
sender.sendMessage("Time is expired or Token is Wrong!"); sender.sendMessage("Time is expired or Token is Wrong!");
return true; return true;
} }

View File

@ -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 {
}

View File

@ -21,6 +21,7 @@ import java.util.Date;
import me.muizers.Notifications.Notification; import me.muizers.Notifications.Notification;
import net.md_5.bungee.BungeeCord; import net.md_5.bungee.BungeeCord;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.GameMode; import org.bukkit.GameMode;
@ -82,14 +83,17 @@ public class RegisterCommand implements CommandExecutor {
if (Settings.bungee) { if (Settings.bungee) {
try { 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) { } 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)) { if (PlayerCache.getInstance().isAuthenticated(name)) {
player.sendMessage(m._("logged_in")); player.sendMessage(m._("logged_in"));
return true; return true;
@ -107,12 +111,8 @@ public class RegisterCommand implements CommandExecutor {
} }
return true; return true;
} }
//
// Check if player exeded the max number of registration
//
if(Settings.getmaxRegPerIp > 0 ){ if(Settings.getmaxRegPerIp > 0 ){
if(!sender.hasPermission("authme.allow2accounts") && database.getAllAuthsByIp(ipA).size() >= Settings.getmaxRegPerIp) { if(!sender.hasPermission("authme.allow2accounts") && database.getAllAuthsByIp(ipA).size() >= Settings.getmaxRegPerIp) {
player.sendMessage(m._("max_reg")); player.sendMessage(m._("max_reg"));
return true; return true;
@ -143,10 +143,8 @@ public class RegisterCommand implements CommandExecutor {
} }
RandomString rand = new RandomString(Settings.getRecoveryPassLength); RandomString rand = new RandomString(Settings.getRecoveryPassLength);
final String thePass = rand.nextString(); final String thePass = rand.nextString();
if (!thePass.isEmpty()) { if (!thePass.isEmpty()) {
Bukkit.getScheduler().runTask(plugin, new Runnable() { Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override @Override
public void run() { public void run() {
if (PasswordSecurity.userSalt.containsKey(name)) { if (PasswordSecurity.userSalt.containsKey(name)) {
@ -173,10 +171,8 @@ public class RegisterCommand implements CommandExecutor {
} }
} }
} }
}); });
if(!Settings.getRegisteredGroup.isEmpty()){ if(!Settings.getRegisteredGroup.isEmpty()){
Utils.getInstance().setGroup(player, Utils.groupType.REGISTERED); Utils.getInstance().setGroup(player, Utils.groupType.REGISTERED);
} }
@ -202,16 +198,12 @@ public class RegisterCommand implements CommandExecutor {
try { try {
loca = plugin.mv.getMVWorldManager().getMVWorld(world).getSpawnLocation(); loca = plugin.mv.getMVWorldManager().getMVWorld(world).getSpawnLocation();
} catch (NullPointerException npe) { } catch (NullPointerException npe) {
} catch (ClassCastException cce) { } catch (ClassCastException cce) {
} catch (NoClassDefFoundError ncdfe) { } catch (NoClassDefFoundError ncdfe) {
} }
} }
if (Spawn.getInstance().getLocation() != null) if (Spawn.getInstance().getLocation() != null)
loca = Spawn.getInstance().getLocation(); loca = Spawn.getInstance().getLocation();
RegisterTeleportEvent tpEvent = new RegisterTeleportEvent(player, loca); RegisterTeleportEvent tpEvent = new RegisterTeleportEvent(player, loca);
plugin.getServer().getPluginManager().callEvent(tpEvent); plugin.getServer().getPluginManager().callEvent(tpEvent);
if(!tpEvent.isCancelled()) { if(!tpEvent.isCancelled()) {
@ -236,15 +228,11 @@ public class RegisterCommand implements CommandExecutor {
player.sendMessage(m._("usage_reg")); player.sendMessage(m._("usage_reg"));
return true; 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) { if(args[0].length() < Settings.getPasswordMinLen || args[0].length() > Settings.passwordMaxLength) {
player.sendMessage(m._("pass_len")); player.sendMessage(m._("pass_len"));
return true; return true;
} }
try { try {
String hash; String hash;
if(Settings.getEnablePasswordVerifier) { if(Settings.getEnablePasswordVerifier) {
@ -256,7 +244,6 @@ public class RegisterCommand implements CommandExecutor {
} }
} else } else
hash = PasswordSecurity.getHash(Settings.getPasswordHash, args[0], name); hash = PasswordSecurity.getHash(Settings.getPasswordHash, args[0], name);
if (Settings.getMySQLColumnSalt.isEmpty()) if (Settings.getMySQLColumnSalt.isEmpty())
{ {
auth = new PlayerAuth(name, hash, ip, new Date().getTime()); auth = new PlayerAuth(name, hash, ip, new Date().getTime());
@ -268,7 +255,6 @@ public class RegisterCommand implements CommandExecutor {
return true; return true;
} }
PlayerCache.getInstance().addPlayer(auth); PlayerCache.getInstance().addPlayer(auth);
LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name); LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name);
if (limbo != null) { if (limbo != null) {
player.setGameMode(GameMode.getByValue(limbo.getGameMode())); player.setGameMode(GameMode.getByValue(limbo.getGameMode()));
@ -297,13 +283,11 @@ public class RegisterCommand implements CommandExecutor {
player.teleport(tpEvent.getTo()); player.teleport(tpEvent.getTo());
} }
} }
sender.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId()); sender.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId());
sender.getServer().getScheduler().cancelTask(limbo.getMessageTaskId()); sender.getServer().getScheduler().cancelTask(limbo.getMessageTaskId());
LimboCache.getInstance().deleteLimboPlayer(name); LimboCache.getInstance().deleteLimboPlayer(name);
} }
if(!Settings.getRegisteredGroup.isEmpty()){ if(!Settings.getRegisteredGroup.isEmpty()){
Utils.getInstance().setGroup(player, Utils.groupType.REGISTERED); Utils.getInstance().setGroup(player, Utils.groupType.REGISTERED);
} }
@ -317,7 +301,6 @@ public class RegisterCommand implements CommandExecutor {
if(plugin.notifications != null) { if(plugin.notifications != null) {
plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " has registered!")); plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " has registered!"));
} }
} catch (NoSuchAlgorithmException ex) { } catch (NoSuchAlgorithmException ex) {
ConsoleLogger.showError(ex.getMessage()); ConsoleLogger.showError(ex.getMessage());
sender.sendMessage(m._("error")); sender.sendMessage(m._("error"));

View File

@ -49,7 +49,6 @@ public class UnregisterCommand implements CommandExecutor {
private Messages m = Messages.getInstance(); private Messages m = Messages.getInstance();
private PlayersLogs pllog = PlayersLogs.getInstance(); private PlayersLogs pllog = PlayersLogs.getInstance();
//private Settings settings = Settings.getInstance();
public AuthMe plugin; public AuthMe plugin;
private DataSource database; private DataSource database;
private FileCache playerCache = new FileCache(); private FileCache playerCache = new FileCache();
@ -94,8 +93,6 @@ public class UnregisterCommand implements CommandExecutor {
player.saveData(); player.saveData();
PlayerCache.getInstance().removePlayer(player.getName().toLowerCase()); PlayerCache.getInstance().removePlayer(player.getName().toLowerCase());
LimboCache.getInstance().addLimboPlayer(player); LimboCache.getInstance().addLimboPlayer(player);
int delay = Settings.getRegistrationTimeout * 20; int delay = Settings.getRegistrationTimeout * 20;
int interval = Settings.getWarnMessageInterval; int interval = Settings.getWarnMessageInterval;
BukkitScheduler sched = sender.getServer().getScheduler(); BukkitScheduler sched = sender.getServer().getScheduler();
@ -122,7 +119,6 @@ public class UnregisterCommand implements CommandExecutor {
if(playerCache.doesCacheExist(name)) { if(playerCache.doesCacheExist(name)) {
playerCache.removeCache(name); playerCache.removeCache(name);
} }
if (PlayersLogs.players.contains(player.getName())) { if (PlayersLogs.players.contains(player.getName())) {
PlayersLogs.players.remove(player.getName()); PlayersLogs.players.remove(player.getName());
pllog.save(); pllog.save();

View File

@ -12,7 +12,10 @@ import uk.org.whoami.authme.AuthMe;
import uk.org.whoami.authme.ConsoleLogger; import uk.org.whoami.authme.ConsoleLogger;
import uk.org.whoami.authme.settings.Settings; import uk.org.whoami.authme.settings.Settings;
/**
*
* @author Xephi59
*/
public class FlatToSql { public class FlatToSql {
public AuthMe instance; public AuthMe instance;
@ -34,7 +37,6 @@ public class FlatToSql {
private static String lastlocY; private static String lastlocY;
private static String lastlocZ; private static String lastlocZ;
private static String columnEmail; private static String columnEmail;
private static File source; private static File source;
private static File output; private static File output;
@ -76,9 +78,9 @@ public class FlatToSql {
sql.newLine(); sql.newLine();
String[] args = line.split(":"); String[] args = line.split(":");
if (args.length == 4) 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) 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 else
newline = ""; newline = "";
if (newline != "") if (newline != "")
@ -87,8 +89,7 @@ public class FlatToSql {
} }
sql.close(); sql.close();
br.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) { } catch (FileNotFoundException ex) {
ConsoleLogger.showError(ex.getMessage()); ConsoleLogger.showError(ex.getMessage());
} catch (IOException ex) { } catch (IOException ex) {

View File

@ -17,7 +17,10 @@ import uk.org.whoami.authme.security.PasswordSecurity;
import uk.org.whoami.authme.security.PasswordSecurity.HashAlgorithm; import uk.org.whoami.authme.security.PasswordSecurity.HashAlgorithm;
import uk.org.whoami.authme.settings.Settings; import uk.org.whoami.authme.settings.Settings;
/**
*
* @author Xephi59
*/
public class RakamakConverter { public class RakamakConverter {
public AuthMe instance; public AuthMe instance;
@ -34,7 +37,6 @@ public class RakamakConverter {
private static Boolean useIP; private static Boolean useIP;
private static String fileName; private static String fileName;
private static String ipFileName; private static String ipFileName;
private static File source; private static File source;
private static File output; private static File output;
private static File ipfiles; private static File ipfiles;
@ -47,8 +49,6 @@ public class RakamakConverter {
ipFileName = Settings.rakamakUsersIp; ipFileName = Settings.rakamakUsersIp;
HashMap<String, String> playerIP = new HashMap<String, String>(); HashMap<String, String> playerIP = new HashMap<String, String>();
HashMap<String, String> playerPSW = new HashMap<String, String>(); HashMap<String, String> playerPSW = new HashMap<String, String>();
try { try {
source = new File(AuthMe.getInstance().getDataFolder() + File.separator + fileName); source = new File(AuthMe.getInstance().getDataFolder() + File.separator + fileName);
ipfiles = new File(AuthMe.getInstance().getDataFolder() + File.separator + ipFileName); ipfiles = new File(AuthMe.getInstance().getDataFolder() + File.separator + ipFileName);
@ -86,8 +86,6 @@ public class RakamakConverter {
} }
} }
} }
users.close(); users.close();
outputDB = new BufferedWriter(new FileWriter(output)); outputDB = new BufferedWriter(new FileWriter(output));
for (Entry<String, String> m : playerPSW.entrySet()) { for (Entry<String, String> m : playerPSW.entrySet()) {
@ -96,7 +94,6 @@ public class RakamakConverter {
String psw = playerPSW.get(player); String psw = playerPSW.get(player);
String ip = playerIP.get(player); String ip = playerIP.get(player);
newLine = player + ":" + psw + ":" + ip + ":1325376060:0:0:0"; newLine = player + ":" + psw + ":" + ip + ":1325376060:0:0:0";
} else { } else {
String player = m.getKey(); String player = m.getKey();
String psw = playerPSW.get(player); String psw = playerPSW.get(player);
@ -108,14 +105,8 @@ public class RakamakConverter {
System.out.println("Write line"); System.out.println("Write line");
outputDB.newLine(); outputDB.newLine();
} }
outputDB.close(); outputDB.close();
ConsoleLogger.info("Rakamak database has been converted to auths.db");
System.out.println("[AuthMe] Rakamak database has been converted to auths.db");
} catch (FileNotFoundException ex) { } catch (FileNotFoundException ex) {
ConsoleLogger.showError(ex.getMessage()); ConsoleLogger.showError(ex.getMessage());
} catch (IOException ex) { } catch (IOException ex) {

View File

@ -18,6 +18,10 @@ import uk.org.whoami.authme.AuthMe;
import uk.org.whoami.authme.cache.auth.PlayerAuth; import uk.org.whoami.authme.cache.auth.PlayerAuth;
import uk.org.whoami.authme.datasource.DataSource; import uk.org.whoami.authme.datasource.DataSource;
/**
*
* @author Xephi59
*/
public class xAuthToFlat { public class xAuthToFlat {
public AuthMe instance; public AuthMe instance;
@ -41,7 +45,6 @@ public class xAuthToFlat {
sender.sendMessage("[AuthMe] Error while import xAuthPlayers"); sender.sendMessage("[AuthMe] Error while import xAuthPlayers");
return false; return false;
} }
sender.sendMessage("[AuthMe] Starting import..."); sender.sendMessage("[AuthMe] Starting import...");
for (int id : players) { for (int id : players) {
String pl = getIdPlayer(id); String pl = getIdPlayer(id);
@ -60,7 +63,6 @@ public class xAuthToFlat {
Connection conn = xAuth.getPlugin().getDatabaseController().getConnection(); Connection conn = xAuth.getPlugin().getDatabaseController().getConnection();
PreparedStatement ps = null; PreparedStatement ps = null;
ResultSet rs = null; ResultSet rs = null;
try { try {
String sql = String.format("SELECT `playername` FROM `%s` WHERE `id` = ?", String sql = String.format("SELECT `playername` FROM `%s` WHERE `id` = ?",
xAuth.getPlugin().getDatabaseController().getTable(Table.ACCOUNT)); xAuth.getPlugin().getDatabaseController().getTable(Table.ACCOUNT));
@ -69,7 +71,6 @@ public class xAuthToFlat {
rs = ps.executeQuery(); rs = ps.executeQuery();
if (!rs.next()) if (!rs.next())
return null; return null;
realPass = rs.getString("playername").toLowerCase(); realPass = rs.getString("playername").toLowerCase();
} catch (SQLException e) { } catch (SQLException e) {
xAuthLog.severe("Failed to retrieve name for account: " + id, e); xAuthLog.severe("Failed to retrieve name for account: " + id, e);
@ -107,7 +108,6 @@ public class xAuthToFlat {
Connection conn = xAuth.getPlugin().getDatabaseController().getConnection(); Connection conn = xAuth.getPlugin().getDatabaseController().getConnection();
PreparedStatement ps = null; PreparedStatement ps = null;
ResultSet rs = null; ResultSet rs = null;
try { try {
String sql = String.format("SELECT `password`, `pwtype` FROM `%s` WHERE `id` = ?", String sql = String.format("SELECT `password`, `pwtype` FROM `%s` WHERE `id` = ?",
xAuth.getPlugin().getDatabaseController().getTable(Table.ACCOUNT)); xAuth.getPlugin().getDatabaseController().getTable(Table.ACCOUNT));
@ -116,7 +116,6 @@ public class xAuthToFlat {
rs = ps.executeQuery(); rs = ps.executeQuery();
if (!rs.next()) if (!rs.next())
return null; return null;
realPass = rs.getString("password"); realPass = rs.getString("password");
} catch (SQLException e) { } catch (SQLException e) {
xAuthLog.severe("Failed to retrieve password hash for account: " + accountId, e); xAuthLog.severe("Failed to retrieve password hash for account: " + accountId, e);

View File

@ -82,14 +82,11 @@ public class CacheDataSource implements DataSource {
@Override @Override
public boolean updateQuitLoc(PlayerAuth auth) { public boolean updateQuitLoc(PlayerAuth auth) {
//System.out.println("[debug name chace non work]"+auth.getNickname()+"[debug loc]"+auth.getQuitLocX());
if (source.updateQuitLoc(auth)) { 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()).setQuitLocX(auth.getQuitLocX());
cache.get(auth.getNickname()).setQuitLocY(auth.getQuitLocY()); cache.get(auth.getNickname()).setQuitLocY(auth.getQuitLocY());
cache.get(auth.getNickname()).setQuitLocZ(auth.getQuitLocZ()); cache.get(auth.getNickname()).setQuitLocZ(auth.getQuitLocZ());
return true; return true;
} }
return false; return false;
} }
@ -102,7 +99,6 @@ public class CacheDataSource implements DataSource {
@Override @Override
public int purgeDatabase(long until) { public int purgeDatabase(long until) {
int cleared = source.purgeDatabase(until); int cleared = source.purgeDatabase(until);
if (cleared > 0) { if (cleared > 0) {
for (PlayerAuth auth : cache.values()) { for (PlayerAuth auth : cache.values()) {
if(auth.getLastLogin() < until) { if(auth.getLastLogin() < until) {
@ -175,4 +171,14 @@ public class CacheDataSource implements DataSource {
public List<String> getAllAuthsByEmail(String email) { public List<String> getAllAuthsByEmail(String email) {
return source.getAllAuthsByEmail(email); return source.getAllAuthsByEmail(email);
} }
@Override
public void purgeBanned(List<String> banned) {
source.purgeBanned(banned);
for (PlayerAuth auth : cache.values()) {
if (banned.contains(auth.getNickname())) {
cache.remove(auth.getNickname());
}
}
}
} }

View File

@ -59,4 +59,6 @@ public interface DataSource {
void reload(); void reload();
void purgeBanned(List<String> banned);
} }

View File

@ -32,7 +32,6 @@ import uk.org.whoami.authme.settings.Settings;
public class FileDataSource implements DataSource { public class FileDataSource implements DataSource {
/* file layout: /* file layout:
* *
* PLAYERNAME:HASHSUM:IP:LOGININMILLIESECONDS:COORDS * PLAYERNAME:HASHSUM:IP:LOGININMILLIESECONDS:COORDS
@ -83,17 +82,14 @@ public class FileDataSource implements DataSource {
if (isAuthAvailable(auth.getNickname())) { if (isAuthAvailable(auth.getNickname())) {
return false; return false;
} }
BufferedWriter bw = null; BufferedWriter bw = null;
try { try {
if( auth.getQuitLocY() == 0 ) { if( auth.getQuitLocY() == 0 ) {
bw = new BufferedWriter(new FileWriter(source, true)); bw = new BufferedWriter(new FileWriter(source, true));
bw.write(auth.getNickname() + ":" + auth.getHash() + ":" + auth.getIp() + ":" + auth.getLastLogin() + "\n"); bw.write(auth.getNickname() + ":" + auth.getHash() + ":" + auth.getIp() + ":" + auth.getLastLogin() + "\n");
//System.out.println("[Debug save1] "+auth.getQuitLocY());
} else { } else {
bw = new BufferedWriter(new FileWriter(source, true)); bw = new BufferedWriter(new FileWriter(source, true));
bw.write(auth.getNickname() + ":" + auth.getHash() + ":" + auth.getIp() + ":" + auth.getLastLogin() + ":" + auth.getQuitLocX() + ":" + auth.getQuitLocY() + ":" + auth.getQuitLocZ() + "\n"); bw.write(auth.getNickname() + ":" + auth.getHash() + ":" + auth.getIp() + ":" + auth.getLastLogin() + ":" + auth.getQuitLocX() + ":" + auth.getQuitLocY() + ":" + auth.getQuitLocZ() + "\n");
//System.out.println("[Debug save2] "+auth.getQuitLocY());
} }
} catch (IOException ex) { } catch (IOException ex) {
ConsoleLogger.showError(ex.getMessage()); ConsoleLogger.showError(ex.getMessage());
@ -114,9 +110,7 @@ public class FileDataSource implements DataSource {
if (!isAuthAvailable(auth.getNickname())) { if (!isAuthAvailable(auth.getNickname())) {
return false; return false;
} }
PlayerAuth newAuth = null; PlayerAuth newAuth = null;
BufferedReader br = null; BufferedReader br = null;
try { try {
br = new BufferedReader(new FileReader(source)); br = new BufferedReader(new FileReader(source));
@ -152,9 +146,7 @@ public class FileDataSource implements DataSource {
if (!isAuthAvailable(auth.getNickname())) { if (!isAuthAvailable(auth.getNickname())) {
return false; return false;
} }
PlayerAuth newAuth = null; PlayerAuth newAuth = null;
BufferedReader br = null; BufferedReader br = null;
try { try {
br = new BufferedReader(new FileReader(source)); br = new BufferedReader(new FileReader(source));
@ -187,13 +179,10 @@ public class FileDataSource implements DataSource {
@Override @Override
public boolean updateQuitLoc(PlayerAuth auth) { public boolean updateQuitLoc(PlayerAuth auth) {
if (!isAuthAvailable(auth.getNickname())) { if (!isAuthAvailable(auth.getNickname())) {
return false; return false;
} }
PlayerAuth newAuth = null; PlayerAuth newAuth = null;
BufferedReader br = null; BufferedReader br = null;
try { try {
br = new BufferedReader(new FileReader(source)); br = new BufferedReader(new FileReader(source));
@ -201,7 +190,6 @@ public class FileDataSource implements DataSource {
while ((line = br.readLine()) != null) { while ((line = br.readLine()) != null) {
String[] args = line.split(":"); String[] args = line.split(":");
if (args[0].equals(auth.getNickname())) { 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()); newAuth = new PlayerAuth(args[0], args[1], args[2], Long.parseLong(args[3]), auth.getQuitLocX(), auth.getQuitLocY(), auth.getQuitLocZ());
break; break;
} }
@ -234,7 +222,6 @@ public class FileDataSource implements DataSource {
String line; String line;
while ((line = br.readLine()) != null) { while ((line = br.readLine()) != null) {
String[] args = line.split(":"); String[] args = line.split(":");
//System.out.println(ip+" match? "+args[2]);
if (args.length > 3 && args[2].equals(ip)) { if (args.length > 3 && args[2].equals(ip)) {
countIp++; countIp++;
} }
@ -262,7 +249,6 @@ public class FileDataSource implements DataSource {
BufferedWriter bw = null; BufferedWriter bw = null;
ArrayList<String> lines = new ArrayList<String>(); ArrayList<String> lines = new ArrayList<String>();
int cleared = 0; int cleared = 0;
try { try {
br = new BufferedReader(new FileReader(source)); br = new BufferedReader(new FileReader(source));
String line; String line;
@ -276,7 +262,6 @@ public class FileDataSource implements DataSource {
} }
cleared++; cleared++;
} }
bw = new BufferedWriter(new FileWriter(source)); bw = new BufferedWriter(new FileWriter(source));
for (String l : lines) { for (String l : lines) {
bw.write(l + "\n"); bw.write(l + "\n");
@ -309,7 +294,6 @@ public class FileDataSource implements DataSource {
if (!isAuthAvailable(user)) { if (!isAuthAvailable(user)) {
return false; return false;
} }
BufferedReader br = null; BufferedReader br = null;
BufferedWriter bw = null; BufferedWriter bw = null;
ArrayList<String> lines = new ArrayList<String>(); ArrayList<String> lines = new ArrayList<String>();
@ -322,7 +306,6 @@ public class FileDataSource implements DataSource {
lines.add(line); lines.add(line);
} }
} }
bw = new BufferedWriter(new FileWriter(source)); bw = new BufferedWriter(new FileWriter(source));
for (String l : lines) { for (String l : lines) {
bw.write(l + "\n"); bw.write(l + "\n");
@ -415,7 +398,6 @@ public class FileDataSource implements DataSource {
String line; String line;
while ((line = br.readLine()) != null) { while ((line = br.readLine()) != null) {
String[] args = line.split(":"); String[] args = line.split(":");
//System.out.println(ip+" match? "+args[2]);
if (args.length > 3 && args[2].equals(auth.getIp())) { if (args.length > 3 && args[2].equals(auth.getIp())) {
countIp.add(args[0]); countIp.add(args[0]);
} }
@ -471,4 +453,49 @@ public class FileDataSource implements DataSource {
public List<String> getAllAuthsByEmail(String email) { public List<String> getAllAuthsByEmail(String email) {
return new ArrayList<String>(); return new ArrayList<String>();
} }
@Override
public void purgeBanned(List<String> banned) {
BufferedReader br = null;
BufferedWriter bw = null;
ArrayList<String> lines = new ArrayList<String>();
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;
}
} }

View File

@ -58,7 +58,6 @@ public class MySQLDataSource implements DataSource {
this.port = Settings.getMySQLPort; this.port = Settings.getMySQLPort;
this.username = Settings.getMySQLUsername; this.username = Settings.getMySQLUsername;
this.password = Settings.getMySQLPassword; this.password = Settings.getMySQLPassword;
this.database = Settings.getMySQLDatabase; this.database = Settings.getMySQLDatabase;
this.tableName = Settings.getMySQLTablename; this.tableName = Settings.getMySQLTablename;
this.columnName = Settings.getMySQLColumnName; this.columnName = Settings.getMySQLColumnName;
@ -87,7 +86,6 @@ public class MySQLDataSource implements DataSource {
dataSource.setPort(Integer.parseInt(port)); dataSource.setPort(Integer.parseInt(port));
dataSource.setUser(username); dataSource.setUser(username);
dataSource.setPassword(password); dataSource.setPassword(password);
conPool = new MiniConnectionPoolManager(dataSource, 10); conPool = new MiniConnectionPoolManager(dataSource, 10);
ConsoleLogger.info("Connection pool ready"); ConsoleLogger.info("Connection pool ready");
} }
@ -110,7 +108,6 @@ public class MySQLDataSource implements DataSource {
+ lastlocZ + " smallint(6) DEFAULT '0'," + lastlocZ + " smallint(6) DEFAULT '0',"
+ columnEmail + " VARCHAR(255) DEFAULT 'your@email.com'," + columnEmail + " VARCHAR(255) DEFAULT 'your@email.com',"
+ "CONSTRAINT table_const_prim PRIMARY KEY (" + columnID + "));"); + "CONSTRAINT table_const_prim PRIMARY KEY (" + columnID + "));");
rs = con.getMetaData().getColumns(null, null, tableName, columnPassword); rs = con.getMetaData().getColumns(null, null, tableName, columnPassword);
if (!rs.next()) { if (!rs.next()) {
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN " st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN "
@ -369,10 +366,6 @@ public class MySQLDataSource implements DataSource {
return true; return true;
} }
//
// Check how many registration by given ip has been done
//
@Override @Override
public int getIps(String ip) { public int getIps(String ip) {
Connection con = null; Connection con = null;
@ -581,5 +574,23 @@ public class MySQLDataSource implements DataSource {
} }
} }
@Override
public void purgeBanned(List<String> 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);
}
}
} }

View File

@ -4,7 +4,6 @@
*/ */
package uk.org.whoami.authme.datasource; package uk.org.whoami.authme.datasource;
import java.sql.*; import java.sql.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -43,12 +42,10 @@ public class SqliteDataSource implements DataSource {
private Connection con; private Connection con;
public SqliteDataSource() throws ClassNotFoundException, SQLException { public SqliteDataSource() throws ClassNotFoundException, SQLException {
//Settings s = Settings.getInstance();
this.host = Settings.getMySQLHost; this.host = Settings.getMySQLHost;
this.port = Settings.getMySQLPort; this.port = Settings.getMySQLPort;
this.username = Settings.getMySQLUsername; this.username = Settings.getMySQLUsername;
this.password = Settings.getMySQLPassword; this.password = Settings.getMySQLPassword;
this.database = Settings.getMySQLDatabase; this.database = Settings.getMySQLDatabase;
this.tableName = Settings.getMySQLTablename; this.tableName = Settings.getMySQLTablename;
this.columnName = Settings.getMySQLColumnName; this.columnName = Settings.getMySQLColumnName;
@ -71,13 +68,11 @@ public class SqliteDataSource implements DataSource {
private synchronized void connect() throws ClassNotFoundException, SQLException { private synchronized void connect() throws ClassNotFoundException, SQLException {
Class.forName("org.sqlite.JDBC"); Class.forName("org.sqlite.JDBC");
ConsoleLogger.info("SQLite driver loaded"); ConsoleLogger.info("SQLite driver loaded");
this.con = DriverManager.getConnection("jdbc:sqlite:plugins/AuthMe/"+database+".db"); this.con = DriverManager.getConnection("jdbc:sqlite:plugins/AuthMe/"+database+".db");
} }
private synchronized void setup() throws SQLException { private synchronized void setup() throws SQLException {
//Connection con = null;
Statement st = null; Statement st = null;
ResultSet rs = null; ResultSet rs = null;
try { try {
@ -93,7 +88,6 @@ public class SqliteDataSource implements DataSource {
+ lastlocZ + " smallint(6) DEFAULT '0'," + lastlocZ + " smallint(6) DEFAULT '0',"
+ columnEmail + " VARCHAR(255) DEFAULT 'your@email.com'," + columnEmail + " VARCHAR(255) DEFAULT 'your@email.com',"
+ "CONSTRAINT table_const_prim PRIMARY KEY (" + columnID + "));"); + "CONSTRAINT table_const_prim PRIMARY KEY (" + columnID + "));");
rs = con.getMetaData().getColumns(null, null, tableName, columnPassword); rs = con.getMetaData().getColumns(null, null, tableName, columnPassword);
if (!rs.next()) { if (!rs.next()) {
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN " st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN "
@ -126,7 +120,6 @@ public class SqliteDataSource implements DataSource {
} finally { } finally {
close(rs); close(rs);
close(st); close(st);
//close(con);
} }
ConsoleLogger.info("SQLite Setup finished"); ConsoleLogger.info("SQLite Setup finished");
} }
@ -146,33 +139,26 @@ public class SqliteDataSource implements DataSource {
} finally { } finally {
close(rs); close(rs);
close(pst); close(pst);
//close(con);
} }
} }
@Override @Override
public synchronized PlayerAuth getAuth(String user) { public synchronized PlayerAuth getAuth(String user) {
//Connection con = null;
PreparedStatement pst = null; PreparedStatement pst = null;
ResultSet rs = null; ResultSet rs = null;
try { try {
pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE " pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE "
+ columnName + "=?;"); + columnName + "=?;");
pst.setString(1, user); pst.setString(1, user);
rs = pst.executeQuery(); rs = pst.executeQuery();
if (rs.next()) { if (rs.next()) {
if (rs.getString(columnIp).isEmpty() ) { 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)); 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 { } else {
if(!columnSalt.isEmpty()){ 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)); 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 { } 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)); 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 { } else {
@ -184,13 +170,11 @@ public class SqliteDataSource implements DataSource {
} finally { } finally {
close(rs); close(rs);
close(pst); close(pst);
//close(con);
} }
} }
@Override @Override
public synchronized boolean saveAuth(PlayerAuth auth) { public synchronized boolean saveAuth(PlayerAuth auth) {
//Connection con = null;
PreparedStatement pst = null; PreparedStatement pst = null;
try { try {
if (columnSalt.isEmpty() && auth.getSalt().isEmpty()) { if (columnSalt.isEmpty() && auth.getSalt().isEmpty()) {
@ -214,14 +198,12 @@ public class SqliteDataSource implements DataSource {
return false; return false;
} finally { } finally {
close(pst); close(pst);
//close(con);
} }
return true; return true;
} }
@Override @Override
public synchronized boolean updatePassword(PlayerAuth auth) { public synchronized boolean updatePassword(PlayerAuth auth) {
//Connection con = null;
PreparedStatement pst = null; PreparedStatement pst = null;
try { try {
pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnPassword + "=? WHERE " + columnName + "=?;"); pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnPassword + "=? WHERE " + columnName + "=?;");
@ -233,14 +215,12 @@ public class SqliteDataSource implements DataSource {
return false; return false;
} finally { } finally {
close(pst); close(pst);
//close(con);
} }
return true; return true;
} }
@Override @Override
public boolean updateSession(PlayerAuth auth) { public boolean updateSession(PlayerAuth auth) {
//Connection con = null;
PreparedStatement pst = null; PreparedStatement pst = null;
try { try {
pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnIp + "=?, " + columnLastLogin + "=? WHERE " + columnName + "=?;"); pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnIp + "=?, " + columnLastLogin + "=? WHERE " + columnName + "=?;");
@ -253,14 +233,12 @@ public class SqliteDataSource implements DataSource {
return false; return false;
} finally { } finally {
close(pst); close(pst);
//close(con);
} }
return true; return true;
} }
@Override @Override
public int purgeDatabase(long until) { public int purgeDatabase(long until) {
//Connection con = null;
PreparedStatement pst = null; PreparedStatement pst = null;
try { try {
@ -272,16 +250,13 @@ public class SqliteDataSource implements DataSource {
return 0; return 0;
} finally { } finally {
close(pst); close(pst);
//close(con);
} }
} }
@Override @Override
public synchronized boolean removeAuth(String user) { public synchronized boolean removeAuth(String user) {
//Connection con = null;
PreparedStatement pst = null; PreparedStatement pst = null;
try { try {
pst = con.prepareStatement("DELETE FROM " + tableName + " WHERE " + columnName + "=?;"); pst = con.prepareStatement("DELETE FROM " + tableName + " WHERE " + columnName + "=?;");
pst.setString(1, user); pst.setString(1, user);
pst.executeUpdate(); pst.executeUpdate();
@ -290,17 +265,14 @@ public class SqliteDataSource implements DataSource {
return false; return false;
} finally { } finally {
close(pst); close(pst);
//close(con);
} }
return true; return true;
} }
@Override @Override
public boolean updateQuitLoc(PlayerAuth auth) { public boolean updateQuitLoc(PlayerAuth auth) {
//Connection con = null;
PreparedStatement pst = null; PreparedStatement pst = null;
try { try {
pst = con.prepareStatement("UPDATE " + tableName + " SET " + lastlocX + "=?, "+ lastlocY +"=?, "+ lastlocZ +"=? WHERE " + columnName + "=?;"); pst = con.prepareStatement("UPDATE " + tableName + " SET " + lastlocX + "=?, "+ lastlocY +"=?, "+ lastlocZ +"=? WHERE " + columnName + "=?;");
pst.setLong(1, auth.getQuitLocX()); pst.setLong(1, auth.getQuitLocX());
pst.setLong(2, auth.getQuitLocY()); pst.setLong(2, auth.getQuitLocY());
@ -312,23 +284,16 @@ public class SqliteDataSource implements DataSource {
return false; return false;
} finally { } finally {
close(pst); close(pst);
//close(con);
} }
return true; return true;
} }
//
// Check how many registration by given ip has been done
//
@Override @Override
public int getIps(String ip) { public int getIps(String ip) {
//Connection con = null;
PreparedStatement pst = null; PreparedStatement pst = null;
ResultSet rs = null; ResultSet rs = null;
int countIp=0; int countIp=0;
try { try {
pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE " pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE "
+ columnIp + "=?;"); + columnIp + "=?;");
pst.setString(1, ip); pst.setString(1, ip);
@ -343,13 +308,11 @@ public class SqliteDataSource implements DataSource {
} finally { } finally {
close(rs); close(rs);
close(pst); close(pst);
//close(con);
} }
} }
@Override @Override
public boolean updateEmail(PlayerAuth auth) { public boolean updateEmail(PlayerAuth auth) {
//Connection con = null;
PreparedStatement pst = null; PreparedStatement pst = null;
try { try {
pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnEmail + "=? WHERE " + columnName + "=?;"); pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnEmail + "=? WHERE " + columnName + "=?;");
@ -361,7 +324,6 @@ public class SqliteDataSource implements DataSource {
return false; return false;
} finally { } finally {
close(pst); close(pst);
//close(con);
} }
return true; return true;
} }
@ -371,7 +333,6 @@ public class SqliteDataSource implements DataSource {
if(columnSalt.isEmpty()) { if(columnSalt.isEmpty()) {
return false; return false;
} }
//Connection con = null;
PreparedStatement pst = null; PreparedStatement pst = null;
try { try {
pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnSalt + "=? WHERE " + columnName + "=?;"); pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnSalt + "=? WHERE " + columnName + "=?;");
@ -383,7 +344,6 @@ public class SqliteDataSource implements DataSource {
return false; return false;
} finally { } finally {
close(pst); close(pst);
//close(con);
} }
return true; return true;
} }
@ -456,7 +416,6 @@ public class SqliteDataSource implements DataSource {
} finally { } finally {
close(rs); close(rs);
close(pst); close(pst);
//close(con);
} }
} }
@ -485,7 +444,6 @@ public class SqliteDataSource implements DataSource {
} finally { } finally {
close(rs); close(rs);
close(pst); close(pst);
//close(con);
} }
} }
@ -517,4 +475,20 @@ public class SqliteDataSource implements DataSource {
} }
} }
@Override
public void purgeBanned(List<String> 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);
}
}
} }

View File

@ -15,10 +15,8 @@ import org.bukkit.inventory.ItemStack;
public class CardboardBox implements Serializable { public class CardboardBox implements Serializable {
private static final long serialVersionUID = 729890133797629668L; private static final long serialVersionUID = 729890133797629668L;
private final int type, amount; private final int type, amount;
private final short damage; private final short damage;
private final HashMap<CardboardEnchantment, Integer> enchants; private final HashMap<CardboardEnchantment, Integer> enchants;
public CardboardBox(ItemStack item) { public CardboardBox(ItemStack item) {

View File

@ -22,4 +22,5 @@ public class CardboardEnchantment implements Serializable {
public Enchantment unbox() { public Enchantment unbox() {
return Enchantment.getById(this.id); return Enchantment.getById(this.id);
} }
} }

View File

@ -3,6 +3,10 @@ package uk.org.whoami.authme.events;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
/**
*
* @author Xephi59
*/
public class AuthMeTeleportEvent extends CustomEvent { public class AuthMeTeleportEvent extends CustomEvent {
private Player player; private Player player;

View File

@ -4,14 +4,16 @@ import org.bukkit.Server;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
/**
*
* @author Xephi59
*/
public class CustomEvent extends Event { public class CustomEvent extends Event {
private boolean isCancelled; private boolean isCancelled;
private static final HandlerList handlers = new HandlerList(); private static final HandlerList handlers = new HandlerList();
private static Server s; private static Server s;
public HandlerList getHandlers() { public HandlerList getHandlers() {
return handlers; return handlers;
} }
@ -28,7 +30,6 @@ public class CustomEvent extends Event {
this.isCancelled = cancelled; this.isCancelled = cancelled;
} }
public static Server getServer() { public static Server getServer() {
return s; return s;
} }

View File

@ -2,9 +2,12 @@ package uk.org.whoami.authme.events;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
/**
*
* @author Xephi59
*/
public class LoginEvent extends UncancellableEvent { public class LoginEvent extends UncancellableEvent {
private Player player; private Player player;
private boolean isLogin; private boolean isLogin;
@ -28,4 +31,5 @@ public class LoginEvent extends UncancellableEvent {
public boolean isLogin() { public boolean isLogin() {
return isLogin; return isLogin;
} }
} }

View File

@ -5,6 +5,10 @@ import org.bukkit.inventory.ItemStack;
import uk.org.whoami.authme.api.API; import uk.org.whoami.authme.api.API;
/**
*
* @author Xephi59
*/
public class ProtectInventoryEvent extends CustomEvent { public class ProtectInventoryEvent extends CustomEvent {
private ItemStack[] storedinventory; private ItemStack[] storedinventory;
@ -55,4 +59,5 @@ public class ProtectInventoryEvent extends CustomEvent {
public ItemStack[] getEmptyArmor() { public ItemStack[] getEmptyArmor() {
return this.emptyArmor; return this.emptyArmor;
} }
} }

View File

@ -3,6 +3,10 @@ package uk.org.whoami.authme.events;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
/**
*
* @author Xephi59
*/
public class RegisterTeleportEvent extends CustomEvent { public class RegisterTeleportEvent extends CustomEvent {
private Player player; private Player player;
@ -26,4 +30,5 @@ public class RegisterTeleportEvent extends CustomEvent {
public Location getFrom() { public Location getFrom() {
return from; return from;
} }
} }

View File

@ -5,6 +5,10 @@ import org.bukkit.inventory.ItemStack;
import uk.org.whoami.authme.api.API; import uk.org.whoami.authme.api.API;
/**
*
* @author Xephi59
*/
public class ResetInventoryEvent extends CustomEvent { public class ResetInventoryEvent extends CustomEvent {
private Player player; private Player player;
@ -21,4 +25,5 @@ public class ResetInventoryEvent extends CustomEvent {
public void setPlayer(Player player) { public void setPlayer(Player player) {
this.player = player; this.player = player;
} }
} }

View File

@ -3,6 +3,10 @@ package uk.org.whoami.authme.events;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
/**
*
* @author Xephi59
*/
public class RestoreInventoryEvent extends CustomEvent { public class RestoreInventoryEvent extends CustomEvent {
private ItemStack[] inventory; private ItemStack[] inventory;
@ -38,4 +42,5 @@ public class RestoreInventoryEvent extends CustomEvent {
public void setPlayer(Player player) { public void setPlayer(Player player) {
this.player = player; this.player = player;
} }
} }

View File

@ -2,9 +2,12 @@ package uk.org.whoami.authme.events;
import uk.org.whoami.authme.cache.auth.PlayerAuth; import uk.org.whoami.authme.cache.auth.PlayerAuth;
/**
*
* @author Xephi59
*/
public class SessionEvent extends CustomEvent { public class SessionEvent extends CustomEvent {
private PlayerAuth player; private PlayerAuth player;
private boolean isLogin; private boolean isLogin;
@ -24,4 +27,5 @@ public class SessionEvent extends CustomEvent {
public boolean isLogin() { public boolean isLogin() {
return isLogin; return isLogin;
} }
} }

View File

@ -3,6 +3,10 @@ package uk.org.whoami.authme.events;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
/**
*
* @author Xephi59
*/
public class SpawnTeleportEvent extends CustomEvent { public class SpawnTeleportEvent extends CustomEvent {
private Player player; private Player player;

View File

@ -5,9 +5,12 @@ import org.bukkit.inventory.ItemStack;
import uk.org.whoami.authme.cache.backup.FileCache; import uk.org.whoami.authme.cache.backup.FileCache;
/**
*
* @author Xephi59
*/
public class StoreInventoryEvent extends CustomEvent { public class StoreInventoryEvent extends CustomEvent {
private ItemStack[] inventory; private ItemStack[] inventory;
private ItemStack[] armor; private ItemStack[] armor;
private Player player; private Player player;
@ -47,4 +50,5 @@ public class StoreInventoryEvent extends CustomEvent {
public void setPlayer(Player player) { public void setPlayer(Player player) {
this.player = player; this.player = player;
} }
} }

View File

@ -4,13 +4,15 @@ import org.bukkit.Server;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
/**
*
* @author Xephi59
*/
public class UncancellableEvent extends Event { public class UncancellableEvent extends Event {
private static final HandlerList handlers = new HandlerList(); private static final HandlerList handlers = new HandlerList();
private static Server s; private static Server s;
public HandlerList getHandlers() { public HandlerList getHandlers() {
return handlers; return handlers;
} }

View File

@ -3,6 +3,10 @@ package uk.org.whoami.authme.filter;
import java.util.logging.Filter; import java.util.logging.Filter;
import java.util.logging.LogRecord; import java.util.logging.LogRecord;
/**
*
* @author Xephi59
*/
public class ConsoleFilter implements Filter { public class ConsoleFilter implements Filter {
public ConsoleFilter() {} public ConsoleFilter() {}
@ -18,6 +22,4 @@ public class ConsoleFilter implements Filter {
return true; return true;
} }
} }

View File

@ -24,4 +24,5 @@ public class CustomButton extends GenericButton
.shiftYPos(-(height / 2)); .shiftYPos(-(height / 2));
return this; return this;
} }
} }

View File

@ -27,7 +27,6 @@ public class LoginScreen extends GenericPopup implements Clickable{
public AuthMe plugin = AuthMe.getInstance(); public AuthMe plugin = AuthMe.getInstance();
private SpoutCfg spoutCfg = SpoutCfg.getInstance(); private SpoutCfg spoutCfg = SpoutCfg.getInstance();
private CustomButton exitBtn; private CustomButton exitBtn;
private CustomButton loginBtn; private CustomButton loginBtn;
private GenericTextField passBox; private GenericTextField passBox;
@ -35,17 +34,16 @@ public class LoginScreen extends GenericPopup implements Clickable{
private GenericLabel textLbl; private GenericLabel textLbl;
private GenericLabel errorLbl; private GenericLabel errorLbl;
String exitTxt = spoutCfg.getString("LoginScreen.exit button"); //"Quit"; String exitTxt = spoutCfg.getString("LoginScreen.exit button");
String loginTxt = spoutCfg.getString("LoginScreen.login button"); //"Login"; String loginTxt = spoutCfg.getString("LoginScreen.login button");
String exitMsg = spoutCfg.getString("LoginScreen.exit message"); //"Good Bye"; String exitMsg = spoutCfg.getString("LoginScreen.exit message");
String title = spoutCfg.getString("LoginScreen.title"); //"LOGIN" String title = spoutCfg.getString("LoginScreen.title");
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
List<String> textlines = (List<String>) spoutCfg.getList("LoginScreen.text"); List<String> textlines = (List<String>) spoutCfg.getList("LoginScreen.text");
public SpoutPlayer splayer; public SpoutPlayer splayer;
public LoginScreen(SpoutPlayer player) { public LoginScreen(SpoutPlayer player) {
this.splayer = player; this.splayer = player;
createScreen(); createScreen();
} }
@ -53,7 +51,6 @@ public class LoginScreen extends GenericPopup implements Clickable{
int objects = textlines.size() + 4; int objects = textlines.size() + 4;
int part = !(textlines.size() <= 5) ? 195 / objects : 20; int part = !(textlines.size() <= 5) ? 195 / objects : 20;
int h = 3*part/4, w = 8*part; int h = 3*part/4, w = 8*part;
titleLbl = new GenericLabel(); titleLbl = new GenericLabel();
titleLbl titleLbl
.setText(title) .setText(title)
@ -64,7 +61,6 @@ public class LoginScreen extends GenericPopup implements Clickable{
.setX(maxWidth / 2 ) .setX(maxWidth / 2 )
.setY(25); .setY(25);
this.attachWidget(plugin, titleLbl); this.attachWidget(plugin, titleLbl);
int ystart = 25 + h + part/2; int ystart = 25 + h + part/2;
for (int x=0; x<textlines.size();x++) for (int x=0; x<textlines.size();x++)
{ {
@ -78,7 +74,6 @@ public class LoginScreen extends GenericPopup implements Clickable{
.setY(ystart + x*part); .setY(ystart + x*part);
this.attachWidget(plugin, textLbl); this.attachWidget(plugin, textLbl);
} }
passBox = new GenericTextField(); passBox = new GenericTextField();
passBox passBox
.setMaximumCharacters(18) .setMaximumCharacters(18)
@ -89,7 +84,6 @@ public class LoginScreen extends GenericPopup implements Clickable{
passBox.setPasswordField(true); passBox.setPasswordField(true);
setXToMid(passBox); setXToMid(passBox);
this.attachWidget(plugin, passBox); this.attachWidget(plugin, passBox);
errorLbl = new GenericLabel(); errorLbl = new GenericLabel();
errorLbl errorLbl
.setText("") .setText("")
@ -99,7 +93,6 @@ public class LoginScreen extends GenericPopup implements Clickable{
.setX(passBox.getX() + passBox.getWidth() + 2) .setX(passBox.getX() + passBox.getWidth() + 2)
.setY(passBox.getY()); .setY(passBox.getY());
this.attachWidget(plugin, errorLbl); this.attachWidget(plugin, errorLbl);
loginBtn = new CustomButton(this); loginBtn = new CustomButton(this);
loginBtn loginBtn
.setText(loginTxt) .setText(loginTxt)
@ -108,7 +101,6 @@ public class LoginScreen extends GenericPopup implements Clickable{
.setY(220-h-part); .setY(220-h-part);
setXToMid(loginBtn); setXToMid(loginBtn);
this.attachWidget(plugin, loginBtn); this.attachWidget(plugin, loginBtn);
exitBtn = new CustomButton(this); exitBtn = new CustomButton(this);
exitBtn exitBtn
.setText(exitTxt) .setText(exitTxt)
@ -118,10 +110,8 @@ public class LoginScreen extends GenericPopup implements Clickable{
setXToMid(exitBtn); setXToMid(exitBtn);
this.attachWidget(plugin, exitBtn); this.attachWidget(plugin, exitBtn);
this.setPriority(RenderPriority.Highest); this.setPriority(RenderPriority.Highest);
} }
@SuppressWarnings("deprecation")
@EventHandler (priority = EventPriority.HIGHEST) @EventHandler (priority = EventPriority.HIGHEST)
public void handleClick(ButtonClickEvent event) { public void handleClick(ButtonClickEvent event) {
Button b = event.getButton(); Button b = event.getButton();
@ -129,19 +119,10 @@ public class LoginScreen extends GenericPopup implements Clickable{
if (event.isCancelled() || event == null || event.getPlayer() == null) return; if (event.isCancelled() || event == null || event.getPlayer() == null) return;
if (b.equals(loginBtn)) if (b.equals(loginBtn))
{ {
String result = plugin.management.performLogin(player, passBox.getText()); plugin.management.performLogin(player, passBox.getText());
if(result == "") {
player.closeActiveWindow();
}
else
{
errorLbl.setText(result);
passBox.setText("");
}
}else if(b.equals(exitBtn)) }else if(b.equals(exitBtn))
{ {
event.getPlayer().kickPlayer(exitMsg); event.getPlayer().kickPlayer(exitMsg);
} }
} }
@ -149,5 +130,4 @@ public class LoginScreen extends GenericPopup implements Clickable{
w.setX( (maxWidth - w.getWidth()) / 2); w.setX( (maxWidth - w.getWidth()) / 2);
} }
} }

View File

@ -1,48 +0,0 @@
package uk.org.whoami.authme.gui.screens;
/**
* @Author Hoezef
*/
import org.getspout.spoutapi.event.screen.ButtonClickEvent;
import org.getspout.spoutapi.gui.GenericLabel;
import org.getspout.spoutapi.gui.GenericPopup;
import org.getspout.spoutapi.gui.GenericTextField;
import org.getspout.spoutapi.gui.WidgetAnchor;
import org.getspout.spoutapi.player.SpoutPlayer;
import uk.org.whoami.authme.gui.Clickable;
import uk.org.whoami.authme.settings.Settings;
public class RegisterScreen extends GenericPopup implements Clickable{
@SuppressWarnings("unused")
private SpoutPlayer splayer;
@SuppressWarnings("unused")
private boolean forcedRegistrationEnabled;
private String title;
GenericLabel titleLbl = null;
GenericTextField messageTF = null;
public RegisterScreen(SpoutPlayer player, Settings settings) {
this.splayer = player;
this.forcedRegistrationEnabled = Settings.isForcedRegistrationEnabled;
this.title = ""; // needs to be set...
createScreen();
}
private void createScreen() {
titleLbl = new GenericLabel();
titleLbl.setText(title)
.setAnchor(WidgetAnchor.TOP_CENTER);
}
public void handleClick(ButtonClickEvent event) {
// TODO Auto-generated method stub
}
}

View File

@ -33,7 +33,6 @@ public class AuthMeBlockListener implements Listener {
private DataSource data; private DataSource data;
public AuthMe instance; public AuthMe instance;
//private Settings settings = Settings.getInstance();
public AuthMeBlockListener(DataSource data, AuthMe instance) { public AuthMeBlockListener(DataSource data, AuthMe instance) {
this.data = data; this.data = data;
@ -62,7 +61,6 @@ public class AuthMeBlockListener implements Listener {
return; return;
} }
} }
event.setCancelled(true); event.setCancelled(true);
} }
@ -88,7 +86,6 @@ public class AuthMeBlockListener implements Listener {
return; return;
} }
} }
event.setCancelled(true); event.setCancelled(true);
} }

View File

@ -12,7 +12,6 @@ import uk.org.whoami.authme.AuthMe;
import uk.org.whoami.authme.Utils; import uk.org.whoami.authme.Utils;
import uk.org.whoami.authme.cache.auth.PlayerCache; import uk.org.whoami.authme.cache.auth.PlayerCache;
import uk.org.whoami.authme.datasource.DataSource; import uk.org.whoami.authme.datasource.DataSource;
import uk.org.whoami.authme.plugin.manager.CombatTagComunicator;
import uk.org.whoami.authme.settings.Settings; import uk.org.whoami.authme.settings.Settings;
public class AuthMeChestShopListener implements Listener { public class AuthMeChestShopListener implements Listener {
@ -25,7 +24,7 @@ public class AuthMeChestShopListener implements Listener {
this.plugin = plugin; this.plugin = plugin;
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.LOWEST)
public void onPreTransaction(PreTransactionEvent event) { public void onPreTransaction(PreTransactionEvent event) {
if (event.isCancelled() || event.getClient() == null || event == null) { if (event.isCancelled() || event.getClient() == null || event == null) {
return; return;
@ -34,7 +33,7 @@ public class AuthMeChestShopListener implements Listener {
Player player = event.getClient(); Player player = event.getClient();
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
if (plugin.getCitizensCommunicator().isNPC(player, plugin) || Utils.getInstance().isUnrestricted(player) || CombatTagComunicator.isNPC(player)) { if (Utils.getInstance().isUnrestricted(player)) {
return; return;
} }
@ -48,7 +47,5 @@ public class AuthMeChestShopListener implements Listener {
} }
} }
event.setCancelled(TransactionOutcome.OTHER); event.setCancelled(TransactionOutcome.OTHER);
} }
} }

View File

@ -38,7 +38,6 @@ public class AuthMeEntityListener implements Listener{
private DataSource data; private DataSource data;
public AuthMe instance; public AuthMe instance;
//private Settings settings = Settings.getInstance();
public AuthMeEntityListener(DataSource data, AuthMe instance) { public AuthMeEntityListener(DataSource data, AuthMe instance) {
this.data = data; this.data = data;
@ -55,14 +54,7 @@ public class AuthMeEntityListener implements Listener{
if (!(entity instanceof Player)) { if (!(entity instanceof Player)) {
return; return;
} }
/*
System.out.println("[ Entity Damage ] "+event.getEntity().toString());
@Future implementation till CombatTag dont release any apis
if(event.getEntity().toString().indexOf("PvPLogger") != -1 ) {
System.out.println("la stringa contiene PvPLogger 2");
return;
}
*/
if(instance.getCitizensCommunicator().isNPC(entity, instance) || Utils.getInstance().isUnrestricted((Player)entity) || CombatTagComunicator.isNPC(entity)) { if(instance.getCitizensCommunicator().isNPC(entity, instance) || Utils.getInstance().isUnrestricted((Player)entity) || CombatTagComunicator.isNPC(entity)) {
return; return;
} }
@ -79,7 +71,6 @@ public class AuthMeEntityListener implements Listener{
return; return;
} }
} }
player.setFireTicks(0); player.setFireTicks(0);
event.setCancelled(true); event.setCancelled(true);
} }
@ -193,7 +184,6 @@ public class AuthMeEntityListener implements Listener{
} }
} }
event.setCancelled(true); event.setCancelled(true);
} }
@EventHandler (priority = EventPriority.LOWEST) @EventHandler (priority = EventPriority.LOWEST)
@ -222,8 +212,6 @@ public class AuthMeEntityListener implements Listener{
return; return;
} }
} }
event.setCancelled(true); event.setCancelled(true);
} }
} }

View File

@ -20,6 +20,7 @@ import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import net.md_5.bungee.BungeeCord; import net.md_5.bungee.BungeeCord;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.GameMode; import org.bukkit.GameMode;
@ -71,10 +72,8 @@ import uk.org.whoami.authme.settings.Spawn;
import uk.org.whoami.authme.task.MessageTask; import uk.org.whoami.authme.task.MessageTask;
import uk.org.whoami.authme.task.TimeoutTask; import uk.org.whoami.authme.task.TimeoutTask;
public class AuthMePlayerListener implements Listener { public class AuthMePlayerListener implements Listener {
public static int gm = 0; public static int gm = 0;
public static HashMap<String, Integer> gameMode = new HashMap<String, Integer>(); public static HashMap<String, Integer> gameMode = new HashMap<String, Integer>();
private Utils utils = Utils.getInstance(); private Utils utils = Utils.getInstance();
@ -97,7 +96,6 @@ public class AuthMePlayerListener implements Listener {
Player player = event.getPlayer(); Player player = event.getPlayer();
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
if (Utils.getInstance().isUnrestricted(player)) { if (Utils.getInstance().isUnrestricted(player)) {
return; return;
} }
@ -122,11 +120,9 @@ 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")) { if (cmd.equalsIgnoreCase("/login") || cmd.equalsIgnoreCase("/register") || cmd.equalsIgnoreCase("/passpartu") || cmd.equalsIgnoreCase("/l") || cmd.equalsIgnoreCase("/reg") || cmd.equalsIgnoreCase("/email") || cmd.equalsIgnoreCase("/captcha")) {
return; return;
} }
if (Settings.allowCommands.contains(cmd)) { if (Settings.allowCommands.contains(cmd)) {
return; return;
} }
event.setMessage("/notloggedin"); event.setMessage("/notloggedin");
event.setCancelled(true); event.setCancelled(true);
} }
@ -178,7 +174,6 @@ public class AuthMePlayerListener implements Listener {
player.sendMessage(m._("reg_msg")); player.sendMessage(m._("reg_msg"));
} }
} else { } else {
Bukkit.getScheduler().runTask(plugin, new Runnable() Bukkit.getScheduler().runTask(plugin, new Runnable()
{ {
@Override @Override
@ -200,7 +195,6 @@ public class AuthMePlayerListener implements Listener {
return; return;
} }
final Player player = event.getPlayer(); final Player player = event.getPlayer();
final String name = player.getName().toLowerCase(); final String name = player.getName().toLowerCase();
@ -242,7 +236,6 @@ public class AuthMePlayerListener implements Listener {
player.sendMessage(m._("reg_msg")); player.sendMessage(m._("reg_msg"));
} }
} else { } else {
Bukkit.getScheduler().runTask(plugin, new Runnable() Bukkit.getScheduler().runTask(plugin, new Runnable()
{ {
@Override @Override
@ -264,7 +257,6 @@ public class AuthMePlayerListener implements Listener {
return; return;
} }
final Player player = event.getPlayer(); final Player player = event.getPlayer();
final String name = player.getName().toLowerCase(); final String name = player.getName().toLowerCase();
@ -306,7 +298,6 @@ public class AuthMePlayerListener implements Listener {
player.sendMessage(m._("reg_msg")); player.sendMessage(m._("reg_msg"));
} }
} else { } else {
Bukkit.getScheduler().runTask(plugin, new Runnable() Bukkit.getScheduler().runTask(plugin, new Runnable()
{ {
@Override @Override
@ -328,7 +319,6 @@ public class AuthMePlayerListener implements Listener {
return; return;
} }
final Player player = event.getPlayer(); final Player player = event.getPlayer();
final String name = player.getName().toLowerCase(); final String name = player.getName().toLowerCase();
@ -370,7 +360,6 @@ public class AuthMePlayerListener implements Listener {
player.sendMessage(m._("reg_msg")); player.sendMessage(m._("reg_msg"));
} }
} else { } else {
Bukkit.getScheduler().runTask(plugin, new Runnable() Bukkit.getScheduler().runTask(plugin, new Runnable()
{ {
@Override @Override
@ -386,14 +375,12 @@ public class AuthMePlayerListener implements Listener {
} }
} }
@EventHandler( priority = EventPriority.LOWEST) @EventHandler( priority = EventPriority.LOWEST)
public void onPlayerEarlyChat(AsyncPlayerChatEvent event) { public void onPlayerEarlyChat(AsyncPlayerChatEvent event) {
if (event.isCancelled() || event.getPlayer() == null) { if (event.isCancelled() || event.getPlayer() == null) {
return; return;
} }
final Player player = event.getPlayer(); final Player player = event.getPlayer();
final String name = player.getName().toLowerCase(); final String name = player.getName().toLowerCase();
@ -435,7 +422,6 @@ public class AuthMePlayerListener implements Listener {
player.sendMessage(m._("reg_msg")); player.sendMessage(m._("reg_msg"));
} }
} else { } else {
Bukkit.getScheduler().runTask(plugin, new Runnable() Bukkit.getScheduler().runTask(plugin, new Runnable()
{ {
@Override @Override
@ -457,7 +443,6 @@ public class AuthMePlayerListener implements Listener {
return; return;
} }
final Player player = event.getPlayer(); final Player player = event.getPlayer();
final String name = player.getName().toLowerCase(); final String name = player.getName().toLowerCase();
@ -499,7 +484,6 @@ public class AuthMePlayerListener implements Listener {
player.sendMessage(m._("reg_msg")); player.sendMessage(m._("reg_msg"));
} }
} else { } else {
Bukkit.getScheduler().runTask(plugin, new Runnable() Bukkit.getScheduler().runTask(plugin, new Runnable()
{ {
@Override @Override
@ -521,7 +505,6 @@ public class AuthMePlayerListener implements Listener {
return; return;
} }
Player player = event.getPlayer(); Player player = event.getPlayer();
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
@ -546,7 +529,6 @@ public class AuthMePlayerListener implements Listener {
return; return;
} }
int radius = Settings.getMovementRadius; int radius = Settings.getMovementRadius;
Location spawn = player.getWorld().getSpawnLocation(); Location spawn = player.getWorld().getSpawnLocation();
if (plugin.mv != null) { if (plugin.mv != null) {
@ -563,7 +545,6 @@ public class AuthMePlayerListener implements Listener {
if ((spawn.distance(player.getLocation()) > radius) ) { if ((spawn.distance(player.getLocation()) > radius) ) {
event.getPlayer().teleport(spawn); event.getPlayer().teleport(spawn);
} }
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@ -581,21 +562,8 @@ public class AuthMePlayerListener implements Listener {
return; return;
} }
if(!event.isAsynchronous()) { //Run that asynchronous
if(data.isAuthAvailable(name) && !LimboCache.getInstance().hasLimboPlayer(name)) { Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
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 @Override
public void run() { public void run() {
if(data.isAuthAvailable(name) && !LimboCache.getInstance().hasLimboPlayer(name)) { if(data.isAuthAvailable(name) && !LimboCache.getInstance().hasLimboPlayer(name)) {
@ -609,12 +577,8 @@ public class AuthMePlayerListener implements Listener {
LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player)); 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 //Check if forceSingleSession is set to true, so kick player that has joined with same nick of online player
if(player.isOnline() && Settings.isForceSingleSessionEnabled ) { if(player.isOnline() && Settings.isForceSingleSessionEnabled ) {
LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(player.getName().toLowerCase()); LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(player.getName().toLowerCase());
@ -625,7 +589,6 @@ public class AuthMePlayerListener implements Listener {
LimboCache.getInstance().deleteLimboPlayer(player.getName().toLowerCase()); LimboCache.getInstance().deleteLimboPlayer(player.getName().toLowerCase());
} }
return; return;
} }
int min = Settings.getMinNickLength; int min = Settings.getMinNickLength;
@ -658,6 +621,7 @@ public class AuthMePlayerListener implements Listener {
event.disallow(Result.KICK_FULL, m._("kick_fullserver")); event.disallow(Result.KICK_FULL, m._("kick_fullserver"));
return; return;
} }
if (plugin.getServer().getOnlinePlayers().length > plugin.getServer().getMaxPlayers()) { if (plugin.getServer().getOnlinePlayers().length > plugin.getServer().getMaxPlayers()) {
event.allow(); event.allow();
return; return;
@ -674,7 +638,6 @@ public class AuthMePlayerListener implements Listener {
} }
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerJoin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) {
if (event.getPlayer() == null) { if (event.getPlayer() == null) {
@ -699,9 +662,13 @@ public class AuthMePlayerListener implements Listener {
String ip = player.getAddress().getAddress().getHostAddress(); String ip = player.getAddress().getAddress().getHostAddress();
if (Settings.bungee) { if (Settings.bungee) {
try { 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) { } 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)) { if(Settings.isAllowRestrictedIp && !Settings.getRestrictedIp(name, ip)) {
@ -714,15 +681,11 @@ public class AuthMePlayerListener implements Listener {
} }
if (data.isAuthAvailable(name)) { if (data.isAuthAvailable(name)) {
if (Settings.isSessionsEnabled) { if (Settings.isSessionsEnabled) {
PlayerAuth auth = data.getAuth(name); PlayerAuth auth = data.getAuth(name);
long timeout = Settings.getSessionTimeout * 60000; long timeout = Settings.getSessionTimeout * 60000;
long lastLogin = auth.getLastLogin(); long lastLogin = auth.getLastLogin();
long cur = new Date().getTime(); long cur = new Date().getTime();
if((cur - lastLogin < timeout || timeout == 0) && !auth.getIp().equals("198.18.0.1") ) { if((cur - lastLogin < timeout || timeout == 0) && !auth.getIp().equals("198.18.0.1") ) {
if (auth.getNickname().equalsIgnoreCase(name) && auth.getIp().equals(ip) ) { if (auth.getNickname().equalsIgnoreCase(name) && auth.getIp().equals(ip) ) {
plugin.getServer().getPluginManager().callEvent(new SessionEvent(auth, true)); 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 // isent in session or session was ended correctly
LimboCache.getInstance().addLimboPlayer(player); LimboCache.getInstance().addLimboPlayer(player);
DataFileCache dataFile = new DataFileCache(LimboCache.getInstance().getLimboPlayer(name).getInventory(),LimboCache.getInstance().getLimboPlayer(name).getArmour()); 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()); playerBackup.createCache(name, dataFile, LimboCache.getInstance().getLimboPlayer(name).getGroup(),LimboCache.getInstance().getLimboPlayer(name).getOperator());
} else { } else {
if(!Settings.unRegisteredGroup.isEmpty()){ if(!Settings.unRegisteredGroup.isEmpty()){
utils.setGroup(player, Utils.groupType.UNREGISTERED); utils.setGroup(player, Utils.groupType.UNREGISTERED);
@ -768,9 +729,6 @@ public class AuthMePlayerListener implements Listener {
return; return;
} }
} }
if(Settings.protectInventoryBeforeLogInEnabled) { if(Settings.protectInventoryBeforeLogInEnabled) {
try { try {
LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(player.getName().toLowerCase()); LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(player.getName().toLowerCase());
@ -783,10 +741,8 @@ public class AuthMePlayerListener implements Listener {
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
} }
} }
if(player.isOp()) if(player.isOp())
player.setOp(false); player.setOp(false);
if (Settings.isTeleportToSpawnEnabled || (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName()))) { if (Settings.isTeleportToSpawnEnabled || (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName()))) {
SpawnTeleportEvent tpEvent = new SpawnTeleportEvent(player, player.getLocation(), spawnLoc, PlayerCache.getInstance().isAuthenticated(name)); SpawnTeleportEvent tpEvent = new SpawnTeleportEvent(player, player.getLocation(), spawnLoc, PlayerCache.getInstance().isAuthenticated(name));
plugin.getServer().getPluginManager().callEvent(tpEvent); plugin.getServer().getPluginManager().callEvent(tpEvent);
@ -797,25 +753,19 @@ public class AuthMePlayerListener implements Listener {
player.teleport(tpEvent.getTo()); player.teleport(tpEvent.getTo());
} }
} }
String msg = data.isAuthAvailable(name) ? m._("login_msg") : m._("reg_msg"); String msg = data.isAuthAvailable(name) ? m._("login_msg") : m._("reg_msg");
int time = Settings.getRegistrationTimeout * 20; int time = Settings.getRegistrationTimeout * 20;
int msgInterval = Settings.getWarnMessageInterval; int msgInterval = Settings.getWarnMessageInterval;
if (time != 0) { if (time != 0) {
BukkitTask id = sched.runTaskLater(plugin, new TimeoutTask(plugin, name), time); BukkitTask id = sched.runTaskLater(plugin, new TimeoutTask(plugin, name), time);
if(!LimboCache.getInstance().hasLimboPlayer(name)) if(!LimboCache.getInstance().hasLimboPlayer(name))
LimboCache.getInstance().addLimboPlayer(player); LimboCache.getInstance().addLimboPlayer(player);
LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id.getTaskId()); LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id.getTaskId());
} }
if(!LimboCache.getInstance().hasLimboPlayer(name)) if(!LimboCache.getInstance().hasLimboPlayer(name))
LimboCache.getInstance().addLimboPlayer(player); LimboCache.getInstance().addLimboPlayer(player);
BukkitTask msgT = sched.runTask(plugin, new MessageTask(plugin, name, msg, msgInterval)); BukkitTask msgT = sched.runTask(plugin, new MessageTask(plugin, name, msg, msgInterval));
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT.getTaskId()); LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT.getTaskId());
if (Settings.isForceSurvivalModeEnabled) if (Settings.isForceSurvivalModeEnabled)
sched.runTask(plugin, new Runnable() { sched.runTask(plugin, new Runnable() {
public void run() { public void run() {
@ -824,14 +774,12 @@ public class AuthMePlayerListener implements Listener {
}); });
} }
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void onPlayerQuit(PlayerQuitEvent event) { public void onPlayerQuit(PlayerQuitEvent event) {
if (event.getPlayer() == null) { if (event.getPlayer() == null) {
return; return;
} }
Player player = event.getPlayer(); Player player = event.getPlayer();
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
@ -841,11 +789,15 @@ public class AuthMePlayerListener implements Listener {
if (PlayerCache.getInstance().isAuthenticated(name) && !player.isDead()) { if (PlayerCache.getInstance().isAuthenticated(name) && !player.isDead()) {
if(Settings.isSaveQuitLocationEnabled && data.isAuthAvailable(name)) { 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()); final PlayerAuth auth = new PlayerAuth(event.getPlayer().getName().toLowerCase(),(int)player.getLocation().getX(),(int)player.getLocation().getY(),(int)player.getLocation().getZ());
try { try {
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
data.updateQuitLoc(auth); data.updateQuitLoc(auth);
}
});
} catch (NullPointerException npe) { } } catch (NullPointerException npe) { }
} }
} }
@ -870,18 +822,13 @@ public class AuthMePlayerListener implements Listener {
} }
try { try {
PlayerCache.getInstance().removePlayer(name); PlayerCache.getInstance().removePlayer(name);
} catch (NullPointerException npe) {
}
try {
PlayersLogs.players.remove(player.getName()); PlayersLogs.players.remove(player.getName());
PlayersLogs.getInstance().save(); PlayersLogs.getInstance().save();
player.getVehicle().eject();
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
} }
if (gameMode.containsKey(name)) gameMode.remove(name); if (gameMode.containsKey(name)) gameMode.remove(name);
player.saveData(); player.saveData();
} }
@EventHandler(priority=EventPriority.MONITOR) @EventHandler(priority=EventPriority.MONITOR)
@ -908,8 +855,13 @@ public class AuthMePlayerListener implements Listener {
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
if ((PlayerCache.getInstance().isAuthenticated(name)) && (!player.isDead()) && if ((PlayerCache.getInstance().isAuthenticated(name)) && (!player.isDead()) &&
(Settings.isSaveQuitLocationEnabled.booleanValue()) && data.isAuthAvailable(name)) { (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()); final PlayerAuth auth = new PlayerAuth(event.getPlayer().getName().toLowerCase(), (int)player.getLocation().getX(), (int)player.getLocation().getY(), (int)player.getLocation().getZ());
this.data.updateQuitLoc(auth); Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
data.updateQuitLoc(auth);
}
});
} }
if (LimboCache.getInstance().hasLimboPlayer(name)) if (LimboCache.getInstance().hasLimboPlayer(name))
@ -936,7 +888,6 @@ public class AuthMePlayerListener implements Listener {
player.teleport(tpEvent.getTo()); player.teleport(tpEvent.getTo());
} }
} catch (NullPointerException npe) { } catch (NullPointerException npe) {
} }
this.utils.addNormal(player, limbo.getGroup()); this.utils.addNormal(player, limbo.getGroup());
player.setOp(limbo.getOperator()); player.setOp(limbo.getOperator());
@ -952,6 +903,7 @@ public class AuthMePlayerListener implements Listener {
PlayersLogs.players.remove(player.getName()); PlayersLogs.players.remove(player.getName());
PlayersLogs.getInstance().save(); PlayersLogs.getInstance().save();
if (gameMode.containsKey(name)) gameMode.remove(name); if (gameMode.containsKey(name)) gameMode.remove(name);
player.getVehicle().eject();
player.saveData(); player.saveData();
} catch (NullPointerException ex) {} } catch (NullPointerException ex) {}
} }
@ -982,7 +934,7 @@ public class AuthMePlayerListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
} }
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.LOWEST)
public void onPlayerInteract(PlayerInteractEvent event) { public void onPlayerInteract(PlayerInteractEvent event) {
if (event.isCancelled() || event.getPlayer() == null) return; if (event.isCancelled() || event.getPlayer() == null) return;
if (event.getClickedBlock() == null) return; if (event.getClickedBlock() == null) return;
@ -1010,10 +962,7 @@ public class AuthMePlayerListener implements Listener {
event.setUseInteractedBlock(org.bukkit.event.Event.Result.DENY); event.setUseInteractedBlock(org.bukkit.event.Event.Result.DENY);
} }
} catch (NullPointerException npe) { } catch (NullPointerException npe) {
} }
event.setCancelled(true); event.setCancelled(true);
} }
@ -1063,8 +1012,6 @@ public class AuthMePlayerListener implements Listener {
return; return;
} }
} }
//System.out.println("player try to drop item");
event.setCancelled(true); event.setCancelled(true);
} }
@ -1092,7 +1039,7 @@ public class AuthMePlayerListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
} }
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.LOWEST)
public void onSignChange(SignChangeEvent event) { public void onSignChange(SignChangeEvent event) {
if (event.isCancelled() || event.getPlayer() == null || event == null) { if (event.isCancelled() || event.getPlayer() == null || event == null) {
return; return;
@ -1114,8 +1061,5 @@ public class AuthMePlayerListener implements Listener {
} }
} }
event.setCancelled(true); event.setCancelled(true);
} }
} }

View File

@ -17,15 +17,12 @@ import uk.org.whoami.authme.settings.SpoutCfg;
public class AuthMeSpoutListener implements Listener { public class AuthMeSpoutListener implements Listener {
private DataSource data; private DataSource data;
public AuthMeSpoutListener(DataSource data) { public AuthMeSpoutListener(DataSource data) {
this.data = data; this.data = data;
} }
@EventHandler @EventHandler
public void onSpoutCraftEnable(final SpoutCraftEnableEvent event) public void onSpoutCraftEnable(final SpoutCraftEnableEvent event) {
{
if(SpoutCfg.getInstance().getBoolean("LoginScreen.enabled")) { if(SpoutCfg.getInstance().getBoolean("LoginScreen.enabled")) {
if (data.isAuthAvailable(event.getPlayer().getName().toLowerCase()) && !PlayerCache.getInstance().isAuthenticated(event.getPlayer().getName().toLowerCase()) ) { if (data.isAuthAvailable(event.getPlayer().getName().toLowerCase()) && !PlayerCache.getInstance().isAuthenticated(event.getPlayer().getName().toLowerCase()) ) {
event.getPlayer().getMainScreen().attachPopupScreen(new LoginScreen(event.getPlayer())); event.getPlayer().getMainScreen().attachPopupScreen(new LoginScreen(event.getPlayer()));

View File

@ -16,6 +16,7 @@ import org.bukkit.entity.Player;
* @author stefano * @author stefano
*/ */
public abstract class CombatTagComunicator { public abstract class CombatTagComunicator {
static CombatTagApi combatApi; static CombatTagApi combatApi;
public CombatTagComunicator() { public CombatTagComunicator() {
@ -38,7 +39,6 @@ public abstract class CombatTagComunicator {
* @return true if player is in combat * @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 * Returns the time before the tag is over
* -1 if the tag has expired * -1 if the tag has expired
@ -48,7 +48,6 @@ public abstract class CombatTagComunicator {
*/ */
public abstract long getRemainingTagTime(String player); public abstract long getRemainingTagTime(String player);
//(Implemented in 3.8)
/** /**
* Returns if the entity is an NPC * Returns if the entity is an NPC
* @param player * @param player
@ -69,4 +68,5 @@ public abstract class CombatTagComunicator {
} }
return false; return false;
} }
} }

View File

@ -37,13 +37,10 @@ public class PasswordSecurity {
private static String getMD5(String message) throws NoSuchAlgorithmException { private static String getMD5(String message) throws NoSuchAlgorithmException {
MessageDigest md5 = MessageDigest.getInstance("MD5"); MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.reset(); md5.reset();
md5.update(message.getBytes()); md5.update(message.getBytes());
byte[] digest = md5.digest(); 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 { private static String getSHA1(String message) throws NoSuchAlgorithmException {
@ -51,20 +48,15 @@ public class PasswordSecurity {
sha1.reset(); sha1.reset();
sha1.update(message.getBytes()); sha1.update(message.getBytes());
byte[] digest = sha1.digest(); 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 { private static String getSHA256(String message) throws NoSuchAlgorithmException {
MessageDigest sha256 = MessageDigest.getInstance("SHA-256"); MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
sha256.reset(); sha256.reset();
sha256.update(message.getBytes()); sha256.update(message.getBytes());
byte[] digest = sha256.digest(); 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) { public static String getWhirlpool(String message) {
@ -80,10 +72,6 @@ public class PasswordSecurity {
return "$SHA$" + salt + "$" + getSHA256(getSHA256(message) + salt); return "$SHA$" + salt + "$" + getSHA256(getSHA256(message) + salt);
} }
//
// VBULLETIN 3.X 4.X METHOD
//
private static String getSaltedMd5(String message, String salt) throws NoSuchAlgorithmException { private static String getSaltedMd5(String message, String salt) throws NoSuchAlgorithmException {
return "$MD5vb$" + salt + "$" + getMD5(getMD5(message) + salt); return "$MD5vb$" + salt + "$" + getMD5(getMD5(message) + salt);
} }
@ -99,15 +87,12 @@ public class PasswordSecurity {
} }
private static String getSaltedIPB3(String message, String salt) throws NoSuchAlgorithmException { private static String getSaltedIPB3(String message, String salt) throws NoSuchAlgorithmException {
return getMD5(getMD5(salt) + getMD5(message)); return getMD5(getMD5(salt) + getMD5(message));
} }
private static String createSalt(int length) throws NoSuchAlgorithmException { private static String createSalt(int length) throws NoSuchAlgorithmException {
byte[] msg = new byte[40]; byte[] msg = new byte[40];
rnd.nextBytes(msg); rnd.nextBytes(msg);
MessageDigest sha1 = MessageDigest.getInstance("SHA1"); MessageDigest sha1 = MessageDigest.getInstance("SHA1");
sha1.reset(); sha1.reset();
byte[] digest = sha1.digest(msg); byte[] digest = sha1.digest(msg);
@ -203,7 +188,6 @@ public class PasswordSecurity {
} }
public static boolean comparePasswordWithHash(String password, String hash, String playername) throws NoSuchAlgorithmException { public static boolean comparePasswordWithHash(String password, String hash, String playername) throws NoSuchAlgorithmException {
//System.out.println("[Authme Debug] debug hashString"+hash);
if(hash.contains("$H$")) { if(hash.contains("$H$")) {
PhpBB checkHash = new PhpBB(); PhpBB checkHash = new PhpBB();
return checkHash.phpbb_check_hash(password, hash); return checkHash.phpbb_check_hash(password, hash);
@ -241,32 +225,23 @@ public class PasswordSecurity {
if(hash.length() < 32 ) { if(hash.length() < 32 ) {
return hash.equals(password); return hash.equals(password);
} }
if (hash.length() == 32) { if (hash.length() == 32) {
return hash.equals(getMD5(password)); return hash.equals(getMD5(password));
} }
if (hash.length() == 40) { if (hash.length() == 40) {
return hash.equals(getSHA1(password)); return hash.equals(getSHA1(password));
} }
if (hash.length() == 140) { if (hash.length() == 140) {
int saltPos = (password.length() >= hash.length() ? hash.length() - 1 : password.length()); int saltPos = (password.length() >= hash.length() ? hash.length() - 1 : password.length());
String salt = hash.substring(saltPos, saltPos + 12); String salt = hash.substring(saltPos, saltPos + 12);
return hash.equals(getXAuth(password, salt)); return hash.equals(getXAuth(password, salt));
} }
if (hash.contains("$")) { if (hash.contains("$")) {
//System.out.println("[Authme Debug] debug hashString"+hash);
String[] line = hash.split("\\$"); String[] line = hash.split("\\$");
if (line.length > 3 && line[1].equals("SHA")) { if (line.length > 3 && line[1].equals("SHA")) {
return hash.equals(getSaltedHash(password, line[2])); return hash.equals(getSaltedHash(password, line[2]));
} else { } else {
if(line[1].equals("MD5vb")) { 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])); return hash.equals(getSaltedMd5(password, line[2]));
} }
} }
@ -280,7 +255,6 @@ public class PasswordSecurity {
return phpBBhash; return phpBBhash;
} }
private static String getPlainText(String password) { private static String getPlainText(String password) {
return password; return password;
} }
@ -292,9 +266,7 @@ public class PasswordSecurity {
SecretKeySpec key = new SecretKeySpec((keyString).getBytes("UTF-8"), algo); SecretKeySpec key = new SecretKeySpec((keyString).getBytes("UTF-8"), algo);
Mac mac = Mac.getInstance(algo); Mac mac = Mac.getInstance(algo);
mac.init(key); mac.init(key);
byte[] bytes = mac.doFinal(msg.getBytes("ASCII")); byte[] bytes = mac.doFinal(msg.getBytes("ASCII"));
StringBuffer hash = new StringBuffer(); StringBuffer hash = new StringBuffer();
for (int i = 0; i < bytes.length; i++) { for (int i = 0; i < bytes.length; i++) {
String hex = Integer.toHexString(0xFF & bytes[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 MD5, SHA1, SHA256, WHIRLPOOL, XAUTH, MD5VB, PHPBB, PLAINTEXT, MYBB, IPB3, PHPFUSION, SMF, XFSHA1, XFSHA256, SALTED2MD5, JOOMLA
} }
} }

View File

@ -17,33 +17,25 @@ public class PhpBB {
private String itoa64 = private String itoa64 =
"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
public String phpbb_hash(String password) { public String phpbb_hash(String password) {
String random_state = unique_id(); String random_state = unique_id();
String random = ""; String random = "";
int count = 6; int count = 6;
if (random.length() < count) { if (random.length() < count) {
random = ""; random = "";
for (int i = 0; i < count; i += 16) { for (int i = 0; i < count; i += 16) {
random_state = md5(unique_id() + random_state); random_state = md5(unique_id() + random_state);
random += pack(md5(random_state)); random += pack(md5(random_state));
} }
random = random.substring(0, count); random = random.substring(0, count);
} }
String hash = _hash_crypt_private( String hash = _hash_crypt_private(
password, _hash_gensalt_private(random, itoa64)); password, _hash_gensalt_private(random, itoa64));
if (hash.length() == 34) if (hash.length() == 34)
return hash; return hash;
return md5(password); return md5(password);
} }
// global $config;
// private boolean dss_seeded = false;
private String unique_id() { private String unique_id() {
return unique_id("c"); return unique_id("c");
} }
@ -53,7 +45,6 @@ public class PhpBB {
return "1234567890abcdef"; return "1234567890abcdef";
} }
private String _hash_gensalt_private(String input, String itoa64) { private String _hash_gensalt_private(String input, String itoa64) {
return _hash_gensalt_private(input, itoa64, 6); 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) { if (iteration_count_log2 < 4 || iteration_count_log2 > 31) {
iteration_count_log2 = 8; iteration_count_log2 = 8;
} }
String output = "$H$"; String output = "$H$";
output += itoa64.charAt( output += itoa64.charAt(
Math.min(iteration_count_log2 + Math.min(iteration_count_log2 +
((PHP_VERSION >= 5) ? 5 : 3), 30)); ((PHP_VERSION >= 5) ? 5 : 3), 30));
output += _hash_encode64(input, 6); output += _hash_encode64(input, 6);
return output; return output;
} }
@ -80,58 +69,41 @@ private String _hash_gensalt_private(
private String _hash_encode64(String input, int count) { private String _hash_encode64(String input, int count) {
String output = ""; String output = "";
int i = 0; int i = 0;
do { do {
int value = input.charAt(i++); int value = input.charAt(i++);
output += itoa64.charAt(value & 0x3f); output += itoa64.charAt(value & 0x3f);
if (i < count) if (i < count)
value |= input.charAt(i) << 8; value |= input.charAt(i) << 8;
output += itoa64.charAt((value >> 6) & 0x3f); output += itoa64.charAt((value >> 6) & 0x3f);
if (i++ >= count) if (i++ >= count)
break; break;
if (i < count) if (i < count)
value |= input.charAt(i) << 16; value |= input.charAt(i) << 16;
output += itoa64.charAt((value >> 12) & 0x3f); output += itoa64.charAt((value >> 12) & 0x3f);
if (i++ >= count) if (i++ >= count)
break; break;
output += itoa64.charAt((value >> 18) & 0x3f); output += itoa64.charAt((value >> 18) & 0x3f);
} while (i < count); } while (i < count);
return output; return output;
} }
String _hash_crypt_private(String password, String setting) { String _hash_crypt_private(String password, String setting) {
String output = "*"; String output = "*";
// Check for correct hash
if (!setting.substring(0, 3).equals("$H$")) if (!setting.substring(0, 3).equals("$H$"))
return output; return output;
int count_log2 = itoa64.indexOf(setting.charAt(3)); int count_log2 = itoa64.indexOf(setting.charAt(3));
if (count_log2 < 7 || count_log2 > 30) if (count_log2 < 7 || count_log2 > 30)
return output; return output;
int count = 1 << count_log2; int count = 1 << count_log2;
String salt = setting.substring(4, 12); String salt = setting.substring(4, 12);
if (salt.length() != 8) if (salt.length() != 8)
return output; return output;
String m1 = md5(salt + password); String m1 = md5(salt + password);
String hash = pack(m1); String hash = pack(m1);
do { do {
hash = pack(md5(hash + password)); hash = pack(md5(hash + password));
} while (--count > 0); } while (--count > 0);
output = setting.substring(0, 12); output = setting.substring(0, 12);
output += _hash_encode64(hash, 16); output += _hash_encode64(hash, 16);
return output; return output;
} }
@ -158,11 +130,9 @@ private String _hash_gensalt_private(
static int hexToInt(char ch) { static int hexToInt(char ch) {
if(ch >= '0' && ch <= '9') if(ch >= '0' && ch <= '9')
return ch - '0'; return ch - '0';
ch = Character.toUpperCase(ch); ch = Character.toUpperCase(ch);
if(ch >= 'A' && ch <= 'F') if(ch >= 'A' && ch <= 'F')
return ch - 'A' + 0xA; return ch - 'A' + 0xA;
throw new IllegalArgumentException("Not a hex character: " + ch); throw new IllegalArgumentException("Not a hex character: " + ch);
} }
@ -188,4 +158,3 @@ private String _hash_gensalt_private(
return buf.toString(); return buf.toString();
} }
} }

View File

@ -2,16 +2,20 @@ package uk.org.whoami.authme.security;
import java.util.Random; import java.util.Random;
/**
*
* @author Xephi59
*/
public class RandomString public class RandomString
{ {
private static final char[] symbols = new char[36]; private static final char[] chars = new char[36];
static { static {
for (int idx = 0; idx < 10; ++idx) for (int idx = 0; idx < 10; ++idx)
symbols[idx] = (char) ('0' + idx); chars[idx] = (char) ('0' + idx);
for (int idx = 10; idx < 36; ++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(); private final Random random = new Random();
@ -28,7 +32,7 @@ public class RandomString
public String nextString() public String nextString()
{ {
for (int idx = 0; idx < buf.length; ++idx) 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); return new String(buf);
} }

View File

@ -131,26 +131,6 @@ class Whirlpool {
C[t][x] = (C[t - 1][x] >>> 8) | ((C[t - 1][x] << 56)); 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: * build the round constants:
*/ */
@ -167,18 +147,6 @@ class Whirlpool {
(C[6][i + 6] & 0x000000000000ff00L) ^ (C[6][i + 6] & 0x000000000000ff00L) ^
(C[7][i + 7] & 0x00000000000000ffL); (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. * The hashing state.
*/ */
protected long[] hash = new long[8]; 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[] L = new long[8];
protected long[] block = new long[8]; // mu(buffer) protected long[] block = new long[8];
protected long[] state = new long[8]; // the cipher state protected long[] state = new long[8];
public Whirlpool() { public Whirlpool() {
} }
@ -281,8 +249,8 @@ class Whirlpool {
public void NESSIEinit() { public void NESSIEinit() {
Arrays.fill(bitLength, (byte)0); Arrays.fill(bitLength, (byte)0);
bufferBits = bufferPos = 0; bufferBits = bufferPos = 0;
buffer[0] = 0; // it's only necessary to cleanup buffer[bufferPos]. buffer[0] = 0;
Arrays.fill(hash, 0L); // initial value Arrays.fill(hash, 0L);
} }
/** /**

View File

@ -64,7 +64,6 @@ public class CustomConfiguration extends YamlConfiguration{
fos = new FileOutputStream(file); fos = new FileOutputStream(file);
byte[] buf = new byte[1024]; byte[] buf = new byte[1024];
int i = 0; int i = 0;
while ((i = fis.read(buf)) != -1) { while ((i = fis.read(buf)) != -1) {
fos.write(buf, 0, i); fos.write(buf, 0, i);
} }

View File

@ -22,14 +22,11 @@ public class Messages extends CustomConfiguration {
private static Messages singleton = null; private static Messages singleton = null;
public Messages() { public Messages() {
super(new File(Settings.MESSAGE_FILE+"_"+Settings.messagesLanguage+".yml")); super(new File(Settings.MESSAGE_FILE+"_"+Settings.messagesLanguage+".yml"));
loadDefaults(); loadDefaults();
loadFile(); loadFile();
singleton = this; singleton = this;
} }
private void loadDefaults() { private void loadDefaults() {
@ -80,7 +77,6 @@ public class Messages extends CustomConfiguration {
private void loadFile() { private void loadFile() {
this.load(); this.load();
this.save(); this.save();
} }
public String _(String msg) { public String _(String msg) {
@ -91,7 +87,6 @@ public class Messages extends CustomConfiguration {
return msg; return msg;
} }
public static Messages getInstance() { public static Messages getInstance() {
if (singleton == null) { if (singleton == null) {
singleton = new Messages(); singleton = new Messages();

View File

@ -3,6 +3,10 @@ package uk.org.whoami.authme.settings;
import java.io.File; import java.io.File;
import java.util.List; import java.util.List;
/**
*
* @author Xephi59
*/
public class PlayersLogs extends CustomConfiguration { public class PlayersLogs extends CustomConfiguration {
private static PlayersLogs pllog = null; private static PlayersLogs pllog = null;
@ -15,7 +19,6 @@ public class PlayersLogs extends CustomConfiguration {
load(); load();
save(); save();
players = (List<String>) this.getList("players"); players = (List<String>) this.getList("players");
} }
public static PlayersLogs getInstance() { public static PlayersLogs getInstance() {
@ -25,6 +28,4 @@ public class PlayersLogs extends CustomConfiguration {
return pllog; return pllog;
} }
} }

View File

@ -45,13 +45,12 @@ public final class Settings extends YamlConfiguration {
private static List<String> getRestrictedIp; private static List<String> getRestrictedIp;
public static List<String> getMySQLOtherUsernameColumn = null; public static List<String> getMySQLOtherUsernameColumn = null;
public static List<String> getForcedWorlds = null; public static List<String> getForcedWorlds = null;
public final Plugin plugin; public final Plugin plugin;
private final File file; private final File file;
public static DataSourceType getDataSource; public static DataSourceType getDataSource;
public static HashAlgorithm getPasswordHash; public static HashAlgorithm getPasswordHash;
public static HashAlgorithm rakamakHash; public static HashAlgorithm rakamakHash;
public static Boolean useLogging = false;
public static Boolean isPermissionCheckEnabled, isRegistrationEnabled, isForcedRegistrationEnabled, public static Boolean isPermissionCheckEnabled, isRegistrationEnabled, isForcedRegistrationEnabled,
isTeleportToSpawnEnabled, isSessionsEnabled, isChatAllowed, isAllowRestrictedIp, isTeleportToSpawnEnabled, isSessionsEnabled, isChatAllowed, isAllowRestrictedIp,
@ -62,7 +61,6 @@ public final class Settings extends YamlConfiguration {
isBackupOnStop, enablePasspartu, isStopEnabled, reloadSupport, rakamakUseIp, noConsoleSpam, removePassword, displayOtherAccounts, isBackupOnStop, enablePasspartu, isStopEnabled, reloadSupport, rakamakUseIp, noConsoleSpam, removePassword, displayOtherAccounts,
useCaptcha, emailRegistration, multiverse, notifications, chestshop, bungee, banUnsafeIp, doubleEmailCheck, sessionExpireOnIpChange; useCaptcha, emailRegistration, multiverse, notifications, chestshop, bungee, banUnsafeIp, doubleEmailCheck, sessionExpireOnIpChange;
public static String getNickRegex, getUnloggedinGroup, getMySQLHost, getMySQLPort, public static String getNickRegex, getUnloggedinGroup, getMySQLHost, getMySQLPort,
getMySQLUsername, getMySQLPassword, getMySQLDatabase, getMySQLTablename, getMySQLUsername, getMySQLPassword, getMySQLDatabase, getMySQLTablename,
getMySQLColumnName, getMySQLColumnPassword, getMySQLColumnIp, getMySQLColumnLastLogin, getMySQLColumnName, getMySQLColumnPassword, getMySQLColumnIp, getMySQLColumnLastLogin,
@ -71,7 +69,6 @@ public final class Settings extends YamlConfiguration {
rakamakUsers, rakamakUsersIp, getmailAccount, getmailPassword, getmailSMTP, getMySQLColumnId, getmailSenderName, rakamakUsers, rakamakUsersIp, getmailAccount, getmailPassword, getmailSMTP, getMySQLColumnId, getmailSenderName,
getPredefinedSalt, getMailSubject, getMailText; getPredefinedSalt, getMailSubject, getMailText;
public static int getWarnMessageInterval, getSessionTimeout, getRegistrationTimeout, getMaxNickLength, public static int getWarnMessageInterval, getSessionTimeout, getRegistrationTimeout, getMaxNickLength,
getMinNickLength, getPasswordMinLen, getMovementRadius, getmaxRegPerIp, getNonActivatedGroup, getMinNickLength, getPasswordMinLen, getMovementRadius, getmaxRegPerIp, getNonActivatedGroup,
passwordMaxLength, getRecoveryPassLength, getMailPort, maxLoginTry, captchaLength, saltLength, getmaxRegPerEmail; passwordMaxLength, getRecoveryPassLength, getMailPort, maxLoginTry, captchaLength, saltLength, getmaxRegPerEmail;
@ -79,15 +76,8 @@ public final class Settings extends YamlConfiguration {
protected static YamlConfiguration configFile; protected static YamlConfiguration configFile;
public Settings(Plugin plugin) { public Settings(Plugin plugin) {
//super(new File(Settings.PLUGIN_FOLDER + "/config.yml"), this.plugin);
this.file = new File(plugin.getDataFolder(),"config.yml"); this.file = new File(plugin.getDataFolder(),"config.yml");
this.plugin = plugin; this.plugin = plugin;
//options().indent(4);
// Override to always indent 4 spaces
if(exists()) { if(exists()) {
load(); load();
} }
@ -95,19 +85,12 @@ public final class Settings extends YamlConfiguration {
loadDefaults(file.getName()); loadDefaults(file.getName());
load(); load();
} }
configFile = (YamlConfiguration) plugin.getConfig(); configFile = (YamlConfiguration) plugin.getConfig();
//saveDefaults();
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public void loadConfigOptions() { public void loadConfigOptions() {
plugin.getLogger().info("Loading Configuration File..."); plugin.getLogger().info("Loading Configuration File...");
mergeConfig(); mergeConfig();
messagesLanguage = checkLang(configFile.getString("settings.messagesLanguage","en")); messagesLanguage = checkLang(configFile.getString("settings.messagesLanguage","en"));
@ -220,16 +203,15 @@ public void loadConfigOptions() {
banUnsafeIp = configFile.getBoolean("settings.restrictions.banUnsafedIP", false); banUnsafeIp = configFile.getBoolean("settings.restrictions.banUnsafedIP", false);
doubleEmailCheck = configFile.getBoolean("settings.registration.doubleEmailCheck", false); doubleEmailCheck = configFile.getBoolean("settings.registration.doubleEmailCheck", false);
sessionExpireOnIpChange = configFile.getBoolean("settings.sessions.sessionExpireOnIpChange", false); sessionExpireOnIpChange = configFile.getBoolean("settings.sessions.sessionExpireOnIpChange", false);
useLogging = configFile.getBoolean("Security.console.logConsole", false);
saveDefaults(); saveDefaults();
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static void reloadConfigOptions(YamlConfiguration newConfig) { public static void reloadConfigOptions(YamlConfiguration newConfig) {
configFile = newConfig; configFile = newConfig;
//plugin.getLogger().info("RELoading Configuration File...");
messagesLanguage = checkLang(configFile.getString("settings.messagesLanguage","en")); messagesLanguage = checkLang(configFile.getString("settings.messagesLanguage","en"));
isPermissionCheckEnabled = configFile.getBoolean("permission.EnablePermissionCheck", false); isPermissionCheckEnabled = configFile.getBoolean("permission.EnablePermissionCheck", false);
isForcedRegistrationEnabled = configFile.getBoolean("settings.registration.force", true); isForcedRegistrationEnabled = configFile.getBoolean("settings.registration.force", true);
@ -340,114 +322,84 @@ public static void reloadConfigOptions(YamlConfiguration newConfig) {
banUnsafeIp = configFile.getBoolean("settings.restrictions.banUnsafedIP", false); banUnsafeIp = configFile.getBoolean("settings.restrictions.banUnsafedIP", false);
doubleEmailCheck = configFile.getBoolean("settings.registration.doubleEmailCheck", false); doubleEmailCheck = configFile.getBoolean("settings.registration.doubleEmailCheck", false);
sessionExpireOnIpChange = configFile.getBoolean("settings.sessions.sessionExpireOnIpChange", false); sessionExpireOnIpChange = configFile.getBoolean("settings.sessions.sessionExpireOnIpChange", false);
useLogging = configFile.getBoolean("Security.console.logConsole", false);
} }
public void mergeConfig() { public void mergeConfig() {
if (contains("settings.restrictions.allowedPluginTeleportHandler")) if (contains("settings.restrictions.allowedPluginTeleportHandler"))
set("settings.restrictions.allowedPluginTeleportHandler", null); set("settings.restrictions.allowedPluginTeleportHandler", null);
if(!contains("DataSource.mySQLColumnEmail")) if(!contains("DataSource.mySQLColumnEmail"))
set("DataSource.mySQLColumnEmail","email"); set("DataSource.mySQLColumnEmail","email");
if(contains("Email.GmailAccount")) { if(contains("Email.GmailAccount")) {
set("Email.mailAccount", getString("Email.GmailAccount")); set("Email.mailAccount", getString("Email.GmailAccount"));
set("Email.GmailAccount", null); set("Email.GmailAccount", null);
} }
if(contains("Email.GmailPassword")) { if(contains("Email.GmailPassword")) {
set("Email.mailPassword", getString("Email.GmailPassword")); set("Email.mailPassword", getString("Email.GmailPassword"));
set("Email.GmailPassword", null); set("Email.GmailPassword", null);
} }
if(!contains("Email.RecoveryPasswordLength")) if(!contains("Email.RecoveryPasswordLength"))
set("Email.RecoveryPasswordLength", 8); set("Email.RecoveryPasswordLength", 8);
if(!contains("Email.mailPort")) if(!contains("Email.mailPort"))
set("Email.mailPort", 465); set("Email.mailPort", 465);
if(!contains("Email.mailSMTP")) if(!contains("Email.mailSMTP"))
set("Email.mailSMTP", "smtp.gmail.com"); set("Email.mailSMTP", "smtp.gmail.com");
if(!contains("Email.mailAccount")) if(!contains("Email.mailAccount"))
set("Email.mailAccount", ""); set("Email.mailAccount", "");
if(!contains("Email.mailPassword")) if(!contains("Email.mailPassword"))
set("Email.mailPassword", ""); set("Email.mailPassword", "");
if(!contains("ExternalBoardOptions.mySQLOtherUsernameColumns")) if(!contains("ExternalBoardOptions.mySQLOtherUsernameColumns"))
set("ExternalBoardOptions.mySQLOtherUsernameColumns", new ArrayList<String>()); set("ExternalBoardOptions.mySQLOtherUsernameColumns", new ArrayList<String>());
if(!contains("settings.restrictions.displayOtherAccounts")) if(!contains("settings.restrictions.displayOtherAccounts"))
set("settings.restrictions.displayOtherAccounts", true); set("settings.restrictions.displayOtherAccounts", true);
if(!contains("DataSource.mySQLColumnId")) if(!contains("DataSource.mySQLColumnId"))
set("DataSource.mySQLColumnId", "id"); set("DataSource.mySQLColumnId", "id");
if(!contains("Email.mailSenderName")) if(!contains("Email.mailSenderName"))
set("Email.mailSenderName", ""); set("Email.mailSenderName", "");
if(!contains("Xenoforo.predefinedSalt")) if(!contains("Xenoforo.predefinedSalt"))
set("Xenoforo.predefinedSalt", ""); set("Xenoforo.predefinedSalt", "");
if(!contains("Security.captcha.useCaptcha")) if(!contains("Security.captcha.useCaptcha"))
set("Security.captcha.useCaptcha", false); set("Security.captcha.useCaptcha", false);
if(!contains("Security.captcha.maxLoginTry")) if(!contains("Security.captcha.maxLoginTry"))
set("Security.captcha.maxLoginTry", 5); set("Security.captcha.maxLoginTry", 5);
if(!contains("Security.captcha.captchaLength")) if(!contains("Security.captcha.captchaLength"))
set("Security.captcha.captchaLength", 5); set("Security.captcha.captchaLength", 5);
if(!contains("Email.mailSubject")) if(!contains("Email.mailSubject"))
set("Email.mailSubject", ""); set("Email.mailSubject", "");
if(!contains("Email.mailText")) if(!contains("Email.mailText"))
set("Email.mailText", "Dear <playername>, \n\n This is your new AuthMe password for the server : \n\n <servername> \n\n <generatedpass>\n\n Do not forget to change password after login! \n /changepassword <generatedpass> newPassword"); set("Email.mailText", "Dear <playername>, \n\n This is your new AuthMe password for the server : \n\n <servername> \n\n <generatedpass>\n\n Do not forget to change password after login! \n /changepassword <generatedpass> newPassword");
if(!contains("settings.registration.enableEmailRegistrationSystem")) if(!contains("settings.registration.enableEmailRegistrationSystem"))
set("settings.registration.enableEmailRegistrationSystem", false); set("settings.registration.enableEmailRegistrationSystem", false);
if(!contains("settings.security.doubleMD5SaltLength")) if(!contains("settings.security.doubleMD5SaltLength"))
set("settings.security.doubleMD5SaltLength", 8); set("settings.security.doubleMD5SaltLength", 8);
if(!contains("Email.maxRegPerEmail")) if(!contains("Email.maxRegPerEmail"))
set("Email.maxRegPerEmail", 1); set("Email.maxRegPerEmail", 1);
if(!contains("Hooks.multiverse")) { if(!contains("Hooks.multiverse")) {
set("Hooks.multiverse", true); set("Hooks.multiverse", true);
set("Hooks.chestshop", true); set("Hooks.chestshop", true);
set("Hooks.notifications", true); set("Hooks.notifications", true);
set("Hooks.bungeecord", false); set("Hooks.bungeecord", false);
} }
if(!contains("settings.restrictions.ForceSpawnOnTheseWorlds")) if(!contains("settings.restrictions.ForceSpawnOnTheseWorlds"))
set("settings.restrictions.ForceSpawnOnTheseWorlds", new ArrayList<String>()); set("settings.restrictions.ForceSpawnOnTheseWorlds", new ArrayList<String>());
if(!contains("settings.restrictions.banUnsafedIP")) if(!contains("settings.restrictions.banUnsafedIP"))
set("settings.restrictions.banUnsafedIP", false); set("settings.restrictions.banUnsafedIP", false);
if(!contains("settings.registration.doubleEmailCheck")) if(!contains("settings.registration.doubleEmailCheck"))
set("settings.registration.doubleEmailCheck", false); set("settings.registration.doubleEmailCheck", false);
if(!contains("settings.sessions.sessionExpireOnIpChange")) if(!contains("settings.sessions.sessionExpireOnIpChange"))
set("settings.sessions.sessionExpireOnIpChange", false); 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.getLogger().info("Merge new Config Options if needed..");
plugin.saveConfig(); plugin.saveConfig();
return; return;
} }
/**
*
*
*
*/
private static HashAlgorithm getPasswordHash() { private static HashAlgorithm getPasswordHash() {
String key = "settings.security.passwordHash"; String key = "settings.security.passwordHash";
try { try {
return PasswordSecurity.HashAlgorithm.valueOf(configFile.getString(key,"SHA256").toUpperCase()); return PasswordSecurity.HashAlgorithm.valueOf(configFile.getString(key,"SHA256").toUpperCase());
} catch (IllegalArgumentException ex) { } catch (IllegalArgumentException ex) {
@ -456,7 +408,6 @@ public void mergeConfig() {
} }
} }
private static HashAlgorithm getRakamakHash() { private static HashAlgorithm getRakamakHash() {
String key = "Converter.Rakamak.newPasswordHash"; String key = "Converter.Rakamak.newPasswordHash";
@ -468,14 +419,8 @@ public void mergeConfig() {
} }
} }
/**
*
*
*
*/
private static DataSourceType getDataSource() { private static DataSourceType getDataSource() {
String key = "DataSource.backend"; String key = "DataSource.backend";
try { try {
return DataSource.DataSourceType.valueOf(configFile.getString(key).toUpperCase()); return DataSource.DataSourceType.valueOf(configFile.getString(key).toUpperCase());
} catch (IllegalArgumentException ex) { } catch (IllegalArgumentException ex) {
@ -492,46 +437,31 @@ public void mergeConfig() {
public static Boolean getRestrictedIp(String name, String ip) { public static Boolean getRestrictedIp(String name, String ip) {
Iterator<String> iter = getRestrictedIp.iterator(); Iterator<String> iter = getRestrictedIp.iterator();
/* setup a few boolean variables to test the parameters */
Boolean trueonce = false; Boolean trueonce = false;
Boolean namefound = false; Boolean namefound = false;
while (iter.hasNext()) { while (iter.hasNext()) {
String[] args = iter.next().split(";"); String[] args = iter.next().split(";");
String testname = args[0]; String testname = args[0];
String testip = args[1]; 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) ) { if(testname.equalsIgnoreCase(name) ) {
namefound = true; namefound = true;
/* Check to see if the IP is the same */
if(testip.equalsIgnoreCase(ip)) { if(testip.equalsIgnoreCase(ip)) {
trueonce = true; trueonce = true;
}; };
} }
} }
// if the name is not found in the list let the user pass they are not being monitored
if ( namefound == false){ if ( namefound == false){
return true; return true;
} }
else { else {
// if the name and IP was found once in the list let the user pass they are in the config
if ( trueonce == true ){ if ( trueonce == true ){
return true; return true;
// otherwise nip them in the bud and THEY SHALL NOT PASS!
} else { } else {
return false; return false;
} }
} }
} }
/** /**
* Loads the configuration from disk * Loads the configuration from disk
* *
@ -599,11 +529,9 @@ public void mergeConfig() {
boolean success = save(); boolean success = save();
options().copyDefaults(false); options().copyDefaults(false);
options().copyHeader(false); options().copyHeader(false);
return success; return success;
} }
/** /**
* Clears current configuration defaults * Clears current configuration defaults
*/ */
@ -622,17 +550,9 @@ public void mergeConfig() {
} }
return getKeys(true).containsAll(getDefaults().getKeys(true)); 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) { public static String checkLang(String lang) {
for(messagesLang language: messagesLang.values()) { for(messagesLang language: messagesLang.values()) {
//System.out.println(language.toString());
if(lang.toLowerCase().contains(language.toString())) { if(lang.toLowerCase().contains(language.toString())) {
ConsoleLogger.info("Set Language: "+lang); ConsoleLogger.info("Set Language: "+lang);
return lang; return lang;
@ -645,4 +565,5 @@ public void mergeConfig() {
public enum messagesLang { public enum messagesLang {
en, de, br, cz, pl, fr, ru, hu, sk, es, zhtw, fi, zhcn en, de, br, cz, pl, fr, ru, hu, sk, es, zhtw, fi, zhcn
} }
} }

View File

@ -7,6 +7,10 @@ import java.util.List;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
/**
*
* @author Xephi59
*/
public class Spawn extends CustomConfiguration { public class Spawn extends CustomConfiguration {
private static Spawn spawn; private static Spawn spawn;
@ -31,7 +35,6 @@ public class Spawn extends CustomConfiguration {
set("spawn.pitch", ""); set("spawn.pitch", "");
save(); save();
} }
} }
public static Spawn getInstance() { public static Spawn getInstance() {
@ -65,4 +68,5 @@ public class Spawn extends CustomConfiguration {
return null; return null;
} }
} }
} }

View File

@ -21,7 +21,6 @@ public class SpoutCfg extends CustomConfiguration{
@SuppressWarnings("serial") @SuppressWarnings("serial")
private void loadDefaults() { private void loadDefaults() {
this.set("Spout GUI enabled", true); this.set("Spout GUI enabled", true);
//Login:
this.set("LoginScreen.enabled", true); this.set("LoginScreen.enabled", true);
this.set("LoginScreen.exit button", "Quit"); this.set("LoginScreen.exit button", "Quit");
this.set("LoginScreen.exit message", "Good Bye"); this.set("LoginScreen.exit message", "Good Bye");
@ -30,12 +29,9 @@ public class SpoutCfg extends CustomConfiguration{
this.set("LoginScreen.text", new ArrayList<String>() {{ this.set("LoginScreen.text", new ArrayList<String>() {{
add("Sample text"); add("Sample text");
add("Change this at spout.yml"); add("Change this at spout.yml");
add("------------------"); add("--- AuthMe Reloaded by ---");
add("AuthMe Reloaded by d4rkwarriors"); add("d4rkwarriors and Xephi59");
}}); }});
//Registration:
//this.set("RegistrationScreen.enabled",true);
} }
public static SpoutCfg getInstance() { public static SpoutCfg getInstance() {

View File

@ -43,17 +43,14 @@ public class MessageTask implements Runnable {
if (PlayerCache.getInstance().isAuthenticated(name)) { if (PlayerCache.getInstance().isAuthenticated(name)) {
return; return;
} }
for (Player player : plugin.getServer().getOnlinePlayers()) { for (Player player : plugin.getServer().getOnlinePlayers()) {
if (player.getName().toLowerCase().equals(name)) { if (player.getName().toLowerCase().equals(name)) {
player.sendMessage(msg); player.sendMessage(msg);
BukkitScheduler sched = plugin.getServer().getScheduler(); BukkitScheduler sched = plugin.getServer().getScheduler();
BukkitTask late = sched.runTaskLater(plugin, this, interval * 20); BukkitTask late = sched.runTaskLater(plugin, this, interval * 20);
if(LimboCache.getInstance().hasLimboPlayer(name)) { if(LimboCache.getInstance().hasLimboPlayer(name)) {
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(late.getTaskId()); LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(late.getTaskId());
} }
} }
} }
} }

View File

@ -50,13 +50,11 @@ public class TimeoutTask implements Runnable {
if (PlayerCache.getInstance().isAuthenticated(name)) { if (PlayerCache.getInstance().isAuthenticated(name)) {
return; return;
} }
for (Player player : plugin.getServer().getOnlinePlayers()) { for (Player player : plugin.getServer().getOnlinePlayers()) {
if (player.getName().toLowerCase().equals(name)) { if (player.getName().toLowerCase().equals(name)) {
if (LimboCache.getInstance().hasLimboPlayer(name)) { if (LimboCache.getInstance().hasLimboPlayer(name)) {
LimboPlayer inv = LimboCache.getInstance().getLimboPlayer(name); LimboPlayer inv = LimboCache.getInstance().getLimboPlayer(name);
player.getServer().getScheduler().cancelTask(inv.getTimeoutTaskId()); player.getServer().getScheduler().cancelTask(inv.getTimeoutTaskId());
if(playerCache.doesCacheExist(name)) { if(playerCache.doesCacheExist(name)) {
playerCache.removeCache(name); playerCache.removeCache(name);
} }

View File

@ -100,6 +100,7 @@ Security:
console: console:
noConsoleSpam: false noConsoleSpam: false
removePassword: true removePassword: true
logConsole: false
captcha: captcha:
useCaptcha: false useCaptcha: false
maxLoginTry: 5 maxLoginTry: 5

View File

@ -3,7 +3,7 @@ author: darkwarriros,Xephi
website: http://www.multiplayer-italia.com/ 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. 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 main: uk.org.whoami.authme.AuthMe
version: 2.7.13b2 version: 2.7.14
softdepend: [Vault, ChestShop, Spout, Multiverse-Core, Notifications, Citizens, CombatTag] softdepend: [Vault, ChestShop, Spout, Multiverse-Core, Notifications, Citizens, CombatTag]
commands: commands:
register: register:
@ -135,3 +135,6 @@ permissions:
authme.vip: authme.vip:
description: Allow vip slot when the server is full description: Allow vip slot when the server is full
default: op default: op
authme.admin.purgebannedplayers:
description: Purge banned players
default: op