From b97231b45b4aa67d40de179baa94e6358451a553 Mon Sep 17 00:00:00 2001 From: Marcelo Schmidt Date: Tue, 29 Sep 2015 21:37:27 -0300 Subject: [PATCH] Rate limit user messages to 5/s --- packages/rocketchat-lib/lib/rateLimiter.coffee | 11 +++++++++++ packages/rocketchat-lib/package.js | 2 ++ 2 files changed, 13 insertions(+) create mode 100644 packages/rocketchat-lib/lib/rateLimiter.coffee diff --git a/packages/rocketchat-lib/lib/rateLimiter.coffee b/packages/rocketchat-lib/lib/rateLimiter.coffee new file mode 100644 index 00000000000..c566b671a71 --- /dev/null +++ b/packages/rocketchat-lib/lib/rateLimiter.coffee @@ -0,0 +1,11 @@ +# Limit sending messages to 5 messages per second per user +DDPRateLimiter.addRule + userId: (userId) -> + return Meteor.users.findOne(userId)?.username isnt RocketChat.settings.get('RocketBot_Name') + clientAddress: null + type: 'method' + name: 'sendMessage' + connectionId: -> + return true +, 5, 1000 + diff --git a/packages/rocketchat-lib/package.js b/packages/rocketchat-lib/package.js index 71da41c68a1..74ac38a2b8c 100644 --- a/packages/rocketchat-lib/package.js +++ b/packages/rocketchat-lib/package.js @@ -13,6 +13,7 @@ Package.onUse(function(api) { api.use('coffeescript'); api.use('random'); api.use('check'); + api.use('ddp-rate-limiter'); api.use('underscore'); api.use('underscorestring:underscore.string'); api.use('monbro:mongodb-mapreduce-aggregation@1.0.1'); @@ -34,6 +35,7 @@ Package.onUse(function(api) { // COMMON api.addFiles('lib/core.coffee'); api.addFiles('lib/callbacks.coffee'); + api.addFiles('lib/rateLimiter.coffee'); api.addFiles('lib/slashCommand.coffee'); // MODELS SERVER