mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-11-25 20:56:28 +00:00
Split config debugLevel
into logPackets
(Game) and logRequests
(Dispatch)
This commit is contained in:
parent
408fa90728
commit
52ee229e96
@ -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 {
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user