From 44bf5a2f50768591ebea14b4405fa5d075735821 Mon Sep 17 00:00:00 2001 From: Jessica James Date: Wed, 3 Nov 2021 16:54:39 -0500 Subject: [PATCH] Add SuppressRconCommandLogs option; renamed some variables from 'sanitize' to 'suppress' --- src/Plugins/RenX/RenX.Relay/RenX_Relay.cpp | 37 +++++++++++++--------- src/Plugins/RenX/RenX.Relay/RenX_Relay.h | 5 +-- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/Plugins/RenX/RenX.Relay/RenX_Relay.cpp b/src/Plugins/RenX/RenX.Relay/RenX_Relay.cpp index 003559b..7490c39 100644 --- a/src/Plugins/RenX/RenX.Relay/RenX_Relay.cpp +++ b/src/Plugins/RenX/RenX.Relay/RenX_Relay.cpp @@ -176,14 +176,15 @@ bool RenX_RelayPlugin::initialize() { m_upstream_hostname = config.get("UpstreamHost"_jrs, "devbot.ren-x.com"); m_upstream_port = config.get("UpstreamPort"_jrs, 21337); m_fake_pings = config.get("FakePings"_jrs, true); - m_fake_ignored_commands = config.get("FakeIgnoredCommands"_jrs, false); // change to true if anything breaks + m_fake_ignored_commands = config.get("FakeSuppressedCommands"_jrs, true); m_sanitize_names = config.get("SanitizeNames"_jrs, true); m_sanitize_ips = config.get("SanitizeIPs"_jrs, true); m_sanitize_hwids = config.get("SanitizeHWIDs"_jrs, true); m_sanitize_steam_ids = config.get("SanitizeSteamIDs"_jrs, true); - m_sanitize_unknown_commands = config.get("SanitizeUnknownCmds"_jrs, true); - m_sanitize_blacklisted_commands = config.get("SanitizeBlacklistedCmds"_jrs, true); + m_suppress_unknown_commands = config.get("SuppressUnknownCmds"_jrs, true); + m_suppress_blacklisted_commands = config.get("SuppressBlacklistedCmds"_jrs, true); m_suppress_chat_logs = config.get("SuppressChatLogs"_jrs, true); + m_suppress_rcon_command_logs = config.get("SuppressRconCommandLogs"_jrs, true); // Populate fake command handlers if (m_fake_pings) { @@ -191,13 +192,13 @@ bool RenX_RelayPlugin::initialize() { } if (m_fake_ignored_commands) { - if (m_sanitize_blacklisted_commands) { + if (m_suppress_blacklisted_commands) { for(auto& command : g_blacklist_commands) { m_fake_command_table.emplace(command, &noop_handler); } // Disable dropping in favor of faking - m_sanitize_blacklisted_commands = false; + m_suppress_blacklisted_commands = false; } } @@ -316,17 +317,23 @@ void RenX_RelayPlugin::RenX_OnRaw(RenX::Server &server, const Jupiter::ReadableS && !server_info.m_response_queue.empty() && tokens.tokens[0] == "lRCON" && tokens.tokens[1] == "Command;" - && tokens.tokens[2] == server.getRCONUsername() && tokens.tokens[3] == "executed:" && tokens.tokens[4].isNotEmpty()) { - // if m_processing_command is already true, there's an unhandled protocol error here, and something is likely to eventually go wrong - if (tokens.tokens[4] == server_info.m_response_queue.front().m_command) { - // This is the next command we're been waiting on; mark processing command and let this go through - server_info.m_processing_command = true; + if (tokens.tokens[2] != server.getRCONUsername()) { + if (m_suppress_rcon_command_logs) { + // Suppress RCON command logs from other RCON users + return; + } } else { - // This command response wasn't requested upstream; suppress it - return; + // if m_processing_command is already true, there's an unhandled protocol error here, and something is likely to eventually go wrong + if (tokens.tokens[4] != server_info.m_response_queue.front().m_command) { + // This command response wasn't requested upstream; suppress it + return; + } + + // This is the next command we're been waiting on; mark processing command and let this go through + server_info.m_processing_command = true; } } @@ -556,12 +563,12 @@ void RenX_RelayPlugin::process_devbot_message(RenX::Server* in_server, const Jup // Sanitize unknown & blacklisted commands if (in_line[0] == 'c' && in_line.size() > 1) { // Sanitize unknown & blacklisted commands - if (m_sanitize_unknown_commands || m_sanitize_blacklisted_commands) { + if (m_suppress_unknown_commands || m_suppress_blacklisted_commands) { Jupiter::ReferenceString command_str = Jupiter::ReferenceString::getToken(in_line, 0, ' '); command_str.shiftRight(1); std::string_view command_view{ command_str.ptr(), command_str.size() }; - if (m_sanitize_unknown_commands + if (m_suppress_unknown_commands && g_known_commands.find(command_view) == g_known_commands.end()) { // Command not in known commands list; ignore it if (m_fake_ignored_commands) { @@ -586,7 +593,7 @@ void RenX_RelayPlugin::process_devbot_message(RenX::Server* in_server, const Jup return; } - if (m_sanitize_blacklisted_commands + if (m_suppress_blacklisted_commands && g_blacklist_commands.find(command_view) != g_blacklist_commands.end()) { // Command is blacklisted; ignore it return; diff --git a/src/Plugins/RenX/RenX.Relay/RenX_Relay.h b/src/Plugins/RenX/RenX.Relay/RenX_Relay.h index 06b7bd2..54b102b 100644 --- a/src/Plugins/RenX/RenX.Relay/RenX_Relay.h +++ b/src/Plugins/RenX/RenX.Relay/RenX_Relay.h @@ -60,9 +60,10 @@ private: bool m_sanitize_ips{}; bool m_sanitize_hwids{}; bool m_sanitize_steam_ids{}; - bool m_sanitize_unknown_commands{}; - bool m_sanitize_blacklisted_commands{}; + bool m_suppress_unknown_commands{}; + bool m_suppress_blacklisted_commands{}; bool m_suppress_chat_logs{}; + bool m_suppress_rcon_command_logs{}; using fake_command_handler = std::function& out_response)>; std::unordered_map m_fake_command_table; };