local fun = require "fun"
local lua_settings = require "lua_settings"
local meta_functions = require "lua_meta"
+local ts = require("tableshape").types
local N = "neural"
-- Module vars
symbol_ham = 'NEURAL_HAM',
}
+local redis_profile_schema = ts.shape{
+ digest = ts.string,
+ symbols = ts.array_of(ts.string),
+ version = ts.number,
+ redis_key = ts.string,
+ distance = ts.number:is_optional(),
+}
+
-- Rule structure:
-- * static config fields (see `default_options`)
-- * prefix - name or defined prefix
local ucl = require "ucl"
local profile_serialized = ucl.to_format(profile, 'json-compact', true)
- profile.ann = ann -- To avoid serialization
+ set.ann.ann = ann -- To avoid serialization
local function rank_cb(_, _)
-- TODO: maybe add some logging
ucl_err)
return nil
else
- return parser:get_object()
+ local profile = parser:get_object()
+ local checked,schema_err = redis_profile_schema:transform(profile)
+ if not checked then
+ rspamd_logger.errx(rspamd_config, "cannot parse profile schema: %s", schema_err)
+
+ return nil
+ end
+ return checked
end
end