Преглед на файлове

[Minor] Ratelimit: support use of redis HSET for limits

tags/1.7.0
Andrew Lewis преди 6 години
родител
ревизия
7ea56e5b36
променени са 3 файла, в които са добавени 24 реда и са изтрити 2 реда
  1. 4
    0
      .luacheckrc
  2. 5
    0
      lualib/lua_util.lua
  3. 15
    2
      src/plugins/lua/ratelimit.lua

+ 4
- 0
.luacheckrc Целия файл

@@ -41,6 +41,10 @@ files['/**/src/plugins/lua/greylist.lua'].globals = {
'math.ifloor',
}

files['/**/lualib/lua_util.lua'].globals = {
'unpack',
}

files['/**/src/rspamadm/*'].globals = {
'ansicolors',
'getopt',

+ 5
- 0
lualib/lua_util.lua Целия файл

@@ -144,4 +144,9 @@ exports.is_rspamc_or_controller = function(task)
return is_rspamc
end

local unpack_function = table.unpack or unpack
exports.unpack = function(t)
return unpack_function(t)
end

return exports

+ 15
- 2
src/plugins/lua/ratelimit.lua Целия файл

@@ -38,6 +38,7 @@ local rl_prefix = 'RL'
local ip_score_lower_bound = 10
local ip_score_ham_multiplier = 1.1
local ip_score_spam_divisor = 1.1
local limits_hash

local message_func = function(_, limit_type)
return string.format('Ratelimit "%s" exceeded', limit_type)
@@ -511,13 +512,21 @@ local function ratelimit_cb(task)
return process_buckets(task, args)
end
end
local params, method
if limits_hash then
params = {limits_hash, rspamd_lua_utils.unpack(redis_keys)}
method = 'HMGET'
else
method = 'MGET'
params = redis_keys
end
local requested_keys = rspamd_redis_make_request(task,
redis_params, -- connect params
nil, -- hash key
true, -- is write
collect_cb, --callback
'MGET', -- command
redis_keys -- arguments
method, -- command
params -- arguments
)
if not requested_keys then
rspamd_logger.errx(task, 'got error connecting to redis')
@@ -678,6 +687,10 @@ if opts then
message_func = assert(load(opts['message_func']))()
end

if opts['limits_hash'] then
limits_hash = opts['limits_hash']
end

redis_params = rspamd_parse_redis_server('ratelimit')
if not redis_params then
rspamd_logger.infox(rspamd_config, 'no servers are specified, disabling module')

Loading…
Отказ
Запис