Use log4j for monitored chr logger. Log all monitored to a dedicated file.

This commit is contained in:
P0nk
2021-12-21 21:07:18 +01:00
parent 507ab06721
commit 6c1a9465c0
10 changed files with 49 additions and 24 deletions

View File

@@ -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);

View File

@@ -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));

View File

@@ -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() + ".";

View File

@@ -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.");
}
}

View File

@@ -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() + ".";

View File

@@ -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.");
}
}

View File

@@ -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();

View File

@@ -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) {