From 62d049a54a1e7197d3666908dd56f51ff93e18bc Mon Sep 17 00:00:00 2001 From: aryankoul Date: Wed, 1 Apr 2020 12:43:53 +0530 Subject: [PATCH 1/2] [NEW] whitelisting bad words --- app/lib/server/methods/filterBadWords.js | 7 +++++++ app/lib/server/startup/settings.js | 4 ++++ packages/rocketchat-i18n/i18n/en.i18n.json | 2 ++ 3 files changed, 13 insertions(+) diff --git a/app/lib/server/methods/filterBadWords.js b/app/lib/server/methods/filterBadWords.js index e7bb446428268..1da6096d613b1 100644 --- a/app/lib/server/methods/filterBadWords.js +++ b/app/lib/server/methods/filterBadWords.js @@ -6,6 +6,7 @@ import { callbacks } from '../../../callbacks'; callbacks.add('beforeSaveMessage', function(message) { if (settings.get('Message_AllowBadWordsFilter')) { const badWordsList = settings.get('Message_BadWordsFilterList'); + let whiteList = settings.get('Message_BadWordsWhitelist'); let options; // Add words to the blacklist @@ -15,6 +16,12 @@ callbacks.add('beforeSaveMessage', function(message) { }; } const filter = new Filter(options); + + if (!!whiteList && whiteList.length) { + whiteList = whiteList.split(',').map((word) => word.trim()); + filter.removeWords(...whiteList); + } + message.msg = filter.clean(message.msg); } diff --git a/app/lib/server/startup/settings.js b/app/lib/server/startup/settings.js index 2e87a40b2eb67..7109f68702689 100644 --- a/app/lib/server/startup/settings.js +++ b/app/lib/server/startup/settings.js @@ -1025,6 +1025,10 @@ settings.addGroup('Message', function() { type: 'string', public: true, }); + this.add('Message_BadWordsWhitelist', '', { + type: 'string', + public: true, + }); this.add('Message_KeepHistory', false, { type: 'boolean', public: true, diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 110f01e9b262b..5915a366a15fe 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -2293,6 +2293,8 @@ "Message_AudioRecorderEnabled_Description": "Requires 'audio/mp3' files to be an accepted media type within 'File Upload' settings.", "Message_BadWordsFilterList": "Add Bad Words to the Blacklist", "Message_BadWordsFilterListDescription": "Add List of Comma-separated list of bad words to filter", + "Message_BadWordsWhitelist": "Remove words from the Blacklist", + "Message_BadWordsWhitelistDescription": "Add List of Comma-separated list of words to be removed from filter", "MessageBox_view_mode": "MessageBox View Mode", "message_counter": "__counter__ message", "message_counter_plural": "__counter__ messages", From 9b9fbb2b113cacceba89820cf5cdd52b655ca802 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Tue, 27 Oct 2020 09:33:14 -0300 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: pierre-lehnen-rc <55164754+pierre-lehnen-rc@users.noreply.github.com> --- app/lib/server/methods/filterBadWords.js | 2 +- packages/rocketchat-i18n/i18n/en.i18n.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/lib/server/methods/filterBadWords.js b/app/lib/server/methods/filterBadWords.js index 1da6096d613b1..0e09a31d17771 100644 --- a/app/lib/server/methods/filterBadWords.js +++ b/app/lib/server/methods/filterBadWords.js @@ -17,7 +17,7 @@ callbacks.add('beforeSaveMessage', function(message) { } const filter = new Filter(options); - if (!!whiteList && whiteList.length) { + if (whiteList?.length) { whiteList = whiteList.split(',').map((word) => word.trim()); filter.removeWords(...whiteList); } diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index d5d0bd708e3bc..a227de788ef9a 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -2468,7 +2468,7 @@ "Message_BadWordsFilterList": "Add Bad Words to the Blacklist", "Message_BadWordsFilterListDescription": "Add List of Comma-separated list of bad words to filter", "Message_BadWordsWhitelist": "Remove words from the Blacklist", - "Message_BadWordsWhitelistDescription": "Add List of Comma-separated list of words to be removed from filter", + "Message_BadWordsWhitelistDescription": "Add a comma-separated list of words to be removed from filter", "Message_Characther_Limit": "Message Characther Limit", "MessageBox_view_mode": "MessageBox View Mode", "message_counter": "__counter__ message",