Use log4j for monitored chr logger. Log all monitored to a dedicated file.
This commit is contained in:
3
pom.xml
3
pom.xml
@@ -17,7 +17,7 @@
|
||||
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||
<mainClass>net.server.Server</mainClass>
|
||||
|
||||
<log4j.version>2.16.0</log4j.version>
|
||||
<log4j.version>2.17.0</log4j.version>
|
||||
<graalvm.version>21.1.0</graalvm.version>
|
||||
<netty.version>4.1.67.Final</netty.version>
|
||||
<junit.version>5.7.2</junit.version>
|
||||
@@ -139,6 +139,7 @@
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>3.0.0-M5</version>
|
||||
</plugin>
|
||||
|
||||
@@ -34,7 +34,7 @@ import net.netty.InvalidPacketHeaderException;
|
||||
import net.packet.InPacket;
|
||||
import net.packet.Packet;
|
||||
import net.packet.logging.LoggingUtil;
|
||||
import net.packet.logging.MapleLogger;
|
||||
import net.packet.logging.MonitoredChrLogger;
|
||||
import net.server.Server;
|
||||
import net.server.audit.locks.MonitoredLockType;
|
||||
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
|
||||
@@ -200,7 +200,7 @@ public class Client extends ChannelInboundHandlerAdapter {
|
||||
|
||||
if (handler != null && handler.validateState(this)) {
|
||||
try {
|
||||
MapleLogger.logRecv(this, opcode, packet.getBytes());
|
||||
MonitoredChrLogger.logPacketIfMonitored(this, opcode, packet.getBytes());
|
||||
handler.handlePacket(packet, this);
|
||||
} catch (final Throwable t) {
|
||||
FilePrinter.printError(FilePrinter.PACKET_HANDLER + handler.getClass().getName() + ".txt", t, "Error for " + (getPlayer() == null ? "" : "player ; " + getPlayer() + " on map ; " + getPlayer().getMapId() + " - ") + "account ; " + getAccountName() + "\r\n" + packet);
|
||||
|
||||
@@ -24,7 +24,7 @@ package client.autoban;
|
||||
|
||||
import client.Character;
|
||||
import config.YamlConfig;
|
||||
import net.packet.logging.MapleLogger;
|
||||
import net.packet.logging.MonitoredChrLogger;
|
||||
import net.server.Server;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
@@ -87,7 +87,7 @@ public enum AutobanFactory {
|
||||
|
||||
public void alert(Character chr, String reason) {
|
||||
if (YamlConfig.config.server.USE_AUTOBAN) {
|
||||
if (chr != null && MapleLogger.ignored.contains(chr.getId())) {
|
||||
if (chr != null && MonitoredChrLogger.ignored.contains(chr.getId())) {
|
||||
return;
|
||||
}
|
||||
Server.getInstance().broadcastGMMessage((chr != null ? chr.getWorld() : 0), PacketCreator.sendYellowTip((chr != null ? Character.makeMapleReadable(chr.getName()) : "") + " caused " + this.name() + " " + reason));
|
||||
|
||||
@@ -26,7 +26,7 @@ package client.command.commands.gm3;
|
||||
import client.Character;
|
||||
import client.Client;
|
||||
import client.command.Command;
|
||||
import net.packet.logging.MapleLogger;
|
||||
import net.packet.logging.MonitoredChrLogger;
|
||||
import net.server.Server;
|
||||
import tools.PacketCreator;
|
||||
|
||||
@@ -47,11 +47,11 @@ public class IgnoreCommand extends Command {
|
||||
player.message("Player '" + params[0] + "' could not be found on this world.");
|
||||
return;
|
||||
}
|
||||
boolean monitored_ = MapleLogger.ignored.contains(victim.getId());
|
||||
boolean monitored_ = MonitoredChrLogger.ignored.contains(victim.getId());
|
||||
if (monitored_) {
|
||||
MapleLogger.ignored.remove(victim.getId());
|
||||
MonitoredChrLogger.ignored.remove(victim.getId());
|
||||
} else {
|
||||
MapleLogger.ignored.add(victim.getId());
|
||||
MonitoredChrLogger.ignored.add(victim.getId());
|
||||
}
|
||||
player.yellowMessage(victim.getName() + " is " + (!monitored_ ? "now being ignored." : "no longer being ignored."));
|
||||
String message_ = player.getName() + (!monitored_ ? " has started ignoring " : " has stopped ignoring ") + victim.getName() + ".";
|
||||
|
||||
@@ -26,7 +26,7 @@ package client.command.commands.gm3;
|
||||
import client.Character;
|
||||
import client.Client;
|
||||
import client.command.Command;
|
||||
import net.packet.logging.MapleLogger;
|
||||
import net.packet.logging.MonitoredChrLogger;
|
||||
|
||||
public class IgnoredCommand extends Command {
|
||||
{
|
||||
@@ -36,7 +36,7 @@ public class IgnoredCommand extends Command {
|
||||
@Override
|
||||
public void execute(Client c, String[] params) {
|
||||
Character player = c.getPlayer();
|
||||
for (Integer cid : MapleLogger.ignored) {
|
||||
for (Integer cid : MonitoredChrLogger.ignored) {
|
||||
player.yellowMessage(Character.getNameById(cid) + " is being ignored.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ package client.command.commands.gm3;
|
||||
import client.Character;
|
||||
import client.Client;
|
||||
import client.command.Command;
|
||||
import net.packet.logging.MapleLogger;
|
||||
import net.packet.logging.MonitoredChrLogger;
|
||||
import net.server.Server;
|
||||
import tools.PacketCreator;
|
||||
|
||||
@@ -47,11 +47,11 @@ public class MonitorCommand extends Command {
|
||||
player.message("Player '" + params[0] + "' could not be found on this world.");
|
||||
return;
|
||||
}
|
||||
boolean monitored = MapleLogger.monitored.contains(victim.getId());
|
||||
boolean monitored = MonitoredChrLogger.monitored.contains(victim.getId());
|
||||
if (monitored) {
|
||||
MapleLogger.monitored.remove(victim.getId());
|
||||
MonitoredChrLogger.monitored.remove(victim.getId());
|
||||
} else {
|
||||
MapleLogger.monitored.add(victim.getId());
|
||||
MonitoredChrLogger.monitored.add(victim.getId());
|
||||
}
|
||||
player.yellowMessage(victim.getId() + " is " + (!monitored ? "now being monitored." : "no longer being monitored."));
|
||||
String message = player.getName() + (!monitored ? " has started monitoring " : " has stopped monitoring ") + victim.getId() + ".";
|
||||
|
||||
@@ -26,7 +26,7 @@ package client.command.commands.gm3;
|
||||
import client.Character;
|
||||
import client.Client;
|
||||
import client.command.Command;
|
||||
import net.packet.logging.MapleLogger;
|
||||
import net.packet.logging.MonitoredChrLogger;
|
||||
|
||||
public class MonitorsCommand extends Command {
|
||||
{
|
||||
@@ -36,7 +36,7 @@ public class MonitorsCommand extends Command {
|
||||
@Override
|
||||
public void execute(Client c, String[] params) {
|
||||
Character player = c.getPlayer();
|
||||
for (Integer cid : MapleLogger.monitored) {
|
||||
for (Integer cid : MonitoredChrLogger.monitored) {
|
||||
player.yellowMessage(Character.getNameById(cid) + " is being monitored.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
package net.packet.logging;
|
||||
|
||||
import io.netty.buffer.Unpooled;
|
||||
import net.opcodes.RecvOpcode;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class LoggingUtil {
|
||||
private static final Set<Short> ignoredDebugRecvPackets = Set.of((short) 167, (short) 197, (short) 89, (short) 91, (short) 41, (short) 188, (short) 107);
|
||||
private static final Set<Short> ignoredDebugRecvPackets = Set.of(
|
||||
(short) RecvOpcode.MOVE_PLAYER.getValue(), // 41
|
||||
(short) RecvOpcode.HEAL_OVER_TIME.getValue(), // 89
|
||||
(short) RecvOpcode.SPECIAL_MOVE.getValue(), // 91
|
||||
(short) RecvOpcode.QUEST_ACTION.getValue(), // 107
|
||||
(short) RecvOpcode.MOVE_PET.getValue(), // 167
|
||||
(short) RecvOpcode.MOVE_LIFE.getValue(), // 188
|
||||
(short) RecvOpcode.NPC_ACTION.getValue() // 197
|
||||
);
|
||||
|
||||
public static short readFirstShort(byte[] bytes) {
|
||||
return Unpooled.wrappedBuffer(bytes).readShortLE();
|
||||
|
||||
@@ -23,7 +23,8 @@ package net.packet.logging;
|
||||
import client.Character;
|
||||
import client.Client;
|
||||
import net.opcodes.RecvOpcode;
|
||||
import tools.FilePrinter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import tools.HexTool;
|
||||
|
||||
import java.util.Arrays;
|
||||
@@ -31,16 +32,17 @@ import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Logs packets to console and file.
|
||||
* Logs packets from monitored characters to a file.
|
||||
*
|
||||
* @author Alan (SharpAceX)
|
||||
*/
|
||||
|
||||
public class MapleLogger {
|
||||
public class MonitoredChrLogger {
|
||||
private static final Logger log = LoggerFactory.getLogger(MonitoredChrLogger.class);
|
||||
public static final Set<Integer> monitored = new HashSet<>();
|
||||
public static final Set<Integer> ignored = new HashSet<>();
|
||||
|
||||
public static void logRecv(Client c, short packetId, byte[] packetContent) {
|
||||
public static void logPacketIfMonitored(Client c, short packetId, byte[] packetContent) {
|
||||
Character chr = c.getPlayer();
|
||||
if (chr == null) {
|
||||
return;
|
||||
@@ -52,8 +54,9 @@ public class MapleLogger {
|
||||
if (isRecvBlocked(op)) {
|
||||
return;
|
||||
}
|
||||
String packet = op + "\r\n" + HexTool.toString(packetContent);
|
||||
FilePrinter.printError(FilePrinter.PACKET_LOGS + c.getAccountName() + "-" + chr.getName() + ".txt", packet);
|
||||
|
||||
String packet = packetContent.length > 0 ? HexTool.toString(packetContent) : "<empty>";
|
||||
log.info("{}-{} {}-{}", c.getAccountName(), chr.getName(), packetId, packet);
|
||||
}
|
||||
|
||||
private static boolean isRecvBlocked(RecvOpcode op) {
|
||||
@@ -5,6 +5,7 @@
|
||||
<Property name="standard-pattern">%d{HH:mm:ss.SSS} [%t] %-5level %logger{2} - %msg%n</Property>
|
||||
<Property name="packet-pattern">%d{HH:mm:ss.SSS} %-15logger{1} - %msg%n</Property>
|
||||
</Properties>
|
||||
|
||||
<Appenders>
|
||||
<Console name="Console" target="SYSTEM_OUT">
|
||||
<PatternLayout>
|
||||
@@ -29,7 +30,14 @@
|
||||
<Pattern>${packet-pattern}</Pattern>
|
||||
</PatternLayout>
|
||||
</Console>
|
||||
|
||||
<File name="MonitoredPacketFile" fileName="logs/monitored-packets.log">
|
||||
<PatternLayout>
|
||||
<Pattern>${standard-pattern}</Pattern>
|
||||
</PatternLayout>
|
||||
</File>
|
||||
</Appenders>
|
||||
|
||||
<Loggers>
|
||||
<Root level="trace">
|
||||
<AppenderRef ref="File" level="debug"/>
|
||||
@@ -40,6 +48,10 @@
|
||||
<AppenderRef ref="File"/>
|
||||
</Logger>
|
||||
|
||||
<Logger name="net.packet.logging.MonitoredChrLogger" level="info" additivity="false">
|
||||
<AppenderRef ref="MonitoredPacketFile"/>
|
||||
</Logger>
|
||||
|
||||
<Logger name="com.zaxxer.hikari" level="info"/>
|
||||
<Logger name="io.netty" level="info"/>
|
||||
</Loggers>
|
||||
|
||||
Reference in New Issue
Block a user