Refine JavaDoc and move Log filters to 'output'

This commit is contained in:
ljacqu
2015-12-01 21:53:18 +01:00
parent 690a8d67a3
commit b0e619d412
7 changed files with 21 additions and 19 deletions
@@ -0,0 +1,31 @@
package fr.xephi.authme.output;
import java.util.logging.Filter;
import java.util.logging.LogRecord;
/**
* Console filter Class
*
* @author Xephi59
*/
public class ConsoleFilter implements Filter {
@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;
}
}
}
@@ -0,0 +1,106 @@
package fr.xephi.authme.output;
import fr.xephi.authme.util.StringUtils;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Marker;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.Logger;
import org.apache.logging.log4j.message.Message;
/**
* Implements a filter for Log4j to skip sensitive AuthMe commands.
*
* @author Xephi59
*/
public class Log4JFilter implements org.apache.logging.log4j.core.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.
*/
public Log4JFilter() {
}
/**
* Validates a Message instance and returns the {@link Result} value
* depending depending on whether the message contains sensitive AuthMe
* data.
*
* @param message the Message object to verify
*
* @return the Result value
*/
private static Result validateMessage(Message message) {
if (message == null) {
return Result.NEUTRAL;
}
return validateMessage(message.getFormattedMessage());
}
/**
* Validates a message and returns the {@link Result} value depending
* depending on whether the message contains sensitive AuthMe data.
*
* @param message the message to verify
*
* @return the Result value
*/
private static Result validateMessage(String message) {
if (message == null) {
return 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
public Result filter(LogEvent record) {
if (record == null) {
return Result.NEUTRAL;
}
return validateMessage(record.getMessage());
}
@Override
public Result filter(Logger arg0, Level arg1, Marker arg2, String message,
Object... arg4) {
return validateMessage(message);
}
@Override
public Result filter(Logger arg0, Level arg1, Marker arg2, Object message,
Throwable arg4) {
if (message == null) {
return Result.NEUTRAL;
}
return validateMessage(message.toString());
}
@Override
public Result filter(Logger arg0, Level arg1, Marker arg2, Message message,
Throwable arg4) {
return validateMessage(message);
}
@Override
public Result getOnMatch() {
return Result.NEUTRAL;
}
@Override
public Result getOnMismatch() {
return Result.NEUTRAL;
}
}
@@ -6,6 +6,8 @@ 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 {
@@ -19,6 +21,11 @@ public class Messages {
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);
@@ -65,6 +72,9 @@ public class Messages {
return StringUtils.join("\n", retrieve(key));
}
/**
* Reload the messages manager.
*/
public void reloadManager() {
manager = new MessagesManager(Settings.messageFile);
}
@@ -6,7 +6,10 @@ import fr.xephi.authme.settings.CustomConfiguration;
import java.io.File;
/**
* Class for retrieving and sending translatable messages to players.
* 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 {