diff --git a/README.md b/README.md
index 05c1edf28..bac4f33ca 100644
--- a/README.md
+++ b/README.md
@@ -77,7 +77,7 @@ AuthMe Reloaded prevents players who aren't logged in from actions like placing
Possible to use without a Permissions plugin
Spoutcraft Login GUI
Automatic backup system of all your user password data
-Default Language Style: en, de, br, cz, pl, fr, it, ru, hu, sk, es, zhtw, fi, zhcn, nl ( feel free to send new translations )
+Default Language Style: en, de, br, cz, pl, fr, uk, ru, hu, sk, es, fi, zhtw, zhhk, zhcn, lt, it, ko, pt, nl, gl, bg, eu, tr ( feel free to send new translations )
Convert the FlatFile auths.db to an usefull authme.sql that you can use on a MySQL database !
Import your database from Rakamak, xAuth, CrazyLogin, RoyalAuth, vAuth !
diff --git a/src/main/java/fr/xephi/authme/api/API.java b/src/main/java/fr/xephi/authme/api/API.java
index d718a0adb..516157adf 100644
--- a/src/main/java/fr/xephi/authme/api/API.java
+++ b/src/main/java/fr/xephi/authme/api/API.java
@@ -149,7 +149,7 @@ public class API {
if (isRegistered(name)) {
return false;
}
- PlayerAuth auth = new PlayerAuth(name, hash, "198.18.0.1", 0, "your@email.com");
+ PlayerAuth auth = new PlayerAuth(name, hash, "192.168.0.1", 0, "your@email.com");
if (!plugin.database.saveAuth(auth)) {
return false;
}
diff --git a/src/main/java/fr/xephi/authme/cache/auth/PlayerAuth.java b/src/main/java/fr/xephi/authme/cache/auth/PlayerAuth.java
index 9a83f9d71..62a5d4e3f 100644
--- a/src/main/java/fr/xephi/authme/cache/auth/PlayerAuth.java
+++ b/src/main/java/fr/xephi/authme/cache/auth/PlayerAuth.java
@@ -7,7 +7,7 @@ public class PlayerAuth {
private String nickname = "";
private String hash = "";
- private String ip = "198.18.0.1";
+ private String ip = "192.168.0.1";
private long lastLogin = 0;
private double x = 0;
private double y = 0;
diff --git a/src/main/java/fr/xephi/authme/commands/AdminCommand.java b/src/main/java/fr/xephi/authme/commands/AdminCommand.java
index fffc0aca1..0bc8050d2 100644
--- a/src/main/java/fr/xephi/authme/commands/AdminCommand.java
+++ b/src/main/java/fr/xephi/authme/commands/AdminCommand.java
@@ -54,21 +54,27 @@ public class AdminCommand implements CommandExecutor {
public boolean onCommand(CommandSender sender, Command cmnd, String label,
String[] args) {
if (args.length == 0) {
- sender.sendMessage("Usage: /authme reload - Reload the config");
+ sender.sendMessage("Usage:");
+ sender.sendMessage("/authme reload - Reload the config");
+ sender.sendMessage("/authme version - Get AuthMe version info");
sender.sendMessage("/authme register - Register a player");
- sender.sendMessage("/authme changepassword - Change player password");
sender.sendMessage("/authme unregister - Unregister a player");
- sender.sendMessage("/authme purge - Purge Database");
- sender.sendMessage("/authme version - Get AuthMe version infos");
- sender.sendMessage("/authme lastlogin - Display Date about the Player's LastLogin");
+ sender.sendMessage("/authme changepassword - Change a player's password");
+ sender.sendMessage("/authme chgemail - Change a player's email");
+ sender.sendMessage("/authme getemail - Get a player's email");
+ sender.sendMessage("/authme getip - Display a player's IP if he's online");
+ sender.sendMessage("/authme lastlogin - Display the date of a player's last login");
sender.sendMessage("/authme accounts - Display all player's accounts");
- sender.sendMessage("/authme setSpawn - Set AuthMe spawn to your current pos");
- sender.sendMessage("/authme spawn - Teleport you to the AuthMe SpawnPoint");
- sender.sendMessage("/authme chgemail - Change player email");
- sender.sendMessage("/authme getemail - Get player email");
- sender.sendMessage("/authme purgelastpos - Purge last position for a player");
- sender.sendMessage("/authme switchantibot on/off - Enable/Disable antibot method");
- sender.sendMessage("/authme forcelogin ");
+ sender.sendMessage("/authme purge - Purge database");
+ sender.sendMessage("/authme purgebannedplayers - Purge database from banned players");
+ sender.sendMessage("/authme purgelastpos - Purge last position infos for a player");
+ sender.sendMessage("/authme setspawn - Set player's spawn to your current position");
+ sender.sendMessage("/authme setfirstspawn - Set player's first spawn to your current position");
+ sender.sendMessage("/authme spawn - Teleport yourself to the spawn point");
+ sender.sendMessage("/authme firstspawn - Teleport yourself to the first spawn point");
+ sender.sendMessage("/authme switchantibot on/off - Enable/Disable AntiBot feature");
+ sender.sendMessage("/authme forcelogin - Enforce the login of a connected player");
+ sender.sendMessage("/authme passpartutoken - Generate a timed token to login with every player's account (CONSOLE ONLY)");
return true;
}
@@ -77,15 +83,15 @@ public class AdminCommand implements CommandExecutor {
return true;
}
- if ((sender instanceof ConsoleCommandSender) && args[0].equalsIgnoreCase("passpartuToken")) {
+ if ((sender instanceof ConsoleCommandSender) && args[0].equalsIgnoreCase("passpartutoken")) {
if (args.length > 1) {
- System.out.println("[AuthMe] command usage: /authme passpartuToken");
+ System.out.println("[AuthMe] command usage: /authme passpartutoken");
return true;
}
if (Utils.getInstance().obtainToken()) {
- System.out.println("[AuthMe] You have 30s for insert this token ingame with /passpartu [token]");
+ System.out.println("[AuthMe] You have 30s to insert this token ingame with /passpartu ");
} else {
- System.out.println("[AuthMe] Security error on passpartu token, redo it. ");
+ System.out.println("[AuthMe] Security error on passpartu token, please redo the command.");
}
return true;
}
@@ -97,7 +103,11 @@ public class AdminCommand implements CommandExecutor {
if (args[0].equalsIgnoreCase("purge")) {
if (args.length != 2) {
- sender.sendMessage("Usage: /authme purge ");
+ sender.sendMessage("Usage: /authme purge ");
+ return true;
+ }
+ if (Integer.parseInt(args[1]) < 30) {
+ sender.sendMessage("You can only purge data older than 30 days")
return true;
}
try {
@@ -114,9 +124,10 @@ public class AdminCommand implements CommandExecutor {
plugin.dataManager.purgeLimitedCreative(purged);
if (Settings.purgeAntiXray)
plugin.dataManager.purgeAntiXray(purged);
+ sender.sendMessage("[AuthMe] Database has been purged correctly");
return true;
} catch (NumberFormatException e) {
- sender.sendMessage("Usage: /authme purge ");
+ sender.sendMessage("Usage: /authme purge ");
return true;
}
} else if (args[0].equalsIgnoreCase("reload")) {
@@ -158,24 +169,23 @@ public class AdminCommand implements CommandExecutor {
return true;
}
try {
- if (plugin.database.getAuth(args[1].toLowerCase()) != null) {
- PlayerAuth player = plugin.database.getAuth(args[1].toLowerCase());
- long lastLogin = player.getLastLogin();
- Date d = new Date(lastLogin);
- final long diff = System.currentTimeMillis() - lastLogin;
- final String msg = (int) (diff / 86400000) + " days " + (int) (diff / 3600000 % 24) + " hours " + (int) (diff / 60000 % 60) + " mins " + (int) (diff / 1000 % 60) + " secs.";
- String lastIP = player.getIp();
- sender.sendMessage("[AuthMe] " + args[1] + " lastlogin : " + d.toString());
- sender.sendMessage("[AuthMe] The player : " + player.getNickname() + " is unlogged since " + msg);
- sender.sendMessage("[AuthMe] LastPlayer IP : " + lastIP);
- } else {
- m.send(sender, "unknown_user");
- return true;
- }
+ PlayerAuth auth = plugin.database.getAuth(args[1].toLowerCase());
} catch (NullPointerException e) {
m.send(sender, "unknown_user");
return true;
}
+ if (auth == null) {
+ m.send(sender, "user_unknown");
+ return true;
+ }
+ long lastLogin = auth.getLastLogin();
+ Date d = new Date(lastLogin);
+ final long diff = System.currentTimeMillis() - lastLogin;
+ final String msg = (int) (diff / 86400000) + " days " + (int) (diff / 3600000 % 24) + " hours " + (int) (diff / 60000 % 60) + " mins " + (int) (diff / 1000 % 60) + " secs.";
+ String lastIP = auth.getIp();
+ sender.sendMessage("[AuthMe] " + args[1] + " lastlogin : " + d.toString());
+ sender.sendMessage("[AuthMe] The player " + auth.getNickname() + " is unlogged since " + msg);
+ sender.sendMessage("[AuthMe] Last Player's IP: " + lastIP);
} else if (args[0].equalsIgnoreCase("accounts")) {
if (args.length != 2) {
sender.sendMessage("Usage: /authme accounts ");
@@ -183,46 +193,43 @@ public class AdminCommand implements CommandExecutor {
return true;
}
if (!args[1].contains(".")) {
- final CommandSender fSender = sender;
- final String[] arguments = args;
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
@Override
public void run() {
- PlayerAuth pAuth = null;
+ PlayerAuth auth = null;
String message = "[AuthMe] ";
try {
- pAuth = plugin.database.getAuth(arguments[1].toLowerCase());
+ auth = plugin.database.getAuth(args[1].toLowerCase());
} catch (NullPointerException npe) {
- fSender.sendMessage("[AuthMe] This player is unknown");
- return;
+ m.send(sender, "unknown_user");
+ return true;
}
- if (pAuth != null) {
- List accountList = plugin.database.getAllAuthsByName(pAuth);
- if (accountList.isEmpty() || accountList == null) {
- fSender.sendMessage("[AuthMe] This player is unknown");
- return;
- }
- if (accountList.size() == 1) {
- fSender.sendMessage("[AuthMe] " + arguments[1] + " is a single account player");
- return;
- }
- int i = 0;
- for (String account : accountList) {
- i++;
- message = message + account;
- if (i != accountList.size()) {
- message = message + ", ";
- } else {
- message = message + ".";
- }
- }
- fSender.sendMessage("[AuthMe] " + arguments[1] + " has " + String.valueOf(accountList.size()) + " accounts");
- fSender.sendMessage(message);
- } else {
- fSender.sendMessage("[AuthMe] This player is unknown");
- return;
+ if (auth == null) {
+ m.send(sender, "unknown_user");
+ return true;
}
+ List accountList = plugin.database.getAllAuthsByName(auth);
+ if (accountList.isEmpty() || accountList == null) {
+ m.send(sender, "user_unknown");
+ return true;
+ }
+ if (accountList.size() == 1) {
+ sender.sendMessage("[AuthMe] " + args[1] + " is a single account player");
+ return true;
+ }
+ int i = 0;
+ for (String account : accountList) {
+ i++;
+ message = message + account;
+ if (i != accountList.size()) {
+ message = message + ", ";
+ } else {
+ message = message + ".";
+ }
+ }
+ sender.sendMessage("[AuthMe] " + args[1] + " has " + String.valueOf(accountList.size()) + " accounts");
+ sender.sendMessage(message);
}
});
return true;
@@ -267,9 +274,28 @@ public class AdminCommand implements CommandExecutor {
} else
if (args[0].equalsIgnoreCase("register") || args[0].equalsIgnoreCase("reg")) {
if (args.length != 3) {
- sender.sendMessage("Usage: /authme register playername password");
+ sender.sendMessage("Usage: /authme register ");
return true;
}
+ String lowpass = args[2].toLowerCase();
+ if (lowpass.contains("delete") || lowpass.contains("where") || lowpass.contains("insert") || lowpass.contains("modify") || lowpass.contains("from") || lowpass.contains("select") || lowpass.contains(";") || lowpass.contains("null") || !lowpass.matches(Settings.getPassRegex)) {
+ m.send(player, "password_error");
+ return true;
+ }
+ if (lowpass.equalsIgnoreCase(args[1])) {
+ m.send(player, "password_error_nick");
+ return true;
+ }
+ if (lowpass.length() < Settings.getPasswordMinLen || lowpass.length() > Settings.passwordMaxLength) {
+ m.send(player, "pass_len");
+ return true;
+ }
+ if (!Settings.unsafePasswords.isEmpty()) {
+ if (Settings.unsafePasswords.contains(lowpass)) {
+ m.send(player, "password_error_unsafe");
+ return true;
+ }
+ }
try {
String name = args[1].toLowerCase();
if (plugin.database.isAuthAvailable(name)) {
@@ -277,7 +303,7 @@ public class AdminCommand implements CommandExecutor {
return true;
}
String hash = PasswordSecurity.getHash(Settings.getPasswordHash, args[2], name);
- PlayerAuth auth = new PlayerAuth(name, hash, "198.18.0.1", 0L, "your@email.com");
+ PlayerAuth auth = new PlayerAuth(name, hash, "192.168.0.1", 0L, "your@email.com");
if (PasswordSecurity.userSalt.containsKey(name) && PasswordSecurity.userSalt.get(name) != null)
auth.setSalt(PasswordSecurity.userSalt.get(name));
else auth.setSalt("");
@@ -294,42 +320,49 @@ public class AdminCommand implements CommandExecutor {
return true;
} else if (args[0].equalsIgnoreCase("getemail")) {
if (args.length != 2) {
- sender.sendMessage("Usage: /authme getemail playername");
+ sender.sendMessage("Usage: /authme getemail ");
return true;
}
String playername = args[1].toLowerCase();
- PlayerAuth getAuth = plugin.database.getAuth(playername);
- if (getAuth == null) {
+ PlayerAuth auth = plugin.database.getAuth(playername);
+ if (auth == null) {
m.send(sender, "unknown_user");
return true;
}
- sender.sendMessage("[AuthMe] " + args[1] + " email : " + getAuth.getEmail());
+ sender.sendMessage("[AuthMe] " + args[1] + "'s email: " + getAuth.getEmail());
return true;
} else if (args[0].equalsIgnoreCase("chgemail")) {
if (args.length != 3) {
- sender.sendMessage("Usage: /authme chgemail playername email");
+ sender.sendMessage("Usage: /authme chgemail ");
+ return true;
+ }
+ if (!Settings.isEmailCorrect(args[2])) {
+ m.send(player, "email_invalid");
return true;
}
String playername = args[1].toLowerCase();
- PlayerAuth getAuth = plugin.database.getAuth(playername);
- if (getAuth == null) {
+ PlayerAuth auth = plugin.database.getAuth(playername);
+ if (auth == null) {
m.send(sender, "unknown_user");
return true;
}
- getAuth.setEmail(args[2]);
- if (!plugin.database.updateEmail(getAuth)) {
+ auth.setEmail(args[2]);
+ if (!plugin.database.updateEmail(auth)) {
m.send(sender, "error");
return true;
}
if (PlayerCache.getInstance().getAuth(playername) != null)
- PlayerCache.getInstance().updatePlayer(getAuth);
+ PlayerCache.getInstance().updatePlayer(auth);
+ m.send(sender, "email_changed");
return true;
} else if (args[0].equalsIgnoreCase("setspawn")) {
try {
if (sender instanceof Player) {
- if (Spawn.getInstance().setSpawn(((Player) sender).getLocation()))
- sender.sendMessage("[AuthMe] Correctly define new spawn");
- else sender.sendMessage("[AuthMe] SetSpawn fail , please retry");
+ if (Spawn.getInstance().setSpawn(((Player) sender).getLocation())) {
+ sender.sendMessage("[AuthMe] Correctly defined new spawn point");
+ } else {
+ sender.sendMessage("[AuthMe] SetSpawn has failed, please retry");
+ }
} else {
sender.sendMessage("[AuthMe] Please use that command in game");
}
@@ -341,8 +374,8 @@ public class AdminCommand implements CommandExecutor {
try {
if (sender instanceof Player) {
if (Spawn.getInstance().setFirstSpawn(((Player) sender).getLocation()))
- sender.sendMessage("[AuthMe] Correctly define new first spawn");
- else sender.sendMessage("[AuthMe] SetFirstSpawn fail , please retry");
+ sender.sendMessage("[AuthMe] Correctly defined new first spawn point");
+ else sender.sendMessage("[AuthMe] SetFirstSpawn has failed, please retry");
} else {
sender.sendMessage("[AuthMe] Please use that command in game");
}
@@ -364,13 +397,14 @@ public class AdminCommand implements CommandExecutor {
plugin.dataManager.purgeLimitedCreative(bannedPlayers);
if (Settings.purgeAntiXray)
plugin.dataManager.purgeAntiXray(bannedPlayers);
+ sender.sendMessage("[AuthMe] Database has been purged correctly");
return true;
} else if (args[0].equalsIgnoreCase("spawn")) {
try {
if (sender instanceof Player) {
if (Spawn.getInstance().getSpawn() != null)
((Player) sender).teleport(Spawn.getInstance().getSpawn());
- else sender.sendMessage("[AuthMe] Spawn fail , please try to define the spawn");
+ else sender.sendMessage("[AuthMe] Spawn has failed, please try to define the spawn");
} else {
sender.sendMessage("[AuthMe] Please use that command in game");
}
@@ -383,7 +417,7 @@ public class AdminCommand implements CommandExecutor {
if (sender instanceof Player) {
if (Spawn.getInstance().getFirstSpawn() != null)
((Player) sender).teleport(Spawn.getInstance().getFirstSpawn());
- else sender.sendMessage("[AuthMe] Spawn fail , please try to define the first spawn");
+ else sender.sendMessage("[AuthMe] First spawn has failed, please try to define the first spawn");
} else {
sender.sendMessage("[AuthMe] Please use that command in game");
}
@@ -391,12 +425,30 @@ public class AdminCommand implements CommandExecutor {
ConsoleLogger.showError(ex.getMessage());
}
return true;
- } else
- if (args[0].equalsIgnoreCase("changepassword") || args[0].equalsIgnoreCase("cp")) {
+ } else if (args[0].equalsIgnoreCase("changepassword") || args[0].equalsIgnoreCase("cp")) {
if (args.length != 3) {
- sender.sendMessage("Usage: /authme changepassword playername newpassword");
+ sender.sendMessage("Usage: /authme changepassword ");
return true;
}
+ String lowpass = args[2].toLowerCase();
+ if (lowpass.contains("delete") || lowpass.contains("where") || lowpass.contains("insert") || lowpass.contains("modify") || lowpass.contains("from") || lowpass.contains("select") || lowpass.contains(";") || lowpass.contains("null") || !lowpass.matches(Settings.getPassRegex)) {
+ m.send(player, "password_error");
+ return true;
+ }
+ if (lowpass.equalsIgnoreCase(args[1])) {
+ m.send(player, "password_error_nick");
+ return true;
+ }
+ if (lowpass.length() < Settings.getPasswordMinLen || lowpass.length() > Settings.passwordMaxLength) {
+ m.send(player, "pass_len");
+ return true;
+ }
+ if (!Settings.unsafePasswords.isEmpty()) {
+ if (Settings.unsafePasswords.contains(lowpass)) {
+ m.send(player, "password_error_unsafe");
+ return true;
+ }
+ }
try {
String name = args[1].toLowerCase();
String hash = PasswordSecurity.getHash(Settings.getPasswordHash, args[2], name);
@@ -428,7 +480,7 @@ public class AdminCommand implements CommandExecutor {
return true;
} else if (args[0].equalsIgnoreCase("unregister") || args[0].equalsIgnoreCase("unreg") || args[0].equalsIgnoreCase("del")) {
if (args.length != 2) {
- sender.sendMessage("Usage: /authme unregister playername");
+ sender.sendMessage("Usage: /authme unregister ");
return true;
}
String name = args[1].toLowerCase();
@@ -474,24 +526,24 @@ public class AdminCommand implements CommandExecutor {
m.send(sender, "unregistered");
ConsoleLogger.info(args[1] + " unregistered");
return true;
- } else if (args[0].equalsIgnoreCase("purgelastpos")) {
+ } else if (args[0].equalsIgnoreCase("purgelastpos") || args[0].equalsIgnoreCase("resetposition")) {
if (args.length != 2) {
- sender.sendMessage("Usage: /authme purgelastpos playername");
+ sender.sendMessage("Usage: /authme purgelastpos ");
return true;
}
try {
String name = args[1].toLowerCase();
PlayerAuth auth = plugin.database.getAuth(name);
if (auth == null) {
- sender.sendMessage("The player " + name + " is not registered ");
+ m.send(sender, "unknown_user");
return true;
}
- auth.setQuitLocX(0);
- auth.setQuitLocY(0);
- auth.setQuitLocZ(0);
+ auth.setQuitLocX(0D);
+ auth.setQuitLocY(0D);
+ auth.setQuitLocZ(0D);
auth.setWorld("world");
plugin.database.updateQuitLoc(auth);
- sender.sendMessage(name + " 's last pos location is now reset");
+ sender.sendMessage(name + "'s last position location is now reset");
} catch (Exception e) {
ConsoleLogger.showError("An error occured while trying to reset location or player do not exist, please see below: ");
ConsoleLogger.showError(e.getMessage());
@@ -501,7 +553,7 @@ public class AdminCommand implements CommandExecutor {
return true;
} else if (args[0].equalsIgnoreCase("switchantibot")) {
if (args.length != 2) {
- sender.sendMessage("Usage : /authme switchantibot on/off");
+ sender.sendMessage("Usage: /authme switchantibot on/off");
return true;
}
if (args[1].equalsIgnoreCase("on")) {
@@ -514,49 +566,31 @@ public class AdminCommand implements CommandExecutor {
sender.sendMessage("[AuthMe] AntiBotMod disabled");
return true;
}
- sender.sendMessage("Usage : /authme switchantibot on/off");
+ sender.sendMessage("Usage: /authme switchantibot on/off");
return true;
} else if (args[0].equalsIgnoreCase("getip")) {
if (args.length < 2) {
- sender.sendMessage("Usage : /authme getip onlinePlayerName");
+ sender.sendMessage("Usage: /authme getip ");
return true;
}
- if (Bukkit.getPlayer(args[1]) != null) {
- Player player = Bukkit.getPlayer(args[1]);
- sender.sendMessage(player.getName() + " actual ip is : " + player.getAddress().getAddress().getHostAddress() + ":" + player.getAddress().getPort());
- sender.sendMessage(player.getName() + " real ip is : " + plugin.getIP(player));
- return true;
- } else {
+ Player player = Bukkit.getPlayer(args[1]);
+ if (player == null) {
sender.sendMessage("This player is not actually online");
- sender.sendMessage("Usage : /authme getip onlinePlayerName");
+ sender.sendMessage("Usage: /authme getip ");
return true;
}
- } else if (args[0].equalsIgnoreCase("resetposition")) {
- if (args.length < 2) {
- sender.sendMessage("Usage : /authme resetPosition ");
+ sender.sendMessage(player.getName() + "'s actual IP is : " + player.getAddress().getAddress().getHostAddress() + ":" + player.getAddress().getPort());
+ sender.sendMessage(player.getName() + "'s real IP is : " + plugin.getIP(player));
return true;
- }
- PlayerAuth auth = plugin.database.getAuth(args[1]);
- if (auth == null) {
- m.send(sender, "unknown_user");
- return true;
- }
- auth.setQuitLocX(0D);
- auth.setQuitLocY(0D);
- auth.setQuitLocZ(0D);
- auth.setWorld("world");
- plugin.database.updateQuitLoc(auth);
- sender.sendMessage("[AuthMe] Successfully reset position for " + auth.getNickname());
- return true;
} else if (args[0].equalsIgnoreCase("forcelogin")) {
if (args.length < 2) {
- sender.sendMessage("Usage : /authme forcelogin ");
+ sender.sendMessage("Usage: /authme forcelogin ");
return true;
}
try {
Player player = Bukkit.getPlayer(args[1]);
if (player == null || !player.isOnline()) {
- sender.sendMessage("Online player only !");
+ sender.sendMessage("Player needs to be online!");
return true;
}
if (!plugin.authmePermissible(player, "authme.canbeforced")) {
@@ -564,7 +598,7 @@ public class AdminCommand implements CommandExecutor {
return true;
}
plugin.management.performLogin(player, "dontneed", true);
- sender.sendMessage("Force Login performed !");
+ sender.sendMessage("Force Login performed!");
} catch (Exception e) {
sender.sendMessage("An error occured while trying to get that player!");
}
diff --git a/src/main/java/fr/xephi/authme/commands/ChangePasswordCommand.java b/src/main/java/fr/xephi/authme/commands/ChangePasswordCommand.java
index aa905658f..7577a2029 100644
--- a/src/main/java/fr/xephi/authme/commands/ChangePasswordCommand.java
+++ b/src/main/java/fr/xephi/authme/commands/ChangePasswordCommand.java
@@ -49,11 +49,11 @@ public class ChangePasswordCommand implements CommandExecutor {
}
String lowpass = args[1].toLowerCase();
- if ((lowpass.contains("delete") || lowpass.contains("where") || lowpass.contains("insert") || lowpass.contains("modify") || lowpass.contains("from") || lowpass.contains("select") || lowpass.contains(";") || lowpass.contains("null")) || !lowpass.matches(Settings.getPassRegex)) {
+ if (lowpass.contains("delete") || lowpass.contains("where") || lowpass.contains("insert") || lowpass.contains("modify") || lowpass.contains("from") || lowpass.contains("select") || lowpass.contains(";") || lowpass.contains("null") || !lowpass.matches(Settings.getPassRegex)) {
m.send(player, "password_error");
return true;
}
- if ((lowpass.equalsIgnoreCase(name))) {
+ if (lowpass.equalsIgnoreCase(name)) {
m.send(player, "password_error_nick");
return true;
}
diff --git a/src/main/java/fr/xephi/authme/converter/xAuthToFlat.java b/src/main/java/fr/xephi/authme/converter/xAuthToFlat.java
index e8ac1c9a6..61be7cb83 100644
--- a/src/main/java/fr/xephi/authme/converter/xAuthToFlat.java
+++ b/src/main/java/fr/xephi/authme/converter/xAuthToFlat.java
@@ -48,7 +48,7 @@ public class xAuthToFlat {
String pl = getIdPlayer(id);
String psw = getPassword(id);
if (psw != null && !psw.isEmpty() && pl != null) {
- PlayerAuth auth = new PlayerAuth(pl, psw, "198.18.0.1", 0, "your@email.com");
+ PlayerAuth auth = new PlayerAuth(pl, psw, "192.168.0.1", 0, "your@email.com");
database.saveAuth(auth);
}
}
diff --git a/src/main/java/fr/xephi/authme/datasource/FlatFile.java b/src/main/java/fr/xephi/authme/datasource/FlatFile.java
index 825579f44..13cdfaf09 100644
--- a/src/main/java/fr/xephi/authme/datasource/FlatFile.java
+++ b/src/main/java/fr/xephi/authme/datasource/FlatFile.java
@@ -427,7 +427,7 @@ public class FlatFile implements DataSource {
if (args[0].equalsIgnoreCase(user)) {
switch (args.length) {
case 2:
- return new PlayerAuth(args[0], args[1], "198.18.0.1", 0, "your@email.com");
+ return new PlayerAuth(args[0], args[1], "192.168.0.1", 0, "your@email.com");
case 3:
return new PlayerAuth(args[0], args[1], args[2], 0, "your@email.com");
case 4:
@@ -709,7 +709,7 @@ public class FlatFile implements DataSource {
String[] args = line.split(":");
switch (args.length) {
case 2:
- auths.add(new PlayerAuth(args[0], args[1], "198.18.0.1", 0, "your@email.com"));
+ auths.add(new PlayerAuth(args[0], args[1], "192.168.0.1", 0, "your@email.com"));
case 3:
auths.add(new PlayerAuth(args[0], args[1], args[2], 0, "your@email.com"));
case 4:
diff --git a/src/main/java/fr/xephi/authme/datasource/MySQL.java b/src/main/java/fr/xephi/authme/datasource/MySQL.java
index f2d6f5aba..36bd86c25 100644
--- a/src/main/java/fr/xephi/authme/datasource/MySQL.java
+++ b/src/main/java/fr/xephi/authme/datasource/MySQL.java
@@ -204,7 +204,7 @@ public class MySQL implements DataSource {
if (rs.next()) {
id = rs.getInt(columnID);
if (rs.getString(columnIp).isEmpty() && rs.getString(columnIp) != null) {
- pAuth = new PlayerAuth(rs.getString(columnName).toLowerCase(), rs.getString(columnPassword), "198.18.0.1", rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail));
+ pAuth = new PlayerAuth(rs.getString(columnName).toLowerCase(), rs.getString(columnPassword), "192.168.0.1", rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail));
} else {
if (!columnSalt.isEmpty()) {
if (!columnGroup.isEmpty())
@@ -1079,7 +1079,7 @@ public class MySQL implements DataSource {
PlayerAuth pAuth = null;
int id = rs.getInt(columnID);
if (rs.getString(columnIp).isEmpty() && rs.getString(columnIp) != null) {
- pAuth = new PlayerAuth(rs.getString(columnName), rs.getString(columnPassword), "198.18.0.1", rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail));
+ pAuth = new PlayerAuth(rs.getString(columnName), rs.getString(columnPassword), "192.168.0.1", rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail));
} else {
if (!columnSalt.isEmpty()) {
if (!columnGroup.isEmpty())
diff --git a/src/main/java/fr/xephi/authme/datasource/SQLite.java b/src/main/java/fr/xephi/authme/datasource/SQLite.java
index 674aa449c..0ea0a547b 100644
--- a/src/main/java/fr/xephi/authme/datasource/SQLite.java
+++ b/src/main/java/fr/xephi/authme/datasource/SQLite.java
@@ -155,7 +155,7 @@ public class SQLite implements DataSource {
rs = pst.executeQuery();
if (rs.next()) {
if (rs.getString(columnIp).isEmpty()) {
- return new PlayerAuth(rs.getString(columnName), rs.getString(columnPassword), "198.18.0.1", rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail));
+ return new PlayerAuth(rs.getString(columnName), rs.getString(columnPassword), "192.168.0.1", rs.getLong(columnLastLogin), rs.getDouble(lastlocX), rs.getDouble(lastlocY), rs.getDouble(lastlocZ), rs.getString(lastlocWorld), rs.getString(columnEmail));
} else {
if (!columnSalt.isEmpty()) {
return 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));
diff --git a/src/main/java/fr/xephi/authme/process/register/AsyncronousRegister.java b/src/main/java/fr/xephi/authme/process/register/AsyncronousRegister.java
index 774471946..43e53c8a2 100644
--- a/src/main/java/fr/xephi/authme/process/register/AsyncronousRegister.java
+++ b/src/main/java/fr/xephi/authme/process/register/AsyncronousRegister.java
@@ -53,15 +53,27 @@ public class AsyncronousRegister {
allowRegister = false;
}
- else if ((lowpass.contains("delete") || lowpass.contains("where") || lowpass.contains("insert") || lowpass.contains("modify") || lowpass.contains("from") || lowpass.contains("select") || lowpass.contains(";") || lowpass.contains("null")) || !lowpass.matches(Settings.getPassRegex)) {
+ else if (lowpass.contains("delete") || lowpass.contains("where") || lowpass.contains("insert") || lowpass.contains("modify") || lowpass.contains("from") || lowpass.contains("select") || lowpass.contains(";") || lowpass.contains("null") || !lowpass.matches(Settings.getPassRegex)) {
m.send(player, "password_error");
allowRegister = false;
}
- else if ((lowpass.equalsIgnoreCase(player.getName()))) {
+ else if (lowpass.equalsIgnoreCase(player.getName())) {
m.send(player, "password_error_nick");
allowRegister = false;
}
+
+ else if (password.length() < Settings.getPasswordMinLen || password.length() > Settings.passwordMaxLength) {
+ m.send(player, "pass_len");
+ allowRegister = false;
+ }
+
+ else if (!Settings.unsafePasswords.isEmpty()) {
+ if (Settings.unsafePasswords.contains(password.toLowerCase())) {
+ m.send(player, "password_error_unsafe");
+ allowRegister = false;
+ }
+ }
else if (database.isAuthAvailable(name)) {
m.send(player, "user_regged");
@@ -124,16 +136,6 @@ public class AsyncronousRegister {
}
protected void passwordRegister() {
- if (password.length() < Settings.getPasswordMinLen || password.length() > Settings.passwordMaxLength) {
- m.send(player, "pass_len");
- return;
- }
- if (!Settings.unsafePasswords.isEmpty()) {
- if (Settings.unsafePasswords.contains(password.toLowerCase())) {
- m.send(player, "password_error_unsafe");
- return;
- }
- }
PlayerAuth auth = null;
String hash = "";
try {
diff --git a/src/main/java/fr/xephi/authme/settings/Settings.java b/src/main/java/fr/xephi/authme/settings/Settings.java
index fc6891974..085594c59 100644
--- a/src/main/java/fr/xephi/authme/settings/Settings.java
+++ b/src/main/java/fr/xephi/authme/settings/Settings.java
@@ -848,6 +848,8 @@ public final class Settings extends YamlConfiguration {
pt,
nl,
gl,
- bg
+ bg,
+ eu,
+ tr
}
}
diff --git a/src/main/resources/messages_eu.yml b/src/main/resources/messages_eu.yml
new file mode 100644
index 000000000..4a45b3f9b
--- /dev/null
+++ b/src/main/resources/messages_eu.yml
@@ -0,0 +1,59 @@
+unknown_user: '&fErabiltzailea ez dago datu basean'
+unsafe_spawn: '&fSpawn-era telegarraiatu zara'
+not_logged_in: '&cSaioa hasi gabe!'
+reg_voluntarily: '&fZure erabiltzailea erregistratu dezakezu:"/register pasahitza pasahitza"'
+usage_log: '&cErabili: /login pasahitza'
+wrong_pwd: '&cPasahitz okerra'
+unregistered: '&cZure erregistroa ezabatu duzu!'
+reg_disabled: '&cErregistroa desgaitua'
+valid_session: '&cSession login'
+login: '&cOngi etorri!'
+vb_nonActiv: '&fZure kontua aktibatu gabe dago, konfirmatu zure emaila!'
+user_regged: '&cErabiltzailea dagoeneko erregistratua'
+usage_reg: '&cErabili: /register pasahitza pasahitza'
+max_reg: '&fKontuko 2 erabiltzaile bakarrik izan ditzakezu'
+no_perm: '&cBaimenik ez'
+error: '&fErrorea; Mesedez jarri kontaktuan administratzaile batekin'
+login_msg: '&cMesedez erabili "/login pasahitza" saioa hasteko'
+reg_msg: '&cMesedez erabili "/register pasahitza pasahitza" erregistratzeko'
+reg_email_msg: '&cMesdez erabili "/register " erregistratzeko'
+usage_unreg: '&cErabili: /unregister password'
+pwd_changed: '&cPasahitza aldatu duzu!'
+user_unknown: '&cErabiltzailea ez dago erregistratuta'
+password_error: '&fPasahitzak ez datoz bat'
+password_error_nick: '&fYou can''t use your name as password, please choose another one'
+password_error_unsafe: '&fThe chosen password is not safe, please choose another one'
+invalid_session: '&fSession Dataes doesnt corrispond Plaese wait the end of session'
+reg_only: '&fErregistratuako erabiltzaileak bakarrik! Mesedez bisitatu http://example.com erregistratzeko'
+logged_in: '&cDagoeneko saioa hasita!'
+logout: '&cAtera zara'
+same_nick: '&fZure izen berdina duen erabiltzaile bat zerbitzarian jolasten dago'
+registered: '&cOndo erregistratu zara!'
+pass_len: '&fZure pasahitza motzegia edo luzeegia da'
+reload: '&fConfiguration and database has been reloaded'
+timeout: '&fDenbora gehiegi egon zara saioa hasi gabe'
+usage_changepassword: '&fErabili: /changepassword pasahitzZaharra pasahitzBerria'
+name_len: '&cZure erabiltzaile izena motzegia edo luzeegia da'
+regex: '&cZure erabiltzaileak karaktere debekatuak ditu. Karaktere onartuak: REG_EX'
+add_email: '&cMesedez gehitu zure emaila : /email add yourEmail confirmEmail'
+bad_database_email: '[AuthMe] /email komandoa MySql-rekin bakarrik dago erabilgarri. Jarri kontaktuan administratzaile batekin'
+recovery_email: '&cPasahitza ahaztu duzu? Erabili /email recovery '
+usage_captcha: '&cYou need to type a captcha, please type: /captcha '
+wrong_captcha: '&cWrong Captcha, please use : /captcha THE_CAPTCHA'
+valid_captcha: '&cYour captcha is valid !'
+kick_forvip: '&cVIP erabiltzaile bat sartu da zerbitzaria beteta zegoenean!'
+kick_fullserver: '&cZerbitzaria beteta dago, Barkatu!'
+usage_email_add: '&fErabili: /email add '
+usage_email_change: '&fErabili: /email change '
+usage_email_recovery: '&fErabili: /email recovery '
+new_email_invalid: '[AuthMe] Email okerra!'
+old_email_invalid: '[AuthMe] Email zaharra okerra!'
+email_invalid: '[AuthMe] Email okerrea'
+email_added: '[AuthMe] Emaila gehitu duzu !'
+email_confirm: '[AuthMe] Konfirmatu zure emaila !'
+email_changed: '[AuthMe] Emaila aldatua!'
+email_send: '[AuthMe] Berreskuratze emaila bidalita !'
+email_exists: '[AuthMe] An email already exists on your account. You can change it using the command below'
+country_banned: '[AuthMe]Zure herrialdea blokeatuta dago zerbitzari honetan'
+antibot_auto_enabled: '[AuthMe] AntiBotMod automatically enabled due to massive connections!'
+antibot_auto_disabled: '[AuthMe] AntiBotMod automatically disabled after %m Minutes,hope invasion stopped'
diff --git a/src/main/resources/messages_it.yml b/src/main/resources/messages_it.yml
index 48ac45169..5a58cb28d 100644
--- a/src/main/resources/messages_it.yml
+++ b/src/main/resources/messages_it.yml
@@ -4,13 +4,14 @@ not_logged_in: '&cNon hai ancora eseguito l''autenticazione!'
reg_voluntarily: 'Puoi eseguire la registrazione al server con il comando: "/register "'
usage_log: '&cUtilizzo: /login '
wrong_pwd: '&cPassword non corretta!'
-unregistered: '&cL''utente è stato rimosso dal database con successo!'
+unregistered: '&cSei stato rimosso dal database con successo!'
reg_disabled: '&cLa registrazione tramite i comandi di gioco è disabilitata.'
valid_session: '&cAutenticato automaticamente attraverso la precedente sessione!'
login: '&cAutenticazone effettuata correttamente!'
vb_nonActiv: 'Il tuo account non è stato ancora verificato, controlla fra le tue email per scoprire come attivarlo!'
-user_regged: '&cHai già effettuato la registrazione, non è possibile eseguirla nuovamente.'
+user_regged: '&cHai già effettuato la registrazione, non puoi eseguirla nuovamente.'
usage_reg: '&cUtilizzo: /register '
+error: 'Qualcosa è andato storto, riporta questo errore ad un Admin!'
max_reg: 'Hai raggiunto il numero massimo di registrazioni per questo indirizzo IP!'
no_perm: '&cNon hai il permesso di eseguire questa operazione.'
login_msg: '&cPerfavore, esegui l''autenticazione con il comando: "/login "'
@@ -23,35 +24,35 @@ password_error: 'Le Password non corrispondono!'
password_error_nick: 'Non puoi usare il tuo nome utente come password, scegline un''altra!'
password_error_unsafe: 'La password che hai inserito non è sicura, scegline un''altra!'
invalid_session: 'I tuoi dati di connessione attuali non sono quelli utilizzati in precedenza. Attendi la fine della sessione attuale.'
-reg_only: 'La registrazione è effettuabile soltanto attraverso il sito web! Perfavore, vai su http://example.com per procedere!'
-logged_in: '&cHai già eseguito l''autenticazione!'
+reg_only: 'Puoi giocare in questo server solo dopo aver effettuato la registrazione attraverso il sito web! Perfavore, vai su http://esempio.it per procedere!'
+logged_in: '&cHai già eseguito l''autenticazione, non devi eseguirla nuovamente!'
logout: '&cDisconnessione avvenuta correttamente!'
-same_nick: 'Lo stesso nickname è già online sul server!'
+same_nick: 'Questo stesso nome utente è già online sul server!'
registered: '&cRegistrato correttamente!'
-pass_len: 'La tua password è troppo corta o troppo lunga, scegline un''altra!'
+pass_len: 'La password che hai inserito è troppo corta o troppo lunga, scegline un''altra!'
reload: 'La configurazione e il database sono stati ricaricati con successo!'
timeout: 'Tempo scaduto per effettuare l''autenticazione'
usage_changepassword: 'Utilizzo: /changepassword '
-name_len: '&cIl tuo nickname è troppo corto o troppo lungo!'
-regex: '&cIl tuo nickname contiene caratteri non consentiti. I caratteri consentiti sono: REG_EX'
-add_email: '&cPer poter recuperare la password in futuro, aggiungi una email al tuo account con il comando: "/email add "'
+name_len: '&cIl tuo nome utente è troppo corto o troppo lungo!'
+regex: '&cIl tuo nome utente contiene caratteri non consentiti. I caratteri consentiti sono: REG_EX'
+add_email: '&cPer poter recuperare la password in futuro, aggiungi un indirizzo email al tuo account con il comando: "/email add "'
bad_database_email: 'Il comando /email è utilizzabile solo con un database MySQL o SQLite, riporta questo errore ad un Admin!'
recovery_email: '&cHai dimenticato la tua password? Puoi recuperarla eseguendo il comando: "/email recovery "'
-usage_captcha: '&cUtilizzo: /captcha THE_CAPTCHA'
-wrong_captcha: '&cCodice captcha sbagliato, perfavore riprova con il comando: "/captcha THE_CAPTCHA"'
-valid_captcha: '&cIl tuo captcha è valido!'
-kick_forvip: '&cUn utente VIP è entrato mentre il server era pieno!'
+usage_captcha: '&cAbbiamo bisogno che tu inserisca un captcha, perfavore scrivi: "/captcha THE_CAPTCHA"'
+wrong_captcha: '&cCaptcha sbagliato, perfavore riprova con il comando: "/captcha THE_CAPTCHA"'
+valid_captcha: '&cIl captcha inserito è valido!'
+kick_forvip: '&cUn utente VIP è entrato mentre il server era pieno e ha preso il tuo posto!'
kick_fullserver: '&cIl server è attualmente pieno, riprova più tardi!'
usage_email_add: '&fUtilizzo: /email add '
usage_email_change: '&fUtilizzo: /email change '
usage_email_recovery: '&fUtilizzo: /email recovery '
-new_email_invalid: 'La nuova email non è valida!'
-old_email_invalid: 'La vecchia email non è valida!'
+new_email_invalid: 'Il nuovo indirizzo email inserito non è valido!'
+old_email_invalid: 'Il vecchio indirizzo email inserito non è valido!'
email_invalid: 'L''indirizzo email inserito non è valido'
-email_added: 'Email aggiunta correttamente!'
-email_confirm: 'Conferma la tua email!'
-email_changed: 'Email cambiata correttamente!'
-email_send: 'Email di recupero inviata al tuo indirizzo email!'
+email_added: 'Indirizzo email aggiunto correttamente!'
+email_confirm: 'Conferma il tuo indirizzo email!'
+email_changed: 'Indirizzo email cambiato correttamente!'
+email_send: 'Una email di recupero è stata appena inviata al tuo indirizzo email!'
email_exists: 'Il tuo account ha già un''indirizzo email configurato. Se vuoi, puoi cambiarlo con il seguente comando:'
country_banned: 'Il tuo paese è bandito da questo server!'
antibot_auto_enabled: 'Il servizio di AntiBot è stato automaticamente abilitato a seguito delle numerose connessioni!'
diff --git a/src/main/resources/messages_tr.yml b/src/main/resources/messages_tr.yml
new file mode 100644
index 000000000..899bee304
--- /dev/null
+++ b/src/main/resources/messages_tr.yml
@@ -0,0 +1,59 @@
+unknown_user: '&fKullanici veritabanina ekli degil'
+unsafe_spawn: '&fDogdugunuz konum guvenli degildi, lobiye isinlaniyorsunuz...'
+not_logged_in: '&cGiris Yapmadin!'
+reg_voluntarily: '&fKullanici adinla kayit olabilirsin! Komut: "/register sifren sifrentekrar"'
+usage_log: '&cKullanimi: /login sifren'
+wrong_pwd: '&cYanlis sifre'
+unregistered: '&cSunucudan kaydiniz basariyla silindi!'
+reg_disabled: '&cKayit deaktif'
+valid_session: '&cOturum Acma'
+login: '&cBasarili giris!'
+vb_nonActiv: '&fHesabin aktiflestirilmedi! Emailini kontrol et'
+user_regged: '&cKullanici zaten oyunda'
+usage_reg: '&cKullanimi: /register sifre sifretekrar'
+max_reg: '&fMaximim kayit limitini astin!'
+no_perm: '&cYetkin yok'
+error: '&fBir hata olustu; Lutfen adminle iletisime gec'
+login_msg: '&cGiris Yapin : "/login sifre"'
+reg_msg: '&cLutfen kaydolmak icin : "/register sifre sifretekrar"'
+reg_email_msg: '&cLutfen Kaydolmak icin : "/register "'
+usage_unreg: '&cKullanimi: /unregister sifren'
+pwd_changed: '&cSifreniz degisti!'
+user_unknown: '&cBu kullaniciyla kaydolunmamis!'
+password_error: '&fSifren eslesmiyor'
+password_error_nick: '&fYou can''t use your name as password, please choose another one'
+password_error_unsafe: '&fThe chosen password is not safe, please choose another one'
+invalid_session: '&fOturum veritabanlari uyusmuyor lutfen sonunu bekleyin'
+reg_only: '&fSadece kayitli uyeler girebilir ! Kayit olmak icin www.orneksite.com adresini ziyaret ediniz !'
+logged_in: '&cZaten Giris Yapilmis!'
+logout: '&cBasarili cikis'
+same_nick: '&fAyni kullanici oyunda'
+registered: '&cBasarili kayit!'
+pass_len: '&fSifren cok uzun ya da kisa olmamali '
+reload: '&fKonfigurasyon dosyasi ve veritabani yüklendi'
+timeout: '&fZaman Asimi'
+usage_changepassword: '&fkullanimi: /changepassword eskisifre yenisifre'
+name_len: '&cKullanici adin cok kisa ya da cok uzun'
+regex: '&cKullanici adin ozel karakterler iceriyor. Uygun karakterler: REG_EX'
+add_email: '&cLutfen emailini ekle : /email add '
+bad_database_email: '[AuthMe] Bu /email komutu sadece MySql ve SQLite ile etkinlestireilebilir'
+recovery_email: '&cSifreni mi unuttun? Degistirmek icin : /email recovery '
+usage_captcha: '&cBir captcha yazman lazim , yazmak icin: /captcha '
+wrong_captcha: '&cYanlis Captcha, kullanmak icin : /captcha THE_CAPTCHA'
+valid_captcha: '&cCaptcha gecerli !'
+kick_forvip: '&cSenin yerine bir VIP kullanıcı girdi!'
+kick_fullserver: '&cServer suanda dolu gozukuyor, Uzgunum!'
+usage_email_add: '&fKullanimi: /email add '
+usage_email_change: '&fKullanimi: /email change '
+usage_email_recovery: '&fKullanimi: /email recovery '
+new_email_invalid: '[AuthMe] Yeni eposta gecersiz!'
+old_email_invalid: '[AuthMe] Eski eposta gecersiz!'
+email_invalid: '[AuthMe] Gecersiz Eposta'
+email_added: '[AuthMe] Eposta Eklendi !'
+email_confirm: '[AuthMe] Epostani Dogrula !'
+email_changed: '[AuthMe] Eposta Degistirildi !'
+email_send: '[AuthMe] Kurtarma postasi gonderildi !'
+email_exists: '[AuthMe] An email already exists on your account. You can change it using the command below'
+country_banned: 'Ulken bu serverdan banlandi !'
+antibot_auto_enabled: '[AuthMe] AntiBotMode otomatik olarak etkinlestirildi!'
+antibot_auto_disabled: '[AuthMe] AntiBotMode %m dakika sonra otomatik olarak isgal yuzundan devredisi birakildi'