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

@ -97,28 +97,26 @@ public class AuthMe extends JavaPlugin {
public HashMap<String, Integer> captcha = new HashMap<String, Integer>(); public HashMap<String, Integer> captcha = new HashMap<String, Integer>();
public HashMap<String, String> cap = new HashMap<String, String>(); public HashMap<String, String> cap = new HashMap<String, String>();
public MultiverseCore mv = null; public MultiverseCore mv = null;
@Override @Override
public void onEnable() { public void onEnable() {
instance = this; instance = this;
authme = instance; authme = instance;
citizens = new CitizensCommunicator(this); citizens = new CitizensCommunicator(this);
settings = new Settings(this); settings = new Settings(this);
settings.loadConfigOptions(); settings.loadConfigOptions();
setMessages(Messages.getInstance()); setMessages(Messages.getInstance());
pllog = PlayersLogs.getInstance(); pllog = PlayersLogs.getInstance();
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()) {
@ -127,22 +125,22 @@ public class AuthMe extends JavaPlugin {
} else { } else {
mail = null; mail = null;
} }
//Check Citizens Version //Check Citizens Version
citizensVersion(); citizensVersion();
//Check Combat Tag Version //Check Combat Tag Version
combatTag(); combatTag();
//Check Notifications //Check Notifications
checkNotifications(); checkNotifications();
//Check Multiverse //Check Multiverse
checkMultiverse(); checkMultiverse();
//Check ChestShop //Check ChestShop
checkChestShop(); checkChestShop();
/* /*
* Back style on start if avaible * Back style on start if avaible
*/ */
@ -151,7 +149,7 @@ public class AuthMe extends JavaPlugin {
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");
} }
/* /*
* Backend MYSQL - FILE - SQLITE * Backend MYSQL - FILE - SQLITE
*/ */
@ -230,11 +228,11 @@ public class AuthMe extends JavaPlugin {
if (Settings.isCachingEnabled) { if (Settings.isCachingEnabled) {
database = new CacheDataSource(this, database); database = new CacheDataSource(this, database);
} }
api = new API(this, database); api = new API(this, database);
management = new Management(database, this); management = new Management(database, this);
PluginManager pm = getServer().getPluginManager(); PluginManager pm = getServer().getPluginManager();
if (pm.isPluginEnabled("Spout")) { if (pm.isPluginEnabled("Spout")) {
pm.registerEvents(new AuthMeSpoutListener(database), this); pm.registerEvents(new AuthMeSpoutListener(database), this);
@ -247,8 +245,7 @@ public class AuthMe extends JavaPlugin {
pm.registerEvents(new AuthMeChestShopListener(database, this), this); pm.registerEvents(new AuthMeChestShopListener(database, this), this);
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,10 +254,11 @@ 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();
} }
} }
this.getCommand("authme").setExecutor(new AdminCommand(this, database)); this.getCommand("authme").setExecutor(new AdminCommand(this, database));
this.getCommand("register").setExecutor(new RegisterCommand(database, this)); this.getCommand("register").setExecutor(new RegisterCommand(database, this));
this.getCommand("login").setExecutor(new LoginCommand(this)); this.getCommand("login").setExecutor(new LoginCommand(this));
@ -270,11 +268,11 @@ public class AuthMe extends JavaPlugin {
this.getCommand("passpartu").setExecutor(new PasspartuCommand(database, this)); this.getCommand("passpartu").setExecutor(new PasspartuCommand(database, this));
this.getCommand("email").setExecutor(new EmailCommand(this, database)); this.getCommand("email").setExecutor(new EmailCommand(this, database));
this.getCommand("captcha").setExecutor(new CaptchaCommand(this)); this.getCommand("captcha").setExecutor(new CaptchaCommand(this));
if(!Settings.isForceSingleSessionEnabled) { if(!Settings.isForceSingleSessionEnabled) {
ConsoleLogger.showError("ATTENTION by disabling ForceSingleSession, your server protection is set to low"); ConsoleLogger.showError("ATTENTION by disabling ForceSingleSession, your server protection is set to low");
} }
if (Settings.reloadSupport) if (Settings.reloadSupport)
try { try {
if (!new File(getDataFolder() + File.separator + "players.yml").exists()) { if (!new File(getDataFolder() + File.separator + "players.yml").exists()) {
@ -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() {
@ -395,23 +385,17 @@ public class AuthMe extends JavaPlugin {
this.savePlayer(player); this.savePlayer(player);
} }
pllog.save(); pllog.save();
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());
@ -435,18 +418,17 @@ public class AuthMe extends JavaPlugin {
return; return;
} }
} }
public static AuthMe getInstance() { public static AuthMe getInstance() {
return instance; return instance;
} }
public void savePlayer(Player player) throws IllegalStateException, NullPointerException { public void savePlayer(Player player) throws IllegalStateException, NullPointerException {
try { try {
if ((citizens.isNPC(player, this)) || (Utils.getInstance().isUnrestricted(player)) || (CombatTagComunicator.isNPC(player))) { if ((citizens.isNPC(player, this)) || (Utils.getInstance().isUnrestricted(player)) || (CombatTagComunicator.isNPC(player))) {
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) {
@ -497,7 +476,7 @@ public class AuthMe extends JavaPlugin {
public Messages getMessages() { public Messages getMessages() {
return m; return m;
} }
public Player generateKickPlayer(Player[] players) { public Player generateKickPlayer(Player[] players) {
Player player = null; Player player = null;
int i; int i;
@ -509,7 +488,13 @@ 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) {
log.info("[AuthMe] " + message); if (AuthMe.getInstance().isEnabled()) {
log.info("[AuthMe] " + message);
if (Settings.useLogging) {
Calendar date = Calendar.getInstance();
final String actually = "[" + DateFormat.getDateInstance().format(date.getTime()) + ", " + date.get(Calendar.HOUR_OF_DAY) + ":" + date.get(Calendar.MINUTE) + ":" + date.get(Calendar.SECOND) + "] " + message;
Bukkit.getScheduler().runTaskAsynchronously(AuthMe.getInstance(), new Runnable() {
@Override
public void run() {
writeLog(actually);
}
});
}
}
} }
public static void showError(String message) { public static void showError(String message) {
log.severe("[AuthMe] ERROR: " + message); if (AuthMe.getInstance().isEnabled()) {
log.severe("[AuthMe] ERROR: " + message);
if (Settings.useLogging) {
Calendar date = Calendar.getInstance();
final String actually = "[" + DateFormat.getDateInstance().format(date.getTime()) + ", " + date.get(Calendar.HOUR_OF_DAY) + ":" + date.get(Calendar.MINUTE) + ":" + date.get(Calendar.SECOND) + "] ERROR : " + message;
Bukkit.getScheduler().runTaskAsynchronously(AuthMe.getInstance(), new Runnable() {
@Override
public void run() {
writeLog(actually);
}
});
}
}
} }
public static void writeLog(String string) {
try {
FileWriter fw = new FileWriter(AuthMe.getInstance().getDataFolder() + File.separator + "authme.log", true);
BufferedWriter w = null;
w = new BufferedWriter(fw);
w.write(string);
w.newLine();
w.close();
} catch (IOException e) {
ConsoleLogger.showError(e.getMessage());
}
}
} }

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;
@ -44,7 +45,7 @@ public class Management {
private boolean passpartu = false; private boolean passpartu = false;
public static RandomString rdm = new RandomString(Settings.captchaLength); public static RandomString rdm = new RandomString(Settings.captchaLength);
public PluginManager pm; public PluginManager pm;
public Management(DataSource database, AuthMe plugin) { public Management(DataSource database, AuthMe plugin) {
this.database = database; this.database = database;
this.plugin = plugin; this.plugin = plugin;
@ -57,342 +58,423 @@ public class Management {
this.plugin = plugin; this.plugin = plugin;
this.pm = plugin.getServer().getPluginManager(); this.pm = plugin.getServer().getPluginManager();
} }
public String performLogin(Player player, String password) {
String name = player.getName().toLowerCase();
String ip = player.getAddress().getAddress().getHostAddress();
if (Settings.bungee) {
try {
ip = BungeeCord.getInstance().getPlayer(player.getName()).getAddress().getAddress().getHostAddress();
} catch (NoClassDefFoundError ncdfe) {
ConsoleLogger.showError("Your BungeeCord version is outdated, you need a version with the latest API");
}
}
World world = player.getWorld();
Location spawnLoc = world.getSpawnLocation();
if (plugin.mv != null) {
try {
spawnLoc = plugin.mv.getMVWorldManager().getMVWorld(world).getSpawnLocation();
} catch (NullPointerException npe) {
} catch (ClassCastException cce) {
} catch (NoClassDefFoundError ncdfe) {
}
}
if (Spawn.getInstance().getLocation() != null)
spawnLoc = Spawn.getInstance().getLocation();
if (PlayerCache.getInstance().isAuthenticated(name)) {
return m._("logged_in");
}
if (!database.isAuthAvailable(player.getName().toLowerCase())) { public void performLogin(final Player player, final String password) {
return m._("user_unknown"); final String name = player.getName().toLowerCase();
}
PlayerAuth pAuth = database.getAuth(name);
// if Mysql is unavaible
if(pAuth == null)
return m._("user_unknown");
//if columnGroup is set
if(!Settings.getMySQLColumnGroup.isEmpty() && pAuth.getGroupId() == Settings.getNonActivatedGroup) {
return m._("vb_nonActiv");
}
String hash = pAuth.getHash();
String email = pAuth.getEmail();
try { Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
if(!passpartu) {
if (Settings.useCaptcha) {
if(!plugin.captcha.containsKey(name)) {
plugin.captcha.put(name, 1);
} else {
int i = plugin.captcha.get(name) + 1;
plugin.captcha.remove(name);
plugin.captcha.put(name, i);
}
if(plugin.captcha.containsKey(name) && plugin.captcha.get(name) > Settings.maxLoginTry) {
player.sendMessage(m._("need_captcha"));
plugin.cap.put(name, rdm.nextString());
return "Type : /captcha " + plugin.cap.get(name);
} else if (plugin.captcha.containsKey(name) && plugin.captcha.get(name) > Settings.maxLoginTry) {
try {
plugin.captcha.remove(name);
plugin.cap.remove(name);
} catch (NullPointerException npe) {
}
} @Override
} public void run() {
if (PasswordSecurity.comparePasswordWithHash(password, hash, name)) { String ip = player.getAddress().getAddress().getHostAddress();
PlayerAuth auth = new PlayerAuth(name, hash, ip, new Date().getTime(), email); if (Settings.bungee) {
try {
database.updateSession(auth); for (ProxiedPlayer pp : BungeeCord.getInstance().getPlayers()) {
PlayerCache.getInstance().addPlayer(auth); if (pp.getName().toLowerCase() == name) {
LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name); ip = pp.getAddress().getAddress().getHostAddress();
if (limbo != null) { break;
}
}
} catch (NoClassDefFoundError ncdfe) {
}
}
World world = player.getWorld();
Location spawnLoc = world.getSpawnLocation();
if (plugin.mv != null) {
try {
spawnLoc = plugin.mv.getMVWorldManager().getMVWorld(world).getSpawnLocation();
} catch (NullPointerException npe) {
} catch (ClassCastException cce) {
} catch (NoClassDefFoundError ncdfe) {
}
}
if (Spawn.getInstance().getLocation() != null)
spawnLoc = Spawn.getInstance().getLocation();
if (PlayerCache.getInstance().isAuthenticated(name)) {
player.sendMessage(m._("logged_in"));
return;
}
if (!database.isAuthAvailable(player.getName().toLowerCase())) {
player.sendMessage(m._("user_unknown"));
return;
}
PlayerAuth pAuth = database.getAuth(name);
if(pAuth == null) {
player.sendMessage(m._("user_unknown"));
return;
}
if(!Settings.getMySQLColumnGroup.isEmpty() && pAuth.getGroupId() == Settings.getNonActivatedGroup) {
player.sendMessage(m._("vb_nonActiv"));
return;
}
String hash = pAuth.getHash();
String email = pAuth.getEmail();
try {
if(!passpartu) {
if (Settings.useCaptcha) {
if(!plugin.captcha.containsKey(name)) {
plugin.captcha.put(name, 1);
} else {
int i = plugin.captcha.get(name) + 1;
plugin.captcha.remove(name);
plugin.captcha.put(name, i);
}
if(plugin.captcha.containsKey(name) && plugin.captcha.get(name) > Settings.maxLoginTry) {
player.sendMessage(m._("need_captcha"));
plugin.cap.put(name, rdm.nextString());
player.sendMessage("Type : /captcha " + plugin.cap.get(name));
return;
} else if (plugin.captcha.containsKey(name) && plugin.captcha.get(name) > Settings.maxLoginTry) {
try {
plugin.captcha.remove(name);
plugin.cap.remove(name);
} catch (NullPointerException npe) {
}
}
}
if (PasswordSecurity.comparePasswordWithHash(password, hash, name)) {
PlayerAuth auth = new PlayerAuth(name, hash, ip, new Date().getTime(), email);
database.updateSession(auth);
PlayerCache.getInstance().addPlayer(auth);
final LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name);
PlayerAuth getAuth = database.getAuth(name);
if (limbo != null) {
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.setOp(limbo.getOperator());
}
});
utils.addNormal(player, limbo.getGroup());
player.setOp(limbo.getOperator());
this.utils.addNormal(player, limbo.getGroup());
if ((Settings.isTeleportToSpawnEnabled) && (!Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())))
{
if ((Settings.isSaveQuitLocationEnabled) && (this.database.getAuth(name).getQuitLocY() != 0))
{
this.utils.packCoords(this.database.getAuth(name).getQuitLocX(), this.database.getAuth(name).getQuitLocY(), this.database.getAuth(name).getQuitLocZ(), player);
}
else {
AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc()); if ((Settings.isTeleportToSpawnEnabled) && (!Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())))
pm.callEvent(tpEvent); {
if(!tpEvent.isCancelled()) { if ((Settings.isSaveQuitLocationEnabled) && (getAuth.getQuitLocY() != 0))
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); utils.packCoords(getAuth.getQuitLocX(), getAuth.getQuitLocY(), getAuth.getQuitLocZ(), player);
} }
player.teleport(tpEvent.getTo()); else {
}
}
}
else if (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())) {
SpawnTeleportEvent tpEvent = new SpawnTeleportEvent(player, player.getLocation(), spawnLoc, true);
pm.callEvent(tpEvent);
if(!tpEvent.isCancelled()) {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
}
player.teleport(tpEvent.getTo());
}
}
else if ((Settings.isSaveQuitLocationEnabled) && (this.database.getAuth(name).getQuitLocY() != 0))
{
this.utils.packCoords(this.database.getAuth(name).getQuitLocX(), this.database.getAuth(name).getQuitLocY(), this.database.getAuth(name).getQuitLocZ(), player);
}
else {
AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc());
pm.callEvent(tpEvent);
if(!tpEvent.isCancelled()) {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
}
player.teleport(tpEvent.getTo());
}
}
player.setGameMode(GameMode.getByValue(limbo.getGameMode()));
if (Settings.protectInventoryBeforeLogInEnabled && player.hasPlayedBefore()) {
RestoreInventoryEvent event = new RestoreInventoryEvent(player, limbo.getInventory(), limbo.getArmour());
Bukkit.getServer().getPluginManager().callEvent(event);
if (!event.isCancelled()) {
API.setPlayerInventory(player, limbo.getInventory(), limbo.getArmour());
}
}
AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc());
player.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId()); pm.callEvent(tpEvent);
player.getServer().getScheduler().cancelTask(limbo.getMessageTaskId()); if(!tpEvent.isCancelled()) {
LimboCache.getInstance().deleteLimboPlayer(name); if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
if (this.playerCache.doesCacheExist(name)) { tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
this.playerCache.removeCache(name); }
} final Location fLoc = tpEvent.getTo();
Bukkit.getScheduler().runTask(plugin, new Runnable() {
} @Override
public void run() {
/* player.teleport(fLoc);
* Little Work Around under Registration Group Switching for admins that }
* add Registration thru a web Scripts. });
*/ }
if ( Settings.isPermissionCheckEnabled && AuthMe.permission.playerInGroup(player, Settings.unRegisteredGroup) && !Settings.unRegisteredGroup.isEmpty() ) { }
AuthMe.permission.playerRemoveGroup(player.getWorld(), player.getName(), Settings.unRegisteredGroup); }
AuthMe.permission.playerAddGroup(player.getWorld(), player.getName(), Settings.getRegisteredGroup); else if (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())) {
} SpawnTeleportEvent tpEvent = new SpawnTeleportEvent(player, player.getLocation(), spawnLoc, true);
pm.callEvent(tpEvent);
try { if(!tpEvent.isCancelled()) {
if (!PlayersLogs.players.contains(player.getName())) if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
PlayersLogs.players.add(player.getName()); tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
pllog.save(); }
} catch (NullPointerException ex) { final Location fLoc = tpEvent.getTo();
Bukkit.getScheduler().runTask(plugin, new Runnable() {
} @Override
public void run() {
Bukkit.getServer().getPluginManager().callEvent(new LoginEvent(player, true)); player.teleport(fLoc);
if (Settings.useCaptcha) { }
if(plugin.captcha.containsKey(name)) { });
plugin.captcha.remove(name); }
} }
if(plugin.cap.containsKey(name)) { else if ((Settings.isSaveQuitLocationEnabled) && (getAuth.getQuitLocY() != 0))
plugin.cap.containsKey(name); {
} utils.packCoords(getAuth.getQuitLocX(), getAuth.getQuitLocY(), getAuth.getQuitLocZ(), player);
} }
player.sendMessage(m._("login")); else {
displayOtherAccounts(auth); AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc());
if(!Settings.noConsoleSpam) pm.callEvent(tpEvent);
ConsoleLogger.info(player.getName() + " logged in!"); if(!tpEvent.isCancelled()) {
if(plugin.notifications != null) { if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " logged in!")); tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
} }
player.saveData(); final Location fLoc = tpEvent.getTo();
Bukkit.getScheduler().runTask(plugin, new Runnable() {
} else { @Override
if (!Settings.noConsoleSpam) public void run() {
ConsoleLogger.info(player.getName() + " used the wrong password"); player.teleport(fLoc);
if (Settings.isKickOnWrongPasswordEnabled) { }
try { });
int gm = AuthMePlayerListener.gameMode.get(name); }
player.setGameMode(GameMode.getByValue(gm)); }
} catch (NullPointerException npe) {}
player.kickPlayer(m._("wrong_pwd"));
} else {
return (m._("wrong_pwd"));
}
}
} else {
// need for bypass password check if passpartu command is enabled
PlayerAuth auth = new PlayerAuth(name, hash, ip, new Date().getTime(), email);
database.updateSession(auth);
PlayerCache.getInstance().addPlayer(auth);
LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name);
if (limbo != null) {
Bukkit.getScheduler().runTask(plugin, new Runnable() {
player.setOp(limbo.getOperator()); @Override
public void run() {
this.utils.addNormal(player, limbo.getGroup()); player.setGameMode(GameMode.getByValue(limbo.getGameMode()));
}
});
if ((Settings.isTeleportToSpawnEnabled) && (!Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName()))) if (Settings.protectInventoryBeforeLogInEnabled && player.hasPlayedBefore()) {
{ RestoreInventoryEvent event = new RestoreInventoryEvent(player, limbo.getInventory(), limbo.getArmour());
if ((Settings.isSaveQuitLocationEnabled) && (this.database.getAuth(name).getQuitLocY() != 0)) { Bukkit.getServer().getPluginManager().callEvent(event);
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); if (!event.isCancelled()) {
AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, quitLoc); API.setPlayerInventory(player, limbo.getInventory(), limbo.getArmour());
pm.callEvent(tpEvent); }
if(!tpEvent.isCancelled()) { }
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); player.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId());
} player.getServer().getScheduler().cancelTask(limbo.getMessageTaskId());
player.teleport(tpEvent.getTo()); LimboCache.getInstance().deleteLimboPlayer(name);
} if (playerCache.doesCacheExist(name)) {
} playerCache.removeCache(name);
else }
{ }
AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc());
pm.callEvent(tpEvent); /*
if(!tpEvent.isCancelled()) { * Little Work Around under Registration Group Switching for admins that
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) { * add Registration thru a web Scripts.
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); */
} if ( Settings.isPermissionCheckEnabled && AuthMe.permission.playerInGroup(player, Settings.unRegisteredGroup) && !Settings.unRegisteredGroup.isEmpty() ) {
player.teleport(tpEvent.getTo()); AuthMe.permission.playerRemoveGroup(player.getWorld(), player.getName(), Settings.unRegisteredGroup);
} AuthMe.permission.playerAddGroup(player.getWorld(), player.getName(), Settings.getRegisteredGroup);
} }
} try {
else if (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())) { if (!PlayersLogs.players.contains(player.getName()))
PlayersLogs.players.add(player.getName());
pllog.save();
} catch (NullPointerException ex) {
}
Bukkit.getServer().getPluginManager().callEvent(new LoginEvent(player, true));
if (Settings.useCaptcha) {
if(plugin.captcha.containsKey(name)) {
plugin.captcha.remove(name);
}
if(plugin.cap.containsKey(name)) {
plugin.cap.containsKey(name);
}
}
player.sendMessage(m._("login"));
displayOtherAccounts(auth);
if(!Settings.noConsoleSpam)
ConsoleLogger.info(player.getName() + " logged in!");
if(plugin.notifications != null) {
plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " logged in!"));
}
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.saveData();
}
});
} else {
if (!Settings.noConsoleSpam)
ConsoleLogger.info(player.getName() + " used the wrong password");
if (Settings.isKickOnWrongPasswordEnabled) {
try {
final int gm = AuthMePlayerListener.gameMode.get(name);
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.setGameMode(GameMode.getByValue(gm));
}
});
} catch (NullPointerException npe) {}
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.kickPlayer(m._("wrong_pwd"));
}
});
} else {
player.sendMessage(m._("wrong_pwd"));
return;
}
}
} else {
// need for bypass password check if passpartu command is enabled
PlayerAuth auth = new PlayerAuth(name, hash, ip, new Date().getTime(), email);
database.updateSession(auth);
PlayerCache.getInstance().addPlayer(auth);
final LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name);
if (limbo != null) {
Bukkit.getScheduler().runTask(plugin, new Runnable(){
@Override
public void run() {
player.setOp(limbo.getOperator());
}
});
utils.addNormal(player, limbo.getGroup());
if ((Settings.isTeleportToSpawnEnabled) && (!Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())))
{
if ((Settings.isSaveQuitLocationEnabled) && (database.getAuth(name).getQuitLocY() != 0)) {
Location quitLoc = new Location(player.getWorld(), database.getAuth(name).getQuitLocX() + 0.5D, database.getAuth(name).getQuitLocY() + 0.5D, database.getAuth(name).getQuitLocZ() + 0.5D);
AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, quitLoc);
pm.callEvent(tpEvent);
if(!tpEvent.isCancelled()) {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
}
final Location fLoc = tpEvent.getTo();
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.teleport(fLoc);
}
});
}
}
else
{
AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc());
pm.callEvent(tpEvent);
if(!tpEvent.isCancelled()) {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
}
final Location fLoc = tpEvent.getTo();
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.teleport(fLoc);
}
});
}
}
}
else if (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())) {
SpawnTeleportEvent tpEvent = new SpawnTeleportEvent(player, player.getLocation(), spawnLoc, true);
pm.callEvent(tpEvent);
if(!tpEvent.isCancelled()) {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
}
final Location fLoc = tpEvent.getTo();
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.teleport(fLoc);
}
});
}
}
else if ((Settings.isSaveQuitLocationEnabled) && (database.getAuth(name).getQuitLocY() != 0)) {
Location quitLoc = new Location(player.getWorld(), database.getAuth(name).getQuitLocX() + 0.5D, database.getAuth(name).getQuitLocY() + 0.5D, database.getAuth(name).getQuitLocZ() + 0.5D);
AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, quitLoc);
pm.callEvent(tpEvent);
if(!tpEvent.isCancelled()) {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
}
final Location fLoc = tpEvent.getTo();
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.teleport(fLoc);
}
});
}
}
else
{
AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc());
pm.callEvent(tpEvent);
if(!tpEvent.isCancelled()) {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
}
final Location fLoc = tpEvent.getTo();
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.teleport(fLoc);
}
});
}
}
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.setGameMode(GameMode.getByValue(limbo.getGameMode()));
}
});
if (Settings.protectInventoryBeforeLogInEnabled && player.hasPlayedBefore()) {
RestoreInventoryEvent event = new RestoreInventoryEvent(player, limbo.getInventory(), limbo.getArmour());
Bukkit.getServer().getPluginManager().callEvent(event);
if (!event.isCancelled()) {
API.setPlayerInventory(player, limbo.getInventory(), limbo.getArmour());
}
}
player.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId());
player.getServer().getScheduler().cancelTask(limbo.getMessageTaskId());
LimboCache.getInstance().deleteLimboPlayer(name);
if (playerCache.doesCacheExist(name)) {
playerCache.removeCache(name);
}
}
/*
* Little Work Around under Registration Group Switching for admins that
* add Registration thru a web Scripts.
*/
if ( Settings.isPermissionCheckEnabled && AuthMe.permission.playerInGroup(player, Settings.unRegisteredGroup) && !Settings.unRegisteredGroup.isEmpty() ) {
AuthMe.permission.playerRemoveGroup(player.getWorld(), player.getName(), Settings.unRegisteredGroup);
AuthMe.permission.playerAddGroup(player.getWorld(), player.getName(), Settings.getRegisteredGroup);
}
try {
if (!PlayersLogs.players.contains(player.getName()))
PlayersLogs.players.add(player.getName());
pllog.save();
} catch (NullPointerException ex) { }
Bukkit.getServer().getPluginManager().callEvent(new LoginEvent(player, true));
if (Settings.useCaptcha) {
if(plugin.captcha.containsKey(name)) {
plugin.captcha.remove(name);
}
if(plugin.cap.containsKey(name)) {
plugin.cap.containsKey(name);
}
}
player.sendMessage(m._("login"));
displayOtherAccounts(auth);
if(!Settings.noConsoleSpam)
ConsoleLogger.info(player.getName() + " logged in!");
if(plugin.notifications != null) {
plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " logged in!"));
}
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
player.saveData();
}
});
passpartu = false;
}
} catch (NoSuchAlgorithmException ex) {
ConsoleLogger.showError(ex.getMessage());
player.sendMessage(m._("error"));
return;
}
return;
}
});
SpawnTeleportEvent tpEvent = new SpawnTeleportEvent(player, player.getLocation(), spawnLoc, true);
pm.callEvent(tpEvent);
if(!tpEvent.isCancelled()) {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
}
player.teleport(tpEvent.getTo());
}
}
else if ((Settings.isSaveQuitLocationEnabled) && (this.database.getAuth(name).getQuitLocY() != 0)) {
Location quitLoc = new Location(player.getWorld(), this.database.getAuth(name).getQuitLocX() + 0.5D, this.database.getAuth(name).getQuitLocY() + 0.5D, this.database.getAuth(name).getQuitLocZ() + 0.5D);
AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, quitLoc);
pm.callEvent(tpEvent);
if(!tpEvent.isCancelled()) {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
}
player.teleport(tpEvent.getTo());
}
}
else
{
AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(player, limbo.getLoc());
pm.callEvent(tpEvent);
if(!tpEvent.isCancelled()) {
if (!tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).isLoaded()) {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
}
player.teleport(tpEvent.getTo());
}
}
player.setGameMode(GameMode.getByValue(limbo.getGameMode()));
if (Settings.protectInventoryBeforeLogInEnabled && player.hasPlayedBefore()) {
RestoreInventoryEvent event = new RestoreInventoryEvent(player, limbo.getInventory(), limbo.getArmour());
Bukkit.getServer().getPluginManager().callEvent(event);
if (!event.isCancelled()) {
API.setPlayerInventory(player, limbo.getInventory(), limbo.getArmour());
}
}
player.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId());
player.getServer().getScheduler().cancelTask(limbo.getMessageTaskId());
LimboCache.getInstance().deleteLimboPlayer(name);
if (this.playerCache.doesCacheExist(name)) {
this.playerCache.removeCache(name);
}
}
/*
* Little Work Around under Registration Group Switching for admins that
* add Registration thru a web Scripts.
*/
if ( Settings.isPermissionCheckEnabled && AuthMe.permission.playerInGroup(player, Settings.unRegisteredGroup) && !Settings.unRegisteredGroup.isEmpty() ) {
AuthMe.permission.playerRemoveGroup(player.getWorld(), player.getName(), Settings.unRegisteredGroup);
AuthMe.permission.playerAddGroup(player.getWorld(), player.getName(), Settings.getRegisteredGroup);
}
try {
if (!PlayersLogs.players.contains(player.getName()))
PlayersLogs.players.add(player.getName());
pllog.save();
} catch (NullPointerException ex) { }
Bukkit.getServer().getPluginManager().callEvent(new LoginEvent(player, true));
if (Settings.useCaptcha) {
if(plugin.captcha.containsKey(name)) {
plugin.captcha.remove(name);
}
if(plugin.cap.containsKey(name)) {
plugin.cap.containsKey(name);
}
}
player.sendMessage(m._("login"));
displayOtherAccounts(auth);
if(!Settings.noConsoleSpam)
ConsoleLogger.info(player.getName() + " logged in!");
if(plugin.notifications != null) {
plugin.notifications.showNotification(new Notification("[AuthMe] " + player.getName() + " logged in!"));
}
player.saveData();
this.passpartu = false;
}
} catch (NoSuchAlgorithmException ex) {
ConsoleLogger.showError(ex.getMessage());
return (m._("error"));
}
return "";
} }
private void displayOtherAccounts(PlayerAuth auth) { private void displayOtherAccounts(PlayerAuth auth) {
if (!Settings.displayOtherAccounts) { if (!Settings.displayOtherAccounts) {
return; return;
@ -417,7 +499,7 @@ public class Management {
} else { } else {
message = message + "."; message = message + ".";
} }
} }
for (Player player : AuthMe.getInstance().getServer().getOnlinePlayers()) { for (Player player : AuthMe.getInstance().getServer().getOnlinePlayers()) {
if (player.hasPermission("authme.seeOtherAccounts")) { if (player.hasPermission("authme.seeOtherAccounts")) {
@ -426,6 +508,5 @@ 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;
@ -20,7 +19,7 @@ import uk.org.whoami.authme.settings.Settings;
* @author stefano * @author stefano
*/ */
public class PerformBackup { public class PerformBackup {
private String dbName = Settings.getMySQLDatabase; private String dbName = Settings.getMySQLDatabase;
private String dbUserName = Settings.getMySQLUsername; private String dbUserName = Settings.getMySQLUsername;
private String dbPassword = Settings.getMySQLPassword; private String dbPassword = Settings.getMySQLPassword;
@ -29,14 +28,13 @@ public class PerformBackup {
String dateString = format.format( new Date() ); String dateString = format.format( new Date() );
private String path = AuthMe.getInstance().getDataFolder()+"/backups/backup"+dateString; private String path = AuthMe.getInstance().getDataFolder()+"/backups/backup"+dateString;
private AuthMe instance; private AuthMe instance;
public PerformBackup(AuthMe instance) { public PerformBackup(AuthMe instance) {
this.setInstance(instance); this.setInstance(instance);
} }
public boolean DoBackup() { public boolean DoBackup() {
switch(Settings.getDataSource) { switch(Settings.getDataSource) {
case FILE: return FileBackup("auths.db"); case FILE: return FileBackup("auths.db");
@ -45,24 +43,21 @@ public class PerformBackup {
case SQLITE: return FileBackup(Settings.getMySQLDatabase+".db"); case SQLITE: return FileBackup(Settings.getMySQLDatabase+".db");
} }
return false; return false;
} }
private boolean MySqlBackup() { private boolean MySqlBackup() {
File dirBackup = new File(AuthMe.getInstance().getDataFolder()+"/backups"); File dirBackup = new File(AuthMe.getInstance().getDataFolder()+"/backups");
if(!dirBackup.exists()) if(!dirBackup.exists())
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;
@ -92,35 +85,30 @@ public class PerformBackup {
} }
return false; return false;
} }
private boolean FileBackup(String backend) { private boolean FileBackup(String backend) {
File dirBackup = new File(AuthMe.getInstance().getDataFolder()+"/backups"); File dirBackup = new File(AuthMe.getInstance().getDataFolder()+"/backups");
if(!dirBackup.exists()) if(!dirBackup.exists())
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;
} }
/* /*
* Check if we are under Windows and correct location * Check if we are under Windows and correct location
* of mysqldump.exe otherwise return error. * of mysqldump.exe otherwise return error.
*/ */
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;
} }
/* /*
@ -156,5 +142,5 @@ public void setInstance(AuthMe instance) {
public AuthMe getInstance() { public AuthMe getInstance() {
return instance; return instance;
} }
} }

View File

@ -14,24 +14,28 @@ 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;
public SendMailSSL(AuthMe instance) { public SendMailSSL(AuthMe instance) {
this.instance = instance; this.instance = instance;
} }
public void main(final PlayerAuth auth, final String newPass) { public void main(final PlayerAuth auth, final String newPass) {
String sendername; String sendername;
if (Settings.getmailSenderName.isEmpty() || Settings.getmailSenderName == null) { if (Settings.getmailSenderName.isEmpty() || Settings.getmailSenderName == null) {
sendername = Settings.getmailAccount; sendername = Settings.getmailAccount;
} else { } else {
sendername = Settings.getmailSenderName; sendername = Settings.getmailSenderName;
} }
Properties props = new Properties(); Properties props = new Properties();
props.put("mail.smtp.host", Settings.getmailSMTP); props.put("mail.smtp.host", Settings.getmailSMTP);
props.put("mail.smtp.socketFactory.port", String.valueOf(Settings.getMailPort)); props.put("mail.smtp.socketFactory.port", String.valueOf(Settings.getMailPort));
@ -39,7 +43,7 @@ public class SendMailSSL {
"javax.net.ssl.SSLSocketFactory"); "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true"); props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", String.valueOf(Settings.getMailPort)); props.put("mail.smtp.port", String.valueOf(Settings.getMailPort));
Session session = Session.getInstance(props, Session session = Session.getInstance(props,
new javax.mail.Authenticator() { new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() { protected PasswordAuthentication getPasswordAuthentication() {
@ -48,7 +52,7 @@ public class SendMailSSL {
}); });
try { try {
final Message message = new MimeMessage(session); final Message message = new MimeMessage(session);
try { try {
message.setFrom(new InternetAddress(Settings.getmailAccount, sendername)); message.setFrom(new InternetAddress(Settings.getmailAccount, sendername));
@ -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,23 +24,17 @@ 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;
if(!Settings.isPermissionCheckEnabled) if(!Settings.isPermissionCheckEnabled)
return; return;
switch(group) { switch(group) {
case UNREGISTERED: { case UNREGISTERED: {
currentGroup = AuthMe.permission.getPrimaryGroup(player); currentGroup = AuthMe.permission.getPrimaryGroup(player);
@ -57,95 +51,74 @@ public class Utils {
} }
return; return;
} }
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(); if(AuthMe.permission.playerHas(player, permission)){
// System.out.println("permissions? "+ permission); AuthMe.permission.playerAddTransient(player, permission);
}
if(AuthMe.permission.playerHas(player, permission)){ }
// System.out.println("player has permissions " +permission); return null;
AuthMe.permission.playerAddTransient(player, permission);
}
}
return null;
} }
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() {
singleton = new Utils(); singleton = new Utils();
return singleton; return singleton;
} }
private boolean useGroupSystem() { private boolean useGroupSystem() {
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);
@ -154,31 +127,25 @@ public class Utils {
tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load(); tpEvent.getTo().getWorld().getChunkAt(tpEvent.getTo()).load();
pl.teleport(tpEvent.getTo()); pl.teleport(tpEvent.getTo());
} }
id = Bukkit.getScheduler().runTaskTimer(AuthMe.authme, new Runnable() id = Bukkit.getScheduler().runTaskTimer(AuthMe.authme, new Runnable()
{ {
@Override @Override
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,34 +172,27 @@ public class Utils {
} catch(Exception e) { } catch(Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return false; return false;
} }
/* /*
* Read Toekn * Read Toekn
*/ */
public boolean readToken(String inputToken) { public boolean readToken(String inputToken) {
File file = new File("plugins/AuthMe/passpartu.token"); File file = new File("plugins/AuthMe/passpartu.token");
if (!file.exists()) if (!file.exists())
return false; return false;
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;
} }
@ -251,19 +210,18 @@ public class Utils {
* Generate Random Token * Generate Random Token
*/ */
private String generateToken() { private String generateToken() {
// 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

@ -19,10 +19,10 @@ import uk.org.whoami.authme.security.PasswordSecurity.HashAlgorithm;
import uk.org.whoami.authme.settings.Settings; import uk.org.whoami.authme.settings.Settings;
public class API { public class API {
public AuthMe instance; public AuthMe instance;
public DataSource database; public DataSource database;
public API(AuthMe instance, DataSource database) { public API(AuthMe instance, DataSource database) {
this.instance = instance; this.instance = instance;
this.database = database; this.database = database;
@ -42,7 +42,7 @@ public class API {
public AuthMe getPlugin() { public AuthMe getPlugin() {
return instance; return instance;
} }
/** /**
* *
* @param player * @param player
@ -51,7 +51,7 @@ public class API {
public static boolean isAuthenticated(Player player) { public static boolean isAuthenticated(Player player) {
return PlayerCache.getInstance().isAuthenticated(player.getName()); return PlayerCache.getInstance().isAuthenticated(player.getName());
} }
/** /**
* *
* @param player * @param player
@ -60,7 +60,7 @@ public class API {
public boolean isaNPC(Player player) { public boolean isaNPC(Player player) {
return instance.getCitizensCommunicator().isNPC(player, instance); return instance.getCitizensCommunicator().isNPC(player, instance);
} }
/** /**
* *
* @param player * @param player
@ -69,43 +69,43 @@ public class API {
public static boolean isUnrestricted(Player player) { public static boolean isUnrestricted(Player player) {
return Utils.getInstance().isUnrestricted(player); return Utils.getInstance().isUnrestricted(player);
} }
public static boolean isChatAllowed() { public static boolean isChatAllowed() {
return Settings.isChatAllowed; return Settings.isChatAllowed;
} }
public static boolean isAllowRestrictedIp() { public static boolean isAllowRestrictedIp() {
return Settings.isAllowRestrictedIp; return Settings.isAllowRestrictedIp;
} }
public static boolean isBackupActivated() { public static boolean isBackupActivated() {
return Settings.isBackupActivated; return Settings.isBackupActivated;
} }
public static boolean isForceSpawnLocOnJoinEnabled() { public static boolean isForceSpawnLocOnJoinEnabled() {
return Settings.isForceSpawnLocOnJoinEnabled; return Settings.isForceSpawnLocOnJoinEnabled;
} }
public static DataSourceType getDataSource() { public static DataSourceType getDataSource() {
return Settings.getDataSource; return Settings.getDataSource;
} }
public static int getMovementRadius() { public static int getMovementRadius() {
return Settings.getMovementRadius; return Settings.getMovementRadius;
} }
public static List<String> getJoinPermissions() { public static List<String> getJoinPermissions() {
return Settings.getJoinPermissions; return Settings.getJoinPermissions;
} }
public static Boolean isPasspartuEnable() { public static Boolean isPasspartuEnable() {
return Settings.enablePasspartu; return Settings.enablePasspartu;
} }
public static String getcUnrestrictedName() { public static String getcUnrestrictedName() {
return Settings.getcUnrestrictedName; return Settings.getcUnrestrictedName;
} }
public static Boolean getEnablePasswordVerifier() { public static Boolean getEnablePasswordVerifier() {
return Settings.getEnablePasswordVerifier; return Settings.getEnablePasswordVerifier;
} }
@ -113,11 +113,11 @@ public class API {
public static int getMaxNickLength() { public static int getMaxNickLength() {
return Settings.getMaxNickLength; return Settings.getMaxNickLength;
} }
public static int getMinNickLength() { public static int getMinNickLength() {
return Settings.getMinNickLength; return Settings.getMinNickLength;
} }
public static Array getLastLocationColumns() { public static Array getLastLocationColumns() {
Array columns = null; Array columns = null;
Array.set(columns, 0, Settings.getMySQLlastlocX); Array.set(columns, 0, Settings.getMySQLlastlocX);
@ -125,7 +125,7 @@ public class API {
Array.set(columns, 2, Settings.getMySQLlastlocZ); Array.set(columns, 2, Settings.getMySQLlastlocZ);
return columns; return columns;
} }
public static Location getLastLocation(Player player) { public static Location getLastLocation(Player player) {
try { try {
PlayerAuth auth = PlayerCache.getInstance().getAuth(player.getName()); PlayerAuth auth = PlayerCache.getInstance().getAuth(player.getName());
@ -140,52 +140,47 @@ public class API {
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
return null; return null;
} }
} }
public static String getNickRegex() { public static String getNickRegex() {
return Settings.getNickRegex; return Settings.getNickRegex;
} }
public static int getPasswordMinLen() { public static int getPasswordMinLen() {
return Settings.getPasswordMinLen; return Settings.getPasswordMinLen;
} }
public static HashAlgorithm getPasswordHash() { public static HashAlgorithm getPasswordHash() {
return Settings.getPasswordHash; return Settings.getPasswordHash;
} }
public static int getRegistrationTimeout() { public static int getRegistrationTimeout() {
return Settings.getRegistrationTimeout; return Settings.getRegistrationTimeout;
} }
public static int getSessionTimeout() { public static int getSessionTimeout() {
return Settings.getSessionTimeout; return Settings.getSessionTimeout;
} }
public static String getUnloggedinGroup() { public static String getUnloggedinGroup() {
return Settings.getUnloggedinGroup; return Settings.getUnloggedinGroup;
} }
public static void setPlayerInventory(Player player, ItemStack[] content, ItemStack[] armor) { public static void setPlayerInventory(Player player, ItemStack[] content, ItemStack[] armor) {
try { try {
player.getInventory().setContents(content); player.getInventory().setContents(content);
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;
@ -33,14 +32,14 @@ public class PlayerAuth {
private String vBhash = null; private String vBhash = null;
private int groupId; private int groupId;
private String email = "your@email.com"; private String email = "your@email.com";
public PlayerAuth(String nickname, String hash, String ip, long lastLogin) { public PlayerAuth(String nickname, String hash, String ip, long lastLogin) {
this.nickname = nickname; this.nickname = nickname;
this.hash = hash; this.hash = hash;
this.ip = ip; this.ip = ip;
this.lastLogin = lastLogin; this.lastLogin = lastLogin;
} }
public PlayerAuth(String nickname, String hash, String ip, long lastLogin, String email) { public PlayerAuth(String nickname, String hash, String ip, long lastLogin, String email) {
this.nickname = nickname; this.nickname = nickname;
this.hash = hash; this.hash = hash;
@ -48,14 +47,14 @@ public class PlayerAuth {
this.lastLogin = lastLogin; this.lastLogin = lastLogin;
this.email = email; this.email = email;
} }
public PlayerAuth(String nickname, int x, int y, int z) { public PlayerAuth(String nickname, int x, int y, int z) {
this.nickname = nickname; this.nickname = nickname;
this.x = x; this.x = x;
this.y = y; this.y = y;
this.z = z; this.z = z;
} }
public PlayerAuth(String nickname, String hash, String ip, long lastLogin, int x, int y, int z, String email) { public PlayerAuth(String nickname, String hash, String ip, long lastLogin, int x, int y, int z, String email) {
this.nickname = nickname; this.nickname = nickname;
this.hash = hash; this.hash = hash;
@ -66,10 +65,7 @@ public class PlayerAuth {
this.z = z; this.z = z;
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;
@ -82,8 +78,7 @@ public class PlayerAuth {
this.groupId = groupId; this.groupId = groupId;
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;
@ -92,8 +87,7 @@ public class PlayerAuth {
this.salt = salt; this.salt = salt;
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;
@ -101,7 +95,7 @@ public class PlayerAuth {
this.lastLogin = lastLogin; this.lastLogin = lastLogin;
this.salt = salt; this.salt = salt;
} }
public PlayerAuth(String nickname, String hash, String salt, String ip, long lastLogin, int x, int y, int z, String email) { public PlayerAuth(String nickname, String hash, String salt, String ip, long lastLogin, int x, int y, int z, String email) {
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,26 +130,21 @@ 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 {
return hash; return hash;
} }
} }
//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;
} }
public int getQuitLocX() { public int getQuitLocX() {
return x; return x;
} }
@ -194,11 +181,11 @@ public class PlayerAuth {
public void setLastLogin(long lastLogin) { public void setLastLogin(long lastLogin) {
this.lastLogin = lastLogin; this.lastLogin = lastLogin;
} }
public void setEmail(String email) { public void setEmail(String email) {
this.email = email; this.email = email;
} }
public void setSalt(String salt) { public void setSalt(String salt) {
this.salt = salt; this.salt = salt;
} }
@ -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,24 +12,22 @@ 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;
private boolean operator; private boolean operator;
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){
this.inventory = inventory; this.inventory = inventory;
this.armor = armor; this.armor = armor;
this.group = group; this.group = group;
this.operator = operator; this.operator = operator;
} }
public ItemStack[] getInventory(){ public ItemStack[] getInventory(){
return inventory; return inventory;
} }
@ -37,13 +35,13 @@ public class DataFileCache {
public ItemStack[] getArmour(){ public ItemStack[] getArmour(){
return armor; return armor;
} }
public String getGroup(){ public String getGroup(){
return group; return group;
} }
public Boolean getOperator(){ public Boolean getOperator(){
return operator; return operator;
} }
}
}

View File

@ -15,11 +15,8 @@ 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");
if (!folder.exists()) { if (!folder.exists()) {
@ -40,17 +37,13 @@ public class FileCache {
file.createNewFile(); file.createNewFile();
writer = new FileWriter(file); writer = new FileWriter(file);
// put player group in cache // line format Group|OperatorStatus
// put if player is an op or not 1: is op 0: isnet op! if(operator)
// line format Group|OperatorStatus writer.write(group+";1\r\n");
else writer.write(group+";0\r\n");
if(operator) writer.flush();
writer.write(group+";1\r\n");
else writer.write(group+";0\r\n");
writer.flush();
ItemStack[] invstack = playerData.getInventory(); ItemStack[] invstack = playerData.getInventory();
for (int i = 0; i < invstack.length; i++) { for (int i = 0; i < invstack.length; i++) {
@ -58,24 +51,15 @@ public class FileCache {
int itemid = 0; int itemid = 0;
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()) {
enchList = enchList.concat(e.getName()+":"+invstack[i].getEnchantmentLevel(e)+":");
for(Enchantment e : invstack[i].getEnchantments().keySet()) }
{ }
//System.out.println("enchant "+e.getName()+" bog "+invstack[i].getEnchantmentLevel(e));
enchList = enchList.concat(e.getName()+":"+invstack[i].getEnchantmentLevel(e)+":");
//System.out.println(enchList);
}
}
writer.write("i" + ":" + itemid + ":" + amount + ":" writer.write("i" + ":" + itemid + ":" + amount + ":"
+ durability + ":"+ enchList + "\r\n"); + durability + ":"+ enchList + "\r\n");
writer.flush(); writer.flush();
@ -87,27 +71,19 @@ public class FileCache {
int itemid = 0; int itemid = 0;
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()) enchList = enchList.concat(e.getName()+":"+armorstack[i].getEnchantmentLevel(e)+":");
{ }
//System.out.println("enchant "+e.getName()+" bog "+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();
@ -120,9 +96,8 @@ public class FileCache {
ItemStack[] stacki = new ItemStack[36]; ItemStack[] stacki = new ItemStack[36];
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,41 +124,31 @@ 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++) { stacki[i].addUnsafeEnchantment(Enchantment.getByName(in[k]) ,Integer.parseInt(in[k+1]));
//System.out.println("enchant "+in[k]); k++;
stacki[i].addUnsafeEnchantment(Enchantment.getByName(in[k]) ,Integer.parseInt(in[k+1])); }
k++; }
} i++;
}
i++;
} else { } else {
stacka[a] = new ItemStack(Integer.parseInt(in[1]), stacka[a] = new ItemStack(Integer.parseInt(in[1]),
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

@ -35,7 +35,7 @@ public class LimboCache {
private HashMap<String, LimboPlayer> cache; private HashMap<String, LimboPlayer> cache;
private FileCache playerData = new FileCache(); private FileCache playerData = new FileCache();
public AuthMe plugin; public AuthMe plugin;
private LimboCache(AuthMe plugin) { private LimboCache(AuthMe plugin) {
this.plugin = plugin; this.plugin = plugin;
this.cache = new HashMap<String, LimboPlayer>(); this.cache = new HashMap<String, LimboPlayer>();
@ -49,7 +49,7 @@ public class LimboCache {
ItemStack[] inv; ItemStack[] inv;
boolean operator; boolean operator;
String playerGroup = ""; String playerGroup = "";
if (playerData.doesCacheExist(name)) { if (playerData.doesCacheExist(name)) {
StoreInventoryEvent event = new StoreInventoryEvent(player, playerData); StoreInventoryEvent event = new StoreInventoryEvent(player, playerData);
Bukkit.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
@ -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,15 +105,13 @@ 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));
} }
public void deleteLimboPlayer(String name) { public void deleteLimboPlayer(String name) {
cache.remove(name); cache.remove(name);
} }
@ -129,8 +123,7 @@ public class LimboCache {
public boolean hasLimboPlayer(String name) { public boolean hasLimboPlayer(String name) {
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

@ -40,7 +40,7 @@ public class LimboPlayer {
this.operator = operator; this.operator = operator;
this.group = group; this.group = group;
} }
public LimboPlayer(String name, Location loc, int gameMode, boolean operator, String group) { public LimboPlayer(String name, Location loc, int gameMode, boolean operator, String group) {
this.name = name; this.name = name;
this.loc = loc; this.loc = loc;
@ -48,13 +48,12 @@ public class LimboPlayer {
this.operator = operator; this.operator = operator;
this.group = group; this.group = group;
} }
public LimboPlayer(String name, String group) { public LimboPlayer(String name, String group) {
this.name = name; this.name = name;
this.group = group; this.group = group;
} }
public String getName() { public String getName() {
return name; return name;
} }
@ -74,11 +73,11 @@ public class LimboPlayer {
public int getGameMode() { public int getGameMode() {
return gameMode; return gameMode;
} }
public boolean getOperator() { public boolean getOperator() {
return operator; return operator;
} }
public String getGroup() { public String getGroup() {
return group; return group;
} }

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;
@ -52,14 +54,12 @@ import uk.org.whoami.authme.settings.Spawn;
import uk.org.whoami.authme.settings.SpoutCfg; 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) {
this.database = database; this.database = database;
this.plugin = plugin; this.plugin = plugin;
@ -77,13 +77,12 @@ public class AdminCommand implements CommandExecutor {
sender.sendMessage("/authme lastlogin <playername> - Display Date about the Player's LastLogin"); sender.sendMessage("/authme lastlogin <playername> - Display Date about the Player's LastLogin");
return true; return true;
} }
if((sender instanceof ConsoleCommandSender) && args[0].equalsIgnoreCase("passpartuToken")) { if((sender instanceof ConsoleCommandSender) && args[0].equalsIgnoreCase("passpartuToken")) {
if(args.length > 1) { if(args.length > 1) {
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 {
@ -91,40 +90,32 @@ 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

@ -12,33 +12,31 @@ import uk.org.whoami.authme.settings.Messages;
import uk.org.whoami.authme.settings.Settings; import uk.org.whoami.authme.settings.Settings;
public class CaptchaCommand implements CommandExecutor { public class CaptchaCommand implements CommandExecutor {
public AuthMe plugin; public AuthMe plugin;
private Messages m = Messages.getInstance(); private Messages m = Messages.getInstance();
public static RandomString rdm = new RandomString(Settings.captchaLength); public static RandomString rdm = new RandomString(Settings.captchaLength);
public CaptchaCommand(AuthMe plugin) { public CaptchaCommand(AuthMe plugin) {
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) {
if (!(sender instanceof Player)) { if (!(sender instanceof Player)) {
return true; return true;
} }
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;
} }
if (PlayerCache.getInstance().isAuthenticated(name)) { if (PlayerCache.getInstance().isAuthenticated(name)) {
player.sendMessage(m._("logged_in")); player.sendMessage(m._("logged_in"));
return true; return true;
@ -48,12 +46,12 @@ public class CaptchaCommand implements CommandExecutor {
player.sendMessage(m._("no_perm")); player.sendMessage(m._("no_perm"));
return true; return true;
} }
if (!Settings.useCaptcha) { if (!Settings.useCaptcha) {
player.sendMessage(m._("usage_log")); player.sendMessage(m._("usage_log"));
return true; return true;
} }
if(!plugin.cap.containsKey(name)) { if(!plugin.cap.containsKey(name)) {
player.sendMessage(m._("usage_log")); player.sendMessage(m._("usage_log"));
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;
@ -63,7 +62,7 @@ public class ChangePasswordCommand implements CommandExecutor {
player.sendMessage(m._("not_logged_in")); player.sendMessage(m._("not_logged_in"));
return true; return true;
} }
if (args.length != 2) { if (args.length != 2) {
player.sendMessage(m._("usage_changepassword")); player.sendMessage(m._("usage_changepassword"));
return true; return true;

View File

@ -34,25 +34,25 @@ import uk.org.whoami.authme.settings.Settings;
/** /**
* *
* @author darkwarriors * @author Xephi59
*/ */
public class EmailCommand implements CommandExecutor { public class EmailCommand implements CommandExecutor {
public AuthMe plugin; public AuthMe plugin;
private DataSource data; private DataSource data;
private Messages m = Messages.getInstance(); private Messages m = Messages.getInstance();
public EmailCommand(AuthMe plugin, DataSource data) { public EmailCommand(AuthMe plugin, DataSource data) {
this.plugin = plugin; this.plugin = plugin;
this.data = data; this.data = data;
} }
@Override @Override
public boolean onCommand(CommandSender sender, Command cmnd, String label, String[] args) { public boolean onCommand(CommandSender sender, Command cmnd, String label, String[] args) {
if (!(sender instanceof Player)) { if (!(sender instanceof Player)) {
return true; return true;
} }
if (!sender.hasPermission("authme." + label.toLowerCase())) { if (!sender.hasPermission("authme." + label.toLowerCase())) {
sender.sendMessage(m._("no_perm")); sender.sendMessage(m._("no_perm"));
return true; return true;
@ -61,13 +61,13 @@ public class EmailCommand 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("usage: /email add <Email> <confirmEmail> "); player.sendMessage("usage: /email add <Email> <confirmEmail> ");
player.sendMessage("usage: /email change <old> <new> "); player.sendMessage("usage: /email change <old> <new> ");
player.sendMessage("usage: /email recovery <Email>"); player.sendMessage("usage: /email recovery <Email>");
return true; return true;
} }
if(args[0].equalsIgnoreCase("add")) { if(args[0].equalsIgnoreCase("add")) {
if (args.length != 3) { if (args.length != 3) {
player.sendMessage("[AuthMe] /email add <Email> <confirmEmail>"); player.sendMessage("[AuthMe] /email add <Email> <confirmEmail>");
@ -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,13 +23,12 @@ 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 {
private AuthMe plugin; private AuthMe plugin;
private Messages m = Messages.getInstance(); private Messages m = Messages.getInstance();
public LoginCommand(AuthMe plugin) { public LoginCommand(AuthMe plugin) {
this.plugin = plugin; this.plugin = plugin;
} }
@ -39,13 +38,9 @@ public class LoginCommand implements CommandExecutor {
if (!(sender instanceof Player)) { if (!(sender instanceof Player)) {
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) {
player.sendMessage(m._("usage_log")); player.sendMessage(m._("usage_log"));
return true; return true;
@ -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,12 +48,11 @@ 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();
private FileCache playerBackup = new FileCache(); private FileCache playerBackup = new FileCache();
public LogoutCommand(AuthMe plugin, DataSource database) { public LogoutCommand(AuthMe plugin, DataSource database) {
this.plugin = plugin; this.plugin = plugin;
this.database = database; this.database = database;
@ -78,13 +77,12 @@ 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);
PlayerCache.getInstance().removePlayer(name); PlayerCache.getInstance().removePlayer(name);
LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player)); LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player));
LimboCache.getInstance().addLimboPlayer(player); LimboCache.getInstance().addLimboPlayer(player);
if(Settings.protectInventoryBeforeLogInEnabled) { if(Settings.protectInventoryBeforeLogInEnabled) {
@ -117,22 +115,19 @@ public class LogoutCommand implements CommandExecutor {
} }
BukkitTask msgT = sched.runTask(plugin, new MessageTask(plugin, name, m._("login_msg"), interval)); 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

@ -23,7 +23,7 @@ public class PasspartuCommand implements CommandExecutor {
private Utils utils = new Utils(); private Utils utils = new Utils();
private DataSource database; private DataSource database;
public AuthMe plugin; public AuthMe plugin;
public PasspartuCommand(DataSource database, AuthMe plugin) { public PasspartuCommand(DataSource database, AuthMe plugin) {
this.database = database; this.database = database;
this.plugin = plugin; this.plugin = plugin;
@ -31,20 +31,18 @@ public class PasspartuCommand implements CommandExecutor {
@Override @Override
public boolean onCommand(CommandSender sender, Command cmnd, String label, String[] args) { public boolean onCommand(CommandSender sender, Command cmnd, String label, String[] args) {
if (PlayerCache.getInstance().isAuthenticated(sender.getName().toLowerCase())) { if (PlayerCache.getInstance().isAuthenticated(sender.getName().toLowerCase())) {
return true; return true;
} }
if ((sender instanceof Player) && args.length == 1) { if ((sender instanceof Player) && args.length == 1) {
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;
@ -75,21 +76,24 @@ public class RegisterCommand implements CommandExecutor {
sender.sendMessage(m._("no_perm")); sender.sendMessage(m._("no_perm"));
return true; return true;
} }
final Player player = (Player) sender; final Player player = (Player) sender;
final String name = player.getName().toLowerCase(); final String name = player.getName().toLowerCase();
String ipA = player.getAddress().getAddress().getHostAddress(); String ipA = player.getAddress().getAddress().getHostAddress();
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,18 +111,14 @@ 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;
} }
} }
if(Settings.emailRegistration && !Settings.getmailAccount.isEmpty()) { if(Settings.emailRegistration && !Settings.getmailAccount.isEmpty()) {
if(!args[0].contains("@")) { if(!args[0].contains("@")) {
player.sendMessage(m._("usage_reg")); player.sendMessage(m._("usage_reg"));
@ -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()) {
@ -231,20 +223,16 @@ public class RegisterCommand implements CommandExecutor {
return true; return true;
} }
} }
if (args.length == 0 || (Settings.getEnablePasswordVerifier && args.length < 2) ) { if (args.length == 0 || (Settings.getEnablePasswordVerifier && args.length < 2) ) {
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,11 +49,10 @@ 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();
public UnregisterCommand(AuthMe plugin, DataSource database) { public UnregisterCommand(AuthMe plugin, DataSource database) {
this.plugin = plugin; this.plugin = plugin;
this.database = database; this.database = database;
@ -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();
@ -121,8 +118,7 @@ public class UnregisterCommand implements CommandExecutor {
// check if Player cache File Exist and delete it, preventing duplication of items // check if Player cache File Exist and delete it, preventing duplication of items
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,15 +12,18 @@ 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;
public FlatToSql (AuthMe instance) { public FlatToSql (AuthMe instance) {
this.instance = instance; this.instance = instance;
} }
public FlatToSql getInstance() { public FlatToSql getInstance() {
return this; return this;
} }
@ -34,10 +37,9 @@ 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;
public static void FlatToSqlConverter() throws IOException { public static void FlatToSqlConverter() throws IOException {
tableName = Settings.getMySQLTablename; tableName = Settings.getMySQLTablename;
columnName = Settings.getMySQLColumnName; columnName = Settings.getMySQLColumnName;
@ -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,15 +17,18 @@ 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;
public RakamakConverter (AuthMe instance) { public RakamakConverter (AuthMe instance) {
this.instance = instance; this.instance = instance;
} }
public RakamakConverter getInstance() { public RakamakConverter getInstance() {
return this; return this;
} }
@ -34,12 +37,11 @@ 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;
private static boolean alreadyExist = false; private static boolean alreadyExist = false;
public static void RakamakConvert() throws IOException { public static void RakamakConvert() throws IOException {
hash = Settings.rakamakHash; hash = Settings.rakamakHash;
useIP = Settings.rakamakUseIp; useIP = Settings.rakamakUseIp;
@ -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,16 +18,20 @@ 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;
public DataSource database; public DataSource database;
public xAuthToFlat(AuthMe instance, DataSource database) { public xAuthToFlat(AuthMe instance, DataSource database) {
this.instance = instance; this.instance = instance;
this.database = database; this.database = database;
} }
public boolean convert(CommandSender sender) { public boolean convert(CommandSender sender) {
if (instance.getServer().getPluginManager().getPlugin("xAuth") == null) { if (instance.getServer().getPluginManager().getPlugin("xAuth") == null) {
sender.sendMessage("[AuthMe] xAuth plugin not found"); sender.sendMessage("[AuthMe] xAuth plugin not found");
@ -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);
@ -54,13 +57,12 @@ public class xAuthToFlat {
sender.sendMessage("[AuthMe] Import done!"); sender.sendMessage("[AuthMe] Import done!");
return true; return true;
} }
public String getIdPlayer(int id) { public String getIdPlayer(int id) {
String realPass = ""; String realPass = "";
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

@ -35,7 +35,7 @@ public class CacheDataSource implements DataSource {
this.plugin = plugin; this.plugin = plugin;
this.source = source; this.source = source;
} }
@Override @Override
public synchronized boolean isAuthAvailable(String user) { public synchronized boolean isAuthAvailable(String user) {
return cache.containsKey(user) ? true : source.isAuthAvailable(user); return cache.containsKey(user) ? true : source.isAuthAvailable(user);
@ -79,30 +79,26 @@ public class CacheDataSource implements DataSource {
} }
return false; return false;
} }
@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;
} }
@Override @Override
public int getIps(String ip) { public int getIps(String ip) {
return source.getIps(ip); return source.getIps(ip);
} }
@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) {
@ -151,7 +147,7 @@ public class CacheDataSource implements DataSource {
} }
return false; return false;
} }
@Override @Override
public boolean updateSalt(PlayerAuth auth) { public boolean updateSalt(PlayerAuth auth) {
if(source.updateSalt(auth)) { if(source.updateSalt(auth)) {
@ -170,9 +166,19 @@ public class CacheDataSource implements DataSource {
public List<String> getAllAuthsByIp(String ip) { public List<String> getAllAuthsByIp(String ip) {
return source.getAllAuthsByIp(ip); return source.getAllAuthsByIp(ip);
} }
@Override @Override
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

@ -40,23 +40,25 @@ public interface DataSource {
int purgeDatabase(long until); int purgeDatabase(long until);
boolean removeAuth(String user); boolean removeAuth(String user);
boolean updateQuitLoc(PlayerAuth auth); boolean updateQuitLoc(PlayerAuth auth);
int getIps(String ip); int getIps(String ip);
List<String> getAllAuthsByName(PlayerAuth auth); List<String> getAllAuthsByName(PlayerAuth auth);
List<String> getAllAuthsByIp(String ip); List<String> getAllAuthsByIp(String ip);
List<String> getAllAuthsByEmail(String email); List<String> getAllAuthsByEmail(String email);
boolean updateEmail(PlayerAuth auth); boolean updateEmail(PlayerAuth auth);
boolean updateSalt(PlayerAuth auth); boolean updateSalt(PlayerAuth auth);
void close(); void close();
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
@ -48,7 +47,7 @@ public class FileDataSource implements DataSource {
source = new File(Settings.AUTH_FILE); source = new File(Settings.AUTH_FILE);
source.createNewFile(); source.createNewFile();
} }
@Override @Override
public synchronized boolean isAuthAvailable(String user) { public synchronized boolean isAuthAvailable(String user) {
BufferedReader br = null; BufferedReader br = null;
@ -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;
} }
@ -224,7 +212,7 @@ public class FileDataSource implements DataSource {
saveAuth(newAuth); saveAuth(newAuth);
return true; return true;
} }
@Override @Override
public int getIps(String ip) { public int getIps(String ip) {
BufferedReader br = null; BufferedReader br = null;
@ -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++;
} }
@ -255,14 +242,13 @@ public class FileDataSource implements DataSource {
} }
} }
} }
@Override @Override
public int purgeDatabase(long until) { public int purgeDatabase(long until) {
BufferedReader br = null; BufferedReader br = null;
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");
@ -400,7 +383,7 @@ public class FileDataSource implements DataSource {
public boolean updateEmail(PlayerAuth auth) { public boolean updateEmail(PlayerAuth auth) {
return false; return false;
} }
@Override @Override
public boolean updateSalt(PlayerAuth auth) { public boolean updateSalt(PlayerAuth auth) {
return false; return false;
@ -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;
@ -73,7 +72,7 @@ public class MySQLDataSource implements DataSource {
this.columnEmail = Settings.getMySQLColumnEmail; this.columnEmail = Settings.getMySQLColumnEmail;
this.columnOthers = Settings.getMySQLOtherUsernameColumn; this.columnOthers = Settings.getMySQLOtherUsernameColumn;
this.columnID = Settings.getMySQLColumnId; this.columnID = Settings.getMySQLColumnId;
connect(); connect();
setup(); setup();
} }
@ -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 "
@ -343,7 +340,7 @@ public class MySQLDataSource implements DataSource {
} }
return true; return true;
} }
@Override @Override
public boolean updateQuitLoc(PlayerAuth auth) { public boolean updateQuitLoc(PlayerAuth auth) {
Connection con = null; Connection con = null;
@ -368,11 +365,7 @@ 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;
@ -401,7 +394,7 @@ public class MySQLDataSource implements DataSource {
close(con); close(con);
} }
} }
@Override @Override
public boolean updateEmail(PlayerAuth auth) { public boolean updateEmail(PlayerAuth auth) {
Connection con = null; Connection con = null;
@ -424,7 +417,7 @@ public class MySQLDataSource implements DataSource {
} }
return true; return true;
} }
@Override @Override
public boolean updateSalt(PlayerAuth auth) { public boolean updateSalt(PlayerAuth auth) {
if (columnSalt.isEmpty()) { if (columnSalt.isEmpty()) {
@ -450,7 +443,7 @@ public class MySQLDataSource implements DataSource {
} }
return true; return true;
} }
@Override @Override
public synchronized void close() { public synchronized void close() {
try { try {
@ -551,7 +544,7 @@ public class MySQLDataSource implements DataSource {
close(con); close(con);
} }
} }
@Override @Override
public List<String> getAllAuthsByEmail(String email) { public List<String> getAllAuthsByEmail(String email) {
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;
@ -63,7 +60,7 @@ public class SqliteDataSource implements DataSource {
this.nonActivatedGroup = Settings.getNonActivatedGroup; this.nonActivatedGroup = Settings.getNonActivatedGroup;
this.columnEmail = Settings.getMySQLColumnEmail; this.columnEmail = Settings.getMySQLColumnEmail;
this.columnID = Settings.getMySQLColumnId; this.columnID = Settings.getMySQLColumnId;
connect(); connect();
setup(); setup();
} }
@ -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,17 +324,15 @@ 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 updateSalt(PlayerAuth auth) { public boolean updateSalt(PlayerAuth auth) {
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,11 +344,10 @@ 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 void close() { public synchronized void close() {
try { try {
@ -456,7 +416,6 @@ public class SqliteDataSource implements DataSource {
} finally { } finally {
close(rs); close(rs);
close(pst); close(pst);
//close(con);
} }
} }
@ -485,10 +444,9 @@ public class SqliteDataSource implements DataSource {
} finally { } finally {
close(rs); close(rs);
close(pst); close(pst);
//close(con);
} }
} }
@Override @Override
public List<String> getAllAuthsByEmail(String email) { public List<String> getAllAuthsByEmail(String email) {
PreparedStatement pst = null; PreparedStatement pst = null;
@ -516,5 +474,21 @@ public class SqliteDataSource implements DataSource {
close(pst); close(pst);
} }
} }
@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,12 +3,16 @@ 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;
private Location to; private Location to;
private Location from; private Location from;
public AuthMeTeleportEvent(Player player, Location to) { public AuthMeTeleportEvent(Player player, Location to) {
this.player = player; this.player = player;
this.from = player.getLocation(); this.from = player.getLocation();

View File

@ -4,31 +4,32 @@ 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;
} }
public static HandlerList getHandlerList() { public static HandlerList getHandlerList() {
return handlers; return handlers;
} }
public boolean isCancelled() { public boolean isCancelled() {
return this.isCancelled; return this.isCancelled;
} }
public void setCancelled(boolean cancelled) { public void setCancelled(boolean cancelled) {
this.isCancelled = cancelled; this.isCancelled = cancelled;
} }
public static Server getServer() { public static Server getServer() {
return s; return s;
} }

View File

@ -2,21 +2,24 @@ 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;
public LoginEvent(Player player, boolean isLogin) { public LoginEvent(Player player, boolean isLogin) {
this.player = player; this.player = player;
this.isLogin = isLogin; this.isLogin = isLogin;
} }
public Player getPlayer() { public Player getPlayer() {
return this.player; return this.player;
} }
public void setPlayer(Player player) { public void setPlayer(Player player) {
this.player = player; this.player = player;
} }
@ -28,4 +31,5 @@ public class LoginEvent extends UncancellableEvent {
public boolean isLogin() { public boolean isLogin() {
return isLogin; return isLogin;
} }
} }

View File

@ -5,20 +5,24 @@ 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;
private ItemStack[] storedarmor; private ItemStack[] storedarmor;
private ItemStack[] emptyInventory = null; private ItemStack[] emptyInventory = null;
private ItemStack[] emptyArmor = null; private ItemStack[] emptyArmor = null;
private Player player; private Player player;
public ProtectInventoryEvent(Player player, ItemStack[] storedinventory, ItemStack[] storedarmor) { public ProtectInventoryEvent(Player player, ItemStack[] storedinventory, ItemStack[] storedarmor) {
this.player = player; this.player = player;
this.storedinventory = storedinventory; this.storedinventory = storedinventory;
this.storedarmor = storedarmor; this.storedarmor = storedarmor;
} }
public ProtectInventoryEvent(Player player, ItemStack[] storedinventory, ItemStack[] storedarmor, int newInventory, int newArmor) { public ProtectInventoryEvent(Player player, ItemStack[] storedinventory, ItemStack[] storedarmor, int newInventory, int newArmor) {
this.player = player; this.player = player;
this.storedinventory = storedinventory; this.storedinventory = storedinventory;
@ -31,11 +35,11 @@ public class ProtectInventoryEvent extends CustomEvent {
public ItemStack[] getStoredInventory() { public ItemStack[] getStoredInventory() {
return this.storedinventory; return this.storedinventory;
} }
public ItemStack[] getStoredArmor() { public ItemStack[] getStoredArmor() {
return this.storedarmor; return this.storedarmor;
} }
public Player getPlayer() { public Player getPlayer() {
return this.player; return this.player;
} }
@ -55,4 +59,5 @@ public class ProtectInventoryEvent extends CustomEvent {
public ItemStack[] getEmptyArmor() { public ItemStack[] getEmptyArmor() {
return this.emptyArmor; return this.emptyArmor;
} }
} }

View File

@ -3,12 +3,16 @@ 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;
private Location to; private Location to;
private Location from; private Location from;
public RegisterTeleportEvent(Player player, Location to) { public RegisterTeleportEvent(Player player, Location to) {
this.player = player; this.player = player;
this.from = player.getLocation(); this.from = player.getLocation();
@ -26,4 +30,5 @@ public class RegisterTeleportEvent extends CustomEvent {
public Location getFrom() { public Location getFrom() {
return from; return from;
} }
} }

View File

@ -5,20 +5,25 @@ 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;
public ResetInventoryEvent(Player player) { public ResetInventoryEvent(Player player) {
this.player = player; this.player = player;
API.setPlayerInventory(player, new ItemStack[36], new ItemStack[4]); API.setPlayerInventory(player, new ItemStack[36], new ItemStack[4]);
} }
public Player getPlayer() { public Player getPlayer() {
return this.player; return this.player;
} }
public void setPlayer(Player player) { public void setPlayer(Player player) {
this.player = player; this.player = player;
} }
} }

View File

@ -3,12 +3,16 @@ 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;
private ItemStack[] armor; private ItemStack[] armor;
private Player player; private Player player;
public RestoreInventoryEvent(Player player, ItemStack[] inventory, ItemStack[] armor) { public RestoreInventoryEvent(Player player, ItemStack[] inventory, ItemStack[] armor) {
this.player = player; this.player = player;
this.inventory = inventory; this.inventory = inventory;
@ -18,24 +22,25 @@ public class RestoreInventoryEvent extends CustomEvent {
public ItemStack[] getInventory() { public ItemStack[] getInventory() {
return this.inventory; return this.inventory;
} }
public void setInventory(ItemStack[] inventory) { public void setInventory(ItemStack[] inventory) {
this.inventory = inventory; this.inventory = inventory;
} }
public ItemStack[] getArmor() { public ItemStack[] getArmor() {
return this.armor; return this.armor;
} }
public void setArmor(ItemStack[] armor) { public void setArmor(ItemStack[] armor) {
this.armor = armor; this.armor = armor;
} }
public Player getPlayer() { public Player getPlayer() {
return this.player; return this.player;
} }
public void setPlayer(Player player) { public void setPlayer(Player player) {
this.player = player; this.player = player;
} }
} }

View File

@ -2,21 +2,24 @@ 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;
public SessionEvent(PlayerAuth auth, boolean isLogin) { public SessionEvent(PlayerAuth auth, boolean isLogin) {
this.player = auth; this.player = auth;
this.isLogin = isLogin; this.isLogin = isLogin;
} }
public PlayerAuth getPlayerAuth() { public PlayerAuth getPlayerAuth() {
return this.player; return this.player;
} }
public void setPlayer(PlayerAuth player) { public void setPlayer(PlayerAuth player) {
this.player = player; this.player = player;
} }
@ -24,4 +27,5 @@ public class SessionEvent extends CustomEvent {
public boolean isLogin() { public boolean isLogin() {
return isLogin; return isLogin;
} }
} }

View File

@ -3,13 +3,17 @@ 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;
private Location to; private Location to;
private Location from; private Location from;
private boolean isAuthenticated; private boolean isAuthenticated;
public SpawnTeleportEvent(Player player, Location from, Location to, boolean isAuthenticated) { public SpawnTeleportEvent(Player player, Location from, Location to, boolean isAuthenticated) {
this.player = player; this.player = player;
this.from = from; this.from = from;

View File

@ -5,19 +5,22 @@ 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;
public StoreInventoryEvent(Player player) { public StoreInventoryEvent(Player player) {
this.player = player; this.player = player;
this.inventory = player.getInventory().getContents(); this.inventory = player.getInventory().getContents();
this.armor = player.getInventory().getArmorContents(); this.armor = player.getInventory().getArmorContents();
} }
public StoreInventoryEvent(Player player, FileCache fileCache) { public StoreInventoryEvent(Player player, FileCache fileCache) {
this.player = player; this.player = player;
this.inventory = fileCache.readCache(player.getName().toLowerCase()).getInventory(); this.inventory = fileCache.readCache(player.getName().toLowerCase()).getInventory();
@ -27,24 +30,25 @@ public class StoreInventoryEvent extends CustomEvent {
public ItemStack[] getInventory() { public ItemStack[] getInventory() {
return this.inventory; return this.inventory;
} }
public void setInventory(ItemStack[] inventory) { public void setInventory(ItemStack[] inventory) {
this.inventory = inventory; this.inventory = inventory;
} }
public ItemStack[] getArmor() { public ItemStack[] getArmor() {
return this.armor; return this.armor;
} }
public void setArmor(ItemStack[] armor) { public void setArmor(ItemStack[] armor) {
this.armor = armor; this.armor = armor;
} }
public Player getPlayer() { public Player getPlayer() {
return this.player; return this.player;
} }
public void setPlayer(Player player) { public void setPlayer(Player player) {
this.player = player; this.player = player;
} }
} }

View File

@ -4,21 +4,23 @@ 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;
} }
public static HandlerList getHandlerList() { public static HandlerList getHandlerList() {
return handlers; return handlers;
} }
public static Server getServer() { public static Server getServer() {
return s; return s;
} }

View File

@ -3,10 +3,14 @@ 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() {}
@Override @Override
public boolean isLoggable(LogRecord record) { public boolean isLoggable(LogRecord record) {
String logM = record.getMessage().toLowerCase(); String logM = record.getMessage().toLowerCase();
@ -17,7 +21,5 @@ public class ConsoleFilter implements Filter {
record.setMessage(playername + " issued an AuthMe command!"); record.setMessage(playername + " issued an AuthMe command!");
return true; return true;
} }
} }

View File

@ -6,7 +6,7 @@ import org.getspout.spoutapi.gui.GenericButton;
public class CustomButton extends GenericButton public class CustomButton extends GenericButton
{ {
public Clickable handleRef = null; public Clickable handleRef = null;
public CustomButton(Clickable c) { public CustomButton(Clickable c) {
handleRef = c; handleRef = c;
} }
@ -15,7 +15,7 @@ public class CustomButton extends GenericButton
public void onButtonClick(ButtonClickEvent event) { public void onButtonClick(ButtonClickEvent event) {
handleRef.handleClick(event); handleRef.handleClick(event);
} }
public CustomButton setMidPos(int x, int y) public CustomButton setMidPos(int x, int y)
{ {
this.setX(x) this.setX(x)
@ -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,25 +119,15 @@ 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);
} }
} }
private void setXToMid(Widget w) { private void setXToMid(Widget w) {
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,14 +33,13 @@ 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;
this.instance = instance; this.instance = instance;
} }
@EventHandler @EventHandler
public void onBlockPlace(BlockPlaceEvent event) { public void onBlockPlace(BlockPlaceEvent event) {
if (event.isCancelled() || event.getPlayer() == null) { if (event.isCancelled() || event.getPlayer() == null) {
return; return;
@ -62,11 +61,10 @@ public class AuthMeBlockListener implements Listener {
return; return;
} }
} }
event.setCancelled(true); event.setCancelled(true);
} }
@EventHandler @EventHandler
public void onBlockBreak(BlockBreakEvent event) { public void onBlockBreak(BlockBreakEvent event) {
if (event.isCancelled() || event.getPlayer() == null) { if (event.isCancelled() || event.getPlayer() == null) {
return; return;
@ -74,7 +72,7 @@ public class AuthMeBlockListener implements Listener {
Player player = event.getPlayer(); Player player = event.getPlayer();
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
if(instance.getCitizensCommunicator().isNPC(player, instance) || Utils.getInstance().isUnrestricted(player) || CombatTagComunicator.isNPC(player)) { if(instance.getCitizensCommunicator().isNPC(player, instance) || Utils.getInstance().isUnrestricted(player) || CombatTagComunicator.isNPC(player)) {
return; return;
} }
@ -88,8 +86,7 @@ public class AuthMeBlockListener implements Listener {
return; return;
} }
} }
event.setCancelled(true); event.setCancelled(true);
} }
} }

View File

@ -12,29 +12,28 @@ 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 {
public DataSource database; public DataSource database;
public AuthMe plugin; public AuthMe plugin;
public AuthMeChestShopListener(DataSource database, AuthMe plugin) { public AuthMeChestShopListener(DataSource database, AuthMe plugin) {
this.database = database; this.database = database;
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;
} }
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,14 +38,13 @@ 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;
this.instance = instance; this.instance = instance;
} }
@EventHandler @EventHandler
public void onEntityDamage(EntityDamageEvent event) { public void onEntityDamage(EntityDamageEvent event) {
if (event.isCancelled()) { if (event.isCancelled()) {
return; return;
@ -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);
} }
@ -171,11 +162,11 @@ public class AuthMeEntityListener implements Listener{
if (event.isCancelled() || event == null) { if (event.isCancelled() || event == null) {
return; return;
} }
if (!(event.getEntity() instanceof Player)) { if (!(event.getEntity() instanceof Player)) {
return; return;
} }
Player player = (Player) event.getEntity(); Player player = (Player) event.getEntity();
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
@ -193,19 +184,18 @@ public class AuthMeEntityListener implements Listener{
} }
} }
event.setCancelled(true); event.setCancelled(true);
} }
@EventHandler (priority = EventPriority.LOWEST) @EventHandler (priority = EventPriority.LOWEST)
public void onLowestEntityInteract(EntityInteractEvent event) { public void onLowestEntityInteract(EntityInteractEvent event) {
if (event.isCancelled() || event == null) { if (event.isCancelled() || event == null) {
return; return;
} }
if (!(event.getEntity() instanceof Player)) { if (!(event.getEntity() instanceof Player)) {
return; return;
} }
Player player = (Player) event.getEntity(); Player player = (Player) event.getEntity();
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
@ -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();
@ -96,8 +95,7 @@ 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,30 +120,28 @@ public class AuthMePlayerListener implements Listener {
if (cmd.equalsIgnoreCase("/login") || cmd.equalsIgnoreCase("/register") || cmd.equalsIgnoreCase("/passpartu") || cmd.equalsIgnoreCase("/l") || cmd.equalsIgnoreCase("/reg") || cmd.equalsIgnoreCase("/email") || cmd.equalsIgnoreCase("/captcha")) { 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);
} }
@EventHandler( priority = EventPriority.NORMAL) @EventHandler( priority = EventPriority.NORMAL)
public void onPlayerNormalChat(AsyncPlayerChatEvent event) { public void onPlayerNormalChat(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();
if(plugin.CitizensVersion != 0) { if(plugin.CitizensVersion != 0) {
if (plugin.getCitizensCommunicator().isNPC(player, plugin)) { if (plugin.getCitizensCommunicator().isNPC(player, plugin)) {
return; return;
} }
} }
if(plugin.CombatTag != 0) { if(plugin.CombatTag != 0) {
if (CombatTagComunicator.isNPC(player)) { if (CombatTagComunicator.isNPC(player)) {
return; return;
@ -159,7 +155,7 @@ public class AuthMePlayerListener implements Listener {
if (PlayerCache.getInstance().isAuthenticated(name)) { if (PlayerCache.getInstance().isAuthenticated(name)) {
return; return;
} }
String cmd = event.getMessage().split(" ")[0]; String cmd = event.getMessage().split(" ")[0];
if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) { if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) {
@ -167,7 +163,7 @@ public class AuthMePlayerListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (!event.isAsynchronous()) { if (!event.isAsynchronous()) {
if (data.isAuthAvailable(name)) { if (data.isAuthAvailable(name)) {
player.sendMessage(m._("login_msg")); player.sendMessage(m._("login_msg"));
@ -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
@ -193,14 +188,13 @@ public class AuthMePlayerListener implements Listener {
}}); }});
} }
} }
@EventHandler( priority = EventPriority.HIGH) @EventHandler( priority = EventPriority.HIGH)
public void onPlayerHighChat(AsyncPlayerChatEvent event) { public void onPlayerHighChat(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();
@ -223,7 +217,7 @@ public class AuthMePlayerListener implements Listener {
if (PlayerCache.getInstance().isAuthenticated(name)) { if (PlayerCache.getInstance().isAuthenticated(name)) {
return; return;
} }
String cmd = event.getMessage().split(" ")[0]; String cmd = event.getMessage().split(" ")[0];
if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) { if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) {
@ -231,7 +225,7 @@ public class AuthMePlayerListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (!event.isAsynchronous()) { if (!event.isAsynchronous()) {
if (data.isAuthAvailable(name)) { if (data.isAuthAvailable(name)) {
player.sendMessage(m._("login_msg")); player.sendMessage(m._("login_msg"));
@ -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
@ -257,14 +250,13 @@ public class AuthMePlayerListener implements Listener {
}}); }});
} }
} }
@EventHandler( priority = EventPriority.MONITOR) @EventHandler( priority = EventPriority.MONITOR)
public void onPlayerChat(AsyncPlayerChatEvent event) { public void onPlayerChat(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();
@ -287,7 +279,7 @@ public class AuthMePlayerListener implements Listener {
if (PlayerCache.getInstance().isAuthenticated(name)) { if (PlayerCache.getInstance().isAuthenticated(name)) {
return; return;
} }
String cmd = event.getMessage().split(" ")[0]; String cmd = event.getMessage().split(" ")[0];
if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) { if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) {
@ -295,7 +287,7 @@ public class AuthMePlayerListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (!event.isAsynchronous()) { if (!event.isAsynchronous()) {
if (data.isAuthAvailable(name)) { if (data.isAuthAvailable(name)) {
player.sendMessage(m._("login_msg")); player.sendMessage(m._("login_msg"));
@ -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
@ -321,14 +312,13 @@ public class AuthMePlayerListener implements Listener {
}}); }});
} }
} }
@EventHandler( priority = EventPriority.HIGHEST) @EventHandler( priority = EventPriority.HIGHEST)
public void onPlayerHighestChat(AsyncPlayerChatEvent event) { public void onPlayerHighestChat(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();
@ -351,7 +341,7 @@ public class AuthMePlayerListener implements Listener {
if (PlayerCache.getInstance().isAuthenticated(name)) { if (PlayerCache.getInstance().isAuthenticated(name)) {
return; return;
} }
String cmd = event.getMessage().split(" ")[0]; String cmd = event.getMessage().split(" ")[0];
if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) { if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) {
@ -359,7 +349,7 @@ public class AuthMePlayerListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (!event.isAsynchronous()) { if (!event.isAsynchronous()) {
if (data.isAuthAvailable(name)) { if (data.isAuthAvailable(name)) {
player.sendMessage(m._("login_msg")); player.sendMessage(m._("login_msg"));
@ -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
@ -385,15 +374,13 @@ 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();
@ -416,7 +403,7 @@ public class AuthMePlayerListener implements Listener {
if (PlayerCache.getInstance().isAuthenticated(name)) { if (PlayerCache.getInstance().isAuthenticated(name)) {
return; return;
} }
String cmd = event.getMessage().split(" ")[0]; String cmd = event.getMessage().split(" ")[0];
if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) { if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) {
@ -424,7 +411,7 @@ public class AuthMePlayerListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (!event.isAsynchronous()) { if (!event.isAsynchronous()) {
if (data.isAuthAvailable(name)) { if (data.isAuthAvailable(name)) {
player.sendMessage(m._("login_msg")); player.sendMessage(m._("login_msg"));
@ -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
@ -456,8 +442,7 @@ public class AuthMePlayerListener implements Listener {
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();
@ -480,7 +465,7 @@ public class AuthMePlayerListener implements Listener {
if (PlayerCache.getInstance().isAuthenticated(name)) { if (PlayerCache.getInstance().isAuthenticated(name)) {
return; return;
} }
String cmd = event.getMessage().split(" ")[0]; String cmd = event.getMessage().split(" ")[0];
if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) { if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) {
@ -488,7 +473,7 @@ public class AuthMePlayerListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (!event.isAsynchronous()) { if (!event.isAsynchronous()) {
if (data.isAuthAvailable(name)) { if (data.isAuthAvailable(name)) {
player.sendMessage(m._("login_msg")); player.sendMessage(m._("login_msg"));
@ -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
@ -520,7 +504,6 @@ public class AuthMePlayerListener implements Listener {
if (event.isCancelled() || event.getPlayer() == null) { if (event.isCancelled() || event.getPlayer() == null) {
return; return;
} }
Player player = event.getPlayer(); Player player = event.getPlayer();
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
@ -536,7 +519,7 @@ public class AuthMePlayerListener implements Listener {
if (!Settings.isForcedRegistrationEnabled) { if (!Settings.isForcedRegistrationEnabled) {
return; return;
} }
if (!Settings.isMovementAllowed) { if (!Settings.isMovementAllowed) {
event.setTo(event.getFrom()); event.setTo(event.getFrom());
return; return;
@ -545,7 +528,6 @@ public class AuthMePlayerListener implements Listener {
if (Settings.getMovementRadius == 0) { if (Settings.getMovementRadius == 0) {
return; return;
} }
int radius = Settings.getMovementRadius; int radius = Settings.getMovementRadius;
Location spawn = player.getWorld().getSpawnLocation(); Location spawn = player.getWorld().getSpawnLocation();
@ -559,62 +541,44 @@ public class AuthMePlayerListener implements Listener {
} }
if (Spawn.getInstance().getLocation() != null) if (Spawn.getInstance().getLocation() != null)
spawn = Spawn.getInstance().getLocation(); spawn = Spawn.getInstance().getLocation();
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)
public void onPlayerLogin(PlayerLoginEvent event) { public void onPlayerLogin(PlayerLoginEvent event) {
final Player player = event.getPlayer(); final Player player = event.getPlayer();
final String name = player.getName().toLowerCase(); final String name = player.getName().toLowerCase();
if (plugin.getCitizensCommunicator().isNPC(player, plugin) || Utils.getInstance().isUnrestricted(player) || CombatTagComunicator.isNPC(player)) { if (plugin.getCitizensCommunicator().isNPC(player, plugin) || Utils.getInstance().isUnrestricted(player) || CombatTagComunicator.isNPC(player)) {
return; return;
} }
if (player.isOnline() && Settings.isForceSingleSessionEnabled) { if (player.isOnline() && Settings.isForceSingleSessionEnabled) {
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, m._("same_nick")); event.disallow(PlayerLoginEvent.Result.KICK_OTHER, m._("same_nick"));
return; return;
} }
if(!event.isAsynchronous()) {
if(data.isAuthAvailable(name) && !LimboCache.getInstance().hasLimboPlayer(name)) {
if(!Settings.isSessionsEnabled) {
LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player));
} else if(PlayerCache.getInstance().isAuthenticated(name)) {
if(!Settings.sessionExpireOnIpChange)
if(LimboCache.getInstance().hasLimboPlayer(player.getName().toLowerCase())) {
LimboCache.getInstance().deleteLimboPlayer(name);
}
LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player));
}
}
} else {
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override //Run that asynchronous
public void run() { Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
if(data.isAuthAvailable(name) && !LimboCache.getInstance().hasLimboPlayer(name)) { @Override
if(!Settings.isSessionsEnabled) { public void run() {
LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player)); if(data.isAuthAvailable(name) && !LimboCache.getInstance().hasLimboPlayer(name)) {
} else if(PlayerCache.getInstance().isAuthenticated(name)) { if(!Settings.isSessionsEnabled) {
if(!Settings.sessionExpireOnIpChange) LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player));
if(LimboCache.getInstance().hasLimboPlayer(player.getName().toLowerCase())) { } else if(PlayerCache.getInstance().isAuthenticated(name)) {
LimboCache.getInstance().deleteLimboPlayer(name); if(!Settings.sessionExpireOnIpChange)
} if(LimboCache.getInstance().hasLimboPlayer(player.getName().toLowerCase())) {
LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player)); LimboCache.getInstance().deleteLimboPlayer(name);
} }
} LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player));
}
} }
}
}); });
}
//Check if forceSingleSession is set to true, so kick player that has joined with same nick of online player //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,9 +589,8 @@ 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;
int max = Settings.getMaxNickLength; int max = Settings.getMaxNickLength;
String regex = Settings.getNickRegex; String regex = Settings.getNickRegex;
@ -645,7 +608,7 @@ public class AuthMePlayerListener implements Listener {
} }
return; return;
} }
if (Settings.isKickNonRegisteredEnabled) { if (Settings.isKickNonRegisteredEnabled) {
if (!data.isAuthAvailable(name)) { if (!data.isAuthAvailable(name)) {
event.disallow(Result.KICK_OTHER, m._("reg_only")); event.disallow(Result.KICK_OTHER, m._("reg_only"));
@ -658,6 +621,7 @@ public class AuthMePlayerListener implements Listener {
event.disallow(Result.KICK_FULL, m._("kick_fullserver")); 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;
@ -673,7 +637,6 @@ public class AuthMePlayerListener implements Listener {
} }
} }
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerJoin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) {
@ -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)) {
@ -712,17 +679,13 @@ public class AuthMePlayerListener implements Listener {
plugin.getServer().banIP(ip); plugin.getServer().banIP(ip);
return; return;
} }
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() {
@ -823,32 +773,34 @@ 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();
if (plugin.getCitizensCommunicator().isNPC(player, plugin) || Utils.getInstance().isUnrestricted(player) || CombatTagComunicator.isNPC(player)) { if (plugin.getCitizensCommunicator().isNPC(player, plugin) || Utils.getInstance().isUnrestricted(player) || CombatTagComunicator.isNPC(player)) {
return; return;
} }
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 {
data.updateQuitLoc(auth); Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
} catch (NullPointerException npe) { } @Override
public void run() {
} data.updateQuitLoc(auth);
} }
});
} catch (NullPointerException npe) { }
}
}
if (LimboCache.getInstance().hasLimboPlayer(name)) { if (LimboCache.getInstance().hasLimboPlayer(name)) {
//System.out.println("e' nel quit"); //System.out.println("e' nel quit");
LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name); LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name);
@ -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,11 +934,11 @@ 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;
Player player = event.getPlayer(); Player player = event.getPlayer();
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
@ -1003,17 +955,14 @@ public class AuthMePlayerListener implements Listener {
return; return;
} }
} }
try { try {
final int sign = event.getClickedBlock().getTypeId(); final int sign = event.getClickedBlock().getTypeId();
if (sign == Material.SIGN_POST.getId() || sign == Material.WALL_SIGN.getId()) { if (sign == Material.SIGN_POST.getId() || sign == Material.WALL_SIGN.getId()) {
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);
} }
@ -1091,8 +1038,8 @@ 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,19 +17,16 @@ 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

@ -8,9 +8,9 @@ import org.bukkit.entity.Entity;
import uk.org.whoami.authme.AuthMe; import uk.org.whoami.authme.AuthMe;
public class CitizensCommunicator { public class CitizensCommunicator {
public AuthMe instance; public AuthMe instance;
public CitizensCommunicator(AuthMe instance) { public CitizensCommunicator(AuthMe instance) {
this.instance = instance; this.instance = instance;
} }

View File

@ -16,8 +16,9 @@ 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() {
if(Bukkit.getServer().getPluginManager().getPlugin("CombatTag") != null){ if(Bukkit.getServer().getPluginManager().getPlugin("CombatTag") != null){
combatApi = new CombatTagApi((CombatTag)Bukkit.getServer().getPluginManager().getPlugin("CombatTag")); combatApi = new CombatTagApi((CombatTag)Bukkit.getServer().getPluginManager().getPlugin("CombatTag"));
@ -30,16 +31,15 @@ public abstract class CombatTagComunicator {
* @return true if player is in combat * @return true if player is in combat
*/ */
public abstract boolean isInCombat(String player); public abstract boolean isInCombat(String player);
/** /**
* Checks to see if the player is in combat. The combat time can be configured by the server owner * Checks to see if the player is in combat. The combat time can be configured by the server owner
* If the player has died while in combat the player is no longer considered in combat and as such will return false * If the player has died while in combat the player is no longer considered in combat and as such will return false
* @param player * @param player
* @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
* -2 if the player is not in combat * -2 if the player is not in combat
@ -48,25 +48,25 @@ 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
* @return true if the player is an NPC * @return true if the player is an NPC
*/ */
public static boolean isNPC(Entity player) { public static boolean isNPC(Entity player) {
try { try {
if(Bukkit.getServer().getPluginManager().getPlugin("CombatTag") != null){ if(Bukkit.getServer().getPluginManager().getPlugin("CombatTag") != null){
combatApi = new CombatTagApi((CombatTag) Bukkit.getServer().getPluginManager().getPlugin("CombatTag")); combatApi = new CombatTagApi((CombatTag) Bukkit.getServer().getPluginManager().getPlugin("CombatTag"));
return combatApi.isNPC(player); return combatApi.isNPC(player);
} }
} catch (ClassCastException ex) { } catch (ClassCastException ex) {
return false; return false;
} catch (NullPointerException npe) { } catch (NullPointerException npe) {
return false; return false;
} catch (NoClassDefFoundError ncdfe) { } catch (NoClassDefFoundError ncdfe) {
return false; return false;
} }
return false; return false;
} }
} }

View File

@ -31,19 +31,16 @@ import uk.org.whoami.authme.AuthMe;
import uk.org.whoami.authme.settings.Settings; import uk.org.whoami.authme.settings.Settings;
public class PasswordSecurity { public class PasswordSecurity {
private static SecureRandom rnd = new SecureRandom(); private static SecureRandom rnd = new SecureRandom();
public static HashMap<String, String> userSalt = new HashMap<String, String>(); public static HashMap<String, String> userSalt = new HashMap<String, String>();
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) {
@ -79,35 +71,28 @@ public class PasswordSecurity {
private static String getSaltedHash(String message, String salt) throws NoSuchAlgorithmException { private static String getSaltedHash(String message, String salt) throws NoSuchAlgorithmException {
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);
} }
private static String getSaltedMyBB(String message, String salt) throws NoSuchAlgorithmException { private static String getSaltedMyBB(String message, String salt) throws NoSuchAlgorithmException {
return getMD5(getMD5(salt)+ getMD5(message)); return getMD5(getMD5(salt)+ getMD5(message));
} }
private static String getXAuth(String message, String salt) { private static String getXAuth(String message, String salt) {
String hash = getWhirlpool(salt + message).toLowerCase(); String hash = getWhirlpool(salt + message).toLowerCase();
int saltPos = (message.length() >= hash.length() ? hash.length() - 1 : message.length()); int saltPos = (message.length() >= hash.length() ? hash.length() - 1 : message.length());
return hash.substring(0, saltPos) + salt + hash.substring(saltPos); return hash.substring(0, saltPos) + salt + hash.substring(saltPos);
} }
private static String getSaltedIPB3(String message, String salt) throws NoSuchAlgorithmException {
return getMD5(getMD5(salt) + getMD5(message)); private static String getSaltedIPB3(String message, String salt) throws NoSuchAlgorithmException {
return getMD5(getMD5(salt) + getMD5(message));
} }
private static String createSalt(int length) throws NoSuchAlgorithmException { 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,10 +188,9 @@ 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);
} }
if(!Settings.getMySQLColumnSalt.isEmpty() && Settings.getPasswordHash == HashAlgorithm.IPB3) { if(!Settings.getMySQLColumnSalt.isEmpty() && Settings.getPasswordHash == HashAlgorithm.IPB3) {
String saltipb = AuthMe.getInstance().database.getAuth(playername).getSalt(); String saltipb = AuthMe.getInstance().database.getAuth(playername).getSalt();
@ -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,11 +255,10 @@ public class PasswordSecurity {
return phpBBhash; return phpBBhash;
} }
private static String getPlainText(String password) { private static String getPlainText(String password) {
return password; return password;
} }
public static String getPhPFusion(String msg, String keyString) { public static String getPhPFusion(String msg, String keyString) {
String digest = null; String digest = null;
String algo = "HmacSHA256"; String algo = "HmacSHA256";
@ -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,43 +17,34 @@ 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");
} }
private String unique_id(String extra) { private String unique_id(String extra) {
//TODO: Maybe check the salt? //TODO: Maybe check the salt?
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;
} }
@ -154,18 +126,16 @@ private String _hash_gensalt_private(
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
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);
} }
private static String bytes2hex(byte[] bytes) { private static String bytes2hex(byte[] bytes) {
StringBuffer r = new StringBuffer(32); StringBuffer r = new StringBuffer(32);
for (int i = 0; i < bytes.length; i++) { for (int i = 0; i < bytes.length; i++) {
@ -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

@ -19,10 +19,10 @@ public class CustomConfiguration extends YamlConfiguration{
public CustomConfiguration(File file) public CustomConfiguration(File file)
{ {
this.configFile = file; this.configFile = file;
load(); load();
} }
public void load() public void load()
{ {
try { try {
@ -36,7 +36,7 @@ public class CustomConfiguration extends YamlConfiguration{
Logger.getLogger(JavaPlugin.class.getName()).log(Level.SEVERE, configFile.getName() + " is no valid configuration file", e); Logger.getLogger(JavaPlugin.class.getName()).log(Level.SEVERE, configFile.getName() + " is no valid configuration file", e);
} }
} }
public boolean reload() { public boolean reload() {
boolean out = true; boolean out = true;
if (!configFile.exists()) if (!configFile.exists())
@ -46,7 +46,7 @@ public class CustomConfiguration extends YamlConfiguration{
if (out) load(); if (out) load();
return out; return out;
} }
public void save() { public void save() {
try { try {
super.save(configFile); super.save(configFile);
@ -54,7 +54,7 @@ public class CustomConfiguration extends YamlConfiguration{
Logger.getLogger(JavaPlugin.class.getName()).log(Level.SEVERE, "Could not save config to " + configFile.getName(), ex); Logger.getLogger(JavaPlugin.class.getName()).log(Level.SEVERE, "Could not save config to " + configFile.getName(), ex);
} }
} }
public boolean loadRessource(File file) { public boolean loadRessource(File file) {
boolean out = true; boolean out = true;
if (!file.exists()) { if (!file.exists()) {
@ -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

@ -21,17 +21,14 @@ import java.io.File;
public class Messages extends CustomConfiguration { 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() {
this.set("logged_in", "&cAlready logged in!"); this.set("logged_in", "&cAlready logged in!");
this.set("not_logged_in", "&cNot logged in!"); this.set("not_logged_in", "&cNot logged in!");
@ -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) {
@ -90,13 +86,12 @@ 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();
} }
return singleton; return singleton;
} }
} }

View File

@ -3,11 +3,15 @@ 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;
public static List<String> players; public static List<String> players;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public PlayersLogs() { public PlayersLogs() {
super(new File("./plugins/AuthMe/players.yml")); super(new File("./plugins/AuthMe/players.yml"));
@ -15,16 +19,13 @@ 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() {
if (pllog == null) { if (pllog == null) {
pllog = new PlayersLogs(); pllog = new PlayersLogs();
} }
return pllog; return pllog;
} }
} }

View File

@ -45,14 +45,13 @@ 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,
isMovementAllowed, isKickNonRegisteredEnabled, isForceSingleSessionEnabled, isMovementAllowed, isKickNonRegisteredEnabled, isForceSingleSessionEnabled,
@ -61,8 +60,7 @@ public final class Settings extends YamlConfiguration {
getEnablePasswordVerifier, protectInventoryBeforeLogInEnabled, isBackupActivated, isBackupOnStart, getEnablePasswordVerifier, protectInventoryBeforeLogInEnabled, isBackupActivated, isBackupOnStart,
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,
@ -70,24 +68,16 @@ public final class Settings extends YamlConfiguration {
getcUnrestrictedName, getRegisteredGroup, messagesLanguage, getMySQLlastlocX, getMySQLlastlocY, getMySQLlastlocZ, getcUnrestrictedName, getRegisteredGroup, messagesLanguage, getMySQLlastlocX, getMySQLlastlocY, getMySQLlastlocZ,
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;
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,21 +85,14 @@ 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"));
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);
@ -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) {
@ -455,8 +407,7 @@ public void mergeConfig() {
return PasswordSecurity.HashAlgorithm.SHA256; return PasswordSecurity.HashAlgorithm.SHA256;
} }
} }
private static HashAlgorithm getRakamakHash() { private static HashAlgorithm getRakamakHash() {
String key = "Converter.Rakamak.newPasswordHash"; String key = "Converter.Rakamak.newPasswordHash";
@ -467,15 +418,9 @@ public void mergeConfig() {
return PasswordSecurity.HashAlgorithm.SHA256; return PasswordSecurity.HashAlgorithm.SHA256;
} }
} }
/**
*
*
*
*/
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) {
@ -490,48 +435,33 @@ public void mergeConfig() {
* player that join the server, so player has a restricted access * player that join the server, so player has a restricted access
*/ */
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
* *
@ -545,7 +475,7 @@ public void mergeConfig() {
return false; return false;
} }
} }
public final void reload() { public final void reload() {
load(); load();
loadDefaults(file.getName()); loadDefaults(file.getName());
@ -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
*/ */
@ -611,7 +539,7 @@ public void mergeConfig() {
setDefaults(new MemoryConfiguration()); setDefaults(new MemoryConfiguration());
} }
/** /**
* Check loaded defaults against current configuration * Check loaded defaults against current configuration
* *
* @return false When all defaults aren't present in config * @return false When all defaults aren't present in config
@ -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;
@ -641,8 +561,9 @@ public void mergeConfig() {
ConsoleLogger.info("Set Default Language: En "); ConsoleLogger.info("Set Default Language: En ");
return "en"; return "en";
} }
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,8 +7,12 @@ 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;
private static List<String> emptyList = new ArrayList<String>(); private static List<String> emptyList = new ArrayList<String>();
@ -19,7 +23,7 @@ public class Spawn extends CustomConfiguration {
save(); save();
saveDefault(); saveDefault();
} }
private void saveDefault() { private void saveDefault() {
if (!contains("spawn")) { if (!contains("spawn")) {
set("spawn", emptyList); set("spawn", emptyList);
@ -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() {
@ -40,7 +43,7 @@ public class Spawn extends CustomConfiguration {
} }
return spawn; return spawn;
} }
public boolean setSpawn(Location location) { public boolean setSpawn(Location location) {
try { try {
set("spawn.world", location.getWorld().getName()); set("spawn.world", location.getWorld().getName());
@ -55,7 +58,7 @@ public class Spawn extends CustomConfiguration {
return false; return false;
} }
} }
public Location getLocation() { public Location getLocation() {
try { try {
if (this.getString("spawn.world").isEmpty() || this.getString("spawn.world") == "") return null; if (this.getString("spawn.world").isEmpty() || this.getString("spawn.world") == "") return null;
@ -65,4 +68,5 @@ public class Spawn extends CustomConfiguration {
return null; return null;
} }
} }
} }

View File

@ -7,7 +7,7 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
public class SpoutCfg extends CustomConfiguration{ public class SpoutCfg extends CustomConfiguration{
private static SpoutCfg instance = null; private static SpoutCfg instance = null;
public SpoutCfg(File file) public SpoutCfg(File 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,16 +29,13 @@ 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() {
if (instance == null) instance = new SpoutCfg(new File("plugins/AuthMe", "spout.yml")); if (instance == null) instance = new SpoutCfg(new File("plugins/AuthMe", "spout.yml"));
return instance; return instance;
} }
} }

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:
@ -134,4 +134,7 @@ permissions:
default: op default: op
authme.vip: authme.vip:
description: Allow vip slot when the server is full description: Allow vip slot when the server is full
default: op
authme.admin.purgebannedplayers:
description: Purge banned players
default: op default: op