diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java index ca7ae7404..45a6052ec 100644 --- a/src/main/java/fr/xephi/authme/AuthMe.java +++ b/src/main/java/fr/xephi/authme/AuthMe.java @@ -129,7 +129,6 @@ public class AuthMe extends JavaPlugin { try { settings = new Settings(this); - settings.loadConfigOptions(); } catch (Exception e) { ConsoleLogger.showError("Can't load the configuration file... Something went wrong, to avoid security issues the server will shutdown!"); this.getServer().shutdown(); diff --git a/src/main/java/fr/xephi/authme/settings/Settings.java b/src/main/java/fr/xephi/authme/settings/Settings.java index 61b5a682f..12b4c6652 100644 --- a/src/main/java/fr/xephi/authme/settings/Settings.java +++ b/src/main/java/fr/xephi/authme/settings/Settings.java @@ -7,7 +7,6 @@ import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; -import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -100,21 +99,31 @@ public final class Settings extends YamlConfiguration { public Settings(AuthMe plugin) { this.file = new File(plugin.getDataFolder(), "config.yml"); this.plugin = plugin; - if (exists()) { + boolean exist = exists(); + if (exist) { load(); } else { - loadDefaults(file.getName()); + plugin.saveDefaultConfig(); load(); } configFile = (YamlConfiguration) plugin.getConfig(); PLUGIN_FOLDER = plugin.getDataFolder().toString(); + loadConfigOptions(exist); + } + + public void loadConfigOptions(boolean exist) { + plugin.getLogger().info("Loading Configuration File..."); + if (exist) + mergeConfig(); + + loadVariables(); + + if (exist) + saveDefaults(); } @SuppressWarnings("unchecked") - public void loadConfigOptions() { - plugin.getLogger().info("Loading Configuration File..."); - mergeConfig(); - + public static void loadVariables() { messagesLanguage = checkLang(configFile.getString("settings.messagesLanguage", "en")); isPermissionCheckEnabled = configFile.getBoolean("permission.EnablePermissionCheck", false); isForcedRegistrationEnabled = configFile.getBoolean("settings.registration.force", true); @@ -274,176 +283,14 @@ public final class Settings extends YamlConfiguration { generateImage = configFile.getBoolean("Email.generateImage", true); // Load the welcome message - getWelcomeMessage(plugin); + getWelcomeMessage(); - saveDefaults(); } - @SuppressWarnings("unchecked") public static void reloadConfigOptions(YamlConfiguration newConfig) { configFile = newConfig; - messagesLanguage = checkLang(configFile.getString("settings.messagesLanguage", "en")); - isPermissionCheckEnabled = configFile.getBoolean("permission.EnablePermissionCheck", false); - isForcedRegistrationEnabled = configFile.getBoolean("settings.registration.force", true); - isRegistrationEnabled = configFile.getBoolean("settings.registration.enabled", true); - isTeleportToSpawnEnabled = configFile.getBoolean("settings.restrictions.teleportUnAuthedToSpawn", false); - getWarnMessageInterval = configFile.getInt("settings.registration.messageInterval", 5); - isSessionsEnabled = configFile.getBoolean("settings.sessions.enabled", false); - getSessionTimeout = configFile.getInt("settings.sessions.timeout", 10); - getRegistrationTimeout = configFile.getInt("settings.restrictions.timeout", 30); - isChatAllowed = configFile.getBoolean("settings.restrictions.allowChat", false); - getMaxNickLength = configFile.getInt("settings.restrictions.maxNicknameLength", 20); - getMinNickLength = configFile.getInt("settings.restrictions.minNicknameLength", 3); - getPasswordMinLen = configFile.getInt("settings.security.minPasswordLength", 4); - getNickRegex = configFile.getString("settings.restrictions.allowedNicknameCharacters", "[a-zA-Z0-9_?]*"); - isAllowRestrictedIp = configFile.getBoolean("settings.restrictions.AllowRestrictedUser", false); - getRestrictedIp = configFile.getStringList("settings.restrictions.AllowedRestrictedUser"); - isMovementAllowed = configFile.getBoolean("settings.restrictions.allowMovement", false); - getMovementRadius = configFile.getInt("settings.restrictions.allowedMovementRadius", 100); - getJoinPermissions = configFile.getStringList("GroupOptions.Permissions.PermissionsOnJoin"); - isKickOnWrongPasswordEnabled = configFile.getBoolean("settings.restrictions.kickOnWrongPassword", false); - isKickNonRegisteredEnabled = configFile.getBoolean("settings.restrictions.kickNonRegistered", false); - isForceSingleSessionEnabled = configFile.getBoolean("settings.restrictions.ForceSingleSession", true); - isForceSpawnLocOnJoinEnabled = configFile.getBoolean("settings.restrictions.ForceSpawnLocOnJoinEnabled", false); - isSaveQuitLocationEnabled = configFile.getBoolean("settings.restrictions.SaveQuitLocation", false); - isForceSurvivalModeEnabled = configFile.getBoolean("settings.GameMode.ForceSurvivalMode", false); - isResetInventoryIfCreative = configFile.getBoolean("settings.GameMode.ResetInventoryIfCreative", false); - getmaxRegPerIp = configFile.getInt("settings.restrictions.maxRegPerIp", 1); - getPasswordHash = getPasswordHash(); - getUnloggedinGroup = configFile.getString("settings.security.unLoggedinGroup", "unLoggedInGroup"); - getDataSource = getDataSource(); - isCachingEnabled = configFile.getBoolean("DataSource.caching", true); - getMySQLHost = configFile.getString("DataSource.mySQLHost", "127.0.0.1"); - getMySQLPort = configFile.getString("DataSource.mySQLPort", "3306"); - getMySQLUsername = configFile.getString("DataSource.mySQLUsername", "authme"); - getMySQLPassword = configFile.getString("DataSource.mySQLPassword", "12345"); - getMySQLDatabase = configFile.getString("DataSource.mySQLDatabase", "authme"); - getMySQLTablename = configFile.getString("DataSource.mySQLTablename", "authme"); - getMySQLColumnEmail = configFile.getString("DataSource.mySQLColumnEmail", "email"); - getMySQLColumnName = configFile.getString("DataSource.mySQLColumnName", "username"); - getMySQLColumnPassword = configFile.getString("DataSource.mySQLColumnPassword", "password"); - getMySQLColumnIp = configFile.getString("DataSource.mySQLColumnIp", "ip"); - getMySQLColumnLastLogin = configFile.getString("DataSource.mySQLColumnLastLogin", "lastlogin"); - getMySQLColumnSalt = configFile.getString("ExternalBoardOptions.mySQLColumnSalt"); - getMySQLColumnGroup = configFile.getString("ExternalBoardOptions.mySQLColumnGroup", ""); - getMySQLlastlocX = configFile.getString("DataSource.mySQLlastlocX", "x"); - getMySQLlastlocY = configFile.getString("DataSource.mySQLlastlocY", "y"); - getMySQLlastlocZ = configFile.getString("DataSource.mySQLlastlocZ", "z"); - getMySQLlastlocWorld = configFile.getString("DataSource.mySQLlastlocWorld", "world"); - getMySQLColumnRealName = configFile.getString("DataSource.mySQLRealName", "realname"); - getNonActivatedGroup = configFile.getInt("ExternalBoardOptions.nonActivedUserGroup", -1); - unRegisteredGroup = configFile.getString("GroupOptions.UnregisteredPlayerGroup", ""); - getUnrestrictedName = configFile.getStringList("settings.unrestrictions.UnrestrictedName"); - getRegisteredGroup = configFile.getString("GroupOptions.RegisteredPlayerGroup", ""); - getEnablePasswordVerifier = configFile.getBoolean("settings.restrictions.enablePasswordVerifier", true); - protectInventoryBeforeLogInEnabled = configFile.getBoolean("settings.restrictions.ProtectInventoryBeforeLogIn", true); - passwordMaxLength = configFile.getInt("settings.security.passwordMaxLength", 20); - isBackupActivated = configFile.getBoolean("BackupSystem.ActivateBackup", false); - isBackupOnStart = configFile.getBoolean("BackupSystem.OnServerStart", false); - isBackupOnStop = configFile.getBoolean("BackupSystem.OnServeStop", false); - backupWindowsPath = configFile.getString("BackupSystem.MysqlWindowsPath", "C:\\Program Files\\MySQL\\MySQL Server 5.1\\"); - enablePasspartu = configFile.getBoolean("Passpartu.enablePasspartu", false); - isStopEnabled = configFile.getBoolean("Security.SQLProblem.stopServer", true); - reloadSupport = configFile.getBoolean("Security.ReloadCommand.useReloadCommandSupport", true); - allowCommands = (List) configFile.getList("settings.restrictions.allowCommands"); - if (configFile.contains("allowCommands")) { - if (!allowCommands.contains("/login")) - allowCommands.add("/login"); - if (!allowCommands.contains("/register")) - allowCommands.add("/register"); - if (!allowCommands.contains("/l")) - allowCommands.add("/l"); - if (!allowCommands.contains("/reg")) - allowCommands.add("/reg"); - if (!allowCommands.contains("/passpartu")) - allowCommands.add("/passpartu"); - if (!allowCommands.contains("/email")) - allowCommands.add("/email"); - if (!allowCommands.contains("/captcha")) - allowCommands.add("/captcha"); - } - rakamakUsers = configFile.getString("Converter.Rakamak.fileName", "users.rak"); - rakamakUsersIp = configFile.getString("Converter.Rakamak.ipFileName", "UsersIp.rak"); - rakamakUseIp = configFile.getBoolean("Converter.Rakamak.useIp", false); - noConsoleSpam = configFile.getBoolean("Security.console.noConsoleSpam", false); - removePassword = configFile.getBoolean("Security.console.removePassword", true); - getmailAccount = configFile.getString("Email.mailAccount", ""); - getmailPassword = configFile.getString("Email.mailPassword", ""); - getmailSMTP = configFile.getString("Email.mailSMTP", "smtp.gmail.com"); - getMailPort = configFile.getInt("Email.mailPort", 465); - getRecoveryPassLength = configFile.getInt("Email.RecoveryPasswordLength", 8); - getMySQLOtherUsernameColumn = (List) configFile.getList("ExternalBoardOptions.mySQLOtherUsernameColumns", new ArrayList()); - displayOtherAccounts = configFile.getBoolean("settings.restrictions.displayOtherAccounts", true); - getMySQLColumnId = configFile.getString("DataSource.mySQLColumnId", "id"); - getmailSenderName = configFile.getString("Email.mailSenderName", ""); - useCaptcha = configFile.getBoolean("Security.captcha.useCaptcha", false); - maxLoginTry = configFile.getInt("Security.captcha.maxLoginTry", 5); - captchaLength = configFile.getInt("Security.captcha.captchaLength", 5); - getMailSubject = configFile.getString("Email.mailSubject", "Your new AuthMe Password"); - getMailText = configFile.getString("Email.mailText", "Dear ,

This is your new AuthMe password for the server

:



Do not forget to change password after login!
/changepassword newPassword"); - emailRegistration = configFile.getBoolean("settings.registration.enableEmailRegistrationSystem", false); - saltLength = configFile.getInt("settings.security.doubleMD5SaltLength", 8); - getmaxRegPerEmail = configFile.getInt("Email.maxRegPerEmail", 1); - multiverse = configFile.getBoolean("Hooks.multiverse", true); - chestshop = configFile.getBoolean("Hooks.chestshop", true); - bungee = configFile.getBoolean("Hooks.bungeecord", false); - getForcedWorlds = configFile.getStringList("settings.restrictions.ForceSpawnOnTheseWorlds"); - banUnsafeIp = configFile.getBoolean("settings.restrictions.banUnsafedIP", false); - doubleEmailCheck = configFile.getBoolean("settings.registration.doubleEmailCheck", false); - sessionExpireOnIpChange = configFile.getBoolean("settings.sessions.sessionExpireOnIpChange", false); - useLogging = configFile.getBoolean("Security.console.logConsole", false); - disableSocialSpy = configFile.getBoolean("Hooks.disableSocialSpy", true); - bCryptLog2Rounds = configFile.getInt("ExternalBoardOptions.bCryptLog2Round", 10); - forceOnlyAfterLogin = configFile.getBoolean("settings.GameMode.ForceOnlyAfterLogin", false); - useEssentialsMotd = configFile.getBoolean("Hooks.useEssentialsMotd", false); - usePurge = configFile.getBoolean("Purge.useAutoPurge", false); - purgeDelay = configFile.getInt("Purge.daysBeforeRemovePlayer", 60); - purgePlayerDat = configFile.getBoolean("Purge.removePlayerDat", false); - purgeEssentialsFile = configFile.getBoolean("Purge.removeEssentialsFile", false); - defaultWorld = configFile.getString("Purge.defaultWorld", "world"); - getPhpbbPrefix = configFile.getString("ExternalBoardOptions.phpbbTablePrefix", "phpbb_"); - getPhpbbGroup = configFile.getInt("ExternalBoardOptions.phpbbActivatedGroupId", 2); - supportOldPassword = configFile.getBoolean("settings.security.supportOldPasswordHash", false); - getWordPressPrefix = configFile.getString("ExternalBoardOptions.wordpressTablePrefix", "wp_"); - purgeLimitedCreative = configFile.getBoolean("Purge.removeLimitedCreativesInventories", false); - purgeAntiXray = configFile.getBoolean("Purge.removeAntiXRayFile", false); - purgePermissions = configFile.getBoolean("Purge.removePermissions", false); - enableProtection = configFile.getBoolean("Protection.enableProtection", false); - countries = configFile.getStringList("Protection.countries"); - enableAntiBot = configFile.getBoolean("Protection.enableAntiBot", false); - antiBotSensibility = configFile.getInt("Protection.antiBotSensibility", 5); - antiBotDuration = configFile.getInt("Protection.antiBotDuration", 10); - forceCommands = configFile.getStringList("settings.forceCommands"); - forceCommandsAsConsole = configFile.getStringList("settings.forceCommandsAsConsole"); - recallEmail = configFile.getBoolean("Email.recallPlayers", false); - delayRecall = configFile.getInt("Email.delayRecall", 5); - useWelcomeMessage = configFile.getBoolean("settings.useWelcomeMessage", true); - unsafePasswords = configFile.getStringList("settings.security.unsafePasswords"); - countriesBlacklist = configFile.getStringList("Protection.countriesBlacklist"); - broadcastWelcomeMessage = configFile.getBoolean("settings.broadcastWelcomeMessage", false); - forceRegKick = configFile.getBoolean("settings.registration.forceKickAfterRegister", false); - forceRegLogin = configFile.getBoolean("settings.registration.forceLoginAfterRegister", false); - getMySQLColumnLogged = configFile.getString("DataSource.mySQLColumnLogged", "isLogged"); - spawnPriority = configFile.getString("settings.restrictions.spawnPriority", "authme,essentials,multiverse,default"); - getMaxLoginPerIp = configFile.getInt("settings.restrictions.maxLoginPerIp", 0); - getMaxJoinPerIp = configFile.getInt("settings.restrictions.maxJoinPerIp", 0); - checkVeryGames = configFile.getBoolean("VeryGames.enableIpCheck", false); - delayJoinMessage = configFile.getBoolean("settings.delayJoinMessage", false); - noTeleport = configFile.getBoolean("settings.restrictions.noTeleport", false); - crazyloginFileName = configFile.getString("Converter.CrazyLogin.fileName", "accounts.db"); - getPassRegex = configFile.getString("settings.restrictions.allowedPasswordCharacters", "[\\x21-\\x7E]*"); - applyBlindEffect = configFile.getBoolean("settings.applyBlindEffect", false); - emailBlacklist = configFile.getStringList("Email.emailBlacklisted"); - emailWhitelist = configFile.getStringList("Email.emailWhitelisted"); - forceRegisterCommands = configFile.getStringList("settings.forceRegisterCommands"); - forceRegisterCommandsAsConsole = (List) configFile.getList("settings.forceRegisterCommandsAsConsole", new ArrayList()); - customAttributes = configFile.getBoolean("Hooks.customAttributes"); - generateImage = configFile.getBoolean("Email.generateImage", true); - - // Reload the welcome message - getWelcomeMessage(AuthMe.getInstance()); - + loadVariables(); } public void mergeConfig() { @@ -607,7 +454,6 @@ public final class Settings extends YamlConfiguration { plugin.getLogger().warning("Merge 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!"); } - plugin.saveConfig(); return; } @@ -685,8 +531,9 @@ public final class Settings extends YamlConfiguration { } public final void reload() { + if (!exists()) + plugin.saveDefaultConfig(); load(); - loadDefaults(file.getName()); } /** @@ -712,21 +559,6 @@ public final class Settings extends YamlConfiguration { return file.exists(); } - /** - * Loads a file from the plugin jar and sets as default - * - * @param filename - * The filename to open - */ - @SuppressWarnings("deprecation") - public final void loadDefaults(String filename) { - InputStream stream = plugin.getResource(filename); - if (stream == null) - return; - - setDefaults(YamlConfiguration.loadConfiguration(stream)); - } - /** * Saves current configuration (plus defaults) to disk. * @@ -779,7 +611,8 @@ public final class Settings extends YamlConfiguration { else isKickNonRegisteredEnabled = configFile.getBoolean("settings.restrictions.kickNonRegistered", false); } - private static void getWelcomeMessage(AuthMe plugin) { + private static void getWelcomeMessage() { + AuthMe plugin = AuthMe.getInstance(); welcomeMsg = new ArrayList(); if (!useWelcomeMessage) { return;