diff --git a/pom.xml b/pom.xml index ceeaefca..c928c9a6 100644 --- a/pom.xml +++ b/pom.xml @@ -285,7 +285,7 @@ com.zaxxer HikariCP - 2.4.1 + 2.4.2 compile @@ -298,7 +298,7 @@ org.slf4j slf4j-jdk14 - 1.7.12 + 1.7.13 compile true @@ -502,6 +502,10 @@ AllPay com.fernferret.allpay + + Vault + net.milkbowl.vault + VaultAPI net.milkbowl.vault diff --git a/src/main/java/fr/xephi/authme/SendMailSSL.java b/src/main/java/fr/xephi/authme/SendMailSSL.java index 1c3a4f44..8eb1a92b 100644 --- a/src/main/java/fr/xephi/authme/SendMailSSL.java +++ b/src/main/java/fr/xephi/authme/SendMailSSL.java @@ -48,7 +48,7 @@ public class SendMailSSL { final String subject = Settings.getMailSubject; final String smtp = Settings.getmailSMTP; final String password = Settings.getmailPassword; - final String mailText = Settings.getMailText.replace("", auth.getNickname()).replace("", plugin.getServer().getServerName()).replace("", newPass); + final String mailText = Settings.getMailText.replace("%playername%", auth.getNickname()).replace("%servername%", plugin.getServer().getServerName()).replace("%generatedpass%", newPass); final String mail = auth.getEmail(); Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { @@ -76,7 +76,7 @@ public class SendMailSSL { ImageIO.write(gen.generateImage(), "jpg", file); DataSource source = new FileDataSource(file); String tag = email.embed(source, auth.getNickname() + "_new_pass.jpg"); - content = content.replace("", ""); + content = content.replace("%image%", ""); } catch (Exception e) { ConsoleLogger.showError("Unable to send new password as image! Using normal text! Dest: " + mail); } diff --git a/src/main/java/fr/xephi/authme/cache/limbo/LimboCache.java b/src/main/java/fr/xephi/authme/cache/limbo/LimboCache.java index 69774e22..2495d68b 100644 --- a/src/main/java/fr/xephi/authme/cache/limbo/LimboCache.java +++ b/src/main/java/fr/xephi/authme/cache/limbo/LimboCache.java @@ -117,6 +117,8 @@ public class LimboCache { * @param name String */ public void deleteLimboPlayer(String name) { + if (name == null) + return; cache.remove(name); } @@ -128,6 +130,8 @@ public class LimboCache { * @return LimboPlayer */ public LimboPlayer getLimboPlayer(String name) { + if (name == null) + return null; return cache.get(name); } @@ -139,6 +143,8 @@ public class LimboCache { * @return boolean */ public boolean hasLimboPlayer(String name) { + if (name == null) + return false; return cache.containsKey(name); } diff --git a/src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java b/src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java index 070d795b..1f366dea 100644 --- a/src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java @@ -55,7 +55,7 @@ public class RegisterCommand extends ExecutableCommand { } if (commandArguments.getCount() > 1 && Settings.getEnablePasswordVerifier) { if (!commandArguments.get(0).equals(commandArguments.get(1))) { - m.send(player, MessageKey.PASSWORD_IS_USERNAME_ERROR); + m.send(player, MessageKey.PASSWORD_MATCH_ERROR); return true; } } diff --git a/src/main/java/fr/xephi/authme/datasource/MySQL.java b/src/main/java/fr/xephi/authme/datasource/MySQL.java index 17d2cdfd..69c10e82 100644 --- a/src/main/java/fr/xephi/authme/datasource/MySQL.java +++ b/src/main/java/fr/xephi/authme/datasource/MySQL.java @@ -1,7 +1,7 @@ package fr.xephi.authme.datasource; import com.zaxxer.hikari.HikariDataSource; -import com.zaxxer.hikari.pool.PoolInitializationException; +import com.zaxxer.hikari.pool.HikariPool.PoolInitializationException; import fr.xephi.authme.AuthMe; import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.cache.auth.PlayerAuth; diff --git a/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java b/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java index 724c334f..90593755 100644 --- a/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java +++ b/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java @@ -253,8 +253,11 @@ public class AsynchronousJoin { ? m.retrieve(MessageKey.REGISTER_EMAIL_MESSAGE) : m.retrieve(MessageKey.REGISTER_MESSAGE); } - BukkitTask msgTask = sched.runTaskAsynchronously(plugin, new MessageTask(plugin, name, msg, msgInterval)); - LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgTask); + if (LimboCache.getInstance().getLimboPlayer(name) != null) + { + BukkitTask msgTask = sched.runTaskAsynchronously(plugin, new MessageTask(plugin, name, msg, msgInterval)); + LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgTask); + } } private boolean needFirstSpawn() { diff --git a/src/main/java/fr/xephi/authme/settings/Settings.java b/src/main/java/fr/xephi/authme/settings/Settings.java index df9e0b0a..0c245e02 100644 --- a/src/main/java/fr/xephi/authme/settings/Settings.java +++ b/src/main/java/fr/xephi/authme/settings/Settings.java @@ -8,7 +8,11 @@ import fr.xephi.authme.security.HashAlgorithm; import fr.xephi.authme.util.Wrapper; import org.bukkit.configuration.file.YamlConfiguration; +import com.google.common.base.Charsets; +import com.google.common.io.Files; + import java.io.*; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; @@ -23,6 +27,7 @@ public final class Settings { public static final File MODULE_FOLDER = new File(PLUGIN_FOLDER, "modules"); public static final File CACHE_FOLDER = new File(PLUGIN_FOLDER, "cache"); public static final File AUTH_FILE = new File(PLUGIN_FOLDER, "auths.db"); + public static final File EMAIL_FILE = new File(PLUGIN_FOLDER, "email.html"); public static final File SETTINGS_FILE = new File(PLUGIN_FOLDER, "config.yml"); public static final File LOG_FILE = new File(PLUGIN_FOLDER, "authme.log"); // This is not an option! @@ -221,7 +226,7 @@ public final class Settings { 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"); + getMailText = loadEmailText(); emailRegistration = configFile.getBoolean("settings.registration.enableEmailRegistrationSystem", false); saltLength = configFile.getInt("settings.security.doubleMD5SaltLength", 8); getmaxRegPerEmail = configFile.getInt("Email.maxRegPerEmail", 1); @@ -285,7 +290,40 @@ public final class Settings { } - public static void setValue(String key, Object value) { + private static String loadEmailText() { + if (!EMAIL_FILE.exists()) + saveDefaultEmailText(); + StringBuilder str = new StringBuilder(); + try { + BufferedReader in = new BufferedReader(new FileReader(EMAIL_FILE)); + String s; + while ((s = in.readLine()) != null) + str.append(s); + in.close(); + } catch(IOException e) + { + } + return str.toString(); + } + + private static void saveDefaultEmailText() { + InputStream file = plugin.getResource("email.html"); + StringBuilder str = new StringBuilder(); + try { + BufferedReader in = new BufferedReader(new InputStreamReader(file, Charset.forName("utf-8"))); + String s; + while ((s = in.readLine()) != null) + str.append(s); + in.close(); + Files.touch(EMAIL_FILE); + Files.write(str.toString(), EMAIL_FILE, Charsets.UTF_8); + } + catch(Exception e) + { + } + } + + public static void setValue(String key, Object value) { instance.set(key, value); save(); } @@ -636,6 +674,12 @@ public final class Settings { changes = true; } + if (contains("Email.mailText")) + { + set("Email.mailText", null); + ConsoleLogger.showError("Remove Email.mailText from config, we now use the email.html file"); + } + 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 0c7607e3..fd73b773 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -393,6 +393,7 @@ Protection: - 'US' - 'GB' # Countries blacklisted automatically ( without any needed to enable protection ) + # PLEASE USE QUOTES! countriesBlacklist: - 'A1' # Do we need to enable automatic antibot system? diff --git a/src/main/resources/email.html b/src/main/resources/email.html new file mode 100644 index 00000000..12f6cbd5 --- /dev/null +++ b/src/main/resources/email.html @@ -0,0 +1,16 @@ +

+Dear %playername%, +

+ +

+This is your new AuthMe password for the server %servername%: + +%generatedpass% + +%image% + +Do not forget to change password after login! +/changepassword %generatedpass% newPassword' + +See you on %servername%! +

\ No newline at end of file