diff --git a/src/main/java/emu/grasscutter/config/ConfigContainer.java b/src/main/java/emu/grasscutter/config/ConfigContainer.java index 5049e3b20..619775dc8 100644 --- a/src/main/java/emu/grasscutter/config/ConfigContainer.java +++ b/src/main/java/emu/grasscutter/config/ConfigContainer.java @@ -93,9 +93,8 @@ public class ConfigContainer { } public static class Server { - public ServerDebugMode debugLevel = ServerDebugMode.NONE; - public Set DebugWhitelist = Set.of(); - public Set DebugBlacklist = Set.of(); + public Set debugWhitelist = Set.of(); + public Set 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 { diff --git a/src/main/java/emu/grasscutter/server/game/GameServerPacketHandler.java b/src/main/java/emu/grasscutter/server/game/GameServerPacketHandler.java index e9c2be311..0f6998274 100644 --- a/src/main/java/emu/grasscutter/server/game/GameServerPacketHandler.java +++ b/src/main/java/emu/grasscutter/server/game/GameServerPacketHandler.java @@ -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)); } } diff --git a/src/main/java/emu/grasscutter/server/game/GameSession.java b/src/main/java/emu/grasscutter/server/game/GameSession.java index 005fcc4af..096a3a35d 100644 --- a/src/main/java/emu/grasscutter/server/game/GameSession.java +++ b/src/main/java/emu/grasscutter/server/game/GameSession.java @@ -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); diff --git a/src/main/java/emu/grasscutter/server/http/HttpServer.java b/src/main/java/emu/grasscutter/server/http/HttpServer.java index d35e7de25..a4a0e704a 100644 --- a/src/main/java/emu/grasscutter/server/http/HttpServer.java +++ b/src/main/java/emu/grasscutter/server/http/HttpServer.java @@ -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"); diff --git a/src/main/java/emu/grasscutter/server/http/objects/HttpJsonResponse.java b/src/main/java/emu/grasscutter/server/http/objects/HttpJsonResponse.java index b3603d94c..147259161 100644 --- a/src/main/java/emu/grasscutter/server/http/objects/HttpJsonResponse.java +++ b/src/main/java/emu/grasscutter/server/http/objects/HttpJsonResponse.java @@ -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); } diff --git a/src/main/java/emu/grasscutter/server/http/objects/WebStaticVersionResponse.java b/src/main/java/emu/grasscutter/server/http/objects/WebStaticVersionResponse.java index 7577da5ca..111451bf8 100644 --- a/src/main/java/emu/grasscutter/server/http/objects/WebStaticVersionResponse.java +++ b/src/main/java/emu/grasscutter/server/http/objects/WebStaticVersionResponse.java @@ -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); diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnionCmdNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnionCmdNotify.java index 5c1d6c550..9323ec5b6 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnionCmdNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnionCmdNotify.java @@ -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