remove proxy chat filter option

This commit is contained in:
Martin Michelsen
2023-12-25 09:59:30 -08:00
parent 9e48259414
commit 206552ed63
6 changed files with 33 additions and 62 deletions
-1
View File
@@ -23,7 +23,6 @@ static atomic<uint64_t> next_id(1);
void Client::Config::set_flags_for_version(Version version, int64_t sub_version) {
this->set_flag(Flag::PROXY_CHAT_COMMANDS_ENABLED);
this->set_flag(Flag::PROXY_CHAT_FILTER_ENABLED);
switch (sub_version) {
case -1: // Initial check (before sub_version recognition)
+1 -3
View File
@@ -69,7 +69,6 @@ public:
// Proxy option flags
PROXY_SAVE_FILES = 0x0000001000000000,
PROXY_CHAT_COMMANDS_ENABLED = 0x0000002000000000,
PROXY_CHAT_FILTER_ENABLED = 0x0000004000000000,
PROXY_PLAYER_NOTIFICATIONS_ENABLED = 0x0000008000000000,
PROXY_SUPPRESS_CLIENT_PINGS = 0x0000010000000000,
PROXY_SUPPRESS_REMOTE_LOGIN = 0x0000020000000000,
@@ -83,8 +82,7 @@ public:
// clang-format on
};
static constexpr uint64_t DEFAULT_FLAGS = static_cast<uint64_t>(Flag::PROXY_CHAT_COMMANDS_ENABLED) |
static_cast<uint64_t>(Flag::PROXY_CHAT_FILTER_ENABLED);
static constexpr uint64_t DEFAULT_FLAGS = static_cast<uint64_t>(Flag::PROXY_CHAT_COMMANDS_ENABLED);
struct Config {
uint64_t enabled_flags = DEFAULT_FLAGS; // Client::Flag enum
+15 -16
View File
@@ -60,22 +60,21 @@ constexpr uint32_t GO_BACK = 0x99FFFF99;
namespace ProxyOptionsMenuItemID {
constexpr uint32_t GO_BACK = 0xAAFFFFAA;
constexpr uint32_t CHAT_COMMANDS = 0xAA0101AA;
constexpr uint32_t CHAT_FILTER = 0xAA0202AA;
constexpr uint32_t PLAYER_NOTIFICATIONS = 0xAA0303AA;
constexpr uint32_t BLOCK_PINGS = 0xAA0404AA;
constexpr uint32_t INFINITE_HP = 0xAA0505AA;
constexpr uint32_t INFINITE_TP = 0xAA0606AA;
constexpr uint32_t SWITCH_ASSIST = 0xAA0707AA;
constexpr uint32_t BLOCK_EVENTS = 0xAA0808AA;
constexpr uint32_t BLOCK_PATCHES = 0xAA0909AA;
constexpr uint32_t SAVE_FILES = 0xAA0A0AAA;
constexpr uint32_t RED_NAME = 0xAA0B0BAA;
constexpr uint32_t BLANK_NAME = 0xAA0C0CAA;
constexpr uint32_t SUPPRESS_LOGIN = 0xAA0D0DAA;
constexpr uint32_t SKIP_CARD = 0xAA0E0EAA;
constexpr uint32_t EP3_INFINITE_MESETA = 0xAA0F0FAA;
constexpr uint32_t EP3_INFINITE_TIME = 0xAA1010AA;
constexpr uint32_t EP3_UNMASK_WHISPERS = 0xAA1111AA;
constexpr uint32_t PLAYER_NOTIFICATIONS = 0xAA0202AA;
constexpr uint32_t BLOCK_PINGS = 0xAA0303AA;
constexpr uint32_t INFINITE_HP = 0xAA0404AA;
constexpr uint32_t INFINITE_TP = 0xAA0505AA;
constexpr uint32_t SWITCH_ASSIST = 0xAA0606AA;
constexpr uint32_t BLOCK_EVENTS = 0xAA0707AA;
constexpr uint32_t BLOCK_PATCHES = 0xAA0808AA;
constexpr uint32_t SAVE_FILES = 0xAA0909AA;
constexpr uint32_t RED_NAME = 0xAA0A0AAA;
constexpr uint32_t BLANK_NAME = 0xAA0B0BAA;
constexpr uint32_t SUPPRESS_LOGIN = 0xAA0C0CAA;
constexpr uint32_t SKIP_CARD = 0xAA0D0DAA;
constexpr uint32_t EP3_INFINITE_MESETA = 0xAA0E0EAA;
constexpr uint32_t EP3_INFINITE_TIME = 0xAA0F0FAA;
constexpr uint32_t EP3_UNMASK_WHISPERS = 0xAA1010AA;
} // namespace ProxyOptionsMenuItemID
namespace TeamRewardMenuItemID {
+17 -33
View File
@@ -1067,9 +1067,7 @@ static HandlerResult C_GXB_61(shared_ptr<ProxyServer::LinkedSession> ses, uint16
if (is_v4(ses->version())) {
auto& pd = check_size_t<C_CharacterData_BB_61_98>(data, 0xFFFF);
if (ses->config.check_flag(Client::Flag::PROXY_CHAT_FILTER_ENABLED)) {
pd.info_board.encode(add_color(pd.info_board.decode(ses->language())), ses->language());
}
pd.info_board.encode(add_color(pd.info_board.decode(ses->language())), ses->language());
if (ses->config.check_flag(Client::Flag::PROXY_BLANK_NAME_ENABLED)) {
pd.disp.name.encode(" ", ses->language());
modified = true;
@@ -1108,9 +1106,7 @@ static HandlerResult C_GXB_61(shared_ptr<ProxyServer::LinkedSession> ses, uint16
}
pd = &check_size_t<C_CharacterData_V3_61_98>(data, 0xFFFF);
}
if (ses->config.check_flag(Client::Flag::PROXY_CHAT_FILTER_ENABLED)) {
pd->info_board.encode(add_color(pd->info_board.decode(ses->language())), ses->language());
}
pd->info_board.encode(add_color(pd->info_board.decode(ses->language())), ses->language());
if (ses->config.check_flag(Client::Flag::PROXY_BLANK_NAME_ENABLED)) {
pd->disp.visual.name.encode(" ", ses->language());
modified = true;
@@ -1132,28 +1128,24 @@ static HandlerResult C_GXB_61(shared_ptr<ProxyServer::LinkedSession> ses, uint16
return modified ? HandlerResult::Type::MODIFIED : HandlerResult::Type::FORWARD;
}
static HandlerResult C_GX_D9(shared_ptr<ProxyServer::LinkedSession> ses, uint16_t, uint32_t, string& data) {
if (ses->config.check_flag(Client::Flag::PROXY_CHAT_FILTER_ENABLED)) {
data = add_color(data);
// TODO: We should check if the info board text was actually modified and
// return MODIFIED if so.
}
return HandlerResult::Type::FORWARD;
static HandlerResult C_GX_D9(shared_ptr<ProxyServer::LinkedSession>, uint16_t, uint32_t, string& data) {
data = add_color(data);
// TODO: We should check if the info board text was actually modified and
// return FORWARD if not.
return HandlerResult::Type::MODIFIED;
}
static HandlerResult C_B_D9(shared_ptr<ProxyServer::LinkedSession> ses, uint16_t, uint32_t, string& data) {
if (ses->config.check_flag(Client::Flag::PROXY_CHAT_FILTER_ENABLED)) {
try {
string decoded = tt_utf16_to_utf8(data.data(), data.size());
add_color_inplace(decoded);
data = tt_utf8_to_utf16(data.data(), data.size());
} catch (const runtime_error& e) {
ses->log.warning("Failed to replace escape characters in D9 command: %s", e.what());
}
// TODO: We should check if the info board text was actually modified and
// return HandlerResult::MODIFIED if so.
try {
string decoded = tt_utf16_to_utf8(data.data(), data.size());
add_color_inplace(decoded);
data = tt_utf8_to_utf16(data.data(), data.size());
} catch (const runtime_error& e) {
ses->log.warning("Failed to replace escape characters in D9 command: %s", e.what());
}
return HandlerResult::Type::FORWARD;
// TODO: We should check if the info board text was actually modified and
// return HandlerResult::FORWARD if not.
return HandlerResult::Type::MODIFIED;
}
template <typename T>
@@ -1638,21 +1630,13 @@ static HandlerResult C_06(shared_ptr<ProxyServer::LinkedSession> ses, uint16_t,
offset += (text[offset] == command_sentinel) ? 0 : 2;
text = text.substr(offset);
if (text.size() >= 2 && text[1] == command_sentinel) {
if (ses->config.check_flag(Client::Flag::PROXY_CHAT_FILTER_ENABLED)) {
send_chat_message_from_client(ses->server_channel, add_color(text.substr(1)), private_flags);
} else {
send_chat_message_from_client(ses->server_channel, text.substr(1), private_flags);
}
send_chat_message_from_client(ses->server_channel, text.substr(1), private_flags);
return HandlerResult::Type::SUPPRESS;
} else {
on_chat_command(ses, text);
return HandlerResult::Type::SUPPRESS;
}
} else if (ses->config.check_flag(Client::Flag::PROXY_CHAT_FILTER_ENABLED)) {
send_chat_message_from_client(ses->server_channel, add_color(text), private_flags);
return HandlerResult::Type::SUPPRESS;
} else {
return HandlerResult::Type::FORWARD;
}
-5
View File
@@ -49,8 +49,6 @@ static shared_ptr<const Menu> proxy_options_menu_for_client(shared_ptr<const Cli
add_option(ProxyOptionsMenuItemID::CHAT_COMMANDS, Client::Flag::PROXY_CHAT_COMMANDS_ENABLED,
"Chat commands", "Enable chat\ncommands");
add_option(ProxyOptionsMenuItemID::CHAT_FILTER, Client::Flag::PROXY_CHAT_FILTER_ENABLED,
"Chat filter", "Enable escape\nsequences in\nchat messages\nand info board");
add_option(ProxyOptionsMenuItemID::PLAYER_NOTIFICATIONS, Client::Flag::PROXY_PLAYER_NOTIFICATIONS_ENABLED,
"Player notifs", "Show a message\nwhen other players\njoin or leave");
add_option(ProxyOptionsMenuItemID::BLOCK_PINGS, Client::Flag::PROXY_SUPPRESS_CLIENT_PINGS,
@@ -2207,9 +2205,6 @@ static void on_10(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
case ProxyOptionsMenuItemID::CHAT_COMMANDS:
c->config.toggle_flag(Client::Flag::PROXY_CHAT_COMMANDS_ENABLED);
goto resend_proxy_options_menu;
case ProxyOptionsMenuItemID::CHAT_FILTER:
c->config.toggle_flag(Client::Flag::PROXY_CHAT_FILTER_ENABLED);
goto resend_proxy_options_menu;
case ProxyOptionsMenuItemID::PLAYER_NOTIFICATIONS:
c->config.toggle_flag(Client::Flag::PROXY_PLAYER_NOTIFICATIONS_ENABLED);
goto resend_proxy_options_menu;
-4
View File
@@ -772,10 +772,6 @@ Proxy session commands:\n\
auto ses = this->get_proxy_session(session_name);
ses->challenge_rank_color_override = stoul(command_args, nullptr, 16);
} else if (command_name == "set-chat-filter") {
auto ses = this->get_proxy_session(session_name);
set_flag(ses->config, Client::Flag::PROXY_CHAT_FILTER_ENABLED, command_args);
} else if (command_name == "set-infinite-hp") {
auto ses = this->get_proxy_session(session_name);
set_flag(ses->config, Client::Flag::INFINITE_HP_ENABLED, command_args);