Update 3.3.3
This commit is contained in:
@@ -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!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user