From dc35d768aae4b36cf4c62f549e89b49b75e6431b Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Sat, 19 Sep 2015 20:20:46 +0200 Subject: [PATCH] add max connections setting --- src/main/java/fr/xephi/authme/Utils.java | 2 - .../fr/xephi/authme/datasource/MySQL.java | 4 +- .../fr/xephi/authme/settings/Settings.java | 130 ++++++++++-------- src/main/resources/config.yml | 2 + 4 files changed, 80 insertions(+), 58 deletions(-) diff --git a/src/main/java/fr/xephi/authme/Utils.java b/src/main/java/fr/xephi/authme/Utils.java index 645e7faf3..b0feda6bb 100644 --- a/src/main/java/fr/xephi/authme/Utils.java +++ b/src/main/java/fr/xephi/authme/Utils.java @@ -12,9 +12,7 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import java.io.File; -import java.io.IOException; import java.lang.reflect.Method; -import java.nio.file.Files; import java.util.Arrays; import java.util.Collection; import java.util.Collections; diff --git a/src/main/java/fr/xephi/authme/datasource/MySQL.java b/src/main/java/fr/xephi/authme/datasource/MySQL.java index 6557ebaca..8e5d4cc10 100644 --- a/src/main/java/fr/xephi/authme/datasource/MySQL.java +++ b/src/main/java/fr/xephi/authme/datasource/MySQL.java @@ -37,6 +37,7 @@ public class MySQL implements DataSource { private List columnOthers; private HikariDataSource ds; private String columnRealName; + private int maxConnections; public MySQL() throws ClassNotFoundException, SQLException, PoolInitializationException { this.host = Settings.getMySQLHost; @@ -60,6 +61,7 @@ public class MySQL implements DataSource { this.columnID = Settings.getMySQLColumnId; this.columnLogged = Settings.getMySQLColumnLogged; this.columnRealName = Settings.getMySQLColumnRealName; + this.maxConnections = Settings.getMySQLMaxConnections; // Set the connection arguments (and check if connection is ok) try { @@ -105,7 +107,7 @@ public class MySQL implements DataSource { 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(maxConnections); ds = new HikariDataSource(config); ConsoleLogger.info("Connection arguments loaded, Hikari ConnectionPool ready!"); } diff --git a/src/main/java/fr/xephi/authme/settings/Settings.java b/src/main/java/fr/xephi/authme/settings/Settings.java index d57a82cf5..0b923314b 100644 --- a/src/main/java/fr/xephi/authme/settings/Settings.java +++ b/src/main/java/fr/xephi/authme/settings/Settings.java @@ -90,7 +90,7 @@ public final class Settings extends YamlConfiguration { getMailPort, maxLoginTry, captchaLength, saltLength, getmaxRegPerEmail, bCryptLog2Rounds, getPhpbbGroup, antiBotSensibility, antiBotDuration, delayRecall, getMaxLoginPerIp, - getMaxJoinPerIp; + getMaxJoinPerIp, getMySQLMaxConnections; protected static YamlConfiguration configFile; @@ -152,6 +152,7 @@ public final class Settings extends YamlConfiguration { isCachingEnabled = configFile.getBoolean("DataSource.caching", true); getMySQLHost = configFile.getString("DataSource.mySQLHost", "127.0.0.1"); getMySQLPort = configFile.getString("DataSource.mySQLPort", "3306"); + getMySQLMaxConnections = configFile.getInt("DataSource.mySQLMaxConections", 25); getMySQLUsername = configFile.getString("DataSource.mySQLUsername", "authme"); getMySQLPassword = configFile.getString("DataSource.mySQLPassword", "12345"); getMySQLDatabase = configFile.getString("DataSource.mySQLDatabase", "authme"); @@ -280,178 +281,197 @@ public final class Settings extends YamlConfiguration { } public void mergeConfig() { - int changes = 0; - if (contains("Xenoforo.predefinedSalt")) + boolean changes = false; + if (contains("Xenoforo.predefinedSalt")) { set("Xenoforo.predefinedSalt", null); - if (configFile.getString("settings.security.passwordHash", "SHA256").toUpperCase().equals("XFSHA1") || configFile.getString("settings.security.passwordHash", "SHA256").toUpperCase().equals("XFSHA256")) + changes = true; + } + if (configFile.getString("settings.security.passwordHash", "SHA256").toUpperCase().equals("XFSHA1") || configFile.getString("settings.security.passwordHash", "SHA256").toUpperCase().equals("XFSHA256")) { set("settings.security.passwordHash", "XENFORO"); + changes = true; + } if (!contains("Protection.enableProtection")) { set("Protection.enableProtection", false); - changes++; + changes = true; + } + if (!contains("DataSource.mySQLMaxConections")) { + set("DataSource.mySQLMaxConections", 25); + changes = true; } if (!contains("Protection.countries")) { countries = new ArrayList<>(); countries.add("US"); countries.add("GB"); set("Protection.countries", countries); - changes++; + changes = true; } if (!contains("Protection.enableAntiBot")) { set("Protection.enableAntiBot", false); - changes++; + changes = true; } if (!contains("Protection.antiBotSensibility")) { set("Protection.antiBotSensibility", 5); - changes++; + changes = true; } if (!contains("Protection.antiBotDuration")) { set("Protection.antiBotDuration", 10); - changes++; + changes = true; } if (!contains("settings.forceCommands")) { set("settings.forceCommands", new ArrayList()); - changes++; + changes = true; } if (!contains("settings.forceCommandsAsConsole")) { set("settings.forceCommandsAsConsole", new ArrayList()); - changes++; + changes = true; } if (!contains("Email.recallPlayers")) { set("Email.recallPlayers", false); - changes++; + changes = true; } if (!contains("Email.delayRecall")) { set("Email.delayRecall", 5); - changes++; + changes = true; } if (!contains("settings.useWelcomeMessage")) { set("settings.useWelcomeMessage", true); - changes++; + changes = true; } if (!contains("settings.security.unsafePasswords")) { List str = new ArrayList<>(); str.add("123456"); str.add("password"); set("settings.security.unsafePasswords", str); - changes++; + changes = true; } if (!contains("Protection.countriesBlacklist")) { countriesBlacklist = new ArrayList<>(); countriesBlacklist.add("A1"); set("Protection.countriesBlacklist", countriesBlacklist); - changes++; + changes = true; } if (!contains("settings.broadcastWelcomeMessage")) { set("settings.broadcastWelcomeMessage", false); - changes++; + changes = true; } if (!contains("settings.registration.forceKickAfterRegister")) { set("settings.registration.forceKickAfterRegister", false); - changes++; + changes = true; } if (!contains("settings.registration.forceLoginAfterRegister")) { set("settings.registration.forceLoginAfterRegister", false); - changes++; + changes = true; } if (!contains("DataSource.mySQLColumnLogged")) { set("DataSource.mySQLColumnLogged", "isLogged"); - changes++; + changes = true; } if (!contains("settings.restrictions.spawnPriority")) { set("settings.restrictions.spawnPriority", "authme,essentials,multiverse,default"); - changes++; + changes = true; } if (!contains("settings.restrictions.maxLoginPerIp")) { set("settings.restrictions.maxLoginPerIp", 0); - changes++; + changes = true; } if (!contains("settings.restrictions.maxJoinPerIp")) { set("settings.restrictions.maxJoinPerIp", 0); - changes++; + changes = true; } if (!contains("VeryGames.enableIpCheck")) { set("VeryGames.enableIpCheck", false); - changes++; + changes = true; } - if (getString("settings.restrictions.allowedNicknameCharacters").equals("[a-zA-Z0-9_?]*")) + if (getString("settings.restrictions.allowedNicknameCharacters").equals("[a-zA-Z0-9_?]*")) { set("settings.restrictions.allowedNicknameCharacters", "[a-zA-Z0-9_]*"); + changes = true; + } if (!contains("settings.delayJoinMessage")) { set("settings.delayJoinMessage", false); - changes++; + changes = true; } if (!contains("settings.restrictions.noTeleport")) { set("settings.restrictions.noTeleport", false); - changes++; + changes = true; } - if (contains("Converter.Rakamak.newPasswordHash")) + if (contains("Converter.Rakamak.newPasswordHash")) { set("Converter.Rakamak.newPasswordHash", null); + changes = true; + } if (!contains("Converter.CrazyLogin.fileName")) { set("Converter.CrazyLogin.fileName", "accounts.db"); - changes++; + changes = true; } if (!contains("settings.restrictions.allowedPasswordCharacters")) { set("settings.restrictions.allowedPasswordCharacters", "[\\x21-\\x7E]*"); - changes++; + changes = true; } if (!contains("settings.applyBlindEffect")) { set("settings.applyBlindEffect", false); - changes++; + changes = true; } if (!contains("Email.emailBlacklisted")) { set("Email.emailBlacklisted", new ArrayList()); - changes++; + changes = true; } - if (contains("Performances.useMultiThreading")) + if (contains("Performances.useMultiThreading")) { set("Performances.useMultiThreading", null); - - if (contains("Performances")) + changes = true; + } + if (contains("Performances")) { set("Performances", null); - - if (contains("Passpartu.enablePasspartu")) + changes = true; + } + if (contains("Passpartu.enablePasspartu")) { set("Passpartu.enablePasspartu", null); - - if (contains("Passpartu")) + changes = true; + } + if (contains("Passpartu")) { set("Passpartu", null); - + changes = true; + } if (!contains("Email.emailWhitelisted")) { set("Email.emailWhitelisted", new ArrayList()); - changes++; + changes = true; } if (!contains("settings.forceRegisterCommands")) { set("settings.forceRegisterCommands", new ArrayList()); - changes++; + changes = true; } if (!contains("settings.forceRegisterCommandsAsConsole")) { set("settings.forceRegisterCommandsAsConsole", new ArrayList()); - changes++; + changes = true; } if (!contains("Hooks.customAttributes")) { set("Hooks.customAttributes", false); - changes++; + changes = true; } if (!contains("Purge.removePermissions")) { set("Purge.removePermissions", false); - changes++; + changes = true; } - if (contains("Hooks.notifications")) + if (contains("Hooks.notifications")) { set("Hooks.notifications", null); - boolean useChestShop = false; - if (contains("Hooks.chestshop")) { - useChestShop = getBoolean("Hooks.chestshop"); - set("Hooks.chestshop", null); + changes = true; + } + if (contains("Hooks.chestshop")) { + if(getBoolean("Hooks.chestshop")) { + set("Hooks.legacyChestshop", true); + } + set("Hooks.chestshop", null); + changes = true; } - set("Hooks.legacyChestshop", useChestShop); if (!contains("Email.generateImage")) { set("Email.generateImage", true); - changes++; + changes = true; } if (!contains("DataSource.mySQLRealName")) { set("DataSource.mySQLRealName", "realname"); - changes++; + changes = true; } - if (changes > 0) { - plugin.getLogger().warning("Merge " + changes + " new Config Options - I'm not an error, please don't report me"); + if (changes) { + plugin.getLogger().warning("Merged new Config Options - I'm not an error, please don't report me"); plugin.getLogger().warning("Please check your config.yml file for new configs!"); } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index d66c5a141..b183912e8 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -8,6 +8,8 @@ DataSource: mySQLHost: 127.0.0.1 # Database Port mySQLPort: '3306' + # MySql Max Connections + mySQLMaxConections: 25 # Username about Database Connection Infos mySQLUsername: authme # Password about Database Connection Infos