From 24442649aa7332dbb0964c64f69123db962f7f43 Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Thu, 30 Mar 2017 15:32:00 -0300 Subject: [PATCH 1/5] Convert Shared Secret Package to Js --- packages/rocketchat-sharedsecret/package.js | 3 +- .../sharedsecret.coffee | 82 -------------- .../rocketchat-sharedsecret/sharedsecret.js | 106 ++++++++++++++++++ 3 files changed, 107 insertions(+), 84 deletions(-) delete mode 100644 packages/rocketchat-sharedsecret/sharedsecret.coffee create mode 100644 packages/rocketchat-sharedsecret/sharedsecret.js diff --git a/packages/rocketchat-sharedsecret/package.js b/packages/rocketchat-sharedsecret/package.js index a3eaeda0b9da..cf7cb74b4165 100644 --- a/packages/rocketchat-sharedsecret/package.js +++ b/packages/rocketchat-sharedsecret/package.js @@ -8,11 +8,10 @@ Package.describe({ Package.onUse(function(api) { api.use([ 'ecmascript', - 'coffeescript', 'rocketchat:lib' ]); api.use(['jparker:crypto-aes'], ['server', 'client']); - api.addFiles('sharedsecret.coffee', ['server', 'client']); + api.addFiles('sharedsecret.js', ['server', 'client']); }); diff --git a/packages/rocketchat-sharedsecret/sharedsecret.coffee b/packages/rocketchat-sharedsecret/sharedsecret.coffee deleted file mode 100644 index fea6bb3e2298..000000000000 --- a/packages/rocketchat-sharedsecret/sharedsecret.coffee +++ /dev/null @@ -1,82 +0,0 @@ -SharedSecret = [] - -if (Meteor.isServer) - class EncryptMessage - constructor: (message) -> - currentUser = Meteor.user()._id - currentRoomId = message.rid - - if(SharedSecret? && SharedSecret[currentUser]? && SharedSecret[currentUser][currentRoomId]?) - currentSecret = SharedSecret[currentUser][currentRoomId] - encrypted = CryptoJS.AES.encrypt(message.msg, currentSecret) - message.msg = encrypted.toString() - - #urls - if(message.urls) - for urls in message.urls - urls.url = CryptoJS.AES.encrypt(urls.url, currentSecret).toString() - - message.encrypted = true - - return message - - class HandleSlashCommand - constructor: (command, params, item) -> - if(command == "setsecretkey") - currentUser = Meteor.user()._id - currentRoomId = item.rid - secret = params - - if(secret == "off") - secret = null - - if(SharedSecret[currentUser]?) - SharedSecret[currentUser][currentRoomId] = secret - else - SharedSecret[currentUser] = [] - SharedSecret[currentUser][currentRoomId] = secret - - RocketChat.callbacks.add 'beforeSaveMessage', EncryptMessage, 9999, 'sharedsecret-encrypt-message' #LAST - RocketChat.slashCommands.add 'setsecretkey', HandleSlashCommand - -if (Meteor.isClient) - class DecryptMessage - constructor: (message) -> - if(message.encrypted) - currentRoomId = message.rid - currentSecret = localStorage.getItem("rocket.chat.sharedSecretKey.#{currentRoomId}") - - if(currentSecret?) - decrypted = CryptoJS.AES.decrypt(message.msg, currentSecret).toString(CryptoJS.enc.Utf8) - - if(decrypted == "") - message.msg = "~ encrypted message ~" - message.html = "~ encrypted message ~" - else - lockImage = "images/lock8.png" - message.msg = " " + decrypted - message.html = " " + decrypted - - #urls - if(message.urls) - for urls in message.urls - urls.url = CryptoJS.AES.decrypt(urls.url, currentSecret).toString(CryptoJS.enc.Utf8) - else - message.msg = "~ encrypted message ~" - message.html = "~ encrypted message ~" - - return message - - class HandleSlashCommand - constructor: (command, params, item) -> - if(command == "setsecretkey") - secret = params - if(secret == "off") - secret = null - currentRoomId = item.rid - localStorage.setItem("rocket.chat.sharedSecretKey.#{currentRoomId}", secret) - - - - RocketChat.callbacks.add 'renderMessage', DecryptMessage, -9999, 'sharedsecret-decrypt-message' #FIRST - RocketChat.slashCommands.add 'setsecretkey', HandleSlashCommand diff --git a/packages/rocketchat-sharedsecret/sharedsecret.js b/packages/rocketchat-sharedsecret/sharedsecret.js new file mode 100644 index 000000000000..d0d2b7154423 --- /dev/null +++ b/packages/rocketchat-sharedsecret/sharedsecret.js @@ -0,0 +1,106 @@ +/* globals HandleSlashCommand */ +const SharedSecret = []; + +if (Meteor.isServer) { + const EncryptMessage = (() => { + function EncryptMessage(message) { + const currentUser = Meteor.user()._id; + if (message) { + const currentRoomId = message.rid; + if (SharedSecret && SharedSecret[currentUser] && SharedSecret[currentUser][currentRoomId]) { + const currentSecret = SharedSecret[currentUser][currentRoomId]; + const encrypted = CryptoJS.AES.encrypt(message.msg, currentSecret); + message.msg = encrypted.toString(); + if (message.urls) { + const messageUrls = message.urls; + messageUrls.forEach((i) => { + const urls = messageUrls[i]; + urls.url = CryptoJS.AES.encrypt(urls.url, currentSecret).toString(); + }); + } + message.encrypted = true; + } + return message; + } + } + + return EncryptMessage; + + }); + const HandleSlashCommand = (() => { + function HandleSlashCommand(command, params, item) { + if (command === 'setsecretkey') { + const currentUser = Meteor.user()._id; + const currentRoomId = item.rid; + let secret = params; + if (secret === 'off') { + secret = null; + } + if (SharedSecret && SharedSecret[currentUser]) { + SharedSecret[currentUser][currentRoomId] = secret; + } else { + SharedSecret[currentUser] = []; + SharedSecret[currentUser][currentRoomId] = secret; + } + } + } + + return HandleSlashCommand; + + }); + RocketChat.callbacks.add('beforeSaveMessage', EncryptMessage, 9999, 'sharedsecret-encrypt-message'); + RocketChat.slashCommands.add('setsecretkey', HandleSlashCommand); +} + +if (Meteor.isClient) { + const DecryptMessage = (() => { + function DecryptMessage(message) { + if (message && message.encrypted) { + const currentRoomId = message.rid; + const currentSecret = localStorage.getItem(`rocket.chat.sharedSecretKey.${ currentRoomId }`); + if (currentSecret) { + const decrypted = CryptoJS.AES.decrypt(message.msg, currentSecret).toString(CryptoJS.enc.Utf8); + if (decrypted === '') { + message.msg = '~ encrypted message ~'; + message.html = '~ encrypted message ~'; + } else { + const lockImage = 'images/lock8.png'; + message.msg = ` ${ decrypted }`; + message.html = ` ${ decrypted }`; + } + if (message.urls) { + const messageUrls = message.urls; + messageUrls.forEach((i) => { + const urls = messageUrls[i]; + urls.url = CryptoJS.AES.decrypt(urls.url, currentSecret).toString(CryptoJS.enc.Utf8); + }); + } + } else { + message.msg = '~ encrypted message ~'; + message.html = '~ encrypted message ~'; + } + } + return message; + } + + return DecryptMessage; + + }); + HandleSlashCommand = (() => { + function HandleSlashCommand(command, params, item) { + if (command === 'setsecretkey') { + let secret = params; + if (secret === 'off') { + secret = null; + } + const currentRoomId = item.rid; + localStorage.setItem(`rocket.chat.sharedSecretKey.${ currentRoomId }`, secret); + } + } + + return HandleSlashCommand; + + }); + RocketChat.callbacks.add('renderMessage', DecryptMessage, -9999, 'sharedsecret-decrypt-message'); + RocketChat.slashCommands.add('setsecretkey', HandleSlashCommand); +} From 0bbeb8cda5b368db03d0662825c707568ff820b1 Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Thu, 30 Mar 2017 16:35:27 -0300 Subject: [PATCH 2/5] fix self calling functions --- .../rocketchat-sharedsecret/sharedsecret.js | 142 ++++++++---------- 1 file changed, 62 insertions(+), 80 deletions(-) diff --git a/packages/rocketchat-sharedsecret/sharedsecret.js b/packages/rocketchat-sharedsecret/sharedsecret.js index d0d2b7154423..9d9718238800 100644 --- a/packages/rocketchat-sharedsecret/sharedsecret.js +++ b/packages/rocketchat-sharedsecret/sharedsecret.js @@ -2,105 +2,87 @@ const SharedSecret = []; if (Meteor.isServer) { - const EncryptMessage = (() => { - function EncryptMessage(message) { - const currentUser = Meteor.user()._id; - if (message) { - const currentRoomId = message.rid; - if (SharedSecret && SharedSecret[currentUser] && SharedSecret[currentUser][currentRoomId]) { - const currentSecret = SharedSecret[currentUser][currentRoomId]; - const encrypted = CryptoJS.AES.encrypt(message.msg, currentSecret); - message.msg = encrypted.toString(); - if (message.urls) { - const messageUrls = message.urls; - messageUrls.forEach((i) => { - const urls = messageUrls[i]; - urls.url = CryptoJS.AES.encrypt(urls.url, currentSecret).toString(); - }); - } - message.encrypted = true; + const EncryptMessage = ((message) => { + const currentUser = Meteor.user()._id; + if (message) { + const currentRoomId = message.rid; + if (SharedSecret && SharedSecret[currentUser] && SharedSecret[currentUser][currentRoomId]) { + const currentSecret = SharedSecret[currentUser][currentRoomId]; + const encrypted = CryptoJS.AES.encrypt(message.msg, currentSecret); + message.msg = encrypted.toString(); + if (message.urls) { + const messageUrls = message.urls; + messageUrls.forEach((i) => { + const urls = messageUrls[i]; + urls.url = CryptoJS.AES.encrypt(urls.url, currentSecret).toString(); + }); } - return message; + message.encrypted = true; } } + return message; + })(); - return EncryptMessage; - - }); - const HandleSlashCommand = (() => { - function HandleSlashCommand(command, params, item) { - if (command === 'setsecretkey') { - const currentUser = Meteor.user()._id; - const currentRoomId = item.rid; - let secret = params; - if (secret === 'off') { - secret = null; - } - if (SharedSecret && SharedSecret[currentUser]) { - SharedSecret[currentUser][currentRoomId] = secret; - } else { - SharedSecret[currentUser] = []; - SharedSecret[currentUser][currentRoomId] = secret; - } + const HandleSlashCommand = ((command, params, item) => { + if (command === 'setsecretkey') { + const currentUser = Meteor.user()._id; + const currentRoomId = item.rid; + let secret = params; + if (secret === 'off') { + secret = null; + } + if (SharedSecret && SharedSecret[currentUser]) { + SharedSecret[currentUser][currentRoomId] = secret; + } else { + SharedSecret[currentUser] = []; + SharedSecret[currentUser][currentRoomId] = secret; } } - - return HandleSlashCommand; - - }); + })(); RocketChat.callbacks.add('beforeSaveMessage', EncryptMessage, 9999, 'sharedsecret-encrypt-message'); RocketChat.slashCommands.add('setsecretkey', HandleSlashCommand); } if (Meteor.isClient) { - const DecryptMessage = (() => { - function DecryptMessage(message) { - if (message && message.encrypted) { - const currentRoomId = message.rid; - const currentSecret = localStorage.getItem(`rocket.chat.sharedSecretKey.${ currentRoomId }`); - if (currentSecret) { - const decrypted = CryptoJS.AES.decrypt(message.msg, currentSecret).toString(CryptoJS.enc.Utf8); - if (decrypted === '') { - message.msg = '~ encrypted message ~'; - message.html = '~ encrypted message ~'; - } else { - const lockImage = 'images/lock8.png'; - message.msg = ` ${ decrypted }`; - message.html = ` ${ decrypted }`; - } - if (message.urls) { - const messageUrls = message.urls; - messageUrls.forEach((i) => { - const urls = messageUrls[i]; - urls.url = CryptoJS.AES.decrypt(urls.url, currentSecret).toString(CryptoJS.enc.Utf8); - }); - } - } else { + const DecryptMessage = ((message) => { + if (message && message.encrypted) { + const currentRoomId = message.rid; + const currentSecret = localStorage.getItem(`rocket.chat.sharedSecretKey.${ currentRoomId }`); + if (currentSecret) { + const decrypted = CryptoJS.AES.decrypt(message.msg, currentSecret).toString(CryptoJS.enc.Utf8); + if (decrypted === '') { message.msg = '~ encrypted message ~'; message.html = '~ encrypted message ~'; + } else { + const lockImage = 'images/lock8.png'; + message.msg = ` ${ decrypted }`; + message.html = ` ${ decrypted }`; + } + if (message.urls) { + const messageUrls = message.urls; + messageUrls.forEach((i) => { + const urls = messageUrls[i]; + urls.url = CryptoJS.AES.decrypt(urls.url, currentSecret).toString(CryptoJS.enc.Utf8); + }); } + } else { + message.msg = '~ encrypted message ~'; + message.html = '~ encrypted message ~'; } - return message; } + return message; + })(); - return DecryptMessage; - - }); - HandleSlashCommand = (() => { - function HandleSlashCommand(command, params, item) { - if (command === 'setsecretkey') { - let secret = params; - if (secret === 'off') { - secret = null; - } - const currentRoomId = item.rid; - localStorage.setItem(`rocket.chat.sharedSecretKey.${ currentRoomId }`, secret); + const HandleSlashCommand = ((command, params, item) => { + if (command === 'setsecretkey') { + let secret = params; + if (secret === 'off') { + secret = null; } + const currentRoomId = item.rid; + localStorage.setItem(`rocket.chat.sharedSecretKey.${ currentRoomId }`, secret); } - - return HandleSlashCommand; - - }); + })(); RocketChat.callbacks.add('renderMessage', DecryptMessage, -9999, 'sharedsecret-decrypt-message'); RocketChat.slashCommands.add('setsecretkey', HandleSlashCommand); } From 3a0f18c91b75dd351f98a280f4c08b131366881d Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Thu, 30 Mar 2017 16:46:46 -0300 Subject: [PATCH 3/5] fix wrong globals --- packages/rocketchat-sharedsecret/sharedsecret.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/rocketchat-sharedsecret/sharedsecret.js b/packages/rocketchat-sharedsecret/sharedsecret.js index 9d9718238800..931edea85ac6 100644 --- a/packages/rocketchat-sharedsecret/sharedsecret.js +++ b/packages/rocketchat-sharedsecret/sharedsecret.js @@ -1,4 +1,3 @@ -/* globals HandleSlashCommand */ const SharedSecret = []; if (Meteor.isServer) { From ba79fc5394e08836ff55e7391d2c3736547ca18f Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Thu, 30 Mar 2017 17:57:50 -0300 Subject: [PATCH 4/5] fix functions --- .../rocketchat-sharedsecret/sharedsecret.js | 142 +++++++++--------- 1 file changed, 71 insertions(+), 71 deletions(-) diff --git a/packages/rocketchat-sharedsecret/sharedsecret.js b/packages/rocketchat-sharedsecret/sharedsecret.js index 931edea85ac6..8b3653a19181 100644 --- a/packages/rocketchat-sharedsecret/sharedsecret.js +++ b/packages/rocketchat-sharedsecret/sharedsecret.js @@ -1,87 +1,87 @@ const SharedSecret = []; -if (Meteor.isServer) { - const EncryptMessage = ((message) => { - const currentUser = Meteor.user()._id; - if (message) { - const currentRoomId = message.rid; - if (SharedSecret && SharedSecret[currentUser] && SharedSecret[currentUser][currentRoomId]) { - const currentSecret = SharedSecret[currentUser][currentRoomId]; - const encrypted = CryptoJS.AES.encrypt(message.msg, currentSecret); - message.msg = encrypted.toString(); - if (message.urls) { - const messageUrls = message.urls; - messageUrls.forEach((i) => { - const urls = messageUrls[i]; - urls.url = CryptoJS.AES.encrypt(urls.url, currentSecret).toString(); - }); - } - message.encrypted = true; +function EncryptMessage(message) { + const currentUser = Meteor.user()._id; + if (message) { + const currentRoomId = message.rid; + if (SharedSecret && SharedSecret[currentUser] && SharedSecret[currentUser][currentRoomId]) { + const currentSecret = SharedSecret[currentUser][currentRoomId]; + const encrypted = CryptoJS.AES.encrypt(message.msg, currentSecret); + message.msg = encrypted.toString(); + if (message.urls) { + const messageUrls = message.urls; + messageUrls.forEach((i) => { + const urls = messageUrls[i]; + urls.url = CryptoJS.AES.encrypt(urls.url, currentSecret).toString(); + }); } + message.encrypted = true; } - return message; - })(); + } + return message; +} - const HandleSlashCommand = ((command, params, item) => { - if (command === 'setsecretkey') { - const currentUser = Meteor.user()._id; - const currentRoomId = item.rid; - let secret = params; - if (secret === 'off') { - secret = null; - } - if (SharedSecret && SharedSecret[currentUser]) { - SharedSecret[currentUser][currentRoomId] = secret; - } else { - SharedSecret[currentUser] = []; - SharedSecret[currentUser][currentRoomId] = secret; - } +function HandleSlashCommand(command, params, item) { + if (command === 'setsecretkey') { + const currentUser = Meteor.user()._id; + const currentRoomId = item.rid; + let secret = params; + if (secret === 'off') { + secret = null; } - })(); - RocketChat.callbacks.add('beforeSaveMessage', EncryptMessage, 9999, 'sharedsecret-encrypt-message'); - RocketChat.slashCommands.add('setsecretkey', HandleSlashCommand); + if (SharedSecret && SharedSecret[currentUser]) { + SharedSecret[currentUser][currentRoomId] = secret; + } else { + SharedSecret[currentUser] = []; + SharedSecret[currentUser][currentRoomId] = secret; + } + } } -if (Meteor.isClient) { - const DecryptMessage = ((message) => { - if (message && message.encrypted) { - const currentRoomId = message.rid; - const currentSecret = localStorage.getItem(`rocket.chat.sharedSecretKey.${ currentRoomId }`); - if (currentSecret) { - const decrypted = CryptoJS.AES.decrypt(message.msg, currentSecret).toString(CryptoJS.enc.Utf8); - if (decrypted === '') { - message.msg = '~ encrypted message ~'; - message.html = '~ encrypted message ~'; - } else { - const lockImage = 'images/lock8.png'; - message.msg = ` ${ decrypted }`; - message.html = ` ${ decrypted }`; - } - if (message.urls) { - const messageUrls = message.urls; - messageUrls.forEach((i) => { - const urls = messageUrls[i]; - urls.url = CryptoJS.AES.decrypt(urls.url, currentSecret).toString(CryptoJS.enc.Utf8); - }); - } - } else { +function DecryptMessage(message) { + if (message && message.encrypted) { + const currentRoomId = message.rid; + const currentSecret = localStorage.getItem(`rocket.chat.sharedSecretKey.${ currentRoomId }`); + if (currentSecret) { + const decrypted = CryptoJS.AES.decrypt(message.msg, currentSecret).toString(CryptoJS.enc.Utf8); + if (decrypted === '') { message.msg = '~ encrypted message ~'; message.html = '~ encrypted message ~'; + } else { + const lockImage = 'images/lock8.png'; + message.msg = ` ${ decrypted }`; + message.html = ` ${ decrypted }`; + } + if (message.urls) { + const messageUrls = message.urls; + messageUrls.forEach((urls) => { + urls.url = CryptoJS.AES.decrypt(urls.url, currentSecret).toString(CryptoJS.enc.Utf8); + }); } + } else { + message.msg = '~ encrypted message ~'; + message.html = '~ encrypted message ~'; } - return message; - })(); + } + return message; +} - const HandleSlashCommand = ((command, params, item) => { - if (command === 'setsecretkey') { - let secret = params; - if (secret === 'off') { - secret = null; - } - const currentRoomId = item.rid; - localStorage.setItem(`rocket.chat.sharedSecretKey.${ currentRoomId }`, secret); +function HandleSlashCommandClient(command, params, item) { + if (command === 'setsecretkey') { + let secret = params; + if (secret === 'off') { + secret = null; } - })(); - RocketChat.callbacks.add('renderMessage', DecryptMessage, -9999, 'sharedsecret-decrypt-message'); + const currentRoomId = item.rid; + localStorage.setItem(`rocket.chat.sharedSecretKey.${ currentRoomId }`, secret); + } +} +if (Meteor.isServer) { + RocketChat.callbacks.add('beforeSaveMessage', EncryptMessage, 9999, 'sharedsecret-encrypt-message'); RocketChat.slashCommands.add('setsecretkey', HandleSlashCommand); } + +if (Meteor.isClient) { + RocketChat.callbacks.add('renderMessage', DecryptMessage, -9999, 'sharedsecret-decrypt-message'); + RocketChat.slashCommands.add('setsecretkey', HandleSlashCommandClient); +} From 604ac23dd28004e8476ab63f2137bcd1014ed861 Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Fri, 31 Mar 2017 16:31:13 -0300 Subject: [PATCH 5/5] remove shared secret package and update history --- HISTORY.md | 1 + packages/rocketchat-sharedsecret/package.js | 17 ---- .../rocketchat-sharedsecret/sharedsecret.js | 87 ------------------- 3 files changed, 1 insertion(+), 104 deletions(-) delete mode 100644 packages/rocketchat-sharedsecret/package.js delete mode 100644 packages/rocketchat-sharedsecret/sharedsecret.js diff --git a/HISTORY.md b/HISTORY.md index 7942415e375f..d47b699a3ce4 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -7,6 +7,7 @@ - [NEW] Option to enable `Two Factor Authentication` in user's account preference - [FIX] Incoming integrations would break when trying to use the `Store` feature. - [FIX] Outgoing webhooks which have an error and they're retrying would still retry even if the integration was disabled. (#4835) +- [FIX] Removed Deprecated Package rocketchat:sharedsecret. ## 0.54.2 - 2017-Mar-24 diff --git a/packages/rocketchat-sharedsecret/package.js b/packages/rocketchat-sharedsecret/package.js deleted file mode 100644 index cf7cb74b4165..000000000000 --- a/packages/rocketchat-sharedsecret/package.js +++ /dev/null @@ -1,17 +0,0 @@ -Package.describe({ - name: 'rocketchat:sharedsecret', - version: '0.0.1', - summary: 'RocketChat libraries', - git: '' -}); - -Package.onUse(function(api) { - api.use([ - 'ecmascript', - 'rocketchat:lib' - ]); - - api.use(['jparker:crypto-aes'], ['server', 'client']); - - api.addFiles('sharedsecret.js', ['server', 'client']); -}); diff --git a/packages/rocketchat-sharedsecret/sharedsecret.js b/packages/rocketchat-sharedsecret/sharedsecret.js deleted file mode 100644 index 8b3653a19181..000000000000 --- a/packages/rocketchat-sharedsecret/sharedsecret.js +++ /dev/null @@ -1,87 +0,0 @@ -const SharedSecret = []; - -function EncryptMessage(message) { - const currentUser = Meteor.user()._id; - if (message) { - const currentRoomId = message.rid; - if (SharedSecret && SharedSecret[currentUser] && SharedSecret[currentUser][currentRoomId]) { - const currentSecret = SharedSecret[currentUser][currentRoomId]; - const encrypted = CryptoJS.AES.encrypt(message.msg, currentSecret); - message.msg = encrypted.toString(); - if (message.urls) { - const messageUrls = message.urls; - messageUrls.forEach((i) => { - const urls = messageUrls[i]; - urls.url = CryptoJS.AES.encrypt(urls.url, currentSecret).toString(); - }); - } - message.encrypted = true; - } - } - return message; -} - -function HandleSlashCommand(command, params, item) { - if (command === 'setsecretkey') { - const currentUser = Meteor.user()._id; - const currentRoomId = item.rid; - let secret = params; - if (secret === 'off') { - secret = null; - } - if (SharedSecret && SharedSecret[currentUser]) { - SharedSecret[currentUser][currentRoomId] = secret; - } else { - SharedSecret[currentUser] = []; - SharedSecret[currentUser][currentRoomId] = secret; - } - } -} - -function DecryptMessage(message) { - if (message && message.encrypted) { - const currentRoomId = message.rid; - const currentSecret = localStorage.getItem(`rocket.chat.sharedSecretKey.${ currentRoomId }`); - if (currentSecret) { - const decrypted = CryptoJS.AES.decrypt(message.msg, currentSecret).toString(CryptoJS.enc.Utf8); - if (decrypted === '') { - message.msg = '~ encrypted message ~'; - message.html = '~ encrypted message ~'; - } else { - const lockImage = 'images/lock8.png'; - message.msg = ` ${ decrypted }`; - message.html = ` ${ decrypted }`; - } - if (message.urls) { - const messageUrls = message.urls; - messageUrls.forEach((urls) => { - urls.url = CryptoJS.AES.decrypt(urls.url, currentSecret).toString(CryptoJS.enc.Utf8); - }); - } - } else { - message.msg = '~ encrypted message ~'; - message.html = '~ encrypted message ~'; - } - } - return message; -} - -function HandleSlashCommandClient(command, params, item) { - if (command === 'setsecretkey') { - let secret = params; - if (secret === 'off') { - secret = null; - } - const currentRoomId = item.rid; - localStorage.setItem(`rocket.chat.sharedSecretKey.${ currentRoomId }`, secret); - } -} -if (Meteor.isServer) { - RocketChat.callbacks.add('beforeSaveMessage', EncryptMessage, 9999, 'sharedsecret-encrypt-message'); - RocketChat.slashCommands.add('setsecretkey', HandleSlashCommand); -} - -if (Meteor.isClient) { - RocketChat.callbacks.add('renderMessage', DecryptMessage, -9999, 'sharedsecret-decrypt-message'); - RocketChat.slashCommands.add('setsecretkey', HandleSlashCommandClient); -}