Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
package Example;
import java.util.Collections;
import java.util.ArrayList;
import java.util.List;
class LogFilterHelper {
static List<String> COMMANDS_TO_SKIP;
private LogFilterHelper() {
}
static boolean isSensitiveCommand(String message) {
if (message == null) {
return false;
}
String lowerMessage = message.toLowerCase();
return lowerMessage.contains("issued server command:")
&& containsAny(lowerMessage, LogFilterHelper.COMMANDS_TO_SKIP);
}
private static List<String> withAndWithoutPrefix(String... commands) {
List<String> commandList = new ArrayList<String>(commands.length * 2);
for (String command : commands) {
commandList.add(command);
}
return Collections.unmodifiableList((List<? extends String>) commandList);
}
static {
COMMANDS_TO_SKIP = withAndWithoutPrefix("/login ", "/l ", "/log ", "/register ", "/reg ", "/unregister ",
"/unreg ", "/changepassword ", "/cp ", "/changepass ", "/authme register ", "/authme reg ",
"/authme r ", "/authme changepassword ", "/authme password ", "/authme changepass ", "/authme cp ",
"/email setpassword ");
}
public static boolean containsAny(String str, Iterable<String> pieces) {
if (str == null) {
return false;
}
for (String piece : pieces) {
if (piece != null && str.contains(piece)) {
return true;
}
}
return false;
}
}
package Example;
import org.apache.logging.log4j.Marker;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.Logger;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.Filter;
import org.apache.logging.log4j.message.Message;
import org.apache.logging.log4j.core.filter.AbstractFilter;
public class Log4JFilter extends AbstractFilter {
public static void hook() {
Logger coreLogger = (Logger)LogManager.getRootLogger();
coreLogger.addFilter(new Log4JFilter());
}
private static Filter.Result validateMessage(Message message) {
if (message == null) {
return Filter.Result.NEUTRAL;
}
return validateMessage(message.getFormattedMessage());
}
private static Filter.Result validateMessage(String message) {
return LogFilterHelper.isSensitiveCommand(message) ? Filter.Result.DENY : Filter.Result.NEUTRAL;
}
public Filter.Result filter(LogEvent event) {
Message candidate = null;
if (event != null) {
candidate = event.getMessage();
}
return validateMessage(candidate);
}
public Filter.Result filter(Logger logger, Level level, Marker marker, Message msg, Throwable t) {
return validateMessage(msg);
}
public Filter.Result filter(Logger logger, Level level, Marker marker, String msg, Object... params) {
return validateMessage(msg);
}
public Filter.Result filter(Logger logger, Level level, Marker marker, Object msg, Throwable t) {
String candidate = null;
if (msg != null) {
candidate = msg.toString();
}
return validateMessage(candidate);
}
}