Update 3.3.3

This commit is contained in:
Xephi
2014-02-20 12:54:10 +01:00
parent 5a089fa690
commit 4e7e9e6cb4
21 changed files with 315 additions and 127 deletions
@@ -14,7 +14,7 @@ public class CacheDataSource implements DataSource {
private DataSource source;
public AuthMe plugin;
private final HashMap<String, PlayerAuth> cache = new HashMap<String, PlayerAuth>();
private HashMap<String, PlayerAuth> cache = new HashMap<String, PlayerAuth>();
public CacheDataSource(AuthMe plugin, DataSource source) {
this.plugin = plugin;
@@ -23,16 +23,18 @@ public class CacheDataSource implements DataSource {
@Override
public synchronized boolean isAuthAvailable(String user) {
return cache.containsKey(user) ? true : source.isAuthAvailable(user);
if (cache.containsKey(user.toLowerCase())) return true;
return source.isAuthAvailable(user.toLowerCase());
}
@Override
public synchronized PlayerAuth getAuth(String user) {
if(cache.containsKey(user)) {
return cache.get(user);
if(cache.containsKey(user.toLowerCase())) {
return cache.get(user.toLowerCase());
} else {
PlayerAuth auth = source.getAuth(user);
cache.put(user, auth);
PlayerAuth auth = source.getAuth(user.toLowerCase());
if (auth != null)
cache.put(user.toLowerCase(), auth);
return auth;
}
}
@@ -49,7 +51,8 @@ public class CacheDataSource implements DataSource {
@Override
public synchronized boolean updatePassword(PlayerAuth auth) {
if (source.updatePassword(auth)) {
cache.get(auth.getNickname()).setHash(auth.getHash());
if (cache.containsKey(auth.getNickname().toLowerCase()))
cache.get(auth.getNickname()).setHash(auth.getHash());
return true;
}
return false;
@@ -58,8 +61,10 @@ public class CacheDataSource implements DataSource {
@Override
public boolean updateSession(PlayerAuth auth) {
if (source.updateSession(auth)) {
cache.get(auth.getNickname()).setIp(auth.getIp());
cache.get(auth.getNickname()).setLastLogin(auth.getLastLogin());
if (cache.containsKey(auth.getNickname().toLowerCase())) {
cache.get(auth.getNickname()).setIp(auth.getIp());
cache.get(auth.getNickname()).setLastLogin(auth.getLastLogin());
}
return true;
}
return false;
@@ -68,10 +73,12 @@ public class CacheDataSource implements DataSource {
@Override
public boolean updateQuitLoc(PlayerAuth auth) {
if (source.updateQuitLoc(auth)) {
cache.get(auth.getNickname()).setQuitLocX(auth.getQuitLocX());
cache.get(auth.getNickname()).setQuitLocY(auth.getQuitLocY());
cache.get(auth.getNickname()).setQuitLocZ(auth.getQuitLocZ());
cache.get(auth.getNickname()).setWorld(auth.getWorld());
if (cache.containsKey(auth.getNickname().toLowerCase())) {
cache.get(auth.getNickname()).setQuitLocX(auth.getQuitLocX());
cache.get(auth.getNickname()).setQuitLocY(auth.getQuitLocY());
cache.get(auth.getNickname()).setQuitLocZ(auth.getQuitLocZ());
cache.get(auth.getNickname()).setWorld(auth.getWorld());
}
return true;
}
return false;
@@ -110,8 +117,8 @@ public class CacheDataSource implements DataSource {
@Override
public synchronized boolean removeAuth(String user) {
if (source.removeAuth(user)) {
cache.remove(user);
if (source.removeAuth(user.toLowerCase())) {
cache.remove(user.toLowerCase());
return true;
}
return false;
@@ -125,6 +132,7 @@ public class CacheDataSource implements DataSource {
@Override
public void reload() {
cache.clear();
source.reload();
for (Player player : plugin.getServer().getOnlinePlayers()) {
String user = player.getName().toLowerCase();
if (PlayerCache.getInstance().isAuthenticated(user)) {
@@ -141,7 +149,8 @@ public class CacheDataSource implements DataSource {
@Override
public synchronized boolean updateEmail(PlayerAuth auth) {
if(source.updateEmail(auth)) {
cache.get(auth.getNickname()).setEmail(auth.getEmail());
if (cache.containsKey(auth.getNickname().toLowerCase()))
cache.get(auth.getNickname()).setEmail(auth.getEmail());
return true;
}
return false;
@@ -150,7 +159,8 @@ public class CacheDataSource implements DataSource {
@Override
public synchronized boolean updateSalt(PlayerAuth auth) {
if(source.updateSalt(auth)) {
cache.get(auth.getNickname()).setSalt(auth.getSalt());
if (cache.containsKey(auth.getNickname().toLowerCase()))
cache.get(auth.getNickname()).setSalt(auth.getSalt());
return true;
}
return false;
@@ -604,6 +604,17 @@ public class MySQLDataSource implements DataSource {
@Override
public void reload() {
try {
reconnect(true);
} catch (Exception e) {
ConsoleLogger.showError(e.getMessage());
if (Settings.isStopEnabled) {
ConsoleLogger.showError("Can't reconnect to MySQL database... Please check your MySQL informations ! SHUTDOWN...");
AuthMe.getInstance().getServer().shutdown();
}
if (!Settings.isStopEnabled)
AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance());
}
}
private void close(Statement st) {
@@ -749,7 +760,7 @@ public class MySQLDataSource implements DataSource {
} catch (Exception te) {
try {
con = null;
reconnect();
reconnect(false);
} catch (Exception e) {
ConsoleLogger.showError(e.getMessage());
if (Settings.isStopEnabled) {
@@ -765,7 +776,7 @@ public class MySQLDataSource implements DataSource {
throw new AssertionError(ae.getMessage());
try {
con = null;
reconnect();
reconnect(false);
} catch (Exception e) {
ConsoleLogger.showError(e.getMessage());
if (Settings.isStopEnabled) {
@@ -781,7 +792,7 @@ public class MySQLDataSource implements DataSource {
return con;
}
private synchronized void reconnect() throws ClassNotFoundException, SQLException, TimeoutException {
private synchronized void reconnect(boolean reload) throws ClassNotFoundException, SQLException, TimeoutException {
conPool.dispose();
Class.forName("com.mysql.jdbc.Driver");
MysqlConnectionPoolDataSource dataSource = new MysqlConnectionPoolDataSource();
@@ -791,7 +802,8 @@ public class MySQLDataSource implements DataSource {
dataSource.setUser(username);
dataSource.setPassword(password);
conPool = new MiniConnectionPoolManager(dataSource, 10);
ConsoleLogger.info("ConnectionPool was unavailable... Reconnected!");
if(!reload)
ConsoleLogger.info("ConnectionPool was unavailable... Reconnected!");
}
}