remove proxy chat filter option
This commit is contained in:
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user