Split config `debugLevel` into `logPackets` (Game) and `logRequests` (Dispatch)

This commit is contained in:
Melledy 2022-07-20 02:52:35 -07:00
parent 408fa90728
commit 52ee229e96
7 changed files with 58 additions and 40 deletions

View File

@ -93,9 +93,8 @@ public class ConfigContainer {
}
public static class Server {
public ServerDebugMode debugLevel = ServerDebugMode.NONE;
public Set<Integer> DebugWhitelist = Set.of();
public Set<Integer> DebugBlacklist = Set.of();
public Set<Integer> debugWhitelist = Set.of();
public Set<Integer> debugBlacklist = Set.of();
public ServerRunMode runMode = ServerRunMode.HYBRID;
public HTTP http = new HTTP();
@ -135,16 +134,21 @@ public class ConfigContainer {
public static class Game {
public String bindAddress = "0.0.0.0";
public int bindPort = 22102;
/* This is the address used in the default region. */
public String accessAddress = "127.0.0.1";
public int bindPort = 22102;
/* This is the port used in the default region. */
public int accessPort = 0;
/* Entities within a certain range will be loaded for the player */
public int loadEntitiesForPlayerRange = 100;
public boolean enableScriptInBigWorld = false;
public boolean enableConsole = true;
/* Controls whether packets should be logged in console or not */
public ServerDebugMode logPackets = ServerDebugMode.NONE;
public GameOptions gameOptions = new GameOptions();
public JoinOptions joinOptions = new JoinOptions();
public ConsoleAccount serverAccount = new ConsoleAccount();
@ -156,6 +160,8 @@ public class ConfigContainer {
public Region[] regions = {};
public String defaultName = "Grasscutter";
public ServerDebugMode logRequests = ServerDebugMode.NONE;
}
public static class Encryption {

View File

@ -94,7 +94,7 @@ public class GameServerPacketHandler {
}
// Log unhandled packets
if (SERVER.debugLevel == ServerDebugMode.MISSING) {
if (GAME_INFO.logPackets == ServerDebugMode.MISSING) {
Grasscutter.getLogger().info("Unhandled packet (" + opcode + "): " + emu.grasscutter.net.packet.PacketOpcodesUtil.getOpcodeName(opcode));
}
}

View File

@ -148,18 +148,23 @@ public class GameSession implements GameSessionManager.KcpChannel {
}
// Log
if (SERVER.debugLevel == ServerDebugMode.ALL) {
if (!loopPacket.contains(packet.getOpcode())) {
logPacket("SEND",packet.getOpcode(), packet.getData());
}
}
if (SERVER.debugLevel == ServerDebugMode.WHITELIST && SERVER.DebugWhitelist.contains(packet.getOpcode())) {
logPacket("SEND",packet.getOpcode(), packet.getData());
}
if (SERVER.debugLevel == ServerDebugMode.BLACKLIST && !(SERVER.DebugBlacklist.contains(packet.getOpcode()))) {
logPacket("SEND",packet.getOpcode(), packet.getData());
switch (GAME_INFO.logPackets) {
case ALL -> {
if (!loopPacket.contains(packet.getOpcode())) {
logPacket("SEND", packet.getOpcode(), packet.getData());
}
}
case WHITELIST-> {
if (SERVER.debugWhitelist.contains(packet.getOpcode())) {
logPacket("SEND", packet.getOpcode(), packet.getData());
}
}
case BLACKLIST-> {
if (!SERVER.debugBlacklist.contains(packet.getOpcode())) {
logPacket("SEND", packet.getOpcode(), packet.getData());
}
}
default -> {}
}
// Invoke event.
@ -194,7 +199,7 @@ public class GameSession implements GameSessionManager.KcpChannel {
//logPacket(packet);
// Handle
try {
boolean allDebug = SERVER.debugLevel == ServerDebugMode.ALL;
boolean allDebug = GAME_INFO.logPackets == ServerDebugMode.ALL;
while (packet.readableBytes() > 0) {
// Length
if (packet.readableBytes() < 12) {
@ -225,20 +230,26 @@ public class GameSession implements GameSessionManager.KcpChannel {
}
return; // Bad packet
}
// Log packet
if (allDebug) {
if (!loopPacket.contains(opcode)) {
logPacket("RECV",opcode, payload);
}
}
if (SERVER.debugLevel == ServerDebugMode.WHITELIST && SERVER.DebugWhitelist.contains(opcode)) {
logPacket("RECV",opcode, payload);
}
if (SERVER.debugLevel == ServerDebugMode.BLACKLIST && !(SERVER.DebugBlacklist.contains(opcode))) {
logPacket("RECV",opcode, payload);
}
switch (GAME_INFO.logPackets) {
case ALL -> {
if (!loopPacket.contains(opcode)) {
logPacket("RECV",opcode, payload);
}
}
case WHITELIST-> {
if (SERVER.debugWhitelist.contains(opcode)) {
logPacket("RECV",opcode, payload);
}
}
case BLACKLIST-> {
if (!(SERVER.debugBlacklist.contains(opcode))) {
logPacket("RECV",opcode, payload);
}
}
default -> {}
}
// Handle
getServer().getPacketHandler().handle(this, opcode, header, payload);

View File

@ -43,7 +43,7 @@ public final class HttpServer {
}
// Configure debug logging.
if(SERVER.debugLevel == ServerDebugMode.ALL)
if(DISPATCH_INFO.logRequests == ServerDebugMode.ALL)
config.enableDevLogging();
// Disable compression on static files.
@ -173,7 +173,7 @@ public final class HttpServer {
public static class UnhandledRequestRouter implements Router {
@Override public void applyRoutes(Express express, Javalin handle) {
handle.error(404, context -> {
if(SERVER.debugLevel == ServerDebugMode.MISSING)
if(DISPATCH_INFO.logRequests == ServerDebugMode.MISSING)
Grasscutter.getLogger().info(translate("messages.dispatch.unhandled_request_error", context.method(), context.url()));
context.contentType("text/html");

View File

@ -35,8 +35,8 @@ public final class HttpJsonResponse implements HttpContextHandler {
@Override
public void handle(Request req, Response res) throws IOException {
// Checking for ALL here isn't required as when ALL is enabled enableDevLogging() gets enabled
if(SERVER.debugLevel == ServerDebugMode.MISSING && Arrays.stream(missingRoutes).anyMatch(x -> Objects.equals(x, req.baseUrl()))) {
Grasscutter.getLogger().info(translate("messages.dispatch.request", req.ip(), req.method(), req.baseUrl()) + (SERVER.debugLevel == ServerDebugMode.MISSING ? "(MISSING)" : ""));
if(DISPATCH_INFO.logRequests == ServerDebugMode.MISSING && Arrays.stream(missingRoutes).anyMatch(x -> Objects.equals(x, req.baseUrl()))) {
Grasscutter.getLogger().info(translate("messages.dispatch.request", req.ip(), req.method(), req.baseUrl()) + (DISPATCH_INFO.logRequests == ServerDebugMode.MISSING ? "(MISSING)" : ""));
}
res.send(response);
}

View File

@ -11,6 +11,7 @@ import express.http.Response;
import io.javalin.core.util.FileUtil;
import static emu.grasscutter.config.Configuration.DATA;
import static emu.grasscutter.config.Configuration.DISPATCH_INFO;
import java.io.IOException;
import java.io.InputStream;
@ -32,7 +33,7 @@ public class WebStaticVersionResponse implements HttpContextHandler {
response.type((fromExtension != null) ? fromExtension.getMIME() : "application/octet-stream");
response.send(filestream.readAllBytes());
} catch (Exception e) {
if(Grasscutter.getConfig().server.debugLevel.equals(Grasscutter.ServerDebugMode.MISSING)) {
if(DISPATCH_INFO.logRequests == Grasscutter.ServerDebugMode.MISSING) {
Grasscutter.getLogger().warn("Webstatic File Missing: " + path);
}
response.status(404);

View File

@ -1,8 +1,8 @@
package emu.grasscutter.server.packet.recv;
import static emu.grasscutter.config.Configuration.GAME_INFO;
import static emu.grasscutter.config.Configuration.SERVER;
import emu.grasscutter.Grasscutter;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.UnionCmdNotifyOuterClass.UnionCmdNotify;
@ -19,9 +19,9 @@ public class HandlerUnionCmdNotify extends PacketHandler {
for (UnionCmd cmd : req.getCmdListList()) {
int cmdOpcode = cmd.getMessageId();
byte[] cmdPayload = cmd.getBody().toByteArray();
if(Grasscutter.config.server.debugLevel == ServerDebugMode.WHITELIST && SERVER.DebugWhitelist.contains(cmd.getMessageId())) {
if(GAME_INFO.logPackets == ServerDebugMode.WHITELIST && SERVER.debugWhitelist.contains(cmd.getMessageId())) {
session.logPacket("RECV in Union", cmdOpcode, cmdPayload);
} else if (Grasscutter.config.server.debugLevel == ServerDebugMode.BLACKLIST && !SERVER.DebugBlacklist.contains(cmd.getMessageId())) {
} else if (GAME_INFO.logPackets == ServerDebugMode.BLACKLIST && !SERVER.debugBlacklist.contains(cmd.getMessageId())) {
session.logPacket("RECV in Union", cmdOpcode, cmdPayload);
}
//debugLevel ALL ignores UnionCmdNotify, so we will also ignore the contained opcodes