|
|
|
@@ -1,24 +1,18 @@
|
|
|
|
|
package fr.xephi.authme.datasource;
|
|
|
|
|
|
|
|
|
|
import java.sql.Blob;
|
|
|
|
|
import java.sql.Connection;
|
|
|
|
|
import java.sql.PreparedStatement;
|
|
|
|
|
import java.sql.ResultSet;
|
|
|
|
|
import java.sql.SQLException;
|
|
|
|
|
import java.sql.Statement;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
import com.zaxxer.hikari.HikariConfig;
|
|
|
|
|
import com.zaxxer.hikari.HikariDataSource;
|
|
|
|
|
import com.zaxxer.hikari.pool.PoolInitializationException;
|
|
|
|
|
|
|
|
|
|
import fr.xephi.authme.AuthMe;
|
|
|
|
|
import fr.xephi.authme.ConsoleLogger;
|
|
|
|
|
import fr.xephi.authme.cache.auth.PlayerAuth;
|
|
|
|
|
import fr.xephi.authme.security.HashAlgorithm;
|
|
|
|
|
import fr.xephi.authme.settings.Settings;
|
|
|
|
|
|
|
|
|
|
import java.sql.*;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
public class MySQL implements DataSource {
|
|
|
|
|
|
|
|
|
|
private String host;
|
|
|
|
@@ -43,6 +37,7 @@ public class MySQL implements DataSource {
|
|
|
|
|
private List<String> columnOthers;
|
|
|
|
|
private HikariDataSource ds;
|
|
|
|
|
private String columnRealName;
|
|
|
|
|
private Connection connection;
|
|
|
|
|
|
|
|
|
|
public MySQL() throws ClassNotFoundException, SQLException, PoolInitializationException {
|
|
|
|
|
this.host = Settings.getMySQLHost;
|
|
|
|
@@ -135,19 +130,19 @@ public class MySQL implements DataSource {
|
|
|
|
|
config.setPassword(this.password);
|
|
|
|
|
config.addDataSourceProperty("cachePrepStmts", "true");
|
|
|
|
|
config.addDataSourceProperty("prepStmtCacheSize", "250");
|
|
|
|
|
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
|
|
|
|
|
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
|
|
|
|
|
config.addDataSourceProperty("autoReconnect", false);
|
|
|
|
|
config.setInitializationFailFast(true); // Don't start the plugin if the database is unavariable
|
|
|
|
|
config.setMaxLifetime(180000); // 3 Min
|
|
|
|
|
config.setIdleTimeout(60000); // 1 Min
|
|
|
|
|
config.setMaximumPoolSize(50); // 50 (including idle connections)
|
|
|
|
|
config.setMaximumPoolSize(50); // 50 (including idle connections)
|
|
|
|
|
ds = new HikariDataSource(config);
|
|
|
|
|
ConsoleLogger.info("Connection arguments loaded, Hikari ConnectionPool ready!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private synchronized void reloadArguments()
|
|
|
|
|
throws ClassNotFoundException, IllegalArgumentException {
|
|
|
|
|
if (ds != null){
|
|
|
|
|
if (ds != null) {
|
|
|
|
|
ds.close();
|
|
|
|
|
}
|
|
|
|
|
setConnectionArguments();
|
|
|
|
@@ -262,7 +257,8 @@ public class MySQL implements DataSource {
|
|
|
|
|
if (!columnSalt.isEmpty()) {
|
|
|
|
|
if (!columnGroup.isEmpty())
|
|
|
|
|
pAuth = new PlayerAuth(rs.getString(columnName).toLowerCase(), rs.getString(columnPassword), rs.getString(columnSalt), rs.getInt(columnGroup), rs.getString(columnIp), rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail), rs.getString(columnRealName));
|
|
|
|
|
else pAuth = new PlayerAuth(rs.getString(columnName).toLowerCase(), rs.getString(columnPassword), rs.getString(columnSalt), rs.getString(columnIp), rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail), rs.getString(columnRealName));
|
|
|
|
|
else
|
|
|
|
|
pAuth = new PlayerAuth(rs.getString(columnName).toLowerCase(), rs.getString(columnPassword), rs.getString(columnSalt), rs.getString(columnIp), rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail), rs.getString(columnRealName));
|
|
|
|
|
} else {
|
|
|
|
|
pAuth = new PlayerAuth(rs.getString(columnName).toLowerCase(), rs.getString(columnPassword), rs.getString(columnIp), rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail), rs.getString(columnRealName));
|
|
|
|
|
}
|
|
|
|
@@ -1041,7 +1037,8 @@ public class MySQL implements DataSource {
|
|
|
|
|
if (!columnSalt.isEmpty()) {
|
|
|
|
|
if (!columnGroup.isEmpty())
|
|
|
|
|
pAuth = new PlayerAuth(rs.getString(columnName), rs.getString(columnPassword), rs.getString(columnSalt), rs.getInt(columnGroup), rs.getString(columnIp), rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail), rs.getString(columnRealName));
|
|
|
|
|
else pAuth = new PlayerAuth(rs.getString(columnName), rs.getString(columnPassword), rs.getString(columnSalt), rs.getString(columnIp), rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail), rs.getString(columnRealName));
|
|
|
|
|
else
|
|
|
|
|
pAuth = new PlayerAuth(rs.getString(columnName), rs.getString(columnPassword), rs.getString(columnSalt), rs.getString(columnIp), rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail), rs.getString(columnRealName));
|
|
|
|
|
} else {
|
|
|
|
|
pAuth = new PlayerAuth(rs.getString(columnName), rs.getString(columnPassword), rs.getString(columnIp), rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail), rs.getString(columnRealName));
|
|
|
|
|
}
|
|
|
|
@@ -1092,7 +1089,8 @@ public class MySQL implements DataSource {
|
|
|
|
|
if (!columnSalt.isEmpty()) {
|
|
|
|
|
if (!columnGroup.isEmpty())
|
|
|
|
|
pAuth = new PlayerAuth(rs.getString(columnName), rs.getString(columnPassword), rs.getString(columnSalt), rs.getInt(columnGroup), rs.getString(columnIp), rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail), rs.getString(columnRealName));
|
|
|
|
|
else pAuth = new PlayerAuth(rs.getString(columnName), rs.getString(columnPassword), rs.getString(columnSalt), rs.getString(columnIp), rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail), rs.getString(columnRealName));
|
|
|
|
|
else
|
|
|
|
|
pAuth = new PlayerAuth(rs.getString(columnName), rs.getString(columnPassword), rs.getString(columnSalt), rs.getString(columnIp), rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail), rs.getString(columnRealName));
|
|
|
|
|
} else {
|
|
|
|
|
pAuth = new PlayerAuth(rs.getString(columnName), rs.getString(columnPassword), rs.getString(columnIp), rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail), rs.getString(columnRealName));
|
|
|
|
|
}
|
|
|
|
|