mirror of
https://github.com/AuthMe/AuthMeReloaded.git
synced 2024-11-28 05:05:14 +01:00
Merge remote-tracking branch 'origin/master' into authme-process
Conflicts: src/main/java/fr/xephi/authme/cache/limbo/LimboCache.java src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java src/main/java/fr/xephi/authme/process/register/AsyncRegister.java src/main/java/fr/xephi/authme/settings/Settings.java
This commit is contained in:
commit
93484a3449
8
pom.xml
8
pom.xml
@ -285,7 +285,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.zaxxer</groupId>
|
<groupId>com.zaxxer</groupId>
|
||||||
<artifactId>HikariCP</artifactId>
|
<artifactId>HikariCP</artifactId>
|
||||||
<version>2.4.1</version>
|
<version>2.4.2</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
@ -298,7 +298,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.slf4j</groupId>
|
<groupId>org.slf4j</groupId>
|
||||||
<artifactId>slf4j-jdk14</artifactId>
|
<artifactId>slf4j-jdk14</artifactId>
|
||||||
<version>1.7.12</version>
|
<version>1.7.13</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
@ -502,6 +502,10 @@
|
|||||||
<artifactId>AllPay</artifactId>
|
<artifactId>AllPay</artifactId>
|
||||||
<groupId>com.fernferret.allpay</groupId>
|
<groupId>com.fernferret.allpay</groupId>
|
||||||
</exclusion>
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>Vault</artifactId>
|
||||||
|
<groupId>net.milkbowl.vault</groupId>
|
||||||
|
</exclusion>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
<artifactId>VaultAPI</artifactId>
|
<artifactId>VaultAPI</artifactId>
|
||||||
<groupId>net.milkbowl.vault</groupId>
|
<groupId>net.milkbowl.vault</groupId>
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package fr.xephi.authme;
|
package fr.xephi.authme;
|
||||||
|
|
||||||
import fr.xephi.authme.permission.UserPermission;
|
import fr.xephi.authme.permission.PlayerPermission;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.util.Wrapper;
|
import fr.xephi.authme.util.Wrapper;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@ -73,7 +73,7 @@ public class AntiBot {
|
|||||||
if (antiBotStatus == AntiBotStatus.ACTIVE || antiBotStatus == AntiBotStatus.DISABLED) {
|
if (antiBotStatus == AntiBotStatus.ACTIVE || antiBotStatus == AntiBotStatus.DISABLED) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (plugin.getPermissionsManager().hasPermission(player, UserPermission.BYPASS_ANTIBOT)) {
|
if (plugin.getPermissionsManager().hasPermission(player, PlayerPermission.BYPASS_ANTIBOT)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,8 +17,12 @@ import fr.xephi.authme.hooks.BungeeCordMessage;
|
|||||||
import fr.xephi.authme.hooks.EssSpawn;
|
import fr.xephi.authme.hooks.EssSpawn;
|
||||||
import fr.xephi.authme.listener.*;
|
import fr.xephi.authme.listener.*;
|
||||||
import fr.xephi.authme.modules.ModuleManager;
|
import fr.xephi.authme.modules.ModuleManager;
|
||||||
|
import fr.xephi.authme.output.ConsoleFilter;
|
||||||
|
import fr.xephi.authme.output.Log4JFilter;
|
||||||
|
import fr.xephi.authme.output.MessageKey;
|
||||||
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.permission.PermissionsManager;
|
import fr.xephi.authme.permission.PermissionsManager;
|
||||||
import fr.xephi.authme.permission.UserPermission;
|
import fr.xephi.authme.permission.PlayerPermission;
|
||||||
import fr.xephi.authme.process.Management;
|
import fr.xephi.authme.process.Management;
|
||||||
import fr.xephi.authme.settings.*;
|
import fr.xephi.authme.settings.*;
|
||||||
import fr.xephi.authme.util.GeoLiteAPI;
|
import fr.xephi.authme.util.GeoLiteAPI;
|
||||||
@ -227,7 +231,7 @@ public class AuthMe extends JavaPlugin {
|
|||||||
this.otherAccounts = OtherAccounts.getInstance();
|
this.otherAccounts = OtherAccounts.getInstance();
|
||||||
|
|
||||||
// Setup messages
|
// Setup messages
|
||||||
this.messages = new Messages(Settings.messageFile, Settings.messagesLanguage);
|
this.messages = Messages.getInstance();
|
||||||
|
|
||||||
// Set up Metrics
|
// Set up Metrics
|
||||||
setupMetrics();
|
setupMetrics();
|
||||||
@ -735,7 +739,7 @@ public class AuthMe extends JavaPlugin {
|
|||||||
public Player generateKickPlayer(Collection<? extends Player> collection) {
|
public Player generateKickPlayer(Collection<? extends Player> collection) {
|
||||||
Player player = null;
|
Player player = null;
|
||||||
for (Player p : collection) {
|
for (Player p : collection) {
|
||||||
if (!getPermissionsManager().hasPermission(p, UserPermission.IS_VIP)) {
|
if (!getPermissionsManager().hasPermission(p, PlayerPermission.IS_VIP)) {
|
||||||
player = p;
|
player = p;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1,42 +0,0 @@
|
|||||||
package fr.xephi.authme;
|
|
||||||
|
|
||||||
import java.util.logging.Filter;
|
|
||||||
import java.util.logging.LogRecord;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Console filter Class
|
|
||||||
*
|
|
||||||
* @author Xephi59
|
|
||||||
* @version $Revision: 1.0 $
|
|
||||||
*/
|
|
||||||
public class ConsoleFilter implements Filter {
|
|
||||||
|
|
||||||
public ConsoleFilter() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Method isLoggable.
|
|
||||||
*
|
|
||||||
* @param record LogRecord
|
|
||||||
*
|
|
||||||
* @return boolean * @see java.util.logging.Filter#isLoggable(LogRecord)
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean isLoggable(LogRecord record) {
|
|
||||||
try {
|
|
||||||
if (record == null || record.getMessage() == null)
|
|
||||||
return true;
|
|
||||||
String logM = record.getMessage().toLowerCase();
|
|
||||||
if (!logM.contains("issued server command:"))
|
|
||||||
return true;
|
|
||||||
if (!logM.contains("/login ") && !logM.contains("/l ") && !logM.contains("/reg ") && !logM.contains("/changepassword ") && !logM.contains("/unregister ") && !logM.contains("/authme register ") && !logM.contains("/authme changepassword ") && !logM.contains("/authme reg ") && !logM.contains("/authme cp ") && !logM.contains("/register "))
|
|
||||||
return true;
|
|
||||||
String playerName = record.getMessage().split(" ")[0];
|
|
||||||
record.setMessage(playerName + " issued an AuthMe command!");
|
|
||||||
return true;
|
|
||||||
} catch (NullPointerException npe) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -48,7 +48,7 @@ public class SendMailSSL {
|
|||||||
final String subject = Settings.getMailSubject;
|
final String subject = Settings.getMailSubject;
|
||||||
final String smtp = Settings.getmailSMTP;
|
final String smtp = Settings.getmailSMTP;
|
||||||
final String password = Settings.getmailPassword;
|
final String password = Settings.getmailPassword;
|
||||||
final String mailText = Settings.getMailText.replace("<playername>", auth.getNickname()).replace("<servername>", plugin.getServer().getServerName()).replace("<generatedpass>", newPass);
|
final String mailText = Settings.getMailText.replace("%playername%", auth.getNickname()).replace("%servername%", plugin.getServer().getServerName()).replace("%generatedpass%", newPass);
|
||||||
final String mail = auth.getEmail();
|
final String mail = auth.getEmail();
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ public class SendMailSSL {
|
|||||||
ImageIO.write(gen.generateImage(), "jpg", file);
|
ImageIO.write(gen.generateImage(), "jpg", file);
|
||||||
DataSource source = new FileDataSource(file);
|
DataSource source = new FileDataSource(file);
|
||||||
String tag = email.embed(source, auth.getNickname() + "_new_pass.jpg");
|
String tag = email.embed(source, auth.getNickname() + "_new_pass.jpg");
|
||||||
content = content.replace("<image>", "<img src=\"cid:" + tag + "\">");
|
content = content.replace("%image%", "<img src=\"cid:" + tag + "\">");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
ConsoleLogger.showError("Unable to send new password as image! Using normal text! Dest: " + mail);
|
ConsoleLogger.showError("Unable to send new password as image! Using normal text! Dest: " + mail);
|
||||||
}
|
}
|
||||||
@ -86,8 +86,7 @@ public class SendMailSSL {
|
|||||||
try {
|
try {
|
||||||
email.send();
|
email.send();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
ConsoleLogger.showError("Fail to send a mail to " + mail + " cause " + e.getLocalizedMessage());
|
||||||
ConsoleLogger.showError("Fail to send a mail to " + mail);
|
|
||||||
}
|
}
|
||||||
if (file != null)
|
if (file != null)
|
||||||
//noinspection ResultOfMethodCallIgnored
|
//noinspection ResultOfMethodCallIgnored
|
||||||
|
@ -162,8 +162,10 @@ public class PlayerAuth {
|
|||||||
* @param email String
|
* @param email String
|
||||||
* @param realName String
|
* @param realName String
|
||||||
*/
|
*/
|
||||||
public PlayerAuth(String nickname, String hash, String salt, int groupId, String ip, long lastLogin, double x, double y, double z, String world, String email, String realName) {
|
public PlayerAuth(String nickname, String hash, String salt, int groupId, String ip,
|
||||||
this.nickname = nickname;
|
long lastLogin, double x, double y, double z, String world, String email,
|
||||||
|
String realName) {
|
||||||
|
this.nickname = nickname.toLowerCase();
|
||||||
this.hash = hash;
|
this.hash = hash;
|
||||||
this.ip = ip;
|
this.ip = ip;
|
||||||
this.lastLogin = lastLogin;
|
this.lastLogin = lastLogin;
|
||||||
@ -202,7 +204,7 @@ public class PlayerAuth {
|
|||||||
* @param nickname String
|
* @param nickname String
|
||||||
*/
|
*/
|
||||||
public void setName(String nickname) {
|
public void setName(String nickname) {
|
||||||
this.nickname = nickname;
|
this.nickname = nickname.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -117,11 +117,10 @@ public class LimboCache {
|
|||||||
* @param name String
|
* @param name String
|
||||||
*/
|
*/
|
||||||
public void deleteLimboPlayer(String name) {
|
public void deleteLimboPlayer(String name) {
|
||||||
if(cache.containsKey(name)) {
|
if (name == null)
|
||||||
cache.get(name).clearTask();
|
return;
|
||||||
cache.remove(name);
|
cache.remove(name);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method getLimboPlayer.
|
* Method getLimboPlayer.
|
||||||
@ -131,6 +130,8 @@ public class LimboCache {
|
|||||||
* @return LimboPlayer
|
* @return LimboPlayer
|
||||||
*/
|
*/
|
||||||
public LimboPlayer getLimboPlayer(String name) {
|
public LimboPlayer getLimboPlayer(String name) {
|
||||||
|
if (name == null)
|
||||||
|
return null;
|
||||||
return cache.get(name);
|
return cache.get(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,6 +143,8 @@ public class LimboCache {
|
|||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public boolean hasLimboPlayer(String name) {
|
public boolean hasLimboPlayer(String name) {
|
||||||
|
if (name == null)
|
||||||
|
return false;
|
||||||
return cache.containsKey(name);
|
return cache.containsKey(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,9 +154,8 @@ public class LimboCache {
|
|||||||
* @param player Player
|
* @param player Player
|
||||||
*/
|
*/
|
||||||
public void updateLimboPlayer(Player player) {
|
public void updateLimboPlayer(Player player) {
|
||||||
String name = player.getName().toLowerCase();
|
if (this.hasLimboPlayer(player.getName().toLowerCase())) {
|
||||||
if (hasLimboPlayer(name)) {
|
this.deleteLimboPlayer(player.getName().toLowerCase());
|
||||||
deleteLimboPlayer(name);
|
|
||||||
}
|
}
|
||||||
addLimboPlayer(player);
|
addLimboPlayer(player);
|
||||||
}
|
}
|
||||||
|
@ -735,11 +735,11 @@ public class CommandDescription {
|
|||||||
this.permissions = new CommandPermissions(permissionNode, defaultPermission);
|
this.permissions = new CommandPermissions(permissionNode, defaultPermission);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Builder builder() {
|
public static CommandBuilder builder() {
|
||||||
return new Builder();
|
return new CommandBuilder();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class Builder {
|
public static final class CommandBuilder {
|
||||||
private List<String> labels;
|
private List<String> labels;
|
||||||
private String description;
|
private String description;
|
||||||
private String detailedDescription;
|
private String detailedDescription;
|
||||||
@ -767,46 +767,46 @@ public class CommandDescription {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder labels(List<String> labels) {
|
public CommandBuilder labels(List<String> labels) {
|
||||||
this.labels = labels;
|
this.labels = labels;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder labels(String... labels) {
|
public CommandBuilder labels(String... labels) {
|
||||||
return labels(asMutableList(labels));
|
return labels(asMutableList(labels));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder description(String description) {
|
public CommandBuilder description(String description) {
|
||||||
this.description = description;
|
this.description = description;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder detailedDescription(String detailedDescription) {
|
public CommandBuilder detailedDescription(String detailedDescription) {
|
||||||
this.detailedDescription = detailedDescription;
|
this.detailedDescription = detailedDescription;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder executableCommand(ExecutableCommand executableCommand) {
|
public CommandBuilder executableCommand(ExecutableCommand executableCommand) {
|
||||||
this.executableCommand = executableCommand;
|
this.executableCommand = executableCommand;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder parent(CommandDescription parent) {
|
public CommandBuilder parent(CommandDescription parent) {
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder withArgument(String label, String description, boolean isOptional) {
|
public CommandBuilder withArgument(String label, String description, boolean isOptional) {
|
||||||
arguments.add(new CommandArgumentDescription(label, description, isOptional));
|
arguments.add(new CommandArgumentDescription(label, description, isOptional));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder noArgumentMaximum(boolean noArgumentMaximum) {
|
public CommandBuilder noArgumentMaximum(boolean noArgumentMaximum) {
|
||||||
this.noArgumentMaximum = noArgumentMaximum;
|
this.noArgumentMaximum = noArgumentMaximum;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder permissions(CommandPermissions.DefaultPermission defaultPermission,
|
public CommandBuilder permissions(CommandPermissions.DefaultPermission defaultPermission,
|
||||||
PermissionNode... permissionNodes) {
|
PermissionNode... permissionNodes) {
|
||||||
this.permissions = new CommandPermissions(asMutableList(permissionNodes), defaultPermission);
|
this.permissions = new CommandPermissions(asMutableList(permissionNodes), defaultPermission);
|
||||||
return this;
|
return this;
|
||||||
|
@ -10,7 +10,7 @@ import fr.xephi.authme.command.executable.email.RecoverEmailCommand;
|
|||||||
import fr.xephi.authme.command.executable.login.LoginCommand;
|
import fr.xephi.authme.command.executable.login.LoginCommand;
|
||||||
import fr.xephi.authme.command.executable.logout.LogoutCommand;
|
import fr.xephi.authme.command.executable.logout.LogoutCommand;
|
||||||
import fr.xephi.authme.permission.AdminPermission;
|
import fr.xephi.authme.permission.AdminPermission;
|
||||||
import fr.xephi.authme.permission.UserPermission;
|
import fr.xephi.authme.permission.PlayerPermission;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -73,7 +73,7 @@ public class CommandManager {
|
|||||||
.description("Register a player")
|
.description("Register a player")
|
||||||
.detailedDescription("Register the specified player with the specified password.")
|
.detailedDescription("Register the specified player with the specified password.")
|
||||||
.parent(authMeBaseCommand)
|
.parent(authMeBaseCommand)
|
||||||
.permissions(OP_ONLY, UserPermission.REGISTER)
|
.permissions(OP_ONLY, PlayerPermission.REGISTER)
|
||||||
.withArgument("player", "Player name", false)
|
.withArgument("player", "Player name", false)
|
||||||
.withArgument("password", "Password", false)
|
.withArgument("password", "Password", false)
|
||||||
.build();
|
.build();
|
||||||
@ -85,7 +85,7 @@ public class CommandManager {
|
|||||||
.description("Unregister a player")
|
.description("Unregister a player")
|
||||||
.detailedDescription("Unregister the specified player.")
|
.detailedDescription("Unregister the specified player.")
|
||||||
.parent(authMeBaseCommand)
|
.parent(authMeBaseCommand)
|
||||||
.permissions(OP_ONLY, UserPermission.UNREGISTER)
|
.permissions(OP_ONLY, PlayerPermission.UNREGISTER)
|
||||||
.withArgument("player", "Player name", false)
|
.withArgument("player", "Player name", false)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ public class CommandManager {
|
|||||||
.description("Enforce login player")
|
.description("Enforce login player")
|
||||||
.detailedDescription("Enforce the specified player to login.")
|
.detailedDescription("Enforce the specified player to login.")
|
||||||
.parent(authMeBaseCommand)
|
.parent(authMeBaseCommand)
|
||||||
.permissions(OP_ONLY, UserPermission.CAN_LOGIN_BE_FORCED)
|
.permissions(OP_ONLY, PlayerPermission.CAN_LOGIN_BE_FORCED)
|
||||||
.withArgument("player", "Online player name", true)
|
.withArgument("player", "Online player name", true)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
@ -107,7 +107,7 @@ public class CommandManager {
|
|||||||
.description("Change a player's password")
|
.description("Change a player's password")
|
||||||
.detailedDescription("Change the password of a player.")
|
.detailedDescription("Change the password of a player.")
|
||||||
.parent(authMeBaseCommand)
|
.parent(authMeBaseCommand)
|
||||||
.permissions(OP_ONLY, UserPermission.CHANGE_PASSWORD)
|
.permissions(OP_ONLY, AdminPermission.CHANGE_PASSWORD)
|
||||||
.withArgument("player", "Player name", false)
|
.withArgument("player", "Player name", false)
|
||||||
.withArgument("pwd", "New password", false)
|
.withArgument("pwd", "New password", false)
|
||||||
.build();
|
.build();
|
||||||
@ -135,35 +135,30 @@ public class CommandManager {
|
|||||||
.build();
|
.build();
|
||||||
|
|
||||||
// Register the getemail command
|
// Register the getemail command
|
||||||
CommandDescription getEmailCommand = new CommandDescription(new GetEmailCommand(), new ArrayList<String>() {
|
CommandDescription getEmailCommand = CommandDescription.builder()
|
||||||
|
.executableCommand(new GetEmailCommand())
|
||||||
{
|
.labels("getemail", "getmail", "email", "mail")
|
||||||
add("getemail");
|
.description("Display player's email")
|
||||||
add("getmail");
|
.detailedDescription("Display the email address of the specified player if set.")
|
||||||
add("email");
|
.parent(authMeBaseCommand)
|
||||||
add("mail");
|
.permissions(OP_ONLY, AdminPermission.GET_EMAIL)
|
||||||
}
|
.withArgument("player", "Player name", true)
|
||||||
}, "Display player's email", "Display the email address of the specified player if set.", authMeBaseCommand);
|
.build();
|
||||||
getEmailCommand.setCommandPermissions(AdminPermission.GET_EMAIL, OP_ONLY);
|
|
||||||
getEmailCommand.addArgument(new CommandArgumentDescription("player", "Player name", true));
|
|
||||||
|
|
||||||
// Register the setemail command
|
// Register the setemail command
|
||||||
CommandDescription setEmailCommand = new CommandDescription(new SetEmailCommand(), new ArrayList<String>() {
|
CommandDescription setEmailCommand = CommandDescription.builder()
|
||||||
|
.executableCommand(new SetEmailCommand())
|
||||||
{
|
.labels("chgemail", "chgmail", "setemail", "setmail")
|
||||||
add("chgemail");
|
.description("Change player's email")
|
||||||
add("chgmail");
|
.detailedDescription("Change the email address of the specified player.")
|
||||||
add("setemail");
|
.parent(authMeBaseCommand)
|
||||||
add("setmail");
|
.permissions(OP_ONLY, AdminPermission.CHANGE_EMAIL)
|
||||||
}
|
.withArgument("player", "Player name", false)
|
||||||
}, "Change player's email", "Change the email address of the specified player.", authMeBaseCommand);
|
.withArgument("email", "Player email", false)
|
||||||
setEmailCommand.setCommandPermissions(AdminPermission.CHANGE_EMAIL, OP_ONLY);
|
.build();
|
||||||
setEmailCommand.addArgument(new CommandArgumentDescription("player", "Player name", false));
|
|
||||||
setEmailCommand.addArgument(new CommandArgumentDescription("email", "Player email", false));
|
|
||||||
|
|
||||||
// Register the getip command
|
// Register the getip command
|
||||||
CommandDescription getIpCommand = new CommandDescription(new GetIpCommand(), new ArrayList<String>() {
|
CommandDescription getIpCommand = new CommandDescription(new GetIpCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("getip");
|
add("getip");
|
||||||
add("ip");
|
add("ip");
|
||||||
@ -174,7 +169,6 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the spawn command
|
// Register the spawn command
|
||||||
CommandDescription spawnCommand = new CommandDescription(new SpawnCommand(), new ArrayList<String>() {
|
CommandDescription spawnCommand = new CommandDescription(new SpawnCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("spawn");
|
add("spawn");
|
||||||
add("home");
|
add("home");
|
||||||
@ -184,7 +178,6 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the setspawn command
|
// Register the setspawn command
|
||||||
CommandDescription setSpawnCommand = new CommandDescription(new SetSpawnCommand(), new ArrayList<String>() {
|
CommandDescription setSpawnCommand = new CommandDescription(new SetSpawnCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("setspawn");
|
add("setspawn");
|
||||||
add("chgspawn");
|
add("chgspawn");
|
||||||
@ -194,7 +187,6 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the firstspawn command
|
// Register the firstspawn command
|
||||||
CommandDescription firstSpawnCommand = new CommandDescription(new FirstSpawnCommand(), new ArrayList<String>() {
|
CommandDescription firstSpawnCommand = new CommandDescription(new FirstSpawnCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("firstspawn");
|
add("firstspawn");
|
||||||
add("firsthome");
|
add("firsthome");
|
||||||
@ -204,7 +196,6 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the setfirstspawn command
|
// Register the setfirstspawn command
|
||||||
CommandDescription setFirstSpawnCommand = new CommandDescription(new SetFirstSpawnCommand(), new ArrayList<String>() {
|
CommandDescription setFirstSpawnCommand = new CommandDescription(new SetFirstSpawnCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("setfirstspawn");
|
add("setfirstspawn");
|
||||||
add("chgfirstspawn");
|
add("chgfirstspawn");
|
||||||
@ -214,7 +205,6 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the purge command
|
// Register the purge command
|
||||||
CommandDescription purgeCommand = new CommandDescription(new PurgeCommand(), new ArrayList<String>() {
|
CommandDescription purgeCommand = new CommandDescription(new PurgeCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("purge");
|
add("purge");
|
||||||
add("delete");
|
add("delete");
|
||||||
@ -225,7 +215,6 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the purgelastposition command
|
// Register the purgelastposition command
|
||||||
CommandDescription purgeLastPositionCommand = new CommandDescription(new PurgeLastPositionCommand(), new ArrayList<String>() {
|
CommandDescription purgeLastPositionCommand = new CommandDescription(new PurgeLastPositionCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("resetpos");
|
add("resetpos");
|
||||||
add("purgelastposition");
|
add("purgelastposition");
|
||||||
@ -240,7 +229,6 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the purgebannedplayers command
|
// Register the purgebannedplayers command
|
||||||
CommandDescription purgeBannedPlayersCommand = new CommandDescription(new PurgeBannedPlayersCommand(), new ArrayList<String>() {
|
CommandDescription purgeBannedPlayersCommand = new CommandDescription(new PurgeBannedPlayersCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("purgebannedplayers");
|
add("purgebannedplayers");
|
||||||
add("purgebannedplayer");
|
add("purgebannedplayer");
|
||||||
@ -252,7 +240,6 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the switchantibot command
|
// Register the switchantibot command
|
||||||
CommandDescription switchAntiBotCommand = new CommandDescription(new SwitchAntiBotCommand(), new ArrayList<String>() {
|
CommandDescription switchAntiBotCommand = new CommandDescription(new SwitchAntiBotCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("switchantibot");
|
add("switchantibot");
|
||||||
add("toggleantibot");
|
add("toggleantibot");
|
||||||
@ -277,7 +264,6 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the reload command
|
// Register the reload command
|
||||||
CommandDescription reloadCommand = new CommandDescription(new ReloadCommand(), new ArrayList<String>() {
|
CommandDescription reloadCommand = new CommandDescription(new ReloadCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("reload");
|
add("reload");
|
||||||
add("rld");
|
add("rld");
|
||||||
@ -302,7 +288,7 @@ public class CommandManager {
|
|||||||
.description("Login command")
|
.description("Login command")
|
||||||
.detailedDescription("Command to log in using AuthMeReloaded.")
|
.detailedDescription("Command to log in using AuthMeReloaded.")
|
||||||
.parent(null)
|
.parent(null)
|
||||||
.permissions(ALLOWED, UserPermission.LOGIN)
|
.permissions(ALLOWED, PlayerPermission.LOGIN)
|
||||||
.withArgument("password", "Login password", false)
|
.withArgument("password", "Login password", false)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
@ -313,12 +299,11 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the base logout command
|
// Register the base logout command
|
||||||
CommandDescription logoutBaseCommand = new CommandDescription(new LogoutCommand(), new ArrayList<String>() {
|
CommandDescription logoutBaseCommand = new CommandDescription(new LogoutCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("logout");
|
add("logout");
|
||||||
}
|
}
|
||||||
}, "Logout command", "Command to logout using AuthMeReloaded.", null);
|
}, "Logout command", "Command to logout using AuthMeReloaded.", null);
|
||||||
logoutBaseCommand.setCommandPermissions(UserPermission.LOGOUT, CommandPermissions.DefaultPermission.ALLOWED);
|
logoutBaseCommand.setCommandPermissions(PlayerPermission.LOGOUT, CommandPermissions.DefaultPermission.ALLOWED);
|
||||||
|
|
||||||
// Register the help command
|
// Register the help command
|
||||||
CommandDescription logoutHelpCommand = new CommandDescription(helpCommandExecutable, helpCommandLabels,
|
CommandDescription logoutHelpCommand = new CommandDescription(helpCommandExecutable, helpCommandLabels,
|
||||||
@ -327,13 +312,12 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the base register command
|
// Register the base register command
|
||||||
CommandDescription registerBaseCommand = new CommandDescription(new fr.xephi.authme.command.executable.register.RegisterCommand(), new ArrayList<String>() {
|
CommandDescription registerBaseCommand = new CommandDescription(new fr.xephi.authme.command.executable.register.RegisterCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("register");
|
add("register");
|
||||||
add("reg");
|
add("reg");
|
||||||
}
|
}
|
||||||
}, "Registration command", "Command to register using AuthMeReloaded.", null);
|
}, "Registration command", "Command to register using AuthMeReloaded.", null);
|
||||||
registerBaseCommand.setCommandPermissions(UserPermission.REGISTER, CommandPermissions.DefaultPermission.ALLOWED);
|
registerBaseCommand.setCommandPermissions(PlayerPermission.REGISTER, CommandPermissions.DefaultPermission.ALLOWED);
|
||||||
registerBaseCommand.addArgument(new CommandArgumentDescription("password", "Password", false));
|
registerBaseCommand.addArgument(new CommandArgumentDescription("password", "Password", false));
|
||||||
registerBaseCommand.addArgument(new CommandArgumentDescription("verifyPassword", "Verify password", false));
|
registerBaseCommand.addArgument(new CommandArgumentDescription("verifyPassword", "Verify password", false));
|
||||||
|
|
||||||
@ -344,13 +328,12 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the base unregister command
|
// Register the base unregister command
|
||||||
CommandDescription unregisterBaseCommand = new CommandDescription(new fr.xephi.authme.command.executable.unregister.UnregisterCommand(), new ArrayList<String>() {
|
CommandDescription unregisterBaseCommand = new CommandDescription(new fr.xephi.authme.command.executable.unregister.UnregisterCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("unregister");
|
add("unregister");
|
||||||
add("unreg");
|
add("unreg");
|
||||||
}
|
}
|
||||||
}, "Unregistration command", "Command to unregister using AuthMeReloaded.", null);
|
}, "Unregistration command", "Command to unregister using AuthMeReloaded.", null);
|
||||||
unregisterBaseCommand.setCommandPermissions(UserPermission.UNREGISTER, CommandPermissions.DefaultPermission.ALLOWED);
|
unregisterBaseCommand.setCommandPermissions(PlayerPermission.UNREGISTER, CommandPermissions.DefaultPermission.ALLOWED);
|
||||||
unregisterBaseCommand.addArgument(new CommandArgumentDescription("password", "Password", false));
|
unregisterBaseCommand.addArgument(new CommandArgumentDescription("password", "Password", false));
|
||||||
|
|
||||||
// Register the help command
|
// Register the help command
|
||||||
@ -359,13 +342,12 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the base changepassword command
|
// Register the base changepassword command
|
||||||
CommandDescription changePasswordBaseCommand = new CommandDescription(new fr.xephi.authme.command.executable.changepassword.ChangePasswordCommand(), new ArrayList<String>() {
|
CommandDescription changePasswordBaseCommand = new CommandDescription(new fr.xephi.authme.command.executable.changepassword.ChangePasswordCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("changepassword");
|
add("changepassword");
|
||||||
add("changepass");
|
add("changepass");
|
||||||
}
|
}
|
||||||
}, "Change password command", "Command to change your password using AuthMeReloaded.", null);
|
}, "Change password command", "Command to change your password using AuthMeReloaded.", null);
|
||||||
changePasswordBaseCommand.setCommandPermissions(UserPermission.CHANGE_PASSWORD, CommandPermissions.DefaultPermission.ALLOWED);
|
changePasswordBaseCommand.setCommandPermissions(PlayerPermission.CHANGE_PASSWORD, CommandPermissions.DefaultPermission.ALLOWED);
|
||||||
changePasswordBaseCommand.addArgument(new CommandArgumentDescription("password", "Password", false));
|
changePasswordBaseCommand.addArgument(new CommandArgumentDescription("password", "Password", false));
|
||||||
changePasswordBaseCommand.addArgument(new CommandArgumentDescription("verifyPassword", "Verify password", false));
|
changePasswordBaseCommand.addArgument(new CommandArgumentDescription("verifyPassword", "Verify password", false));
|
||||||
|
|
||||||
@ -376,7 +358,6 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the base Dungeon Maze command
|
// Register the base Dungeon Maze command
|
||||||
CommandDescription emailBaseCommand = new CommandDescription(helpCommandExecutable, new ArrayList<String>() {
|
CommandDescription emailBaseCommand = new CommandDescription(helpCommandExecutable, new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("email");
|
add("email");
|
||||||
add("mail");
|
add("mail");
|
||||||
@ -390,33 +371,30 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the add command
|
// Register the add command
|
||||||
CommandDescription addEmailCommand = new CommandDescription(new AddEmailCommand(), new ArrayList<String>() {
|
CommandDescription addEmailCommand = new CommandDescription(new AddEmailCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("add");
|
add("add");
|
||||||
add("addemail");
|
add("addemail");
|
||||||
add("addmail");
|
add("addmail");
|
||||||
}
|
}
|
||||||
}, "Add E-mail", "Add an new E-Mail address to your account.", emailBaseCommand);
|
}, "Add E-mail", "Add an new E-Mail address to your account.", emailBaseCommand);
|
||||||
addEmailCommand.setCommandPermissions(UserPermission.ADD_EMAIL, CommandPermissions.DefaultPermission.ALLOWED);
|
addEmailCommand.setCommandPermissions(PlayerPermission.ADD_EMAIL, CommandPermissions.DefaultPermission.ALLOWED);
|
||||||
addEmailCommand.addArgument(new CommandArgumentDescription("email", "Email address", false));
|
addEmailCommand.addArgument(new CommandArgumentDescription("email", "Email address", false));
|
||||||
addEmailCommand.addArgument(new CommandArgumentDescription("verifyEmail", "Email address verification", false));
|
addEmailCommand.addArgument(new CommandArgumentDescription("verifyEmail", "Email address verification", false));
|
||||||
|
|
||||||
// Register the change command
|
// Register the change command
|
||||||
CommandDescription changeEmailCommand = new CommandDescription(new ChangeEmailCommand(), new ArrayList<String>() {
|
CommandDescription changeEmailCommand = new CommandDescription(new ChangeEmailCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("change");
|
add("change");
|
||||||
add("changeemail");
|
add("changeemail");
|
||||||
add("changemail");
|
add("changemail");
|
||||||
}
|
}
|
||||||
}, "Change E-mail", "Change an E-Mail address of your account.", emailBaseCommand);
|
}, "Change E-mail", "Change an E-Mail address of your account.", emailBaseCommand);
|
||||||
changeEmailCommand.setCommandPermissions(UserPermission.CHANGE_EMAIL, CommandPermissions.DefaultPermission.ALLOWED);
|
changeEmailCommand.setCommandPermissions(PlayerPermission.CHANGE_EMAIL, CommandPermissions.DefaultPermission.ALLOWED);
|
||||||
changeEmailCommand.addArgument(new CommandArgumentDescription("oldEmail", "Old email address", false));
|
changeEmailCommand.addArgument(new CommandArgumentDescription("oldEmail", "Old email address", false));
|
||||||
changeEmailCommand.addArgument(new CommandArgumentDescription("newEmail", "New email address", false));
|
changeEmailCommand.addArgument(new CommandArgumentDescription("newEmail", "New email address", false));
|
||||||
|
|
||||||
// Register the recover command
|
// Register the recover command
|
||||||
CommandDescription recoverEmailCommand = new CommandDescription(new RecoverEmailCommand(), new ArrayList<String>() {
|
CommandDescription recoverEmailCommand = new CommandDescription(new RecoverEmailCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("recover");
|
add("recover");
|
||||||
add("recovery");
|
add("recovery");
|
||||||
@ -424,18 +402,17 @@ public class CommandManager {
|
|||||||
add("recovermail");
|
add("recovermail");
|
||||||
}
|
}
|
||||||
}, "Recover using E-mail", "Recover your account using an E-mail address.", emailBaseCommand);
|
}, "Recover using E-mail", "Recover your account using an E-mail address.", emailBaseCommand);
|
||||||
recoverEmailCommand.setCommandPermissions(UserPermission.RECOVER_EMAIL, CommandPermissions.DefaultPermission.ALLOWED);
|
recoverEmailCommand.setCommandPermissions(PlayerPermission.RECOVER_EMAIL, CommandPermissions.DefaultPermission.ALLOWED);
|
||||||
recoverEmailCommand.addArgument(new CommandArgumentDescription("email", "Email address", false));
|
recoverEmailCommand.addArgument(new CommandArgumentDescription("email", "Email address", false));
|
||||||
|
|
||||||
// Register the base captcha command
|
// Register the base captcha command
|
||||||
CommandDescription captchaBaseCommand = new CommandDescription(new CaptchaCommand(), new ArrayList<String>() {
|
CommandDescription captchaBaseCommand = new CommandDescription(new CaptchaCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("captcha");
|
add("captcha");
|
||||||
add("capt");
|
add("capt");
|
||||||
}
|
}
|
||||||
}, "Captcha command", "Captcha command for AuthMeReloaded.", null);
|
}, "Captcha command", "Captcha command for AuthMeReloaded.", null);
|
||||||
captchaBaseCommand.setCommandPermissions(UserPermission.CAPTCHA, CommandPermissions.DefaultPermission.ALLOWED);
|
captchaBaseCommand.setCommandPermissions(PlayerPermission.CAPTCHA, CommandPermissions.DefaultPermission.ALLOWED);
|
||||||
captchaBaseCommand.addArgument(new CommandArgumentDescription("captcha", "The captcha", false));
|
captchaBaseCommand.addArgument(new CommandArgumentDescription("captcha", "The captcha", false));
|
||||||
|
|
||||||
// Register the help command
|
// Register the help command
|
||||||
@ -445,14 +422,13 @@ public class CommandManager {
|
|||||||
|
|
||||||
// Register the base converter command
|
// Register the base converter command
|
||||||
CommandDescription converterBaseCommand = new CommandDescription(new ConverterCommand(), new ArrayList<String>() {
|
CommandDescription converterBaseCommand = new CommandDescription(new ConverterCommand(), new ArrayList<String>() {
|
||||||
|
|
||||||
{
|
{
|
||||||
add("converter");
|
add("converter");
|
||||||
add("convert");
|
add("convert");
|
||||||
add("conv");
|
add("conv");
|
||||||
}
|
}
|
||||||
}, "Convert command", "Convert command for AuthMeReloaded.", null);
|
}, "Convert command", "Convert command for AuthMeReloaded.", null);
|
||||||
converterBaseCommand.setCommandPermissions(UserPermission.CONVERTER, OP_ONLY);
|
converterBaseCommand.setCommandPermissions(AdminPermission.CONVERTER, OP_ONLY);
|
||||||
converterBaseCommand.addArgument(new CommandArgumentDescription("job", "Conversion job: flattosql / flattosqlite /| xauth / crazylogin / rakamak / royalauth / vauth / sqltoflat", false));
|
converterBaseCommand.addArgument(new CommandArgumentDescription("job", "Conversion job: flattosql / flattosqlite /| xauth / crazylogin / rakamak / royalauth / vauth / sqltoflat", false));
|
||||||
|
|
||||||
// Register the help command
|
// Register the help command
|
||||||
|
@ -5,8 +5,8 @@ import fr.xephi.authme.ConsoleLogger;
|
|||||||
import fr.xephi.authme.cache.auth.PlayerAuth;
|
import fr.xephi.authme.cache.auth.PlayerAuth;
|
||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@ import fr.xephi.authme.cache.auth.PlayerCache;
|
|||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.security.PasswordSecurity;
|
import fr.xephi.authme.security.PasswordSecurity;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@ -16,6 +16,7 @@ import org.bukkit.command.CommandSender;
|
|||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Admin command for changing a player's password.
|
||||||
*/
|
*/
|
||||||
public class ChangePasswordCommand extends ExecutableCommand {
|
public class ChangePasswordCommand extends ExecutableCommand {
|
||||||
|
|
||||||
@ -31,24 +32,27 @@ public class ChangePasswordCommand extends ExecutableCommand {
|
|||||||
|
|
||||||
// Validate the password
|
// Validate the password
|
||||||
String playerPassLowerCase = playerPass.toLowerCase();
|
String playerPassLowerCase = playerPass.toLowerCase();
|
||||||
if (playerPassLowerCase.contains("delete") || playerPassLowerCase.contains("where") || playerPassLowerCase.contains("insert") || playerPassLowerCase.contains("modify") || playerPassLowerCase.contains("from") || playerPassLowerCase.contains("select") || playerPassLowerCase.contains(";") || playerPassLowerCase.contains("null") || !playerPassLowerCase.matches(Settings.getPassRegex)) {
|
if (playerPassLowerCase.contains("delete") || playerPassLowerCase.contains("where")
|
||||||
m.send(sender, MessageKey.PASSWORD_IS_USERNAME_ERROR);
|
|| playerPassLowerCase.contains("insert") || playerPassLowerCase.contains("modify")
|
||||||
|
|| playerPassLowerCase.contains("from") || playerPassLowerCase.contains("select")
|
||||||
|
|| playerPassLowerCase.contains(";") || playerPassLowerCase.contains("null")
|
||||||
|
|| !playerPassLowerCase.matches(Settings.getPassRegex)) {
|
||||||
|
m.send(sender, MessageKey.PASSWORD_MATCH_ERROR);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (playerPassLowerCase.equalsIgnoreCase(playerName)) {
|
if (playerPassLowerCase.equalsIgnoreCase(playerName)) {
|
||||||
m.send(sender, MessageKey.PASSWORD_IS_USERNAME_ERROR);
|
m.send(sender, MessageKey.PASSWORD_IS_USERNAME_ERROR);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (playerPassLowerCase.length() < Settings.getPasswordMinLen || playerPassLowerCase.length() > Settings.passwordMaxLength) {
|
if (playerPassLowerCase.length() < Settings.getPasswordMinLen
|
||||||
|
|| playerPassLowerCase.length() > Settings.passwordMaxLength) {
|
||||||
m.send(sender, MessageKey.INVALID_PASSWORD_LENGTH);
|
m.send(sender, MessageKey.INVALID_PASSWORD_LENGTH);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (!Settings.unsafePasswords.isEmpty()) {
|
if (!Settings.unsafePasswords.isEmpty() && Settings.unsafePasswords.contains(playerPassLowerCase)) {
|
||||||
if (Settings.unsafePasswords.contains(playerPassLowerCase)) {
|
|
||||||
m.send(sender, MessageKey.PASSWORD_UNSAFE_ERROR);
|
m.send(sender, MessageKey.PASSWORD_UNSAFE_ERROR);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// Set the password
|
// Set the password
|
||||||
final String playerNameLowerCase = playerName.toLowerCase();
|
final String playerNameLowerCase = playerName.toLowerCase();
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
||||||
|
@ -3,7 +3,7 @@ package fr.xephi.authme.command.executable.authme;
|
|||||||
import fr.xephi.authme.AuthMe;
|
import fr.xephi.authme.AuthMe;
|
||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.permission.UserPermission;
|
import fr.xephi.authme.permission.PlayerPermission;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -30,7 +30,7 @@ public class ForceLoginCommand extends ExecutableCommand {
|
|||||||
sender.sendMessage("Player needs to be online!");
|
sender.sendMessage("Player needs to be online!");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (!plugin.getPermissionsManager().hasPermission(player, UserPermission.CAN_LOGIN_BE_FORCED)) {
|
if (!plugin.getPermissionsManager().hasPermission(player, PlayerPermission.CAN_LOGIN_BE_FORCED)) {
|
||||||
sender.sendMessage("You cannot force login for the player " + playerName + "!");
|
sender.sendMessage("You cannot force login for the player " + playerName + "!");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,8 @@ import fr.xephi.authme.AuthMe;
|
|||||||
import fr.xephi.authme.cache.auth.PlayerAuth;
|
import fr.xephi.authme.cache.auth.PlayerAuth;
|
||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4,8 +4,8 @@ import fr.xephi.authme.AuthMe;
|
|||||||
import fr.xephi.authme.cache.auth.PlayerAuth;
|
import fr.xephi.authme.cache.auth.PlayerAuth;
|
||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
@ -5,8 +5,8 @@ import fr.xephi.authme.ConsoleLogger;
|
|||||||
import fr.xephi.authme.cache.auth.PlayerAuth;
|
import fr.xephi.authme.cache.auth.PlayerAuth;
|
||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@ -6,8 +6,8 @@ import fr.xephi.authme.cache.auth.PlayerAuth;
|
|||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.security.PasswordSecurity;
|
import fr.xephi.authme.security.PasswordSecurity;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
@ -6,8 +6,8 @@ import fr.xephi.authme.AuthMe;
|
|||||||
import fr.xephi.authme.ConsoleLogger;
|
import fr.xephi.authme.ConsoleLogger;
|
||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.util.Profiler;
|
import fr.xephi.authme.util.Profiler;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@ -41,7 +41,7 @@ public class ReloadCommand extends ExecutableCommand {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
Settings.reload();
|
Settings.reload();
|
||||||
plugin.setMessages(new Messages(Settings.messageFile, Settings.messagesLanguage));
|
Messages.getInstance().reloadManager();
|
||||||
plugin.getModuleManager().reloadModules();
|
plugin.getModuleManager().reloadModules();
|
||||||
plugin.setupDatabase();
|
plugin.setupDatabase();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -5,8 +5,8 @@ import fr.xephi.authme.cache.auth.PlayerAuth;
|
|||||||
import fr.xephi.authme.cache.auth.PlayerCache;
|
import fr.xephi.authme.cache.auth.PlayerCache;
|
||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
@ -6,8 +6,8 @@ import fr.xephi.authme.cache.auth.PlayerCache;
|
|||||||
import fr.xephi.authme.cache.limbo.LimboCache;
|
import fr.xephi.authme.cache.limbo.LimboCache;
|
||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.task.MessageTask;
|
import fr.xephi.authme.task.MessageTask;
|
||||||
import fr.xephi.authme.task.TimeoutTask;
|
import fr.xephi.authme.task.TimeoutTask;
|
||||||
|
@ -5,8 +5,8 @@ import fr.xephi.authme.cache.auth.PlayerCache;
|
|||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.security.RandomString;
|
import fr.xephi.authme.security.RandomString;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -4,8 +4,8 @@ import fr.xephi.authme.AuthMe;
|
|||||||
import fr.xephi.authme.cache.auth.PlayerCache;
|
import fr.xephi.authme.cache.auth.PlayerCache;
|
||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.task.ChangePasswordTask;
|
import fr.xephi.authme.task.ChangePasswordTask;
|
||||||
import fr.xephi.authme.util.Wrapper;
|
import fr.xephi.authme.util.Wrapper;
|
||||||
@ -13,6 +13,7 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* The command for a player to change his password with.
|
||||||
*/
|
*/
|
||||||
public class ChangePasswordCommand extends ExecutableCommand {
|
public class ChangePasswordCommand extends ExecutableCommand {
|
||||||
|
|
||||||
@ -27,10 +28,10 @@ public class ChangePasswordCommand extends ExecutableCommand {
|
|||||||
final Messages m = wrapper.getMessages();
|
final Messages m = wrapper.getMessages();
|
||||||
|
|
||||||
// Get the passwords
|
// Get the passwords
|
||||||
String playerPass = commandArguments.get(0);
|
String oldPassword = commandArguments.get(0);
|
||||||
String playerPassVerify = commandArguments.get(1);
|
String newPassword = commandArguments.get(1);
|
||||||
|
|
||||||
// Get the player instance and make sure it's authenticated
|
// Get the player instance and make sure he's authenticated
|
||||||
Player player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
String name = player.getName().toLowerCase();
|
String name = player.getName().toLowerCase();
|
||||||
final PlayerCache playerCache = wrapper.getPlayerCache();
|
final PlayerCache playerCache = wrapper.getPlayerCache();
|
||||||
@ -40,8 +41,7 @@ public class ChangePasswordCommand extends ExecutableCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Make sure the password is allowed
|
// Make sure the password is allowed
|
||||||
// TODO ljacqu 20151121: The password confirmation appears to be never verified
|
String playerPassLowerCase = newPassword.toLowerCase();
|
||||||
String playerPassLowerCase = playerPass.toLowerCase();
|
|
||||||
if (playerPassLowerCase.contains("delete") || playerPassLowerCase.contains("where")
|
if (playerPassLowerCase.contains("delete") || playerPassLowerCase.contains("where")
|
||||||
|| playerPassLowerCase.contains("insert") || playerPassLowerCase.contains("modify")
|
|| playerPassLowerCase.contains("insert") || playerPassLowerCase.contains("modify")
|
||||||
|| playerPassLowerCase.contains("from") || playerPassLowerCase.contains("select")
|
|| playerPassLowerCase.contains("from") || playerPassLowerCase.contains("select")
|
||||||
@ -66,8 +66,8 @@ public class ChangePasswordCommand extends ExecutableCommand {
|
|||||||
|
|
||||||
// Set the password
|
// Set the password
|
||||||
final AuthMe plugin = wrapper.getAuthMe();
|
final AuthMe plugin = wrapper.getAuthMe();
|
||||||
wrapper.getServer().getScheduler().runTaskAsynchronously(plugin,
|
wrapper.getScheduler().runTaskAsynchronously(plugin,
|
||||||
new ChangePasswordTask(plugin, player, playerPass, playerPassVerify));
|
new ChangePasswordTask(plugin, player, oldPassword, newPassword));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,8 @@ import fr.xephi.authme.AuthMe;
|
|||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.converter.*;
|
import fr.xephi.authme.converter.*;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
@ -8,8 +8,8 @@ import fr.xephi.authme.command.CommandParts;
|
|||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.security.PasswordSecurity;
|
import fr.xephi.authme.security.PasswordSecurity;
|
||||||
import fr.xephi.authme.security.RandomString;
|
import fr.xephi.authme.security.RandomString;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.util.Wrapper;
|
import fr.xephi.authme.util.Wrapper;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
@ -5,8 +5,8 @@ import fr.xephi.authme.command.CommandParts;
|
|||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.process.Management;
|
import fr.xephi.authme.process.Management;
|
||||||
import fr.xephi.authme.security.RandomString;
|
import fr.xephi.authme.security.RandomString;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.util.Wrapper;
|
import fr.xephi.authme.util.Wrapper;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@ -55,7 +55,7 @@ public class RegisterCommand extends ExecutableCommand {
|
|||||||
}
|
}
|
||||||
if (commandArguments.getCount() > 1 && Settings.getEnablePasswordVerifier) {
|
if (commandArguments.getCount() > 1 && Settings.getEnablePasswordVerifier) {
|
||||||
if (!commandArguments.get(0).equals(commandArguments.get(1))) {
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,8 @@ import fr.xephi.authme.AuthMe;
|
|||||||
import fr.xephi.authme.cache.auth.PlayerCache;
|
import fr.xephi.authme.cache.auth.PlayerCache;
|
||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.command.ExecutableCommand;
|
import fr.xephi.authme.command.ExecutableCommand;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ import fr.xephi.authme.ConsoleLogger;
|
|||||||
import fr.xephi.authme.cache.auth.PlayerAuth;
|
import fr.xephi.authme.cache.auth.PlayerAuth;
|
||||||
import fr.xephi.authme.datasource.DataSource;
|
import fr.xephi.authme.datasource.DataSource;
|
||||||
import fr.xephi.authme.datasource.FlatFile;
|
import fr.xephi.authme.datasource.FlatFile;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -42,16 +42,16 @@ public class vAuthFileReader {
|
|||||||
String name = line.split(": ")[0];
|
String name = line.split(": ")[0];
|
||||||
String password = line.split(": ")[1];
|
String password = line.split(": ")[1];
|
||||||
PlayerAuth auth;
|
PlayerAuth auth;
|
||||||
if (isUUIDinstance(password)) {
|
if (isUuidInstance(password)) {
|
||||||
String playerName;
|
String pname;
|
||||||
try {
|
try {
|
||||||
playerName = Bukkit.getOfflinePlayer(UUID.fromString(name)).getName();
|
pname = Bukkit.getOfflinePlayer(UUID.fromString(name)).getName();
|
||||||
} catch (Exception | NoSuchMethodError e) {
|
} catch (Exception | NoSuchMethodError e) {
|
||||||
playerName = getName(UUID.fromString(name));
|
pname = getName(UUID.fromString(name));
|
||||||
}
|
}
|
||||||
if (playerName == null)
|
if (pname == null)
|
||||||
continue;
|
continue;
|
||||||
auth = new PlayerAuth(playerName.toLowerCase(), password, "127.0.0.1", System.currentTimeMillis(), "your@email.com", playerName);
|
auth = new PlayerAuth(pname.toLowerCase(), password, "127.0.0.1", System.currentTimeMillis(), "your@email.com", pname);
|
||||||
} else {
|
} else {
|
||||||
auth = new PlayerAuth(name.toLowerCase(), password, "127.0.0.1", System.currentTimeMillis(), "your@email.com", name);
|
auth = new PlayerAuth(name.toLowerCase(), password, "127.0.0.1", System.currentTimeMillis(), "your@email.com", name);
|
||||||
}
|
}
|
||||||
@ -64,17 +64,8 @@ public class vAuthFileReader {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private static boolean isUuidInstance(String s) {
|
||||||
* Method isUUIDinstance.
|
return s.length() > 8 && s.charAt(8) == '-';
|
||||||
*
|
|
||||||
* @param s String
|
|
||||||
*
|
|
||||||
* @return boolean
|
|
||||||
*/
|
|
||||||
private boolean isUUIDinstance(String s) {
|
|
||||||
if (String.valueOf(s.charAt(8)).equalsIgnoreCase("-"))
|
|
||||||
return true;
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -32,6 +32,8 @@ import org.bukkit.event.player.*;
|
|||||||
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
import static fr.xephi.authme.output.MessageKey.USERNAME_ALREADY_ONLINE_ERROR;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
public class AuthMePlayerListener implements Listener {
|
public class AuthMePlayerListener implements Listener {
|
||||||
@ -268,7 +270,7 @@ public class AuthMePlayerListener implements Listener {
|
|||||||
PermissionsManager permsMan = plugin.getPermissionsManager();
|
PermissionsManager permsMan = plugin.getPermissionsManager();
|
||||||
|
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
if (event.getResult() == PlayerLoginEvent.Result.KICK_FULL && !permsMan.hasPermission(player, UserPermission.IS_VIP)) {
|
if (event.getResult() == PlayerLoginEvent.Result.KICK_FULL && !permsMan.hasPermission(player, PlayerPermission.IS_VIP)) {
|
||||||
event.setKickMessage(m.retrieveSingle(MessageKey.KICK_FULL_SERVER));
|
event.setKickMessage(m.retrieveSingle(MessageKey.KICK_FULL_SERVER));
|
||||||
event.setResult(PlayerLoginEvent.Result.KICK_FULL);
|
event.setResult(PlayerLoginEvent.Result.KICK_FULL);
|
||||||
return;
|
return;
|
||||||
@ -280,7 +282,7 @@ public class AuthMePlayerListener implements Listener {
|
|||||||
// TODO: Add message to the messages file!!!
|
// TODO: Add message to the messages file!!!
|
||||||
if (Settings.isKickNonRegisteredEnabled && !isAuthAvailable) {
|
if (Settings.isKickNonRegisteredEnabled && !isAuthAvailable) {
|
||||||
if (Settings.antiBotInAction) {
|
if (Settings.antiBotInAction) {
|
||||||
event.setKickMessage("AntiBot service in action! You actually need to be registered!");
|
event.setKickMessage(m.retrieveSingle(MessageKey.KICK_ANTIBOT));
|
||||||
event.setResult(PlayerLoginEvent.Result.KICK_OTHER);
|
event.setResult(PlayerLoginEvent.Result.KICK_OTHER);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
@ -2,8 +2,8 @@ package fr.xephi.authme.listener;
|
|||||||
|
|
||||||
import fr.xephi.authme.AuthMe;
|
import fr.xephi.authme.AuthMe;
|
||||||
import fr.xephi.authme.ConsoleLogger;
|
import fr.xephi.authme.ConsoleLogger;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.util.GeoLiteAPI;
|
import fr.xephi.authme.util.GeoLiteAPI;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
26
src/main/java/fr/xephi/authme/output/ConsoleFilter.java
Normal file
26
src/main/java/fr/xephi/authme/output/ConsoleFilter.java
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
package fr.xephi.authme.output;
|
||||||
|
|
||||||
|
import java.util.logging.Filter;
|
||||||
|
import java.util.logging.LogRecord;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Console filter to replace sensitive AuthMe commands with a generic message.
|
||||||
|
*
|
||||||
|
* @author Xephi59
|
||||||
|
*/
|
||||||
|
public class ConsoleFilter implements Filter {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isLoggable(LogRecord record) {
|
||||||
|
if (record == null || record.getMessage() == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (LogFilterHelper.isSensitiveAuthMeCommand(record.getMessage())) {
|
||||||
|
String playerName = record.getMessage().split(" ")[0];
|
||||||
|
record.setMessage(playerName + " issued an AuthMe command");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,8 +1,8 @@
|
|||||||
package fr.xephi.authme;
|
package fr.xephi.authme.output;
|
||||||
|
|
||||||
import fr.xephi.authme.util.StringUtils;
|
|
||||||
import org.apache.logging.log4j.Level;
|
import org.apache.logging.log4j.Level;
|
||||||
import org.apache.logging.log4j.Marker;
|
import org.apache.logging.log4j.Marker;
|
||||||
|
import org.apache.logging.log4j.core.Filter;
|
||||||
import org.apache.logging.log4j.core.LogEvent;
|
import org.apache.logging.log4j.core.LogEvent;
|
||||||
import org.apache.logging.log4j.core.Logger;
|
import org.apache.logging.log4j.core.Logger;
|
||||||
import org.apache.logging.log4j.message.Message;
|
import org.apache.logging.log4j.message.Message;
|
||||||
@ -11,16 +11,8 @@ import org.apache.logging.log4j.message.Message;
|
|||||||
* Implements a filter for Log4j to skip sensitive AuthMe commands.
|
* Implements a filter for Log4j to skip sensitive AuthMe commands.
|
||||||
*
|
*
|
||||||
* @author Xephi59
|
* @author Xephi59
|
||||||
* @version $Revision: 1.0 $
|
|
||||||
*/
|
*/
|
||||||
public class Log4JFilter implements org.apache.logging.log4j.core.Filter {
|
public class Log4JFilter implements Filter {
|
||||||
|
|
||||||
/**
|
|
||||||
* List of commands (lower-case) to skip.
|
|
||||||
*/
|
|
||||||
private static final String[] COMMANDS_TO_SKIP = {"/login ", "/l ", "/reg ", "/changepassword ",
|
|
||||||
"/unregister ", "/authme register ", "/authme changepassword ", "/authme reg ", "/authme cp ",
|
|
||||||
"/register "};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
@ -29,13 +21,12 @@ public class Log4JFilter implements org.apache.logging.log4j.core.Filter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validates a Message instance and returns the {@link Result} value
|
* Validate a Message instance and return the {@link Result} value
|
||||||
* depending depending on whether the message contains sensitive AuthMe
|
* depending on whether the message contains sensitive AuthMe data.
|
||||||
* data.
|
|
||||||
*
|
*
|
||||||
* @param message the Message object to verify
|
* @param message The Message object to verify
|
||||||
*
|
*
|
||||||
* @return the Result value
|
* @return The Result value
|
||||||
*/
|
*/
|
||||||
private static Result validateMessage(Message message) {
|
private static Result validateMessage(Message message) {
|
||||||
if (message == null) {
|
if (message == null) {
|
||||||
@ -45,24 +36,17 @@ public class Log4JFilter implements org.apache.logging.log4j.core.Filter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validates a message and returns the {@link Result} value depending
|
* Validate a message and return the {@link Result} value depending
|
||||||
* depending on whether the message contains sensitive AuthMe data.
|
* on whether the message contains sensitive AuthMe data.
|
||||||
*
|
*
|
||||||
* @param message the message to verify
|
* @param message The message to verify
|
||||||
*
|
*
|
||||||
* @return the Result value
|
* @return The Result value
|
||||||
*/
|
*/
|
||||||
private static Result validateMessage(String message) {
|
private static Result validateMessage(String message) {
|
||||||
if (message == null) {
|
return LogFilterHelper.isSensitiveAuthMeCommand(message)
|
||||||
return Result.NEUTRAL;
|
? Result.DENY
|
||||||
}
|
: Result.NEUTRAL;
|
||||||
|
|
||||||
String lowerMessage = message.toLowerCase();
|
|
||||||
if (lowerMessage.contains("issued server command:")
|
|
||||||
&& StringUtils.containsAny(lowerMessage, COMMANDS_TO_SKIP)) {
|
|
||||||
return Result.DENY;
|
|
||||||
}
|
|
||||||
return Result.NEUTRAL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -74,14 +58,12 @@ public class Log4JFilter implements org.apache.logging.log4j.core.Filter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result filter(Logger arg0, Level arg1, Marker arg2, String message,
|
public Result filter(Logger arg0, Level arg1, Marker arg2, String message, Object... arg4) {
|
||||||
Object... arg4) {
|
|
||||||
return validateMessage(message);
|
return validateMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result filter(Logger arg0, Level arg1, Marker arg2, Object message,
|
public Result filter(Logger arg0, Level arg1, Marker arg2, Object message, Throwable arg4) {
|
||||||
Throwable arg4) {
|
|
||||||
if (message == null) {
|
if (message == null) {
|
||||||
return Result.NEUTRAL;
|
return Result.NEUTRAL;
|
||||||
}
|
}
|
||||||
@ -89,8 +71,7 @@ public class Log4JFilter implements org.apache.logging.log4j.core.Filter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result filter(Logger arg0, Level arg1, Marker arg2, Message message,
|
public Result filter(Logger arg0, Level arg1, Marker arg2, Message message, Throwable arg4) {
|
||||||
Throwable arg4) {
|
|
||||||
return validateMessage(message);
|
return validateMessage(message);
|
||||||
}
|
}
|
||||||
|
|
34
src/main/java/fr/xephi/authme/output/LogFilterHelper.java
Normal file
34
src/main/java/fr/xephi/authme/output/LogFilterHelper.java
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
package fr.xephi.authme.output;
|
||||||
|
|
||||||
|
import fr.xephi.authme.util.StringUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Service class for the log filters.
|
||||||
|
*/
|
||||||
|
public final class LogFilterHelper {
|
||||||
|
|
||||||
|
private static final String ISSUED_COMMAND_TEXT = "issued server command:";
|
||||||
|
|
||||||
|
private static final String[] COMMANDS_TO_SKIP = {"/login ", "/l ", "/reg ", "/changepassword ",
|
||||||
|
"/unregister ", "/authme register ", "/authme changepassword ", "/authme reg ", "/authme cp ",
|
||||||
|
"/register "};
|
||||||
|
|
||||||
|
private LogFilterHelper() {
|
||||||
|
// Util class
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate a message and return whether the message contains a sensitive AuthMe command.
|
||||||
|
*
|
||||||
|
* @param message The message to verify
|
||||||
|
*
|
||||||
|
* @return True if it is a sensitive AuthMe command, false otherwise
|
||||||
|
*/
|
||||||
|
public static boolean isSensitiveAuthMeCommand(String message) {
|
||||||
|
if (message == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
String lowerMessage = message.toLowerCase();
|
||||||
|
return lowerMessage.contains(ISSUED_COMMAND_TEXT) && StringUtils.containsAny(lowerMessage, COMMANDS_TO_SKIP);
|
||||||
|
}
|
||||||
|
}
|
@ -1,10 +1,12 @@
|
|||||||
package fr.xephi.authme.settings;
|
package fr.xephi.authme.output;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Keys for translatable messages managed by {@link Messages}.
|
* Keys for translatable messages managed by {@link Messages}.
|
||||||
*/
|
*/
|
||||||
public enum MessageKey {
|
public enum MessageKey {
|
||||||
|
|
||||||
|
KICK_ANTIBOT("kick_antibot"),
|
||||||
|
|
||||||
UNKNOWN_USER("unknown_user"),
|
UNKNOWN_USER("unknown_user"),
|
||||||
|
|
||||||
UNSAFE_QUIT_LOCATION("unsafe_spawn"),
|
UNSAFE_QUIT_LOCATION("unsafe_spawn"),
|
82
src/main/java/fr/xephi/authme/output/Messages.java
Normal file
82
src/main/java/fr/xephi/authme/output/Messages.java
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
package fr.xephi.authme.output;
|
||||||
|
|
||||||
|
import fr.xephi.authme.settings.Settings;
|
||||||
|
import fr.xephi.authme.util.StringUtils;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class for retrieving and sending translatable messages to players.
|
||||||
|
* This class detects when the language settings have changed and will
|
||||||
|
* automatically update to use a new language file.
|
||||||
|
*/
|
||||||
|
public class Messages {
|
||||||
|
|
||||||
|
private static Messages singleton;
|
||||||
|
private final String language;
|
||||||
|
private MessagesManager manager;
|
||||||
|
|
||||||
|
|
||||||
|
private Messages(String language, MessagesManager manager) {
|
||||||
|
this.language = language;
|
||||||
|
this.manager = manager;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the instance of Messages.
|
||||||
|
*
|
||||||
|
* @return The Messages instance
|
||||||
|
*/
|
||||||
|
public static Messages getInstance() {
|
||||||
|
if (singleton == null) {
|
||||||
|
MessagesManager manager = new MessagesManager(Settings.messageFile);
|
||||||
|
singleton = new Messages(Settings.messagesLanguage, manager);
|
||||||
|
}
|
||||||
|
return singleton;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send the given message code to the player.
|
||||||
|
*
|
||||||
|
* @param sender The entity to send the message to
|
||||||
|
* @param key The key of the message to send
|
||||||
|
*/
|
||||||
|
public void send(CommandSender sender, MessageKey key) {
|
||||||
|
String[] lines = manager.retrieve(key.getKey());
|
||||||
|
for (String line : lines) {
|
||||||
|
sender.sendMessage(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the message from the text file and return it split by new line as an array.
|
||||||
|
*
|
||||||
|
* @param key The message key to retrieve
|
||||||
|
*
|
||||||
|
* @return The message split by new lines
|
||||||
|
*/
|
||||||
|
public String[] retrieve(MessageKey key) {
|
||||||
|
if (!Settings.messagesLanguage.equalsIgnoreCase(language)) {
|
||||||
|
reloadManager();
|
||||||
|
}
|
||||||
|
return manager.retrieve(key.getKey());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the message from the text file.
|
||||||
|
*
|
||||||
|
* @param key The message key to retrieve
|
||||||
|
*
|
||||||
|
* @return The message from the file
|
||||||
|
*/
|
||||||
|
public String retrieveSingle(MessageKey key) {
|
||||||
|
return StringUtils.join("\n", retrieve(key));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reload the messages manager.
|
||||||
|
*/
|
||||||
|
public void reloadManager() {
|
||||||
|
manager = new MessagesManager(Settings.messageFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
62
src/main/java/fr/xephi/authme/output/MessagesManager.java
Normal file
62
src/main/java/fr/xephi/authme/output/MessagesManager.java
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
package fr.xephi.authme.output;
|
||||||
|
|
||||||
|
import fr.xephi.authme.ConsoleLogger;
|
||||||
|
import fr.xephi.authme.settings.CustomConfiguration;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class responsible for reading messages from a file and formatting them for Minecraft.
|
||||||
|
* <p />
|
||||||
|
* This class is used within {@link Messages}, which offers a high-level interface for accessing
|
||||||
|
* or sending messages from a properties file.
|
||||||
|
*/
|
||||||
|
class MessagesManager extends CustomConfiguration {
|
||||||
|
|
||||||
|
/** The section symbol, used in Minecraft for formatting codes. */
|
||||||
|
private static final String SECTION_SIGN = "\u00a7";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor for Messages.
|
||||||
|
*
|
||||||
|
* @param file the configuration file
|
||||||
|
*/
|
||||||
|
MessagesManager(File file) {
|
||||||
|
super(file);
|
||||||
|
load();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the message from the configuration file.
|
||||||
|
*
|
||||||
|
* @param key The key to retrieve
|
||||||
|
*
|
||||||
|
* @return The message
|
||||||
|
*/
|
||||||
|
String[] retrieve(String key) {
|
||||||
|
String message = (String) get(key);
|
||||||
|
if (message != null) {
|
||||||
|
return formatMessage(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Message is null: log key not being found and send error back as message
|
||||||
|
String retrievalError = "Error getting message with key '" + key + "'. ";
|
||||||
|
ConsoleLogger.showError(retrievalError + "Please verify your config file at '"
|
||||||
|
+ getConfigFile().getName() + "'");
|
||||||
|
return new String[]{
|
||||||
|
retrievalError + "Please contact the admin to verify or update the AuthMe messages file."};
|
||||||
|
}
|
||||||
|
|
||||||
|
static String[] formatMessage(String message) {
|
||||||
|
// TODO: Check that the codes actually exist, i.e. replace &c but not &y
|
||||||
|
// TODO: Allow '&' to be retained with the code '&&'
|
||||||
|
String[] lines = message.split("&n");
|
||||||
|
for (int i = 0; i < lines.length; ++i) {
|
||||||
|
// We don't initialize a StringBuilder here because mostly we will only have one entry
|
||||||
|
lines[i] = lines[i].replace("&", SECTION_SIGN);
|
||||||
|
}
|
||||||
|
return lines;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,55 +1,125 @@
|
|||||||
package fr.xephi.authme.permission;
|
package fr.xephi.authme.permission;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AuthMe admin permissions.
|
* AuthMe admin command permissions.
|
||||||
*/
|
*/
|
||||||
public enum AdminPermission implements PermissionNode {
|
public enum AdminPermission implements PermissionNode {
|
||||||
|
|
||||||
REGISTER("authme.admin.register"),
|
/**
|
||||||
|
* Administrator command to register a new user.
|
||||||
|
*/
|
||||||
|
REGISTER("authme.command.admin.register"),
|
||||||
|
|
||||||
UNREGISTER("authme.admin.unregister"),
|
/**
|
||||||
|
* Administrator command to unregister an existing user.
|
||||||
|
*/
|
||||||
|
UNREGISTER("authme.command.admin.unregister"),
|
||||||
|
|
||||||
FORCE_LOGIN("authme.admin.forcelogin"),
|
/**
|
||||||
|
* Administrator command to force-login an existing user.
|
||||||
|
*/
|
||||||
|
FORCE_LOGIN("authme.command.admin.forcelogin"),
|
||||||
|
|
||||||
CHANGE_PASSWORD("authme.admin.changepassword"),
|
/**
|
||||||
|
* Administrator command to change the password of a user.
|
||||||
|
*/
|
||||||
|
CHANGE_PASSWORD("authme.command.admin.changepassword"),
|
||||||
|
|
||||||
LAST_LOGIN("authme.admin.lastlogin"),
|
/**
|
||||||
|
* Administrator command to see the last login date and time of an user.
|
||||||
|
*/
|
||||||
|
LAST_LOGIN("authme.command.admin.lastlogin"),
|
||||||
|
|
||||||
ACCOUNTS("authme.admin.accounts"),
|
/**
|
||||||
|
* Administrator command to see all accounts associated with an user.
|
||||||
|
*/
|
||||||
|
ACCOUNTS("authme.command.admin.accounts"),
|
||||||
|
|
||||||
GET_EMAIL("authme.admin.getemail"),
|
/**
|
||||||
|
* Administrator command to get the email address of an user, if set.
|
||||||
|
*/
|
||||||
|
GET_EMAIL("authme.command.admin.getemail"),
|
||||||
|
|
||||||
CHANGE_EMAIL("authme.admin.chgemail"),
|
/**
|
||||||
|
* Administrator command to set or change the email adress of an user.
|
||||||
|
*/
|
||||||
|
CHANGE_EMAIL("authme.command.admin.changemail"),
|
||||||
|
|
||||||
GET_IP("authme.admin.getip"),
|
/**
|
||||||
|
* Administrator command to get the last known IP of an user.
|
||||||
|
*/
|
||||||
|
GET_IP("authme.command.admin.getip"),
|
||||||
|
|
||||||
SPAWN("authme.admin.spawn"),
|
/**
|
||||||
|
* Administrator command to teleport to the AuthMe spawn.
|
||||||
|
*/
|
||||||
|
SPAWN("authme.command.admin.spawn"),
|
||||||
|
|
||||||
SET_SPAWN("authme.admin.setspawn"),
|
/**
|
||||||
|
* Administrator command to set the AuthMe spawn.
|
||||||
|
*/
|
||||||
|
SET_SPAWN("authme.command.admin.setspawn"),
|
||||||
|
|
||||||
FIRST_SPAWN("authme.admin.firstspawn"),
|
/**
|
||||||
|
* Administrator command to teleport to the first AuthMe spawn.
|
||||||
|
*/
|
||||||
|
FIRST_SPAWN("authme.command.admin.firstspawn"),
|
||||||
|
|
||||||
SET_FIRST_SPAWN("authme.admin.setfirstspawn"),
|
/**
|
||||||
|
* Administrator command to set the first AuthMe spawn.
|
||||||
|
*/
|
||||||
|
SET_FIRST_SPAWN("authme.command.admin.setfirstspawn"),
|
||||||
|
|
||||||
PURGE("authme.admin.purge"),
|
/**
|
||||||
|
* Administrator command to purge old user data.
|
||||||
|
*/
|
||||||
|
PURGE("authme.command.admin.purge"),
|
||||||
|
|
||||||
PURGE_LAST_POSITION("authme.admin.purgelastpos"),
|
/**
|
||||||
|
* Administrator command to purge the last position of an user.
|
||||||
|
*/
|
||||||
|
PURGE_LAST_POSITION("authme.command.admin.purgelastpos"),
|
||||||
|
|
||||||
PURGE_BANNED_PLAYERS("authme.admin.purgebannedplayers"),
|
/**
|
||||||
|
* Administrator command to purge all data associated with banned players.
|
||||||
|
*/
|
||||||
|
PURGE_BANNED_PLAYERS("authme.command.admin.purgebannedplayers"),
|
||||||
|
|
||||||
SWITCH_ANTIBOT("authme.admin.switchantibot"),
|
/**
|
||||||
|
* Administrator command to toggle the AntiBot protection status.
|
||||||
|
*/
|
||||||
|
SWITCH_ANTIBOT("authme.command.admin.switchantibot"),
|
||||||
|
|
||||||
RELOAD("authme.admin.reload");
|
/**
|
||||||
|
* Administrator command to convert old or other data to AuthMe data.
|
||||||
|
*/
|
||||||
|
CONVERTER("authme.command.admin.converter"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Administrator command to reload the plugin configuration.
|
||||||
|
*/
|
||||||
|
RELOAD("authme.command.admin.reload");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Permission node.
|
||||||
|
*/
|
||||||
private String node;
|
private String node;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the permission node.
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getNode() {
|
public String getNode() {
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @param node Permission node.
|
||||||
|
*/
|
||||||
AdminPermission(String node) {
|
AdminPermission(String node) {
|
||||||
this.node = node;
|
this.node = node;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
106
src/main/java/fr/xephi/authme/permission/PlayerPermission.java
Normal file
106
src/main/java/fr/xephi/authme/permission/PlayerPermission.java
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
package fr.xephi.authme.permission;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AuthMe player permission nodes, for regular players.
|
||||||
|
*/
|
||||||
|
public enum PlayerPermission implements PermissionNode {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Permission node to bypass AntiBot protection.
|
||||||
|
*/
|
||||||
|
BYPASS_ANTIBOT("authme.player.bypassantibot"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Permission node to identify VIP users.
|
||||||
|
*/
|
||||||
|
IS_VIP("authme.player.vip"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Command permission to login.
|
||||||
|
*/
|
||||||
|
LOGIN("authme.command.player.login"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Command permission to logout.
|
||||||
|
*/
|
||||||
|
LOGOUT("authme.command.player.logout"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Command permission to register.
|
||||||
|
*/
|
||||||
|
REGISTER("authme.command.player.register"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Command permission to unregister.
|
||||||
|
*/
|
||||||
|
UNREGISTER("authme.command.player.unregister"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Command permission to change the password.
|
||||||
|
*/
|
||||||
|
CHANGE_PASSWORD("authme.command.player.changepassword"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Command permission to add an email address.
|
||||||
|
*/
|
||||||
|
ADD_EMAIL("authme.command.player.email.add"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Command permission to change the email address.
|
||||||
|
*/
|
||||||
|
CHANGE_EMAIL("authme.command.player.email.change"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Command permission to recover an account using it's email address.
|
||||||
|
*/
|
||||||
|
RECOVER_EMAIL("authme.command.player.email.recover"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Command permission to use captcha.
|
||||||
|
*/
|
||||||
|
CAPTCHA("authme.command.player.captcha"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Permission for users a login can be forced to.
|
||||||
|
*/
|
||||||
|
CAN_LOGIN_BE_FORCED("authme.player.canbeforced"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Permission for users to bypass force-survival mode.
|
||||||
|
*/
|
||||||
|
BYPASS_FORCE_SURVIVAL("authme.command.player.bypassforcesurvival"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Permission for users to allow two accounts.
|
||||||
|
*/
|
||||||
|
ALLOW_MULTIPLE_ACCOUNTS("authme.command.player.allow2accounts"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Permission for user to see other accounts.
|
||||||
|
*/
|
||||||
|
SEE_OTHER_ACCOUNTS("authme.command.player.seeotheraccounts");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Permission node.
|
||||||
|
*/
|
||||||
|
private String node;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the permission node.
|
||||||
|
*
|
||||||
|
* @return Permission node.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getNode() {
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @param node Permission node.
|
||||||
|
*/
|
||||||
|
PlayerPermission(String node) {
|
||||||
|
this.node = node;
|
||||||
|
}
|
||||||
|
}
|
@ -1,52 +0,0 @@
|
|||||||
package fr.xephi.authme.permission;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* AuthMe user permission nodes.
|
|
||||||
*/
|
|
||||||
public enum UserPermission implements PermissionNode {
|
|
||||||
|
|
||||||
BYPASS_ANTIBOT("authme.bypassantibot"),
|
|
||||||
|
|
||||||
IS_VIP("authme.vip"),
|
|
||||||
|
|
||||||
LOGIN("authme.login"),
|
|
||||||
|
|
||||||
LOGOUT("authme.logout"),
|
|
||||||
|
|
||||||
REGISTER("authme.register"),
|
|
||||||
|
|
||||||
UNREGISTER("authme.unregister"),
|
|
||||||
|
|
||||||
CHANGE_PASSWORD("authme.changepassword"),
|
|
||||||
|
|
||||||
ADD_EMAIL("authme.email.add"),
|
|
||||||
|
|
||||||
CHANGE_EMAIL("authme.email.change"),
|
|
||||||
|
|
||||||
RECOVER_EMAIL("authme.email.recover"),
|
|
||||||
|
|
||||||
CAPTCHA("authme.captcha"),
|
|
||||||
|
|
||||||
CONVERTER("authme.converter"),
|
|
||||||
|
|
||||||
CAN_LOGIN_BE_FORCED("authme.canbeforced"),
|
|
||||||
|
|
||||||
BYPASS_FORCE_SURVIVAL("authme.bypassforcesurvival"),
|
|
||||||
|
|
||||||
ALLOW_MULTIPLE_ACCOUNTS("authme.allow2accounts"),
|
|
||||||
|
|
||||||
SEE_OTHER_ACCOUNTS("authme.seeOtherAccounts");
|
|
||||||
|
|
||||||
private String node;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getNode() {
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
|
|
||||||
UserPermission(String node) {
|
|
||||||
this.node = node;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -4,9 +4,9 @@ import fr.xephi.authme.AuthMe;
|
|||||||
import fr.xephi.authme.ConsoleLogger;
|
import fr.xephi.authme.ConsoleLogger;
|
||||||
import fr.xephi.authme.cache.auth.PlayerAuth;
|
import fr.xephi.authme.cache.auth.PlayerAuth;
|
||||||
import fr.xephi.authme.cache.auth.PlayerCache;
|
import fr.xephi.authme.cache.auth.PlayerCache;
|
||||||
import fr.xephi.authme.permission.UserPermission;
|
import fr.xephi.authme.permission.PlayerPermission;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ public class AsyncChangeEmail {
|
|||||||
String playerName = player.getName().toLowerCase();
|
String playerName = player.getName().toLowerCase();
|
||||||
|
|
||||||
if (Settings.getmaxRegPerEmail > 0) {
|
if (Settings.getmaxRegPerEmail > 0) {
|
||||||
if (!plugin.getPermissionsManager().hasPermission(player, UserPermission.ALLOW_MULTIPLE_ACCOUNTS)
|
if (!plugin.getPermissionsManager().hasPermission(player, PlayerPermission.ALLOW_MULTIPLE_ACCOUNTS)
|
||||||
&& plugin.database.getAllAuthsByEmail(newEmail).size() >= Settings.getmaxRegPerEmail) {
|
&& plugin.database.getAllAuthsByEmail(newEmail).size() >= Settings.getmaxRegPerEmail) {
|
||||||
m.send(player, MessageKey.MAX_REGISTER_EXCEEDED);
|
m.send(player, MessageKey.MAX_REGISTER_EXCEEDED);
|
||||||
return;
|
return;
|
||||||
|
@ -10,9 +10,9 @@ import fr.xephi.authme.events.FirstSpawnTeleportEvent;
|
|||||||
import fr.xephi.authme.events.ProtectInventoryEvent;
|
import fr.xephi.authme.events.ProtectInventoryEvent;
|
||||||
import fr.xephi.authme.events.SpawnTeleportEvent;
|
import fr.xephi.authme.events.SpawnTeleportEvent;
|
||||||
import fr.xephi.authme.listener.AuthMePlayerListener;
|
import fr.xephi.authme.listener.AuthMePlayerListener;
|
||||||
import fr.xephi.authme.permission.UserPermission;
|
import fr.xephi.authme.permission.PlayerPermission;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.settings.Spawn;
|
import fr.xephi.authme.settings.Spawn;
|
||||||
import fr.xephi.authme.task.MessageTask;
|
import fr.xephi.authme.task.MessageTask;
|
||||||
@ -78,7 +78,7 @@ public class AsynchronousJoin {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Settings.getMaxJoinPerIp > 0
|
if (Settings.getMaxJoinPerIp > 0
|
||||||
&& !plugin.getPermissionsManager().hasPermission(player, UserPermission.ALLOW_MULTIPLE_ACCOUNTS)
|
&& !plugin.getPermissionsManager().hasPermission(player, PlayerPermission.ALLOW_MULTIPLE_ACCOUNTS)
|
||||||
&& !ip.equalsIgnoreCase("127.0.0.1")
|
&& !ip.equalsIgnoreCase("127.0.0.1")
|
||||||
&& !ip.equalsIgnoreCase("localhost")) {
|
&& !ip.equalsIgnoreCase("localhost")) {
|
||||||
if (plugin.hasJoinedIp(player.getName(), ip)) {
|
if (plugin.hasJoinedIp(player.getName(), ip)) {
|
||||||
@ -236,9 +236,12 @@ public class AsynchronousJoin {
|
|||||||
? m.retrieve(MessageKey.REGISTER_EMAIL_MESSAGE)
|
? m.retrieve(MessageKey.REGISTER_EMAIL_MESSAGE)
|
||||||
: m.retrieve(MessageKey.REGISTER_MESSAGE);
|
: m.retrieve(MessageKey.REGISTER_MESSAGE);
|
||||||
}
|
}
|
||||||
|
if (LimboCache.getInstance().getLimboPlayer(name) != null)
|
||||||
|
{
|
||||||
BukkitTask msgTask = sched.runTaskAsynchronously(plugin, new MessageTask(plugin, name, msg, msgInterval));
|
BukkitTask msgTask = sched.runTaskAsynchronously(plugin, new MessageTask(plugin, name, msg, msgInterval));
|
||||||
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgTask);
|
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgTask);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private boolean needFirstSpawn() {
|
private boolean needFirstSpawn() {
|
||||||
if (player.hasPlayedBefore())
|
if (player.hasPlayedBefore())
|
||||||
|
@ -8,11 +8,11 @@ import fr.xephi.authme.cache.limbo.LimboCache;
|
|||||||
import fr.xephi.authme.datasource.DataSource;
|
import fr.xephi.authme.datasource.DataSource;
|
||||||
import fr.xephi.authme.events.AuthMeAsyncPreLoginEvent;
|
import fr.xephi.authme.events.AuthMeAsyncPreLoginEvent;
|
||||||
import fr.xephi.authme.listener.AuthMePlayerListener;
|
import fr.xephi.authme.listener.AuthMePlayerListener;
|
||||||
import fr.xephi.authme.permission.UserPermission;
|
import fr.xephi.authme.permission.PlayerPermission;
|
||||||
import fr.xephi.authme.security.PasswordSecurity;
|
import fr.xephi.authme.security.PasswordSecurity;
|
||||||
import fr.xephi.authme.security.RandomString;
|
import fr.xephi.authme.security.RandomString;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.task.MessageTask;
|
import fr.xephi.authme.task.MessageTask;
|
||||||
import fr.xephi.authme.util.Utils;
|
import fr.xephi.authme.util.Utils;
|
||||||
@ -120,7 +120,7 @@ public class AsynchronousLogin {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (Settings.getMaxLoginPerIp > 0 && !plugin.getPermissionsManager().hasPermission(player, UserPermission.ALLOW_MULTIPLE_ACCOUNTS) && !getIP().equalsIgnoreCase("127.0.0.1") && !getIP().equalsIgnoreCase("localhost")) {
|
if (Settings.getMaxLoginPerIp > 0 && !plugin.getPermissionsManager().hasPermission(player, PlayerPermission.ALLOW_MULTIPLE_ACCOUNTS) && !getIP().equalsIgnoreCase("127.0.0.1") && !getIP().equalsIgnoreCase("localhost")) {
|
||||||
if (plugin.isLoggedIp(name, getIP())) {
|
if (plugin.isLoggedIp(name, getIP())) {
|
||||||
m.send(player, MessageKey.ALREADY_LOGGED_IN_ERROR);
|
m.send(player, MessageKey.ALREADY_LOGGED_IN_ERROR);
|
||||||
return null;
|
return null;
|
||||||
@ -268,7 +268,7 @@ public class AsynchronousLogin {
|
|||||||
* uuidaccounts + "."; } }
|
* uuidaccounts + "."; } }
|
||||||
*/
|
*/
|
||||||
for (Player player : Utils.getOnlinePlayers()) {
|
for (Player player : Utils.getOnlinePlayers()) {
|
||||||
if (plugin.getPermissionsManager().hasPermission(player, UserPermission.SEE_OTHER_ACCOUNTS)) {
|
if (plugin.getPermissionsManager().hasPermission(player, PlayerPermission.SEE_OTHER_ACCOUNTS)) {
|
||||||
player.sendMessage("[AuthMe] The player " + auth.getNickname() + " has " + auths.size() + " accounts");
|
player.sendMessage("[AuthMe] The player " + auth.getNickname() + " has " + auths.size() + " accounts");
|
||||||
player.sendMessage(message.toString());
|
player.sendMessage(message.toString());
|
||||||
// player.sendMessage(uuidaccounts.replace("%size%",
|
// player.sendMessage(uuidaccounts.replace("%size%",
|
||||||
|
@ -5,8 +5,8 @@ import fr.xephi.authme.cache.auth.PlayerAuth;
|
|||||||
import fr.xephi.authme.cache.auth.PlayerCache;
|
import fr.xephi.authme.cache.auth.PlayerCache;
|
||||||
import fr.xephi.authme.cache.limbo.LimboCache;
|
import fr.xephi.authme.cache.limbo.LimboCache;
|
||||||
import fr.xephi.authme.datasource.DataSource;
|
import fr.xephi.authme.datasource.DataSource;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.util.Utils;
|
import fr.xephi.authme.util.Utils;
|
||||||
import fr.xephi.authme.util.Utils.GroupType;
|
import fr.xephi.authme.util.Utils.GroupType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -4,8 +4,8 @@ import fr.xephi.authme.AuthMe;
|
|||||||
import fr.xephi.authme.ConsoleLogger;
|
import fr.xephi.authme.ConsoleLogger;
|
||||||
import fr.xephi.authme.cache.limbo.LimboCache;
|
import fr.xephi.authme.cache.limbo.LimboCache;
|
||||||
import fr.xephi.authme.events.LogoutEvent;
|
import fr.xephi.authme.events.LogoutEvent;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.task.MessageTask;
|
import fr.xephi.authme.task.MessageTask;
|
||||||
import fr.xephi.authme.task.TimeoutTask;
|
import fr.xephi.authme.task.TimeoutTask;
|
||||||
|
@ -5,10 +5,10 @@ import fr.xephi.authme.ConsoleLogger;
|
|||||||
import fr.xephi.authme.cache.auth.PlayerAuth;
|
import fr.xephi.authme.cache.auth.PlayerAuth;
|
||||||
import fr.xephi.authme.cache.auth.PlayerCache;
|
import fr.xephi.authme.cache.auth.PlayerCache;
|
||||||
import fr.xephi.authme.datasource.DataSource;
|
import fr.xephi.authme.datasource.DataSource;
|
||||||
import fr.xephi.authme.permission.UserPermission;
|
import fr.xephi.authme.permission.PlayerPermission;
|
||||||
import fr.xephi.authme.security.PasswordSecurity;
|
import fr.xephi.authme.security.PasswordSecurity;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@ -4,8 +4,8 @@ import fr.xephi.authme.AuthMe;
|
|||||||
import fr.xephi.authme.ConsoleLogger;
|
import fr.xephi.authme.ConsoleLogger;
|
||||||
import fr.xephi.authme.cache.limbo.LimboCache;
|
import fr.xephi.authme.cache.limbo.LimboCache;
|
||||||
import fr.xephi.authme.cache.limbo.LimboPlayer;
|
import fr.xephi.authme.cache.limbo.LimboPlayer;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.task.MessageTask;
|
import fr.xephi.authme.task.MessageTask;
|
||||||
import fr.xephi.authme.task.TimeoutTask;
|
import fr.xephi.authme.task.TimeoutTask;
|
||||||
|
@ -6,8 +6,8 @@ import fr.xephi.authme.cache.limbo.LimboCache;
|
|||||||
import fr.xephi.authme.cache.limbo.LimboPlayer;
|
import fr.xephi.authme.cache.limbo.LimboPlayer;
|
||||||
import fr.xephi.authme.events.LoginEvent;
|
import fr.xephi.authme.events.LoginEvent;
|
||||||
import fr.xephi.authme.events.RestoreInventoryEvent;
|
import fr.xephi.authme.events.RestoreInventoryEvent;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.task.MessageTask;
|
import fr.xephi.authme.task.MessageTask;
|
||||||
import fr.xephi.authme.task.TimeoutTask;
|
import fr.xephi.authme.task.TimeoutTask;
|
||||||
|
@ -7,8 +7,8 @@ import fr.xephi.authme.cache.backup.JsonCache;
|
|||||||
import fr.xephi.authme.cache.limbo.LimboCache;
|
import fr.xephi.authme.cache.limbo.LimboCache;
|
||||||
import fr.xephi.authme.cache.limbo.LimboPlayer;
|
import fr.xephi.authme.cache.limbo.LimboPlayer;
|
||||||
import fr.xephi.authme.security.PasswordSecurity;
|
import fr.xephi.authme.security.PasswordSecurity;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.task.MessageTask;
|
import fr.xephi.authme.task.MessageTask;
|
||||||
import fr.xephi.authme.task.TimeoutTask;
|
import fr.xephi.authme.task.TimeoutTask;
|
||||||
|
@ -1,115 +0,0 @@
|
|||||||
package fr.xephi.authme.settings;
|
|
||||||
|
|
||||||
import fr.xephi.authme.ConsoleLogger;
|
|
||||||
import fr.xephi.authme.util.StringUtils;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class for retrieving and sending translatable messages to players.
|
|
||||||
*/
|
|
||||||
// TODO ljacqu 20151124: This class is a weird mix between singleton and POJO
|
|
||||||
// TODO: change it into POJO
|
|
||||||
public class Messages extends CustomConfiguration {
|
|
||||||
|
|
||||||
/** The section symbol, used in Minecraft for formatting codes. */
|
|
||||||
private static final String SECTION_SIGN = "\u00a7";
|
|
||||||
private static Messages singleton;
|
|
||||||
private String language;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor for Messages.
|
|
||||||
*
|
|
||||||
* @param file the configuration file
|
|
||||||
* @param lang the code of the language to use
|
|
||||||
*/
|
|
||||||
public Messages(File file, String lang) {
|
|
||||||
super(file);
|
|
||||||
load();
|
|
||||||
this.language = lang;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Messages getInstance() {
|
|
||||||
if (singleton == null) {
|
|
||||||
singleton = new Messages(Settings.messageFile, Settings.messagesLanguage);
|
|
||||||
}
|
|
||||||
return singleton;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Send the given message code to the player.
|
|
||||||
*
|
|
||||||
* @param sender The entity to send the message to
|
|
||||||
* @param key The key of the message to send
|
|
||||||
*/
|
|
||||||
public void send(CommandSender sender, MessageKey key) {
|
|
||||||
String[] lines = retrieve(key);
|
|
||||||
for (String line : lines) {
|
|
||||||
sender.sendMessage(line);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve the message from the text file and return it split by new line as an array.
|
|
||||||
*
|
|
||||||
* @param key The message key to retrieve
|
|
||||||
*
|
|
||||||
* @return The message split by new lines
|
|
||||||
*/
|
|
||||||
public String[] retrieve(MessageKey key) {
|
|
||||||
return retrieve(key.getKey());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve the message from the text file.
|
|
||||||
*
|
|
||||||
* @param key The message key to retrieve
|
|
||||||
*
|
|
||||||
* @return The message from the file
|
|
||||||
*/
|
|
||||||
public String retrieveSingle(MessageKey key) {
|
|
||||||
return StringUtils.join("\n", retrieve(key.getKey()));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve the message from the configuration file.
|
|
||||||
*
|
|
||||||
* @param key The key to retrieve
|
|
||||||
*
|
|
||||||
* @return The message
|
|
||||||
*/
|
|
||||||
private String[] retrieve(String key) {
|
|
||||||
if (!Settings.messagesLanguage.equalsIgnoreCase(language)) {
|
|
||||||
reloadMessages();
|
|
||||||
}
|
|
||||||
String message = (String) get(key);
|
|
||||||
if (message != null) {
|
|
||||||
return formatMessage(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Message is null: log key not being found and send error back as message
|
|
||||||
String retrievalError = "Error getting message with key '" + key + "'. ";
|
|
||||||
ConsoleLogger.showError(retrievalError + "Please verify your config file at '"
|
|
||||||
+ getConfigFile().getName() + "'");
|
|
||||||
return new String[]{
|
|
||||||
retrievalError + "Please contact the admin to verify or update the AuthMe messages file."};
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String[] formatMessage(String message) {
|
|
||||||
// TODO: Check that the codes actually exist, i.e. replace &c but not &y
|
|
||||||
// TODO: Allow '&' to be retained with the code '&&'
|
|
||||||
String[] lines = message.split("&n");
|
|
||||||
for (int i = 0; i < lines.length; ++i) {
|
|
||||||
// We don't initialize a StringBuilder here because mostly we will only have one entry
|
|
||||||
lines[i] = lines[i].replace("&", SECTION_SIGN);
|
|
||||||
}
|
|
||||||
return lines;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void reloadMessages() {
|
|
||||||
singleton = new Messages(Settings.messageFile, Settings.messagesLanguage);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -8,7 +8,11 @@ import fr.xephi.authme.security.HashAlgorithm;
|
|||||||
import fr.xephi.authme.util.Wrapper;
|
import fr.xephi.authme.util.Wrapper;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
|
import com.google.common.base.Charsets;
|
||||||
|
import com.google.common.io.Files;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
@ -17,12 +21,13 @@ import java.util.regex.Pattern;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
public final class Settings extends YamlConfiguration {
|
public final class Settings {
|
||||||
|
|
||||||
public static final File PLUGIN_FOLDER = Wrapper.getInstance().getDataFolder();
|
public static final File PLUGIN_FOLDER = Wrapper.getInstance().getDataFolder();
|
||||||
public static final File MODULE_FOLDER = new File(PLUGIN_FOLDER, "modules");
|
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 CACHE_FOLDER = new File(PLUGIN_FOLDER, "cache");
|
||||||
public static final File AUTH_FILE = new File(PLUGIN_FOLDER, "auths.db");
|
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 SETTINGS_FILE = new File(PLUGIN_FOLDER, "config.yml");
|
||||||
public static final File LOG_FILE = new File(PLUGIN_FOLDER, "authme.log");
|
public static final File LOG_FILE = new File(PLUGIN_FOLDER, "authme.log");
|
||||||
// This is not an option!
|
// This is not an option!
|
||||||
@ -68,7 +73,7 @@ public final class Settings extends YamlConfiguration {
|
|||||||
enableProtection, enableAntiBot, recallEmail, useWelcomeMessage,
|
enableProtection, enableAntiBot, recallEmail, useWelcomeMessage,
|
||||||
broadcastWelcomeMessage, forceRegKick, forceRegLogin,
|
broadcastWelcomeMessage, forceRegKick, forceRegLogin,
|
||||||
checkVeryGames, delayJoinLeaveMessages, noTeleport, applyBlindEffect,
|
checkVeryGames, delayJoinLeaveMessages, noTeleport, applyBlindEffect,
|
||||||
customAttributes, generateImage, isRemoveSpeedEnabled, isMySQLWebsite;
|
customAttributes, generateImage, isRemoveSpeedEnabled;
|
||||||
public static String helpHeader, getNickRegex, getUnloggedinGroup, getMySQLHost,
|
public static String helpHeader, getNickRegex, getUnloggedinGroup, getMySQLHost,
|
||||||
getMySQLPort, getMySQLUsername, getMySQLPassword, getMySQLDatabase,
|
getMySQLPort, getMySQLUsername, getMySQLPassword, getMySQLDatabase,
|
||||||
getMySQLTablename, getMySQLColumnName, getMySQLColumnPassword,
|
getMySQLTablename, getMySQLColumnName, getMySQLColumnPassword,
|
||||||
@ -116,7 +121,7 @@ public final class Settings extends YamlConfiguration {
|
|||||||
if (!exist) {
|
if (!exist) {
|
||||||
plugin.saveDefaultConfig();
|
plugin.saveDefaultConfig();
|
||||||
}
|
}
|
||||||
instance.load(SETTINGS_FILE);
|
configFile.load(SETTINGS_FILE);
|
||||||
if (exist) {
|
if (exist) {
|
||||||
instance.mergeConfig();
|
instance.mergeConfig();
|
||||||
}
|
}
|
||||||
@ -231,7 +236,7 @@ public final class Settings extends YamlConfiguration {
|
|||||||
maxLoginTry = configFile.getInt("Security.captcha.maxLoginTry", 5);
|
maxLoginTry = configFile.getInt("Security.captcha.maxLoginTry", 5);
|
||||||
captchaLength = configFile.getInt("Security.captcha.captchaLength", 5);
|
captchaLength = configFile.getInt("Security.captcha.captchaLength", 5);
|
||||||
getMailSubject = configFile.getString("Email.mailSubject", "Your new AuthMe Password");
|
getMailSubject = configFile.getString("Email.mailSubject", "Your new AuthMe Password");
|
||||||
getMailText = configFile.getString("Email.mailText", "Dear <playername>, <br /><br /> This is your new AuthMe password for the server <br /><br /> <servername> : <br /><br /> <generatedpass><br /><br />Do not forget to change password after login! <br /> /changepassword <generatedpass> newPassword");
|
getMailText = loadEmailText();
|
||||||
emailRegistration = configFile.getBoolean("settings.registration.enableEmailRegistrationSystem", false);
|
emailRegistration = configFile.getBoolean("settings.registration.enableEmailRegistrationSystem", false);
|
||||||
saltLength = configFile.getInt("settings.security.doubleMD5SaltLength", 8);
|
saltLength = configFile.getInt("settings.security.doubleMD5SaltLength", 8);
|
||||||
getmaxRegPerEmail = configFile.getInt("Email.maxRegPerEmail", 1);
|
getmaxRegPerEmail = configFile.getInt("Email.maxRegPerEmail", 1);
|
||||||
@ -289,19 +294,45 @@ public final class Settings extends YamlConfiguration {
|
|||||||
forceRegisterCommandsAsConsole = configFile.getStringList("settings.forceRegisterCommandsAsConsole");
|
forceRegisterCommandsAsConsole = configFile.getStringList("settings.forceRegisterCommandsAsConsole");
|
||||||
customAttributes = configFile.getBoolean("Hooks.customAttributes");
|
customAttributes = configFile.getBoolean("Hooks.customAttributes");
|
||||||
generateImage = configFile.getBoolean("Email.generateImage", false);
|
generateImage = configFile.getBoolean("Email.generateImage", false);
|
||||||
isMySQLWebsite = configFile.getBoolean("DataSource.mySQLWebsite", false);
|
|
||||||
|
|
||||||
// Load the welcome message
|
// Load the welcome message
|
||||||
getWelcomeMessage();
|
getWelcomeMessage();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private static String loadEmailText() {
|
||||||
* Method setValue.
|
if (!EMAIL_FILE.exists())
|
||||||
*
|
saveDefaultEmailText();
|
||||||
* @param key String
|
StringBuilder str = new StringBuilder();
|
||||||
* @param value Object
|
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) {
|
public static void setValue(String key, Object value) {
|
||||||
instance.set(key, value);
|
instance.set(key, value);
|
||||||
save();
|
save();
|
||||||
@ -373,9 +404,9 @@ public final class Settings extends YamlConfiguration {
|
|||||||
*/
|
*/
|
||||||
public static boolean save() {
|
public static boolean save() {
|
||||||
try {
|
try {
|
||||||
instance.save(SETTINGS_FILE);
|
configFile.save(SETTINGS_FILE);
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception ex) {
|
} catch (IOException ex) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -593,7 +624,7 @@ public final class Settings extends YamlConfiguration {
|
|||||||
set("VeryGames.enableIpCheck", false);
|
set("VeryGames.enableIpCheck", false);
|
||||||
changes = true;
|
changes = true;
|
||||||
}
|
}
|
||||||
if (getString("settings.restrictions.allowedNicknameCharacters").equals("[a-zA-Z0-9_?]*")) {
|
if (configFile.getString("settings.restrictions.allowedNicknameCharacters").equals("[a-zA-Z0-9_?]*")) {
|
||||||
set("settings.restrictions.allowedNicknameCharacters", "[a-zA-Z0-9_]*");
|
set("settings.restrictions.allowedNicknameCharacters", "[a-zA-Z0-9_]*");
|
||||||
changes = true;
|
changes = true;
|
||||||
}
|
}
|
||||||
@ -681,9 +712,11 @@ public final class Settings extends YamlConfiguration {
|
|||||||
set("DataSource.mySQLRealName", "realname");
|
set("DataSource.mySQLRealName", "realname");
|
||||||
changes = true;
|
changes = true;
|
||||||
}
|
}
|
||||||
if (!contains("DataSource.mySQLWebsite")) {
|
|
||||||
set("DataSource.mySQLWebsite", false);
|
if (contains("Email.mailText"))
|
||||||
changes = true;
|
{
|
||||||
|
set("Email.mailText", null);
|
||||||
|
ConsoleLogger.showError("Remove Email.mailText from config, we now use the email.html file");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (changes) {
|
if (changes) {
|
||||||
@ -692,6 +725,15 @@ public final class Settings extends YamlConfiguration {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean contains(String path) {
|
||||||
|
return configFile.contains(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
// public because it's used in AuthMe at one place
|
||||||
|
public void set(String path, Object value) {
|
||||||
|
configFile.set(path, value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Saves current configuration (plus defaults) to disk.
|
* Saves current configuration (plus defaults) to disk.
|
||||||
* <p>
|
* <p>
|
||||||
@ -700,11 +742,13 @@ public final class Settings extends YamlConfiguration {
|
|||||||
* @return True if saved successfully
|
* @return True if saved successfully
|
||||||
*/
|
*/
|
||||||
public final boolean saveDefaults() {
|
public final boolean saveDefaults() {
|
||||||
options().copyDefaults(true);
|
configFile.options()
|
||||||
options().copyHeader(true);
|
.copyDefaults(true)
|
||||||
|
.copyHeader(true);
|
||||||
boolean success = save();
|
boolean success = save();
|
||||||
options().copyDefaults(false);
|
configFile.options()
|
||||||
options().copyHeader(false);
|
.copyDefaults(false)
|
||||||
|
.copyHeader(false);
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,8 +5,8 @@ import fr.xephi.authme.ConsoleLogger;
|
|||||||
import fr.xephi.authme.cache.auth.PlayerAuth;
|
import fr.xephi.authme.cache.auth.PlayerAuth;
|
||||||
import fr.xephi.authme.cache.auth.PlayerCache;
|
import fr.xephi.authme.cache.auth.PlayerCache;
|
||||||
import fr.xephi.authme.security.PasswordSecurity;
|
import fr.xephi.authme.security.PasswordSecurity;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@ -2,8 +2,8 @@ package fr.xephi.authme.task;
|
|||||||
|
|
||||||
import fr.xephi.authme.AuthMe;
|
import fr.xephi.authme.AuthMe;
|
||||||
import fr.xephi.authme.cache.auth.PlayerCache;
|
import fr.xephi.authme.cache.auth.PlayerCache;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ import fr.xephi.authme.cache.limbo.LimboCache;
|
|||||||
import fr.xephi.authme.cache.limbo.LimboPlayer;
|
import fr.xephi.authme.cache.limbo.LimboPlayer;
|
||||||
import fr.xephi.authme.events.AuthMeTeleportEvent;
|
import fr.xephi.authme.events.AuthMeTeleportEvent;
|
||||||
import fr.xephi.authme.permission.PermissionsManager;
|
import fr.xephi.authme.permission.PermissionsManager;
|
||||||
import fr.xephi.authme.permission.UserPermission;
|
import fr.xephi.authme.permission.PlayerPermission;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
@ -202,7 +202,7 @@ public final class Utils {
|
|||||||
* @param player the player to modify.
|
* @param player the player to modify.
|
||||||
*/
|
*/
|
||||||
public static void forceGM(Player player) {
|
public static void forceGM(Player player) {
|
||||||
if (!plugin.getPermissionsManager().hasPermission(player, UserPermission.BYPASS_FORCE_SURVIVAL)) {
|
if (!plugin.getPermissionsManager().hasPermission(player, PlayerPermission.BYPASS_FORCE_SURVIVAL)) {
|
||||||
player.setGameMode(GameMode.SURVIVAL);
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package fr.xephi.authme.util;
|
|||||||
|
|
||||||
import fr.xephi.authme.AuthMe;
|
import fr.xephi.authme.AuthMe;
|
||||||
import fr.xephi.authme.cache.auth.PlayerCache;
|
import fr.xephi.authme.cache.auth.PlayerCache;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.scheduler.BukkitScheduler;
|
import org.bukkit.scheduler.BukkitScheduler;
|
||||||
|
@ -388,12 +388,14 @@ Protection:
|
|||||||
# Enable some servers protection ( country based login, antibot )
|
# Enable some servers protection ( country based login, antibot )
|
||||||
enableProtection: false
|
enableProtection: false
|
||||||
# Countries allowed to join the server and register, see http://dev.bukkit.org/bukkit-plugins/authme-reloaded/pages/countries-codes/ for countries' codes
|
# Countries allowed to join the server and register, see http://dev.bukkit.org/bukkit-plugins/authme-reloaded/pages/countries-codes/ for countries' codes
|
||||||
|
# PLEASE USE QUOTES!
|
||||||
countries:
|
countries:
|
||||||
- US
|
- 'US'
|
||||||
- GB
|
- 'GB'
|
||||||
# Countries blacklisted automatically ( without any needed to enable protection )
|
# Countries blacklisted automatically ( without any needed to enable protection )
|
||||||
|
# PLEASE USE QUOTES!
|
||||||
countriesBlacklist:
|
countriesBlacklist:
|
||||||
- A1
|
- 'A1'
|
||||||
# Do we need to enable automatic antibot system?
|
# Do we need to enable automatic antibot system?
|
||||||
enableAntiBot: false
|
enableAntiBot: false
|
||||||
# Max number of player allowed to login in 5 secs before enable AntiBot system automatically
|
# Max number of player allowed to login in 5 secs before enable AntiBot system automatically
|
||||||
|
16
src/main/resources/email.html
Normal file
16
src/main/resources/email.html
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<h1>
|
||||||
|
Dear %playername%,
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
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%!
|
||||||
|
</p>
|
@ -1,3 +1,4 @@
|
|||||||
|
kick_antibot: 'AntiBot protection mode is enabled! You have to wait some minutes before joining the server.'
|
||||||
unknown_user: '&cCan''t find the requested user in the database!'
|
unknown_user: '&cCan''t find the requested user in the database!'
|
||||||
unsafe_spawn: '&cYour quit location was unsafe, you have been teleported to the world''s spawnpoint.'
|
unsafe_spawn: '&cYour quit location was unsafe, you have been teleported to the world''s spawnpoint.'
|
||||||
not_logged_in: '&cYou''re not logged in!'
|
not_logged_in: '&cYou''re not logged in!'
|
||||||
|
@ -1,50 +1,50 @@
|
|||||||
unknown_user: '&fПользователь не найден в Базе Данных'
|
unknown_user: '&fПользователь не найден в Базе Данных'
|
||||||
unsafe_spawn: '&eВаше расположение перед выходом было опасным - вы перенесены на спавн'
|
unsafe_spawn: '&eВаше расположение перед выходом было опасным - вы перенесены на спавн'
|
||||||
not_logged_in: '&cВы еще не вошли!'
|
not_logged_in: '&c&lВы еще не вошли!'
|
||||||
reg_voluntarily: '&aЧтобы зарегистрироваться введите: &5/reg ПАРОЛЬ ПОВТОР_ПАРОЛЯ'
|
reg_voluntarily: '&aЧтобы зарегистрироваться введите: &e&l/reg ПАРОЛЬ ПОВТОР_ПАРОЛЯ'
|
||||||
usage_log: '&eСинтаксис: &d/l ПАРОЛЬ &eили &d/login ПАРОЛЬ'
|
usage_log: '&eСинтаксис: &d/l ПАРОЛЬ &eили &d/login ПАРОЛЬ'
|
||||||
wrong_pwd: '&4Неправильный пароль!'
|
wrong_pwd: '&c&lНеправильный пароль!'
|
||||||
unregistered: '&6Вы успешно удалили свой аккаунт!'
|
unregistered: '&6Вы успешно удалили свой аккаунт!'
|
||||||
reg_disabled: '&4Регистрация отключена'
|
reg_disabled: '&c&lРегистрация отключена'
|
||||||
valid_session: '&aСессия открыта'
|
valid_session: '&aСессия открыта'
|
||||||
login: '&2Вы успешно вошли!'
|
login: '&a&lВы успешно вошли!'
|
||||||
vb_nonActiv: '&6Ваш аккаунт еще не активирован! Проверьте вашу почту!'
|
vb_nonActiv: '&6Ваш аккаунт еще не активирован! Проверьте вашу почту!'
|
||||||
user_regged: '&4Такой игрок уже зарегистрирован'
|
user_regged: '&c&lТакой игрок уже зарегистрирован'
|
||||||
usage_reg: '&4Использование: &5/reg ПАРОЛЬ ПОВТОР_ПАРОЛЯ'
|
usage_reg: '&c&lИспользование: &e&l/reg ПАРОЛЬ ПОВТОР_ПАРОЛЯ'
|
||||||
max_reg: '&4Вы превысили макс количество регистраций на ваш IP'
|
max_reg: '&c&lВы превысили макс количество регистраций на ваш IP'
|
||||||
no_perm: '&4Недостаточно прав'
|
no_perm: '&c&lНедостаточно прав'
|
||||||
error: '&4Произошла ошибка. Свяжитесь с администратором'
|
error: '&c&lПроизошла ошибка. Свяжитесь с администратором'
|
||||||
login_msg: '&4Авторизация: &5/l ПАРОЛЬ'
|
login_msg: '&a&lАвторизация: &e&l/l ПАРОЛЬ'
|
||||||
reg_msg: '&4Регистрация: &5/reg ПАРОЛЬ ПОВТОР_ПАРОЛЯ'
|
reg_msg: '&a&lРегистрация: &e&l/reg ПАРОЛЬ ПОВТОР_ПАРОЛЯ'
|
||||||
password_error_nick: '&fВы не можете использовать ваш ник в роли пароля'
|
password_error_nick: '&c&lВы не можете использовать ваш ник в роли пароля'
|
||||||
password_error_unsafe: '&fВы не можете использовать небезопасный пароль'
|
password_error_unsafe: '&c&lВы не можете использовать небезопасный пароль'
|
||||||
reg_email_msg: '&4Регистрация: &5/reg EMAIL ПОВТОР_EMAIL'
|
reg_email_msg: '&c&lРегистрация: &e&l/reg EMAIL ПОВТОР_EMAIL'
|
||||||
usage_unreg: '&4Использование: &5/unregister ПАРОЛЬ'
|
usage_unreg: '&c&lИспользование: &e&l/unregister ПАРОЛЬ'
|
||||||
pwd_changed: '&2Пароль изменен!'
|
pwd_changed: '&2Пароль изменен!'
|
||||||
user_unknown: '&4Такой игрок не зарегистрирован'
|
user_unknown: '&c&lТакой игрок не зарегистрирован'
|
||||||
password_error: '&4Пароль не совпадает'
|
password_error: '&c&lПароль не совпадает'
|
||||||
invalid_session: '&4Сессия некорректна. Дождитесь, пока она закончится'
|
invalid_session: '&c&lСессия некорректна. Дождитесь, пока она закончится'
|
||||||
reg_only: '&4Только для зарегистрированных! Посетите http://сайт_сервера.com/register/ для регистрации'
|
reg_only: '&c&lТолько для зарегистрированных! Посетите http://сайт_сервера.com/register/ для регистрации'
|
||||||
logged_in: '&4Вы уже авторизированы!'
|
logged_in: '&c&lВы уже авторизированы!'
|
||||||
logout: '&2Вы успешно вышли'
|
logout: '&2Вы успешно вышли'
|
||||||
same_nick: '&4Такой игрок уже играет на сервере'
|
same_nick: '&c&lТакой игрок уже играет на сервере'
|
||||||
registered: '&2Успешная регистрация!'
|
registered: '&a&lУспешная регистрация!'
|
||||||
pass_len: '&4Твой пароль либо слишком длинный, либо слишком короткий'
|
pass_len: '&c&lТвой пароль либо слишком длинный, либо слишком короткий'
|
||||||
reload: '&6Конфигурация и база данных перезагружены'
|
reload: '&6Конфигурация и база данных перезагружены'
|
||||||
timeout: '&4Время для авторизации истекло'
|
timeout: '&c&lВремя для авторизации истекло'
|
||||||
usage_changepassword: '&4Использование: &5/changepassword СТАРЫЙ_ПАРОЛЬ НОВЫЙ_ПАРОЛЬ'
|
usage_changepassword: '&c&lИспользование: &e&l/changepassword СТАРЫЙ_ПАРОЛЬ НОВЫЙ_ПАРОЛЬ'
|
||||||
name_len: '&4Ваш логин слишком длинный или слишком короткий'
|
name_len: '&c&lВаш ник слишком длинный или слишком короткий'
|
||||||
regex: '&4Ваш логин содержит запрещенные символы. Разрешенные символы: REG_EX'
|
regex: '&c&lВаш логин содержит запрещенные символы. Разрешенные символы: REG_EX'
|
||||||
add_email: '&4Добавьте свой email: &5/email add ВАШ_EMAIL ВАШ_EMAIL'
|
add_email: '&c&lДобавьте свой email: &e&l/email add ВАШ_EMAIL ВАШ_EMAIL'
|
||||||
recovery_email: '&4Забыли пароль? Используйте &5/email recovery ВАШ_EMAIL'
|
recovery_email: '&c&lЗабыли пароль? Используйте &e&l/email recovery ВАШ_EMAIL'
|
||||||
usage_captcha: '&4Вы должны ввести код, используйте: &5/captcha <theCaptcha>'
|
usage_captcha: '&c&lВы должны ввести код, используйте: &e&l/captcha <theCaptcha>'
|
||||||
wrong_captcha: '&4Неверный код, используйте: &5/captcha THE_CAPTCHA'
|
wrong_captcha: '&c&lНеверный код, используйте: &e&l/captcha THE_CAPTCHA'
|
||||||
valid_captcha: '&2Вы успешно ввели код!'
|
valid_captcha: '&2Вы успешно ввели код!'
|
||||||
kick_forvip: '&6VIP игрок зашел на переполненный сервер!'
|
kick_forvip: '&6VIP игрок зашел на переполненный сервер!'
|
||||||
kick_fullserver: '&4Сервер переполнен!'
|
kick_fullserver: '&c&lСервер переполнен!'
|
||||||
usage_email_add: '&4Использование: &5/email add ВАШ_EMAIL ПОВТОР_EMAIL'
|
usage_email_add: '&c&lИспользование: &e&l/email add ВАШ_EMAIL ПОВТОР_EMAIL'
|
||||||
usage_email_change: '&4Использование: &5/email change СТАРЫЙ_EMAIL НОВЫЙ_EMAIL'
|
usage_email_change: '&c&lИспользование: &e&l/email change СТАРЫЙ_EMAIL НОВЫЙ_EMAIL'
|
||||||
usage_email_recovery: '&4Использование: /email recovery EMAIL'
|
usage_email_recovery: '&c&lИспользование: /email recovery EMAIL'
|
||||||
new_email_invalid: '[AuthMe] Недействительный новый email!'
|
new_email_invalid: '[AuthMe] Недействительный новый email!'
|
||||||
old_email_invalid: '[AuthMe] Недействительный старый email!'
|
old_email_invalid: '[AuthMe] Недействительный старый email!'
|
||||||
email_invalid: '[AuthMe] Недействительный email'
|
email_invalid: '[AuthMe] Недействительный email'
|
||||||
@ -53,5 +53,5 @@ email_confirm: '[AuthMe] Подтвердите ваш Email!'
|
|||||||
email_changed: '[AuthMe] Email изменен!'
|
email_changed: '[AuthMe] Email изменен!'
|
||||||
email_send: '[AuthMe] Письмо с инструкциями для восстановления было отправлено на ваш Email!'
|
email_send: '[AuthMe] Письмо с инструкциями для восстановления было отправлено на ваш Email!'
|
||||||
country_banned: 'Вход с IP-адресов вашей страны воспрещен на этом сервере'
|
country_banned: 'Вход с IP-адресов вашей страны воспрещен на этом сервере'
|
||||||
antibot_auto_enabled: '[AuthMe] AntiBot-режим автоматически включен из-за большого количества входов!'
|
antibot_auto_enabled: '&a[AuthMe] AntiBot-режим автоматически включен из-за большого количества входов!'
|
||||||
antibot_auto_disabled: '[AuthMe] AntiBot-режим автоматичски отключен после %m мин. Надеюсь атака закончилась'
|
antibot_auto_disabled: '&a[AuthMe] AntiBot-режим автоматичски отключен после %m мин. Надеюсь атака закончилась'
|
||||||
|
@ -4,8 +4,8 @@ import fr.xephi.authme.AuthMe;
|
|||||||
import fr.xephi.authme.ReflectionTestUtils;
|
import fr.xephi.authme.ReflectionTestUtils;
|
||||||
import fr.xephi.authme.cache.auth.PlayerCache;
|
import fr.xephi.authme.cache.auth.PlayerCache;
|
||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.task.ChangePasswordTask;
|
import fr.xephi.authme.task.ChangePasswordTask;
|
||||||
import fr.xephi.authme.util.WrapperMock;
|
import fr.xephi.authme.util.WrapperMock;
|
||||||
@ -18,6 +18,7 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.mockito.ArgumentCaptor;
|
import org.mockito.ArgumentCaptor;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
||||||
import static java.util.Arrays.asList;
|
import static java.util.Arrays.asList;
|
||||||
@ -85,7 +86,7 @@ public class ChangePasswordCommandTest {
|
|||||||
ChangePasswordCommand command = new ChangePasswordCommand();
|
ChangePasswordCommand command = new ChangePasswordCommand();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
command.executeCommand(sender, new CommandParts(), new CommandParts("!pass"));
|
command.executeCommand(sender, new CommandParts(), newParts("old123", "!pass"));
|
||||||
|
|
||||||
// then
|
// then
|
||||||
verify(messagesMock).send(sender, MessageKey.PASSWORD_MATCH_ERROR);
|
verify(messagesMock).send(sender, MessageKey.PASSWORD_MATCH_ERROR);
|
||||||
@ -100,7 +101,7 @@ public class ChangePasswordCommandTest {
|
|||||||
ChangePasswordCommand command = new ChangePasswordCommand();
|
ChangePasswordCommand command = new ChangePasswordCommand();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
command.executeCommand(sender, new CommandParts(), new CommandParts("Tester"));
|
command.executeCommand(sender, new CommandParts(), newParts("old_", "Tester"));
|
||||||
|
|
||||||
// then
|
// then
|
||||||
verify(messagesMock).send(sender, MessageKey.PASSWORD_IS_USERNAME_ERROR);
|
verify(messagesMock).send(sender, MessageKey.PASSWORD_IS_USERNAME_ERROR);
|
||||||
@ -115,7 +116,7 @@ public class ChangePasswordCommandTest {
|
|||||||
Settings.passwordMaxLength = 3;
|
Settings.passwordMaxLength = 3;
|
||||||
|
|
||||||
// when
|
// when
|
||||||
command.executeCommand(sender, new CommandParts(), new CommandParts("test"));
|
command.executeCommand(sender, new CommandParts(), newParts("12", "test"));
|
||||||
|
|
||||||
// then
|
// then
|
||||||
verify(messagesMock).send(sender, MessageKey.INVALID_PASSWORD_LENGTH);
|
verify(messagesMock).send(sender, MessageKey.INVALID_PASSWORD_LENGTH);
|
||||||
@ -130,7 +131,7 @@ public class ChangePasswordCommandTest {
|
|||||||
Settings.getPasswordMinLen = 7;
|
Settings.getPasswordMinLen = 7;
|
||||||
|
|
||||||
// when
|
// when
|
||||||
command.executeCommand(sender, new CommandParts(), new CommandParts("tester"));
|
command.executeCommand(sender, new CommandParts(), newParts("oldverylongpassword", "tester"));
|
||||||
|
|
||||||
// then
|
// then
|
||||||
verify(messagesMock).send(sender, MessageKey.INVALID_PASSWORD_LENGTH);
|
verify(messagesMock).send(sender, MessageKey.INVALID_PASSWORD_LENGTH);
|
||||||
@ -145,7 +146,7 @@ public class ChangePasswordCommandTest {
|
|||||||
Settings.unsafePasswords = asList("test", "abc123");
|
Settings.unsafePasswords = asList("test", "abc123");
|
||||||
|
|
||||||
// when
|
// when
|
||||||
command.executeCommand(sender, new CommandParts(), new CommandParts("abc123"));
|
command.executeCommand(sender, new CommandParts(), newParts("oldpw", "abc123"));
|
||||||
|
|
||||||
// then
|
// then
|
||||||
verify(messagesMock).send(sender, MessageKey.PASSWORD_UNSAFE_ERROR);
|
verify(messagesMock).send(sender, MessageKey.PASSWORD_UNSAFE_ERROR);
|
||||||
@ -157,16 +158,14 @@ public class ChangePasswordCommandTest {
|
|||||||
// given
|
// given
|
||||||
CommandSender sender = initPlayerWithName("parker", true);
|
CommandSender sender = initPlayerWithName("parker", true);
|
||||||
ChangePasswordCommand command = new ChangePasswordCommand();
|
ChangePasswordCommand command = new ChangePasswordCommand();
|
||||||
BukkitScheduler schedulerMock = mock(BukkitScheduler.class);
|
|
||||||
given(wrapperMock.getServer().getScheduler()).willReturn(schedulerMock);
|
|
||||||
|
|
||||||
// when
|
// when
|
||||||
command.executeCommand(sender, new CommandParts(), new CommandParts(asList("abc123", "abc123")));
|
command.executeCommand(sender, new CommandParts(), newParts("abc123", "abc123"));
|
||||||
|
|
||||||
// then
|
// then
|
||||||
verify(messagesMock, never()).send(eq(sender), any(MessageKey.class));
|
verify(messagesMock, never()).send(eq(sender), any(MessageKey.class));
|
||||||
ArgumentCaptor<ChangePasswordTask> taskCaptor = ArgumentCaptor.forClass(ChangePasswordTask.class);
|
ArgumentCaptor<ChangePasswordTask> taskCaptor = ArgumentCaptor.forClass(ChangePasswordTask.class);
|
||||||
verify(schedulerMock).runTaskAsynchronously(any(AuthMe.class), taskCaptor.capture());
|
verify(wrapperMock.getScheduler()).runTaskAsynchronously(any(AuthMe.class), taskCaptor.capture());
|
||||||
ChangePasswordTask task = taskCaptor.getValue();
|
ChangePasswordTask task = taskCaptor.getValue();
|
||||||
assertThat((String) ReflectionTestUtils.getFieldValue(ChangePasswordTask.class, task, "newPassword"),
|
assertThat((String) ReflectionTestUtils.getFieldValue(ChangePasswordTask.class, task, "newPassword"),
|
||||||
equalTo("abc123"));
|
equalTo("abc123"));
|
||||||
@ -179,4 +178,8 @@ public class ChangePasswordCommandTest {
|
|||||||
return player;
|
return player;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static CommandParts newParts(String... parts) {
|
||||||
|
return new CommandParts(Arrays.asList(parts));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,8 @@ package fr.xephi.authme.command.executable.register;
|
|||||||
|
|
||||||
import fr.xephi.authme.command.CommandParts;
|
import fr.xephi.authme.command.CommandParts;
|
||||||
import fr.xephi.authme.process.Management;
|
import fr.xephi.authme.process.Management;
|
||||||
import fr.xephi.authme.settings.MessageKey;
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.util.WrapperMock;
|
import fr.xephi.authme.util.WrapperMock;
|
||||||
import org.bukkit.command.BlockCommandSender;
|
import org.bukkit.command.BlockCommandSender;
|
||||||
|
@ -131,7 +131,7 @@ public class HelpSyntaxHelperTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static CommandDescription.Builder getDescriptionBuilder() {
|
private static CommandDescription.CommandBuilder getDescriptionBuilder() {
|
||||||
CommandDescription base = CommandDescription.builder()
|
CommandDescription base = CommandDescription.builder()
|
||||||
.labels("authme")
|
.labels("authme")
|
||||||
.description("Base command")
|
.description("Base command")
|
||||||
|
77
src/test/java/fr/xephi/authme/output/ConsoleFilterTest.java
Normal file
77
src/test/java/fr/xephi/authme/output/ConsoleFilterTest.java
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
package fr.xephi.authme.output;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
|
||||||
|
import java.util.logging.LogRecord;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
|
import static org.junit.Assert.assertThat;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test for {@link ConsoleFilter}.
|
||||||
|
*/
|
||||||
|
public class ConsoleFilterTest {
|
||||||
|
|
||||||
|
private final ConsoleFilter filter = new ConsoleFilter();
|
||||||
|
|
||||||
|
private static final String SENSITIVE_COMMAND = "User issued server command: /login test test";
|
||||||
|
private static final String NORMAL_COMMAND = "User issued server command: /motd 2";
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldReplaceSensitiveRecord() {
|
||||||
|
// given
|
||||||
|
LogRecord record = createRecord(SENSITIVE_COMMAND);
|
||||||
|
|
||||||
|
// when
|
||||||
|
boolean result = filter.isLoggable(record);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(result, equalTo(true));
|
||||||
|
verify(record).setMessage("User issued an AuthMe command");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldNotFilterRegularCommand() {
|
||||||
|
// given
|
||||||
|
LogRecord record = createRecord(NORMAL_COMMAND);
|
||||||
|
|
||||||
|
// when
|
||||||
|
boolean result = filter.isLoggable(record);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(result, equalTo(true));
|
||||||
|
verify(record, never()).setMessage("User issued an AuthMe command");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldManageRecordWithNullMessage() {
|
||||||
|
// given
|
||||||
|
LogRecord record = createRecord(null);
|
||||||
|
|
||||||
|
// when
|
||||||
|
boolean result = filter.isLoggable(record);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(result, equalTo(true));
|
||||||
|
verify(record, never()).setMessage("User issued an AuthMe command");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a mock of {@link LogRecord} and sets it to return the given message.
|
||||||
|
*
|
||||||
|
* @param message The message to set.
|
||||||
|
*
|
||||||
|
* @return Mock of LogRecord
|
||||||
|
*/
|
||||||
|
private static LogRecord createRecord(String message) {
|
||||||
|
LogRecord record = Mockito.mock(LogRecord.class);
|
||||||
|
when(record.getMessage()).thenReturn(message);
|
||||||
|
return record;
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package fr.xephi.authme;
|
package fr.xephi.authme.output;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.equalTo;
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
import static org.junit.Assert.assertThat;
|
import static org.junit.Assert.assertThat;
|
||||||
@ -12,8 +12,6 @@ import org.mockito.Mockito;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link Log4JFilter}.
|
* Test for {@link Log4JFilter}.
|
||||||
* @author Gabriele
|
|
||||||
* @version $Revision: 1.0 $
|
|
||||||
*/
|
*/
|
||||||
public class Log4JFilterTest {
|
public class Log4JFilterTest {
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package fr.xephi.authme.settings;
|
package fr.xephi.authme.output;
|
||||||
|
|
||||||
import fr.xephi.authme.util.StringUtils;
|
import fr.xephi.authme.util.StringUtils;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
@ -1,5 +1,6 @@
|
|||||||
package fr.xephi.authme.settings;
|
package fr.xephi.authme.output;
|
||||||
|
|
||||||
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.util.WrapperMock;
|
import fr.xephi.authme.util.WrapperMock;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@ -18,7 +19,7 @@ import static org.mockito.Mockito.verify;
|
|||||||
/**
|
/**
|
||||||
* Test for {@link Messages}.
|
* Test for {@link Messages}.
|
||||||
*/
|
*/
|
||||||
public class MessagesTest {
|
public class MessagesIntegrationTest {
|
||||||
|
|
||||||
private static final String YML_TEST_FILE = "messages_test.yml";
|
private static final String YML_TEST_FILE = "messages_test.yml";
|
||||||
private Messages messages;
|
private Messages messages;
|
||||||
@ -38,8 +39,9 @@ public class MessagesTest {
|
|||||||
throw new RuntimeException("File '" + YML_TEST_FILE + "' could not be loaded");
|
throw new RuntimeException("File '" + YML_TEST_FILE + "' could not be loaded");
|
||||||
}
|
}
|
||||||
|
|
||||||
File file = new File(url.getFile());
|
Settings.messageFile = new File(url.getFile());
|
||||||
messages = new Messages(file, "en");
|
Settings.messagesLanguage = "en";
|
||||||
|
messages = Messages.getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
@ -13,14 +13,29 @@ import static org.junit.Assert.fail;
|
|||||||
public class AdminPermissionTest {
|
public class AdminPermissionTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldStartWithAuthMeAdminPrefix() {
|
public void shouldStartWithAuthMePrefix() {
|
||||||
// given
|
// given
|
||||||
String requiredPrefix = "authme.admin.";
|
String requiredPrefix = "authme.";
|
||||||
|
|
||||||
// when/then
|
// when/then
|
||||||
for (AdminPermission perm : AdminPermission.values()) {
|
for (AdminPermission permission : AdminPermission.values()) {
|
||||||
if (!perm.getNode().startsWith(requiredPrefix)) {
|
if (!permission.getNode().startsWith(requiredPrefix)) {
|
||||||
fail("The permission '" + perm + "' does not start with the required prefix '" + requiredPrefix + "'");
|
fail("The permission '" + permission + "' does not start with the required prefix '"
|
||||||
|
+ requiredPrefix + "'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldContainAdminBranch() {
|
||||||
|
// given
|
||||||
|
String requiredBranch = ".admin.";
|
||||||
|
|
||||||
|
// when/then
|
||||||
|
for (AdminPermission permission : AdminPermission.values()) {
|
||||||
|
if (!permission.getNode().contains(requiredBranch)) {
|
||||||
|
fail("The permission '" + permission + "' does not contain with the required branch '"
|
||||||
|
+ requiredBranch + "'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -31,11 +46,11 @@ public class AdminPermissionTest {
|
|||||||
Set<String> nodes = new HashSet<>();
|
Set<String> nodes = new HashSet<>();
|
||||||
|
|
||||||
// when/then
|
// when/then
|
||||||
for (AdminPermission perm : AdminPermission.values()) {
|
for (AdminPermission permission : AdminPermission.values()) {
|
||||||
if (nodes.contains(perm.getNode())) {
|
if (nodes.contains(permission.getNode())) {
|
||||||
fail("More than one enum value defines the node '" + perm.getNode() + "'");
|
fail("More than one enum value defines the node '" + permission.getNode() + "'");
|
||||||
}
|
}
|
||||||
nodes.add(perm.getNode());
|
nodes.add(permission.getNode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,61 @@
|
|||||||
|
package fr.xephi.authme.permission;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test for {@link PlayerPermission}.
|
||||||
|
*/
|
||||||
|
public class PlayerPermissionTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldStartWithAuthMePrefix() {
|
||||||
|
// given
|
||||||
|
String requiredPrefix = "authme.";
|
||||||
|
|
||||||
|
// when/then
|
||||||
|
for (PlayerPermission permission : PlayerPermission.values()) {
|
||||||
|
if (!permission.getNode().startsWith(requiredPrefix)) {
|
||||||
|
fail("The permission '" + permission + "' does not start with the required prefix '" + requiredPrefix
|
||||||
|
+ "'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldContainPlayerBranch() {
|
||||||
|
// given
|
||||||
|
String playerBranch = ".player.";
|
||||||
|
String adminBranch = ".admin.";
|
||||||
|
|
||||||
|
// when/then
|
||||||
|
for (PlayerPermission permission : PlayerPermission.values()) {
|
||||||
|
if (permission.getNode().contains(adminBranch)) {
|
||||||
|
fail("The permission '" + permission + "' should not use a node with the admin-specific branch '"
|
||||||
|
+ adminBranch + "'");
|
||||||
|
|
||||||
|
} else if (!permission.getNode().contains(playerBranch)) {
|
||||||
|
fail("The permission '" + permission + "' should use a node with the player-specific branch '"
|
||||||
|
+ playerBranch + "'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldHaveUniqueNodes() {
|
||||||
|
// given
|
||||||
|
Set<String> nodes = new HashSet<>();
|
||||||
|
|
||||||
|
// when/then
|
||||||
|
for (PlayerPermission permission : PlayerPermission.values()) {
|
||||||
|
if (nodes.contains(permission.getNode())) {
|
||||||
|
fail("More than one enum value defines the node '" + permission.getNode() + "'");
|
||||||
|
}
|
||||||
|
nodes.add(permission.getNode());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,45 +0,0 @@
|
|||||||
package fr.xephi.authme.permission;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import static org.junit.Assert.fail;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test for {@link UserPermission}.
|
|
||||||
*/
|
|
||||||
public class UserPermissionTest {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldStartWithRegularAuthMePrefix() {
|
|
||||||
// given
|
|
||||||
String requiredPrefix = "authme.";
|
|
||||||
String adminPrefix = "authme.admin";
|
|
||||||
|
|
||||||
// when/then
|
|
||||||
for (UserPermission perm : UserPermission.values()) {
|
|
||||||
if (!perm.getNode().startsWith(requiredPrefix)) {
|
|
||||||
fail("The permission '" + perm + "' does not start with the required prefix '" + requiredPrefix + "'");
|
|
||||||
} else if (perm.getNode().startsWith(adminPrefix)) {
|
|
||||||
fail("The permission '" + perm + "' should not use a node with the admin-specific prefix '"
|
|
||||||
+ adminPrefix + "'");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldHaveUniqueNodes() {
|
|
||||||
// given
|
|
||||||
Set<String> nodes = new HashSet<>();
|
|
||||||
|
|
||||||
// when/then
|
|
||||||
for (UserPermission perm : UserPermission.values()) {
|
|
||||||
if (nodes.contains(perm.getNode())) {
|
|
||||||
fail("More than one enum value defines the node '" + perm.getNode() + "'");
|
|
||||||
}
|
|
||||||
nodes.add(perm.getNode());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -3,7 +3,7 @@ package fr.xephi.authme.util;
|
|||||||
import fr.xephi.authme.AuthMe;
|
import fr.xephi.authme.AuthMe;
|
||||||
import fr.xephi.authme.ReflectionTestUtils;
|
import fr.xephi.authme.ReflectionTestUtils;
|
||||||
import fr.xephi.authme.permission.PermissionsManager;
|
import fr.xephi.authme.permission.PermissionsManager;
|
||||||
import fr.xephi.authme.permission.UserPermission;
|
import fr.xephi.authme.permission.PlayerPermission;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -54,7 +54,7 @@ public class UtilsTest {
|
|||||||
public void shouldForceSurvivalGameMode() {
|
public void shouldForceSurvivalGameMode() {
|
||||||
// given
|
// given
|
||||||
Player player = mock(Player.class);
|
Player player = mock(Player.class);
|
||||||
given(permissionsManagerMock.hasPermission(player, UserPermission.BYPASS_FORCE_SURVIVAL)).willReturn(false);
|
given(permissionsManagerMock.hasPermission(player, PlayerPermission.BYPASS_FORCE_SURVIVAL)).willReturn(false);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Utils.forceGM(player);
|
Utils.forceGM(player);
|
||||||
@ -68,14 +68,14 @@ public class UtilsTest {
|
|||||||
public void shouldNotForceGameModeForUserWithBypassPermission() {
|
public void shouldNotForceGameModeForUserWithBypassPermission() {
|
||||||
// given
|
// given
|
||||||
Player player = mock(Player.class);
|
Player player = mock(Player.class);
|
||||||
given(permissionsManagerMock.hasPermission(player, UserPermission.BYPASS_FORCE_SURVIVAL)).willReturn(true);
|
given(permissionsManagerMock.hasPermission(player, PlayerPermission.BYPASS_FORCE_SURVIVAL)).willReturn(true);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Utils.forceGM(player);
|
Utils.forceGM(player);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
verify(authMeMock).getPermissionsManager();
|
verify(authMeMock).getPermissionsManager();
|
||||||
verify(permissionsManagerMock).hasPermission(player, UserPermission.BYPASS_FORCE_SURVIVAL);
|
verify(permissionsManagerMock).hasPermission(player, PlayerPermission.BYPASS_FORCE_SURVIVAL);
|
||||||
verify(player, never()).setGameMode(any(GameMode.class));
|
verify(player, never()).setGameMode(any(GameMode.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ package fr.xephi.authme.util;
|
|||||||
|
|
||||||
import fr.xephi.authme.AuthMe;
|
import fr.xephi.authme.AuthMe;
|
||||||
import fr.xephi.authme.cache.auth.PlayerCache;
|
import fr.xephi.authme.cache.auth.PlayerCache;
|
||||||
import fr.xephi.authme.settings.Messages;
|
import fr.xephi.authme.output.Messages;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.scheduler.BukkitScheduler;
|
import org.bukkit.scheduler.BukkitScheduler;
|
||||||
import org.mockito.Mockito;
|
import org.mockito.Mockito;
|
||||||
|
14
team.txt
14
team.txt
@ -3,18 +3,16 @@ AuthMe-Team:
|
|||||||
Active staff:
|
Active staff:
|
||||||
Xephi (Xephi59) - Leader, Main developer
|
Xephi (Xephi59) - Leader, Main developer
|
||||||
DNx5 - Developer
|
DNx5 - Developer
|
||||||
games647 - Developer
|
ljacqu - Developer
|
||||||
TimVisee - Developer
|
TimVisee - Developer
|
||||||
|
games647 - Developer
|
||||||
Gabriele C. (sgdc3) - Project Manager, Contributor
|
Gabriele C. (sgdc3) - Project Manager, Contributor
|
||||||
|
|
||||||
Staff to contact:
|
AuthMeBridge staff:
|
||||||
CryLegend - Contributor, AuthMeBridge Developer (Needs activation)
|
CryLegend - Main developer, We need to contact him!
|
||||||
|
|
||||||
External Contributors:
|
Retired staff:
|
||||||
Gnat008 - Contributor
|
Maxetto - Ticket Manager, IT translator
|
||||||
|
|
||||||
Inactive staff:
|
|
||||||
Maxetto - Ticket Manager, Italian Translator, Basic Developer, Contributor (Inactive)
|
|
||||||
darkwarriors (d4rkwarriors) - Original AuthMeReloaded Author (Inactive)
|
darkwarriors (d4rkwarriors) - Original AuthMeReloaded Author (Inactive)
|
||||||
|
|
||||||
Translators:
|
Translators:
|
||||||
|
Loading…
Reference in New Issue
Block a user