]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Hisory_redis: Add configuration schema
authorVsevolod Stakhov <vsevolod@rspamd.com>
Sun, 22 May 2022 11:54:54 +0000 (12:54 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Sun, 22 May 2022 11:54:54 +0000 (12:54 +0100)
src/plugins/lua/aws_s3.lua
src/plugins/lua/history_redis.lua

index 3168f363813fb43bc8764b4fd369c0e355cad05e..6f9f74c065c4cce4dc12966a277f6e3a186ef4d9 100644 (file)
@@ -237,7 +237,7 @@ local res,err = settings_schema:transform(settings)
 
 if not res then
   rspamd_logger.warnx(rspamd_config, 'plugin is misconfigured: %s', err)
-
+  lua_util.disable_module(N, "config")
   return
 end
 
index 9c02205518637b6bd7c2d3c6d9fe9c8edd6772a5..9f8196c1c03474dd0e2987ea45eb750a278a9b9a 100644 (file)
@@ -40,6 +40,17 @@ redis_history {
   return
 end
 
+local rspamd_logger = require "rspamd_logger"
+local rspamd_util = require "rspamd_util"
+local lua_util = require "lua_util"
+local lua_redis = require "lua_redis"
+local fun = require "fun"
+local ucl = require "ucl"
+local ts = (require "tableshape").types
+local E = {}
+local N = "history_redis"
+local hostname = rspamd_util.get_hostname()
+
 local redis_params
 
 local settings = {
@@ -53,15 +64,16 @@ local settings = {
   subject_privacy_length = 16, -- cut the length of the hash
 }
 
-local rspamd_logger = require "rspamd_logger"
-local rspamd_util = require "rspamd_util"
-local lua_util = require "lua_util"
-local lua_redis = require "lua_redis"
-local fun = require "fun"
-local ucl = require("ucl")
-local E = {}
-local N = "history_redis"
-local hostname = rspamd_util.get_hostname()
+local settings_schema = ts.shape({
+  key_prefix = ts.string,
+  expire = (ts.number + ts.string / lua_util.parse_time_interval):is_optional(),
+  nrows = ts.number,
+  compress = ts.boolean,
+  subject_privacy = ts.boolean:is_optional(),
+  subject_privacy_alg = ts.string:is_optional(),
+  subject_privacy_prefix = ts.string:is_optional(),
+  subject_privacy_length = ts.number:is_optional(),
+}, {extra_fields = lua_redis.config_schema})
 
 local function process_addr(addr)
   if addr then
@@ -258,9 +270,15 @@ end
 
 local opts =  rspamd_config:get_all_opt('history_redis')
 if opts then
-  for k,v in pairs(opts) do
-    settings[k] = v
+  settings = lua_util.override_defaults(settings, opts)
+  local res,err = settings_schema:transform(settings)
+
+  if not res then
+    rspamd_logger.warnx(rspamd_config, '%s: plugin is misconfigured: %s', N, err)
+    lua_util.disable_module(N, "config")
+    return
   end
+  settings = res
 
   redis_params = lua_redis.parse_redis_server('history_redis')
   if not redis_params then