Encapsulate "monitored" collection
This commit is contained in:
@@ -32,7 +32,7 @@ import tools.PacketCreator;
|
||||
|
||||
public class MonitorCommand extends Command {
|
||||
{
|
||||
setDescription("Toggle logging the packets of a player.");
|
||||
setDescription("Toggle monitored packet logging of a character.");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -47,14 +47,9 @@ public class MonitorCommand extends Command {
|
||||
player.message("Player '" + params[0] + "' could not be found on this world.");
|
||||
return;
|
||||
}
|
||||
boolean monitored = MonitoredChrLogger.monitored.contains(victim.getId());
|
||||
if (monitored) {
|
||||
MonitoredChrLogger.monitored.remove(victim.getId());
|
||||
} else {
|
||||
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() + ".";
|
||||
boolean monitored = MonitoredChrLogger.toggleMonitored(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() + ".";
|
||||
Server.getInstance().broadcastGMMessage(c.getWorld(), PacketCreator.serverNotice(5, message));
|
||||
|
||||
}
|
||||
|
||||
@@ -30,14 +30,14 @@ import net.packet.logging.MonitoredChrLogger;
|
||||
|
||||
public class MonitorsCommand extends Command {
|
||||
{
|
||||
setDescription("Show all players having their packets logged.");
|
||||
setDescription("Show all characters being monitored for packet logging");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Client c, String[] params) {
|
||||
Character player = c.getPlayer();
|
||||
for (Integer cid : MonitoredChrLogger.monitored) {
|
||||
player.yellowMessage(Character.getNameById(cid) + " is being monitored.");
|
||||
for (int chrId : MonitoredChrLogger.getMonitoredChrIds()) {
|
||||
player.yellowMessage(Character.getNameById(chrId) + " is being monitored.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,12 +22,14 @@ package net.packet.logging;
|
||||
|
||||
import client.Character;
|
||||
import client.Client;
|
||||
import net.jcip.annotations.NotThreadSafe;
|
||||
import net.opcodes.RecvOpcode;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import tools.HexTool;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -36,18 +38,37 @@ import java.util.Set;
|
||||
*
|
||||
* @author Alan (SharpAceX)
|
||||
*/
|
||||
|
||||
@NotThreadSafe
|
||||
public class MonitoredChrLogger {
|
||||
private static final Logger log = LoggerFactory.getLogger(MonitoredChrLogger.class);
|
||||
public static final Set<Integer> monitored = new HashSet<>();
|
||||
private static final Set<Integer> monitoredChrIds = new HashSet<>();
|
||||
public static final Set<Integer> ignored = new HashSet<>();
|
||||
|
||||
/**
|
||||
* Toggle monitored status for a character id
|
||||
*
|
||||
* @return new status. true if the chrId is now monitored, otherwise false.
|
||||
*/
|
||||
public static boolean toggleMonitored(int chrId) {
|
||||
if (monitoredChrIds.contains(chrId)) {
|
||||
monitoredChrIds.remove(chrId);
|
||||
return false;
|
||||
} else {
|
||||
monitoredChrIds.add(chrId);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static Collection<Integer> getMonitoredChrIds() {
|
||||
return monitoredChrIds;
|
||||
}
|
||||
|
||||
public static void logPacketIfMonitored(Client c, short packetId, byte[] packetContent) {
|
||||
Character chr = c.getPlayer();
|
||||
if (chr == null) {
|
||||
return;
|
||||
}
|
||||
if (!monitored.contains(chr.getId())) {
|
||||
if (!monitoredChrIds.contains(chr.getId())) {
|
||||
return;
|
||||
}
|
||||
RecvOpcode op = getOpcodeFromValue(packetId);
|
||||
|
||||
Reference in New Issue
Block a user