Merge branch 'master' of git://github.com/AuthMe-Team/AuthMeReloaded into AuthMe-Team-master

Conflicts:
	src/main/java/fr/xephi/authme/datasource/MySQL.java
This commit is contained in:
DNx5
2015-09-07 20:49:10 +07:00
11 changed files with 84 additions and 40 deletions
+3 -1
View File
@@ -231,8 +231,9 @@ public class AuthMe extends JavaPlugin {
dataManager = new DataManager(this);
// Setup API
// Setup the new API
api = new NewAPI(this);
// Old deprecated API
new API(this);
// Setup Management
@@ -308,6 +309,7 @@ public class AuthMe extends JavaPlugin {
// Sponsor message
ConsoleLogger.info("AuthMe hooks perfectly with the VERYGAMES server hosting!");
ConsoleLogger.info("Development builds are available on our jenkins, thanks to our sponsor GameHosting.it - leader in Italy as Game Server Provider");
ConsoleLogger.info("AuthMe " + this.getDescription().getVersion() + " correctly enabled!");
}
@@ -520,6 +520,7 @@ public class AdminCommand implements CommandExecutor {
m.send(sender, "error");
return true;
}
@SuppressWarnings("deprecation")
Player target = Bukkit.getPlayer(name);
PlayerCache.getInstance().removePlayer(name);
Utils.getInstance().setGroup(name, groupType.UNREGISTERED);
@@ -602,6 +603,7 @@ public class AdminCommand implements CommandExecutor {
sender.sendMessage("Usage: /authme getip <onlineplayername>");
return true;
}
@SuppressWarnings("deprecation")
Player player = Bukkit.getPlayer(args[1]);
if (player == null) {
sender.sendMessage("This player is not actually online");
@@ -617,6 +619,7 @@ public class AdminCommand implements CommandExecutor {
return true;
}
try {
@SuppressWarnings("deprecation")
Player player = Bukkit.getPlayer(args[1]);
if (player == null || !player.isOnline()) {
sender.sendMessage("Player needs to be online!");
@@ -150,10 +150,9 @@ public class MySQL implements DataSource {
}
private synchronized Connection getConnection() throws SQLException {
if (connection == null || connection.isClosed()) {
connection = ds.getConnection();
}
return connection;
Connection con = null;
con = ds.getConnection();
return con;
}
private synchronized void setupConnection() throws SQLException {
@@ -100,7 +100,7 @@ public class SQLite_HIKARI implements DataSource {
this.setupConnection();
} catch (SQLException e) {
ConsoleLogger.showError(e.getMessage());
ConsoleLogger.showError("Can't initialize the MySQL database... Please check your database settings in the config.yml file! SHUTDOWN...");
ConsoleLogger.showError("Can't initialize the SQLite database... Please check your database settings in the config.yml file! SHUTDOWN...");
ConsoleLogger.showError("If this error persists, please report it to the developer! SHUTDOWN...");
this.close();
if (Settings.isStopEnabled) {
@@ -133,30 +133,18 @@ public class SQLite_HIKARI implements DataSource {
ConsoleLogger.info("Connection arguments loaded, Hikari ConnectionPool ready!");
}
private synchronized Connection getRawConnection() {
Connection con = null;
while(con == null){
try {
con = ds.getConnection();
} catch (SQLException ce) {
return null;
}
private synchronized void reloadArguments()
throws ClassNotFoundException, IllegalArgumentException {
if (ds != null){
ds.close();
}
return con;
setConnectionArguments();
ConsoleLogger.info("Hikari ConnectionPool arguments reloaded!");
}
private synchronized Connection getConnection() {
Connection con;
con = getRawConnection();
if(con == null){
ds.close();
ConsoleLogger.showError("Database connection is LOST! SHUTDOWN...");
if (Settings.isStopEnabled) {
AuthMe.getInstance().getServer().shutdown();
} else {
AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance());
}
}
private synchronized Connection getConnection() throws SQLException {
Connection con = null;
con = ds.getConnection();
return con;
}
@@ -165,17 +153,7 @@ public class SQLite_HIKARI implements DataSource {
Statement st = null;
ResultSet rs = null;
try {
con = getRawConnection();
if(con == null){
ds.close();
if (Settings.isStopEnabled) {
ConsoleLogger.showError("Can't connect to the SQLite database... Please check your database settings in the config.yml file! SHUTDOWN...");
AuthMe.getInstance().getServer().shutdown();
} else {
AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance());
}
return;
}
con = getConnection();
st = con.createStatement();
st.executeUpdate("CREATE TABLE IF NOT EXISTS " + tableName + " (" + columnID + " INTEGER AUTO_INCREMENT," + columnName + " VARCHAR(255) NOT NULL UNIQUE," + columnPassword + " VARCHAR(255) NOT NULL," + columnIp + " VARCHAR(40) NOT NULL," + columnLastLogin + " BIGINT," + lastlocX + " DOUBLE NOT NULL DEFAULT '0.0'," + lastlocY + " DOUBLE NOT NULL DEFAULT '0.0'," + lastlocZ + " DOUBLE NOT NULL DEFAULT '0.0'," + lastlocWorld + " VARCHAR(255) NOT NULL DEFAULT '" + Settings.defaultWorld + "'," + columnEmail + " VARCHAR(255) DEFAULT 'your@email.com'," + "CONSTRAINT table_const_prim PRIMARY KEY (" + columnID + "));");
rs = con.getMetaData().getColumns(null, null, tableName, columnPassword);
@@ -807,6 +785,17 @@ public class SQLite_HIKARI implements DataSource {
@Override
public void reload() {
try {
reloadArguments();
} catch (Exception e) {
ConsoleLogger.showError(e.getMessage());
ConsoleLogger.showError("Can't reconnect to SQLite database... Please check your SQLite informations ! SHUTDOWN...");
if (Settings.isStopEnabled) {
AuthMe.getInstance().getServer().shutdown();
}
if (!Settings.isStopEnabled)
AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance());
}
}
@Override
@@ -25,6 +25,7 @@ public enum HashAlgorithm {
SHA512(fr.xephi.authme.security.crypts.SHA512.class),
DOUBLEMD5(fr.xephi.authme.security.crypts.DOUBLEMD5.class),
PBKDF2(fr.xephi.authme.security.crypts.CryptPBKDF2.class),
PBKDF2DJANGO(fr.xephi.authme.security.crypts.CryptPBKDF2Django.class),
WORDPRESS(fr.xephi.authme.security.crypts.WORDPRESS.class),
ROYALAUTH(fr.xephi.authme.security.crypts.ROYALAUTH.class),
CRAZYCRYPT1(fr.xephi.authme.security.crypts.CRAZYCRYPT1.class),
@@ -28,4 +28,4 @@ public class CryptPBKDF2 implements EncryptionMethod {
return engine.verifyKey(password);
}
}
}
@@ -0,0 +1,32 @@
package fr.xephi.authme.security.crypts;
import java.security.NoSuchAlgorithmException;
import fr.xephi.authme.security.pbkdf2.PBKDF2Engine;
import fr.xephi.authme.security.pbkdf2.PBKDF2Parameters;
import javax.xml.bind.DatatypeConverter;
public class CryptPBKDF2Django implements EncryptionMethod {
@Override
public String getHash(String password, String salt, String name)
throws NoSuchAlgorithmException {
String result = "pbkdf2_sha256$15000$" + salt + "$";
PBKDF2Parameters params = new PBKDF2Parameters("HmacSHA256", "ASCII", salt.getBytes(), 15000);
PBKDF2Engine engine = new PBKDF2Engine(params);
return result + String.valueOf(DatatypeConverter.printBase64Binary(engine.deriveKey(password, 32)));
}
@Override
public boolean comparePassword(String hash, String password,
String playerName) throws NoSuchAlgorithmException {
String[] line = hash.split("\\$");
String salt = line[2];
byte[] derivedKey = DatatypeConverter.parseBase64Binary(line[3]);
PBKDF2Parameters params = new PBKDF2Parameters("HmacSHA256", "ASCII", salt.getBytes(), 15000, derivedKey);
PBKDF2Engine engine = new PBKDF2Engine(params);
return engine.verifyKey(password);
}
}
+1 -1
View File
@@ -200,7 +200,7 @@ settings:
# possible values: MD5, SHA1, SHA256, WHIRLPOOL, XAUTH, MD5VB, PHPBB,
# PLAINTEXT ( unhashed password),
# MYBB, IPB3, PHPFUSION, SMF, XENFORO, SALTED2MD5, JOOMLA, BCRYPT, WBB3, SHA512,
# DOUBLEMD5, PBKDF2, WORDPRESS, ROYALAUTH, CUSTOM(for developpers only)
# DOUBLEMD5, PBKDF2, PBKDF2DJANGO, WORDPRESS, ROYALAUTH, CUSTOM(for developpers only)
passwordHash: SHA256
# salt length for the SALTED2MD5 MD5(MD5(password)+salt)
doubleMD5SaltLength: 8