diff --git a/pom.xml b/pom.xml index e3ef58db07..a860e4b6d3 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ ${java.version} net.server.Server - 2.16.0 + 2.17.0 21.1.0 4.1.67.Final 5.7.2 @@ -139,6 +139,7 @@ + org.apache.maven.plugins maven-surefire-plugin 3.0.0-M5 diff --git a/src/main/java/client/Client.java b/src/main/java/client/Client.java index 00471ca0a6..b8c8b50928 100644 --- a/src/main/java/client/Client.java +++ b/src/main/java/client/Client.java @@ -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); diff --git a/src/main/java/client/autoban/AutobanFactory.java b/src/main/java/client/autoban/AutobanFactory.java index 8dd670725b..2033e1d427 100644 --- a/src/main/java/client/autoban/AutobanFactory.java +++ b/src/main/java/client/autoban/AutobanFactory.java @@ -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)); diff --git a/src/main/java/client/command/commands/gm3/IgnoreCommand.java b/src/main/java/client/command/commands/gm3/IgnoreCommand.java index ccd141a04a..1c9b338d3f 100644 --- a/src/main/java/client/command/commands/gm3/IgnoreCommand.java +++ b/src/main/java/client/command/commands/gm3/IgnoreCommand.java @@ -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() + "."; diff --git a/src/main/java/client/command/commands/gm3/IgnoredCommand.java b/src/main/java/client/command/commands/gm3/IgnoredCommand.java index a3849c78df..80dcfa3b90 100644 --- a/src/main/java/client/command/commands/gm3/IgnoredCommand.java +++ b/src/main/java/client/command/commands/gm3/IgnoredCommand.java @@ -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."); } } diff --git a/src/main/java/client/command/commands/gm3/MonitorCommand.java b/src/main/java/client/command/commands/gm3/MonitorCommand.java index fd026d7894..a641f53bc8 100644 --- a/src/main/java/client/command/commands/gm3/MonitorCommand.java +++ b/src/main/java/client/command/commands/gm3/MonitorCommand.java @@ -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() + "."; diff --git a/src/main/java/client/command/commands/gm3/MonitorsCommand.java b/src/main/java/client/command/commands/gm3/MonitorsCommand.java index da604fb0ae..de18a281c7 100644 --- a/src/main/java/client/command/commands/gm3/MonitorsCommand.java +++ b/src/main/java/client/command/commands/gm3/MonitorsCommand.java @@ -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."); } } diff --git a/src/main/java/net/packet/logging/LoggingUtil.java b/src/main/java/net/packet/logging/LoggingUtil.java index 29af8bfc34..642da2bc16 100644 --- a/src/main/java/net/packet/logging/LoggingUtil.java +++ b/src/main/java/net/packet/logging/LoggingUtil.java @@ -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 ignoredDebugRecvPackets = Set.of((short) 167, (short) 197, (short) 89, (short) 91, (short) 41, (short) 188, (short) 107); + private static final Set 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(); diff --git a/src/main/java/net/packet/logging/MapleLogger.java b/src/main/java/net/packet/logging/MonitoredChrLogger.java similarity index 80% rename from src/main/java/net/packet/logging/MapleLogger.java rename to src/main/java/net/packet/logging/MonitoredChrLogger.java index e827740859..52e8e02ca2 100644 --- a/src/main/java/net/packet/logging/MapleLogger.java +++ b/src/main/java/net/packet/logging/MonitoredChrLogger.java @@ -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 monitored = new HashSet<>(); public static final Set 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) : ""; + log.info("{}-{} {}-{}", c.getAccountName(), chr.getName(), packetId, packet); } private static boolean isRecvBlocked(RecvOpcode op) { diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index 3b0f9d5966..d9120f9450 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -5,6 +5,7 @@ %d{HH:mm:ss.SSS} [%t] %-5level %logger{2} - %msg%n %d{HH:mm:ss.SSS} %-15logger{1} - %msg%n + @@ -29,7 +30,14 @@ ${packet-pattern} + + + + ${standard-pattern} + + + @@ -40,6 +48,10 @@ + + + +