aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorred-001 <red-001@outlook.ie>2017-06-10 12:49:44 +0100
committerLoïc Blot <nerzhul@users.noreply.github.com>2017-06-10 13:49:44 +0200
commit25ae0739ed70be8b6a46bdc98aee4b7e33f478ab (patch)
tree723c05468fb9178a3b6511d98d92f0ced5135c85
parent07be63b28747714903281a4051cecea0dc3e1cb7 (diff)
downloadminetest-25ae0739ed70be8b6a46bdc98aee4b7e33f478ab.tar.gz
minetest-25ae0739ed70be8b6a46bdc98aee4b7e33f478ab.tar.bz2
minetest-25ae0739ed70be8b6a46bdc98aee4b7e33f478ab.zip
Add a server-sided way to remove color codes from incoming chat messages (#5948)
These code be generated by CSM, a modded client or just copy and pasted by the player. Changes - Update configuration example and setting translation file. - Remove colour codes before logging chat. - Add setting to remove colour codes before processing the chat.
-rw-r--r--builtin/settingtypes.txt4
-rw-r--r--minetest.conf.example14
-rw-r--r--src/defaultsettings.cpp1
-rw-r--r--src/server.cpp7
-rw-r--r--src/server.h2
-rw-r--r--src/settings_translation_file.cpp13
6 files changed, 25 insertions, 16 deletions
diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt
index 08cc1fff2..0f2715ab5 100644
--- a/builtin/settingtypes.txt
+++ b/builtin/settingtypes.txt
@@ -721,6 +721,10 @@ server_announce (Announce server) bool false
# If you want to announce your ipv6 address, use serverlist_url = v6.servers.minetest.net.
serverlist_url (Serverlist URL) string servers.minetest.net
+# Remove color codes from incoming chat messages
+# Use this to stop players from being able to use color in their messages
+strip_color_codes (Strip color codes) bool false
+
[*Network]
# Network port to listen (UDP).
diff --git a/minetest.conf.example b/minetest.conf.example
index c43076459..2487dad34 100644
--- a/minetest.conf.example
+++ b/minetest.conf.example
@@ -344,8 +344,8 @@
# serverlist_file = favoriteservers.txt
# Maximum size of the out chat queue. 0 to disable queueing and -1 to make the queue size unlimited
-# type: int min: -1
-max_out_chat_queue_size = 20
+# type: int
+# max_out_chat_queue_size = 20
## Graphics
@@ -555,7 +555,7 @@ max_out_chat_queue_size = 20
# type: int
# screen_h = 600
-# Save the window size automatically when modified.
+# Save window size automatically when modified.
# type: bool
# autosave_screensize = true
@@ -867,11 +867,10 @@ max_out_chat_queue_size = 20
# type: string
# serverlist_url = servers.minetest.net
-# Disable escape sequences, e.g. chat coloring.
-# Use this if you want to run a server with pre-0.4.14 clients and you want to disable
-# the escape sequences generated by mods.
+# Remove color codes from incoming chat messages
+# Use this to stop players from being able to use color in their messages
# type: bool
-# disable_escape_sequences = false
+# strip_color_codes = false
## Network
@@ -1841,3 +1840,4 @@ max_out_chat_queue_size = 20
# Print the engine's profiling data in regular intervals (in seconds). 0 = disable. Useful for developers.
# type: int
# profiler_print_interval = 0
+
diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp
index 53fdc2f18..c10d2cb02 100644
--- a/src/defaultsettings.cpp
+++ b/src/defaultsettings.cpp
@@ -252,6 +252,7 @@ void set_default_settings(Settings *settings)
// Server
settings->setDefault("disable_escape_sequences", "false");
+ settings->setDefault("strip_color_codes", "false");
// Network
settings->setDefault("enable_ipv6", "true");
diff --git a/src/server.cpp b/src/server.cpp
index 52eb97608..179147637 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -2880,12 +2880,15 @@ void Server::handleChatInterfaceEvent(ChatEvent *evt)
}
std::wstring Server::handleChat(const std::string &name, const std::wstring &wname,
- const std::wstring &wmessage, bool check_shout_priv, RemotePlayer *player)
+ std::wstring wmessage, bool check_shout_priv, RemotePlayer *player)
{
// If something goes wrong, this player is to blame
RollbackScopeActor rollback_scope(m_rollback,
std::string("player:") + name);
+ if (g_settings->getBool("strip_color_codes"))
+ wmessage = unescape_enriched(wmessage);
+
if (player) {
switch (player->canSendChatMessage()) {
case RPLAYER_CHATRESULT_FLOODING: {
@@ -2940,7 +2943,7 @@ std::wstring Server::handleChat(const std::string &name, const std::wstring &wna
/*
Send the message to others
*/
- actionstream << "CHAT: " << wide_to_narrow(line) << std::endl;
+ actionstream << "CHAT: " << wide_to_narrow(unescape_enriched(line)) << std::endl;
std::vector<u16> clients = m_clients.getClientIDs();
diff --git a/src/server.h b/src/server.h
index 56706bc61..0ad5dd97a 100644
--- a/src/server.h
+++ b/src/server.h
@@ -488,7 +488,7 @@ private:
// This returns the answer to the sender of wmessage, or "" if there is none
std::wstring handleChat(const std::string &name, const std::wstring &wname,
- const std::wstring &wmessage,
+ std::wstring wmessage_input,
bool check_shout_priv = false,
RemotePlayer *player = NULL);
void handleAdminChat(const ChatEventChat *evt);
diff --git a/src/settings_translation_file.cpp b/src/settings_translation_file.cpp
index bc149aed4..3cd0755a6 100644
--- a/src/settings_translation_file.cpp
+++ b/src/settings_translation_file.cpp
@@ -87,7 +87,7 @@ fake_function() {
gettext("Key for increasing the volume.\nSee http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3");
gettext("Dec. volume key");
gettext("Key for decreasing the volume.\nSee http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3");
- gettext("Autoforward key");
+ gettext("Automatic forwards key");
gettext("Key for toggling autoforward.\nSee http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3");
gettext("Cinematic mode key");
gettext("Key for toggling cinematic mode.\nSee http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3");
@@ -140,6 +140,8 @@ fake_function() {
gettext("URL to the server list displayed in the Multiplayer Tab.");
gettext("Serverlist file");
gettext("File in client/serverlist/ that contains your favorite servers displayed in the Multiplayer Tab.");
+ gettext("Maximum size of the out chat queue");
+ gettext("Maximum size of the out chat queue. 0 to disable queueing and -1 to make the queue size unlimited");
gettext("Graphics");
gettext("In-Game");
gettext("Basic");
@@ -229,6 +231,8 @@ fake_function() {
gettext("Width component of the initial window size.");
gettext("Screen height");
gettext("Height component of the initial window size.");
+ gettext("Autosave Screen Size");
+ gettext("Save window size automatically when modified.");
gettext("Full screen");
gettext("Fullscreen mode.");
gettext("Full screen BPP");
@@ -249,8 +253,6 @@ fake_function() {
gettext("Height on which clouds are appearing.");
gettext("Cloud radius");
gettext("Radius of cloud area stated in number of 64 node cloud squares.\nValues larger than 26 will start to produce sharp cutoffs at cloud area corners.");
- gettext("Enable view bobbing");
- gettext("Enables view bobbing when walking.");
gettext("View bobbing factor");
gettext("Enable view bobbing and amount of view bobbing.\nFor example: 0 for no view bobbing; 1.0 for normal; 2.0 for double.");
gettext("Fall bobbing factor");
@@ -362,8 +364,8 @@ fake_function() {
gettext("Automaticaly report to the serverlist.");
gettext("Serverlist URL");
gettext("Announce to this serverlist.\nIf you want to announce your ipv6 address, use serverlist_url = v6.servers.minetest.net.");
- gettext("Disable escape sequences");
- gettext("Disable escape sequences, e.g. chat coloring.\nUse this if you want to run a server with pre-0.4.14 clients and you want to disable\nthe escape sequences generated by mods.");
+ gettext("Strip color codes");
+ gettext("Remove color codes from incoming chat messages\nUse this to stop players from being able to use color in their messages");
gettext("Network");
gettext("Server port");
gettext("Network port to listen (UDP).\nThis value will be overridden when starting from the main menu.");
@@ -452,7 +454,6 @@ fake_function() {
gettext("Fast mode speed");
gettext("Climbing speed");
gettext("Jumping speed");
- gettext("Descending speed");
gettext("Liquid fluidity");
gettext("Liquid fluidity smoothing");
gettext("Liquid sink");