From 729f6d3df5c1fb31c5e6801ab30474d8e16004f1 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 15 Aug 2018 12:17:15 +0100 Subject: [PATCH] [Feature] Add more ratelimits: by digest, by attachments data, by filenames --- src/plugins/lua/ratelimit.lua | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/plugins/lua/ratelimit.lua b/src/plugins/lua/ratelimit.lua index c6caf6d41..59f3c0522 100644 --- a/src/plugins/lua/ratelimit.lua +++ b/src/plugins/lua/ratelimit.lua @@ -335,6 +335,48 @@ local keywords = { return task:get_principal_recipient() end, }, + ['digest'] = { + ['get_value'] = function(task) + return task:get_digest() + end, + }, + ['attachments'] = { + ['get_value'] = function(task) + local parts = task:get_parts() or E + local digests = {} + + for _,p in ipairs(parts) do + if p:get_filename() then + table.insert(digests, p:get_digest()) + end + end + + if #digests > 0 then + return table.concat(digests, '') + end + + return nil + end, + }, + ['files'] = { + ['get_value'] = function(task) + local parts = task:get_parts() or E + local files = {} + + for _,p in ipairs(parts) do + local fname = p:get_filename() + if fname then + table.insert(files, fname) + end + end + + if #files > 0 then + return table.concat(files, ':') + end + + return nil + end, + }, } local function gen_rate_key(task, rtype, bucket) -- 2.39.5