diff --git a/src/defines.d b/src/defines.d index f59e9e1..742fd2f 100644 --- a/src/defines.d +++ b/src/defines.d @@ -101,3 +101,4 @@ enum red = "\033[01;91m"; // foreground red bool log_db; bool log_conn; bool log_msg; +bool log_bytes_rx; diff --git a/src/server/messages.d b/src/server/messages.d index 1b63740..b354da9 100644 --- a/src/server/messages.d +++ b/src/server/messages.d @@ -6,13 +6,14 @@ module soulfind.server.messages; @safe: -import soulfind.defines : blue, log_msg, norm, RoomTicker; +import soulfind.defines : blue, log_bytes_rx, log_msg, norm, RoomTicker; import soulfind.server.room : Room; import soulfind.server.user : User; import std.array : Appender; import std.bitmanip : Endian, nativeToLittleEndian, peek; import std.conv : text; import std.datetime : days, Duration, SysTime; +import std.format : format; import std.stdio : writeln; import std.utf : UTFException, validate; @@ -188,7 +189,8 @@ class UMessage if (log_msg) writeln( "[Msg] Receive <- ", blue, this.name, norm, " (code ", code, - ") <- from user ", blue, in_username, norm + ") <- from user ", blue, in_username, norm, + log_bytes_rx ? " (" ~ format!"%-(%02x %)"(in_buf) ~ ")" : "" ); } diff --git a/src/server/package.d b/src/server/package.d index 48f714e..ef6258c 100644 --- a/src/server/package.d +++ b/src/server/package.d @@ -7,8 +7,8 @@ module soulfind.server; @safe: import soulfind.cli : CommandOption, parse_args, print_help, print_version; -import soulfind.defines : default_db_filename, exit_message, log_conn, log_db, - log_msg; +import soulfind.defines : default_db_filename, exit_message, log_bytes_rx, + log_conn, log_db, log_msg; import soulfind.server.server : Server; import std.conv : text, to; import std.stdio : writeln; @@ -18,6 +18,7 @@ int run(string[] args) string db_filename = default_db_filename; ushort port; bool enable_debug; + bool enable_debug_rx_bytes; bool show_version; bool show_help; @@ -36,6 +37,10 @@ int run(string[] args) "", "debug", "Enable debug logging.", null, (_) { enable_debug = true; } ), + CommandOption( + "", "rx-bytes", "Enable debug logging of received bytes.", null, + (_) { enable_debug_rx_bytes = true; } + ), CommandOption( "v", "version", "Show version.", null, (_) { show_version = true; } @@ -65,6 +70,15 @@ int run(string[] args) if (enable_debug) log_db = log_conn = log_msg = true; + if (enable_debug_rx_bytes) { + if (!enable_debug) { + writeln("Warning: '--rx-bytes' flag requires '--debug'"); + } + else { + log_bytes_rx = true; + } + } + auto server = new Server(db_filename); const success = server.listen(port); const exit_code = success ? 0 : 1;