diff options
author | Vsevolod Stakhov <vsevolod@rspamd.com> | 2023-07-26 10:49:23 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rspamd.com> | 2023-07-26 10:49:23 +0100 |
commit | 537a7180a0d5132c11636c4fd8b1450cd99d352c (patch) | |
tree | fb9f8c84955a411bdffbd6371ea32f2716fb3687 /src/lua/lua_config.c | |
parent | 5fd7a90fdaa33f52c59bdb0ca84451e5c1e22365 (diff) | |
download | rspamd-537a7180a0d5132c11636c4fd8b1450cd99d352c.tar.gz rspamd-537a7180a0d5132c11636c4fd8b1450cd99d352c.zip |
[Rework] Use clang-format to unify formatting in all sources
No meaningful changes.
Diffstat (limited to 'src/lua/lua_config.c')
-rw-r--r-- | src/lua/lua_config.c | 3118 |
1 files changed, 1560 insertions, 1558 deletions
diff --git a/src/lua/lua_config.c b/src/lua/lua_config.c index e24fb3e7e..d36245247 100644 --- a/src/lua/lua_config.c +++ b/src/lua/lua_config.c @@ -49,7 +49,7 @@ local opts = rspamd_config:get_key('options') -- get content of the specified ke * @param {string} optname option to get * @return {string or table} value of the option or `nil` if option is not found */ -LUA_FUNCTION_DEF (config, get_module_opt); +LUA_FUNCTION_DEF(config, get_module_opt); /*** * @method rspamd_config:get_all_opt(mname) * Returns value of all options for a module `mname`, flattening values into a single table consisting @@ -57,7 +57,7 @@ LUA_FUNCTION_DEF (config, get_module_opt); * @param {string} mname name of module * @return {table} table of all options for `mname` or `nil` if a module's configuration is not found */ -LUA_FUNCTION_DEF (config, get_all_opt); +LUA_FUNCTION_DEF(config, get_all_opt); /*** * @method rspamd_config:get_ucl() @@ -65,19 +65,19 @@ LUA_FUNCTION_DEF (config, get_all_opt); * This method uses caching if possible. * @return {table} table of all options in the configuration */ -LUA_FUNCTION_DEF (config, get_ucl); +LUA_FUNCTION_DEF(config, get_ucl); /*** * @method rspamd_config:get_mempool() * Returns static configuration memory pool. * @return {mempool} [memory pool](mempool.md) object */ -LUA_FUNCTION_DEF (config, get_mempool); +LUA_FUNCTION_DEF(config, get_mempool); /*** * @method rspamd_config:get_resolver() * Returns DNS resolver. * @return {dns_resolver} opaque DNS resolver pointer if any */ -LUA_FUNCTION_DEF (config, get_resolver); +LUA_FUNCTION_DEF(config, get_resolver); /*** * @method rspamd_config:add_radix_map(mapline[, description]) * Creates new dynamic map of IP/mask addresses. @@ -192,7 +192,7 @@ rspamd_config:add_map('http://example.com/map', "settings map", process_map) * @param {string} name name of classifier (e.g. `bayes`) * @return {classifier} classifier object or `nil` */ -LUA_FUNCTION_DEF (config, get_classifier); +LUA_FUNCTION_DEF(config, get_classifier); /*** * @method rspamd_config:register_symbol(table) * Register symbol of a specified type in rspamd. This function accepts table of arguments: @@ -221,7 +221,7 @@ LUA_FUNCTION_DEF (config, get_classifier); * * @return {number} id of symbol registered */ -LUA_FUNCTION_DEF (config, register_symbol); +LUA_FUNCTION_DEF(config, register_symbol); /*** * @method rspamd_config:register_symbols(callback, [weight], callback_name, [, symbol, ...]) * Register callback function to be called for a set of symbols with initial weight. @@ -230,7 +230,7 @@ LUA_FUNCTION_DEF (config, register_symbol); * @param {string} callback_name symbolic name of callback * @param {list of strings} symbol list of symbols registered by this function */ -LUA_FUNCTION_DEF (config, register_symbols); +LUA_FUNCTION_DEF(config, register_symbols); /*** * @method rspamd_config:register_virtual_symbol(name, weight,) * Register virtual symbol that is not associated with any callback. @@ -239,7 +239,7 @@ LUA_FUNCTION_DEF (config, register_symbols); * @param {string} virtual name symbol's name * @param {number} weight initial weight of symbol (can be less than zero to specify non-spam symbols) */ -LUA_FUNCTION_DEF (config, register_virtual_symbol); +LUA_FUNCTION_DEF(config, register_virtual_symbol); /*** * @method rspamd_config:register_callback_symbol(name, weight, callback) * Register callback function to be called for a specified symbol with initial weight. Symbol itself is @@ -250,8 +250,8 @@ LUA_FUNCTION_DEF (config, register_virtual_symbol); * @param {number} weight initial weight of symbol (can be less than zero to specify non-spam symbols) * @param {function} callback callback function to be called for a specified symbol */ -LUA_FUNCTION_DEF (config, register_callback_symbol); -LUA_FUNCTION_DEF (config, register_callback_symbol_priority); +LUA_FUNCTION_DEF(config, register_callback_symbol); +LUA_FUNCTION_DEF(config, register_callback_symbol_priority); /*** * @method rspamd_config:register_dependency(id|name, depname) @@ -270,7 +270,7 @@ rspamd_config:register_dependency(id, 'OTHER_SYM') -- Symbol MY_RULE needs result from SPF_CHECK rspamd_config:register_dependency('MY_RULE', 'SPF_CHECK') */ -LUA_FUNCTION_DEF (config, register_dependency); +LUA_FUNCTION_DEF(config, register_dependency); /*** * @method rspamd_config:get_symbol_flags(name) @@ -278,7 +278,7 @@ LUA_FUNCTION_DEF (config, register_dependency); * @param {string} name symbols's name * @return {table|string} list of flags for symbol or nil */ -LUA_FUNCTION_DEF (config, get_symbol_flags); +LUA_FUNCTION_DEF(config, get_symbol_flags); /*** * @method rspamd_config:add_symbol_flags(name, flags) @@ -287,7 +287,7 @@ LUA_FUNCTION_DEF (config, get_symbol_flags); * @param {table|string} flags flags to add * @return {table|string} new set of flags */ -LUA_FUNCTION_DEF (config, add_symbol_flags); +LUA_FUNCTION_DEF(config, add_symbol_flags); /** * @method rspamd_config:register_re_selector(name, selector_str, [delimiter, [flatten]]) @@ -299,7 +299,7 @@ LUA_FUNCTION_DEF (config, add_symbol_flags); * @param {bool} flatten if true then selector will return a table of captures instead of a single string * @return true if selector has been registered */ -LUA_FUNCTION_DEF (config, register_re_selector); +LUA_FUNCTION_DEF(config, register_re_selector); /** * @method rspamd_config:set_symbol({table}) @@ -318,7 +318,7 @@ LUA_FUNCTION_DEF (config, register_re_selector); * + `one_param`: allow only one parameter for a symbol * - `priority`: priority of symbol's definition */ -LUA_FUNCTION_DEF (config, set_metric_symbol); +LUA_FUNCTION_DEF(config, set_metric_symbol); /** * @method rspamd_config:set_action({table}) @@ -329,7 +329,7 @@ LUA_FUNCTION_DEF (config, set_metric_symbol); * - `metric`: name of metric (string, optional) * - `priority`: priority of action's definition */ -LUA_FUNCTION_DEF (config, set_metric_action); +LUA_FUNCTION_DEF(config, set_metric_action); /** * @method rspamd_config:get_action(name) @@ -338,14 +338,14 @@ LUA_FUNCTION_DEF (config, set_metric_action); * @param {string} name name of action * @return {number} action's score or nil in case of undefined score or action */ -LUA_FUNCTION_DEF (config, get_metric_action); +LUA_FUNCTION_DEF(config, get_metric_action); /** * @method rspamd_config:get_all_actions() * Gets data for all action in config * @return {table|str->num} action's score or nil in case of undefined score or action */ -LUA_FUNCTION_DEF (config, get_all_actions); +LUA_FUNCTION_DEF(config, get_all_actions); /** * @method rspamd_config:add_composite(name, expression) @@ -353,7 +353,7 @@ LUA_FUNCTION_DEF (config, get_all_actions); * @param {string} expression symbolic expression of the composite rule * @return {bool} true if a composite has been added successfully */ -LUA_FUNCTION_DEF (config, add_composite); +LUA_FUNCTION_DEF(config, add_composite); /*** * @method rspamd_config:register_pre_filter(callback[, order]) * Register function to be called prior to symbols processing. @@ -367,7 +367,7 @@ end rspamd_config:register_pre_filter(check_function) */ -LUA_FUNCTION_DEF (config, register_pre_filter); +LUA_FUNCTION_DEF(config, register_pre_filter); /*** * @method rspamd_config:register_post_filter(callback[, order]) * Register function to be called after symbols are processed. @@ -375,11 +375,11 @@ LUA_FUNCTION_DEF (config, register_pre_filter); * @param {function} callback callback function * @param {number} order filters are called from lower orders to higher orders, order is equal to 0 by default */ -LUA_FUNCTION_DEF (config, register_post_filter); +LUA_FUNCTION_DEF(config, register_post_filter); /* XXX: obsoleted */ -LUA_FUNCTION_DEF (config, register_module_option); +LUA_FUNCTION_DEF(config, register_module_option); /* XXX: not needed now */ -LUA_FUNCTION_DEF (config, get_api_version); +LUA_FUNCTION_DEF(config, get_api_version); /*** * @method rspamd_config:get_key(name) * Returns configuration section with the specified `name`. @@ -399,7 +399,7 @@ elseif type(set_section) == "table" then end end */ -LUA_FUNCTION_DEF (config, get_key); +LUA_FUNCTION_DEF(config, get_key); /*** * @method rspamd_config:add_condition(symbol, condition) @@ -424,14 +424,14 @@ rspamd_config:add_condition('FUZZY_DENIED', function(task) return true end) */ -LUA_FUNCTION_DEF (config, add_condition); +LUA_FUNCTION_DEF(config, add_condition); /*** * @method rspamd_config:enable_symbol(symbol) * Enables execution for the specified symbol * @param {string} symbol symbol's name */ -LUA_FUNCTION_DEF (config, enable_symbol); +LUA_FUNCTION_DEF(config, enable_symbol); /*** * @method rspamd_config:disable_symbol(symbol, [disable_parent=true]) @@ -439,14 +439,14 @@ LUA_FUNCTION_DEF (config, enable_symbol); * @param {string} symbol symbol's name * @param {boolean} disable_parent if true then disable parent execution in case of a virtual symbol */ -LUA_FUNCTION_DEF (config, disable_symbol); +LUA_FUNCTION_DEF(config, disable_symbol); /*** * @method rspamd_config:get_symbol_parent(symbol) * Returns a parent symbol for specific symbol (or symbol itself if top level) * @param {string} symbol symbol's name */ -LUA_FUNCTION_DEF (config, get_symbol_parent); +LUA_FUNCTION_DEF(config, get_symbol_parent); /*** * @method rspamd_config:get_group_symbols(group) @@ -455,7 +455,7 @@ LUA_FUNCTION_DEF (config, get_symbol_parent); * @available 2.0+ * @return {list|string} list of all symbols in a specific group */ -LUA_FUNCTION_DEF (config, get_group_symbols); +LUA_FUNCTION_DEF(config, get_group_symbols); /*** * @method rspamd_config:get_groups([need_private]) @@ -464,7 +464,7 @@ LUA_FUNCTION_DEF (config, get_group_symbols); * @available 2.3+ * @return {list|table} list of all groups */ -LUA_FUNCTION_DEF (config, get_groups); +LUA_FUNCTION_DEF(config, get_groups); /*** * @method rspamd_config:register_settings_id(name, symbols_enabled, symbols_disabled) @@ -474,7 +474,7 @@ LUA_FUNCTION_DEF (config, get_groups); * @param {map|string->string} symbols_disabled map from symbol's name to boolean (currently) * @available 2.0+ */ -LUA_FUNCTION_DEF (config, register_settings_id); +LUA_FUNCTION_DEF(config, register_settings_id); /*** * @method rspamd_config:__newindex(name, callback) @@ -525,7 +525,7 @@ rspamd_config.SYMBOL = { end } */ -LUA_FUNCTION_DEF (config, newindex); +LUA_FUNCTION_DEF(config, newindex); /*** * @method rspamd_config:register_regexp(params) @@ -542,7 +542,7 @@ LUA_FUNCTION_DEF (config, newindex); * - `header`: for header and rawheader regexp means the name of header * - `pcre_only`: flag regexp as pcre only regexp */ -LUA_FUNCTION_DEF (config, register_regexp); +LUA_FUNCTION_DEF(config, register_regexp); /*** * @method rspamd_config:replace_regexp(params) @@ -551,7 +551,7 @@ LUA_FUNCTION_DEF (config, register_regexp); * - `old_re`* : old regular expression object (must be in the cache) * - `new_re`* : old regular expression object (must not be in the cache) */ -LUA_FUNCTION_DEF (config, replace_regexp); +LUA_FUNCTION_DEF(config, replace_regexp); /*** * @method rspamd_config:register_worker_script(worker_type, script) @@ -561,7 +561,7 @@ LUA_FUNCTION_DEF (config, replace_regexp); * @param {function} script script for a worker * @return {boolean} `true` if a script has been registered */ -LUA_FUNCTION_DEF (config, register_worker_script); +LUA_FUNCTION_DEF(config, register_worker_script); /*** * @method rspamd_config:add_on_load(function(cfg, ev_base, worker) ... end) @@ -577,7 +577,7 @@ rspamd_config:add_on_load(function(cfg, ev_base, worker) end) end) */ -LUA_FUNCTION_DEF (config, add_on_load); +LUA_FUNCTION_DEF(config, add_on_load); /*** * @method rspamd_config:add_periodic(event_base, timeout, function(cfg, ev_base) ... end, [jitter = false]) @@ -595,7 +595,7 @@ rspamd_config:add_on_load(function(cfg, ev_base) end) end) */ -LUA_FUNCTION_DEF (config, add_periodic); +LUA_FUNCTION_DEF(config, add_periodic); /*** * @method rspamd_config:add_post_init(function(cfg) ... end) @@ -603,7 +603,7 @@ LUA_FUNCTION_DEF (config, add_periodic); * @available 2.0+ * @param {function} script function to be executed */ -LUA_FUNCTION_DEF (config, add_post_init); +LUA_FUNCTION_DEF(config, add_post_init); /*** * @method rspamd_config:add_config_unload(function(cfg) ... end) @@ -611,28 +611,28 @@ LUA_FUNCTION_DEF (config, add_post_init); * @available 2.0+ * @param {function} script function to be executed */ -LUA_FUNCTION_DEF (config, add_config_unload); +LUA_FUNCTION_DEF(config, add_config_unload); /*** * @method rspamd_config:get_symbols_count() * Returns number of symbols registered in rspamd configuration * @return {number} number of symbols registered in the configuration */ -LUA_FUNCTION_DEF (config, get_symbols_count); +LUA_FUNCTION_DEF(config, get_symbols_count); /*** * @method rspamd_config:get_symbols_cksum() * Returns checksum for all symbols in the cache * @return {int64} boxed value of the 64 bit checksum */ -LUA_FUNCTION_DEF (config, get_symbols_cksum); +LUA_FUNCTION_DEF(config, get_symbols_cksum); /*** * @method rspamd_config:get_symbols_counters() * Returns table of all counters in the cache (weights, frequencies etc) * @return {table|tables} all symbols indexed by name */ -LUA_FUNCTION_DEF (config, get_symbols_counters); +LUA_FUNCTION_DEF(config, get_symbols_counters); /*** * @method rspamd_config:get_symbols() @@ -646,7 +646,7 @@ LUA_FUNCTION_DEF (config, get_symbols_counters); * @available 2.0+ * @return {table|tables} all symbols indexed by name */ -LUA_FUNCTION_DEF (config, get_symbols); +LUA_FUNCTION_DEF(config, get_symbols); /*** * @method rspamd_config:get_symbol(sym_name) @@ -660,14 +660,14 @@ LUA_FUNCTION_DEF (config, get_symbols); * @available 3.3+ * @return {table} symbol data (or nil) */ -LUA_FUNCTION_DEF (config, get_symbol); +LUA_FUNCTION_DEF(config, get_symbol); /*** * @method rspamd_config:get_symbol_callback(name) * Returns callback function for the specified symbol if it is a lua registered callback * @return {function} callback function or nil */ -LUA_FUNCTION_DEF (config, get_symbol_callback); +LUA_FUNCTION_DEF(config, get_symbol_callback); /*** * @method rspamd_config:get_symbol_stat(name) @@ -678,14 +678,14 @@ LUA_FUNCTION_DEF (config, get_symbol_callback); * - `count`: total number of hits * @return {table} symbol stats */ -LUA_FUNCTION_DEF (config, get_symbol_stat); +LUA_FUNCTION_DEF(config, get_symbol_stat); /*** * @method rspamd_config:set_symbol_callback(name, callback) * Sets callback for the specified symbol * @return {boolean} true if function has been replaced */ -LUA_FUNCTION_DEF (config, set_symbol_callback); +LUA_FUNCTION_DEF(config, set_symbol_callback); /*** * @method rspamd_config:register_finish_script(callback) @@ -694,7 +694,7 @@ LUA_FUNCTION_DEF (config, set_symbol_callback); * * @param callback {function} a function with one argument (rspamd_task) */ -LUA_FUNCTION_DEF (config, register_finish_script); +LUA_FUNCTION_DEF(config, register_finish_script); /*** * @method rspamd_config:register_monitored(url, type, [{params}]) @@ -722,7 +722,7 @@ LUA_FUNCTION_DEF (config, register_finish_script); * @param {table} opts optional parameters * @return {rspamd_monitored} rspamd monitored object */ -LUA_FUNCTION_DEF (config, register_monitored); +LUA_FUNCTION_DEF(config, register_monitored); /*** * @method rspamd_config:add_doc(path, option, doc_string, [{params}]) @@ -738,7 +738,7 @@ LUA_FUNCTION_DEF (config, register_monitored); * @param {string} doc_string documentation string * @param {table} params optional parameters */ -LUA_FUNCTION_DEF (config, add_doc); +LUA_FUNCTION_DEF(config, add_doc); /*** * @method rspamd_config:add_example(path, option, doc_string, example) @@ -749,7 +749,7 @@ LUA_FUNCTION_DEF (config, add_doc); * @param {string} doc_string documentation string * @param {string} example example in ucl format, comments are also parsed */ -LUA_FUNCTION_DEF (config, add_example); +LUA_FUNCTION_DEF(config, add_example); /*** * @method rspamd_config:set_peak_cb(function) @@ -769,7 +769,7 @@ rspamd_config:set_peak_cb(function(ev_base, sym, mean, stddev, value, error) sym, value, error, mean, stddev) end) */ -LUA_FUNCTION_DEF (config, set_peak_cb); +LUA_FUNCTION_DEF(config, set_peak_cb); /*** * @method rspamd_config:get_cpu_flags() * Returns architecture dependent flags supported by the CPU @@ -780,7 +780,7 @@ LUA_FUNCTION_DEF (config, set_peak_cb); * - 'avx2' * @return {table} flag -> true table */ -LUA_FUNCTION_DEF (config, get_cpu_flags); +LUA_FUNCTION_DEF(config, get_cpu_flags); /*** * @method rspamd_config:has_torch() @@ -788,14 +788,14 @@ LUA_FUNCTION_DEF (config, get_cpu_flags); * supports sse4.2 required for torch. * @return {boolean} true if torch is compiled and supported */ -LUA_FUNCTION_DEF (config, has_torch); +LUA_FUNCTION_DEF(config, has_torch); /*** * @method rspamd_config:experimental_enabled() * Returns true if experimental plugins are enabled * @return {boolean} true if experimental plugins are enabled */ -LUA_FUNCTION_DEF (config, experimental_enabled); +LUA_FUNCTION_DEF(config, experimental_enabled); /*** * @method rspamd_config:load_ucl(filename[, include_trace]) @@ -803,7 +803,7 @@ LUA_FUNCTION_DEF (config, experimental_enabled); * @param {string} filename file to load * @return true or false + error message */ -LUA_FUNCTION_DEF (config, load_ucl); +LUA_FUNCTION_DEF(config, load_ucl); /*** * @method rspamd_config:parse_rcl([skip_sections]) @@ -811,14 +811,14 @@ LUA_FUNCTION_DEF (config, load_ucl); * @param {table|string} sections to skip * @return true or false + error message */ -LUA_FUNCTION_DEF (config, parse_rcl); +LUA_FUNCTION_DEF(config, parse_rcl); /*** * @method rspamd_config:init_modules() * Initialize lua and internal modules * @return true or false */ -LUA_FUNCTION_DEF (config, init_modules); +LUA_FUNCTION_DEF(config, init_modules); /*** * @method rspamd_config:init_subsystem(str) @@ -828,261 +828,261 @@ LUA_FUNCTION_DEF (config, init_modules); * - `dns` - DNS resolver * - TODO: add more */ -LUA_FUNCTION_DEF (config, init_subsystem); +LUA_FUNCTION_DEF(config, init_subsystem); /*** * @method rspamd_config:get_tld_path() * Returns path to TLD file * @return {string} path to tld file */ -LUA_FUNCTION_DEF (config, get_tld_path); +LUA_FUNCTION_DEF(config, get_tld_path); /*** * @method rspamd_config:get_dns_max_requests() * Returns limit of DNS requests per task * @return {number} number of dns requests allowed */ -LUA_FUNCTION_DEF (config, get_dns_max_requests); +LUA_FUNCTION_DEF(config, get_dns_max_requests); /*** * @method rspamd_config:get_dns_timeout() * Returns timeout for a DNS request * @return {number} DNS timeout in second or 0 if not defined */ -LUA_FUNCTION_DEF (config, get_dns_timeout); +LUA_FUNCTION_DEF(config, get_dns_timeout); static const struct luaL_reg configlib_m[] = { - LUA_INTERFACE_DEF (config, get_module_opt), - LUA_INTERFACE_DEF (config, get_mempool), - LUA_INTERFACE_DEF (config, get_resolver), - LUA_INTERFACE_DEF (config, get_all_opt), - LUA_INTERFACE_DEF (config, get_ucl), - LUA_INTERFACE_DEF (config, add_radix_map), - LUA_INTERFACE_DEF (config, radix_from_config), - LUA_INTERFACE_DEF (config, radix_from_ucl), - LUA_INTERFACE_DEF (config, add_hash_map), - LUA_INTERFACE_DEF (config, add_kv_map), - LUA_INTERFACE_DEF (config, add_map), - LUA_INTERFACE_DEF (config, get_maps), - LUA_INTERFACE_DEF (config, get_classifier), - LUA_INTERFACE_DEF (config, register_symbol), - LUA_INTERFACE_DEF (config, register_symbols), - LUA_INTERFACE_DEF (config, register_virtual_symbol), - LUA_INTERFACE_DEF (config, register_callback_symbol), - LUA_INTERFACE_DEF (config, register_callback_symbol_priority), - LUA_INTERFACE_DEF (config, register_dependency), - LUA_INTERFACE_DEF (config, register_settings_id), - LUA_INTERFACE_DEF (config, get_symbol_flags), - LUA_INTERFACE_DEF (config, set_metric_symbol), + LUA_INTERFACE_DEF(config, get_module_opt), + LUA_INTERFACE_DEF(config, get_mempool), + LUA_INTERFACE_DEF(config, get_resolver), + LUA_INTERFACE_DEF(config, get_all_opt), + LUA_INTERFACE_DEF(config, get_ucl), + LUA_INTERFACE_DEF(config, add_radix_map), + LUA_INTERFACE_DEF(config, radix_from_config), + LUA_INTERFACE_DEF(config, radix_from_ucl), + LUA_INTERFACE_DEF(config, add_hash_map), + LUA_INTERFACE_DEF(config, add_kv_map), + LUA_INTERFACE_DEF(config, add_map), + LUA_INTERFACE_DEF(config, get_maps), + LUA_INTERFACE_DEF(config, get_classifier), + LUA_INTERFACE_DEF(config, register_symbol), + LUA_INTERFACE_DEF(config, register_symbols), + LUA_INTERFACE_DEF(config, register_virtual_symbol), + LUA_INTERFACE_DEF(config, register_callback_symbol), + LUA_INTERFACE_DEF(config, register_callback_symbol_priority), + LUA_INTERFACE_DEF(config, register_dependency), + LUA_INTERFACE_DEF(config, register_settings_id), + LUA_INTERFACE_DEF(config, get_symbol_flags), + LUA_INTERFACE_DEF(config, set_metric_symbol), {"set_symbol", lua_config_set_metric_symbol}, - LUA_INTERFACE_DEF (config, set_metric_action), + LUA_INTERFACE_DEF(config, set_metric_action), {"set_action", lua_config_set_metric_action}, {"get_metric_symbol", lua_config_get_symbol}, - LUA_INTERFACE_DEF (config, get_metric_action), + LUA_INTERFACE_DEF(config, get_metric_action), {"get_action", lua_config_get_metric_action}, - LUA_INTERFACE_DEF (config, get_all_actions), - LUA_INTERFACE_DEF (config, add_composite), - LUA_INTERFACE_DEF (config, register_module_option), - LUA_INTERFACE_DEF (config, register_pre_filter), - LUA_INTERFACE_DEF (config, register_post_filter), - LUA_INTERFACE_DEF (config, get_api_version), - LUA_INTERFACE_DEF (config, get_key), - LUA_INTERFACE_DEF (config, add_condition), - LUA_INTERFACE_DEF (config, enable_symbol), - LUA_INTERFACE_DEF (config, disable_symbol), - LUA_INTERFACE_DEF (config, register_regexp), - LUA_INTERFACE_DEF (config, replace_regexp), - LUA_INTERFACE_DEF (config, register_worker_script), - LUA_INTERFACE_DEF (config, register_re_selector), - LUA_INTERFACE_DEF (config, add_on_load), - LUA_INTERFACE_DEF (config, add_periodic), - LUA_INTERFACE_DEF (config, add_post_init), - LUA_INTERFACE_DEF (config, add_config_unload), - LUA_INTERFACE_DEF (config, get_symbols_count), - LUA_INTERFACE_DEF (config, get_symbols_cksum), - LUA_INTERFACE_DEF (config, get_symbols_counters), + LUA_INTERFACE_DEF(config, get_all_actions), + LUA_INTERFACE_DEF(config, add_composite), + LUA_INTERFACE_DEF(config, register_module_option), + LUA_INTERFACE_DEF(config, register_pre_filter), + LUA_INTERFACE_DEF(config, register_post_filter), + LUA_INTERFACE_DEF(config, get_api_version), + LUA_INTERFACE_DEF(config, get_key), + LUA_INTERFACE_DEF(config, add_condition), + LUA_INTERFACE_DEF(config, enable_symbol), + LUA_INTERFACE_DEF(config, disable_symbol), + LUA_INTERFACE_DEF(config, register_regexp), + LUA_INTERFACE_DEF(config, replace_regexp), + LUA_INTERFACE_DEF(config, register_worker_script), + LUA_INTERFACE_DEF(config, register_re_selector), + LUA_INTERFACE_DEF(config, add_on_load), + LUA_INTERFACE_DEF(config, add_periodic), + LUA_INTERFACE_DEF(config, add_post_init), + LUA_INTERFACE_DEF(config, add_config_unload), + LUA_INTERFACE_DEF(config, get_symbols_count), + LUA_INTERFACE_DEF(config, get_symbols_cksum), + LUA_INTERFACE_DEF(config, get_symbols_counters), {"get_symbols_scores", lua_config_get_symbols}, - LUA_INTERFACE_DEF (config, get_symbols), - LUA_INTERFACE_DEF (config, get_symbol), - LUA_INTERFACE_DEF (config, get_groups), - LUA_INTERFACE_DEF (config, get_symbol_callback), - LUA_INTERFACE_DEF (config, set_symbol_callback), - LUA_INTERFACE_DEF (config, get_symbol_stat), - LUA_INTERFACE_DEF (config, get_symbol_parent), - LUA_INTERFACE_DEF (config, get_group_symbols), - LUA_INTERFACE_DEF (config, register_finish_script), - LUA_INTERFACE_DEF (config, register_monitored), - LUA_INTERFACE_DEF (config, add_doc), - LUA_INTERFACE_DEF (config, add_example), - LUA_INTERFACE_DEF (config, set_peak_cb), - LUA_INTERFACE_DEF (config, get_cpu_flags), - LUA_INTERFACE_DEF (config, has_torch), - LUA_INTERFACE_DEF (config, experimental_enabled), - LUA_INTERFACE_DEF (config, load_ucl), - LUA_INTERFACE_DEF (config, parse_rcl), - LUA_INTERFACE_DEF (config, init_modules), - LUA_INTERFACE_DEF (config, init_subsystem), - LUA_INTERFACE_DEF (config, get_tld_path), - LUA_INTERFACE_DEF (config, get_dns_max_requests), - LUA_INTERFACE_DEF (config, get_dns_timeout), + LUA_INTERFACE_DEF(config, get_symbols), + LUA_INTERFACE_DEF(config, get_symbol), + LUA_INTERFACE_DEF(config, get_groups), + LUA_INTERFACE_DEF(config, get_symbol_callback), + LUA_INTERFACE_DEF(config, set_symbol_callback), + LUA_INTERFACE_DEF(config, get_symbol_stat), + LUA_INTERFACE_DEF(config, get_symbol_parent), + LUA_INTERFACE_DEF(config, get_group_symbols), + LUA_INTERFACE_DEF(config, register_finish_script), + LUA_INTERFACE_DEF(config, register_monitored), + LUA_INTERFACE_DEF(config, add_doc), + LUA_INTERFACE_DEF(config, add_example), + LUA_INTERFACE_DEF(config, set_peak_cb), + LUA_INTERFACE_DEF(config, get_cpu_flags), + LUA_INTERFACE_DEF(config, has_torch), + LUA_INTERFACE_DEF(config, experimental_enabled), + LUA_INTERFACE_DEF(config, load_ucl), + LUA_INTERFACE_DEF(config, parse_rcl), + LUA_INTERFACE_DEF(config, init_modules), + LUA_INTERFACE_DEF(config, init_subsystem), + LUA_INTERFACE_DEF(config, get_tld_path), + LUA_INTERFACE_DEF(config, get_dns_max_requests), + LUA_INTERFACE_DEF(config, get_dns_timeout), {"__tostring", rspamd_lua_class_tostring}, {"__newindex", lua_config_newindex}, - {NULL, NULL} -}; + {NULL, NULL}}; -LUA_FUNCTION_DEF (monitored, alive); -LUA_FUNCTION_DEF (monitored, latency); -LUA_FUNCTION_DEF (monitored, offline); -LUA_FUNCTION_DEF (monitored, total_offline); +LUA_FUNCTION_DEF(monitored, alive); +LUA_FUNCTION_DEF(monitored, latency); +LUA_FUNCTION_DEF(monitored, offline); +LUA_FUNCTION_DEF(monitored, total_offline); static const struct luaL_reg monitoredlib_m[] = { - LUA_INTERFACE_DEF (monitored, alive), - LUA_INTERFACE_DEF (monitored, latency), - LUA_INTERFACE_DEF (monitored, offline), - LUA_INTERFACE_DEF (monitored, total_offline), + LUA_INTERFACE_DEF(monitored, alive), + LUA_INTERFACE_DEF(monitored, latency), + LUA_INTERFACE_DEF(monitored, offline), + LUA_INTERFACE_DEF(monitored, total_offline), {"__tostring", rspamd_lua_class_tostring}, - {NULL, NULL} -}; + {NULL, NULL}}; static const guint64 rspamd_lua_callback_magic = 0x32c118af1e3263c7ULL; struct rspamd_config * -lua_check_config (lua_State * L, gint pos) +lua_check_config(lua_State *L, gint pos) { - void *ud = rspamd_lua_check_udata (L, pos, "rspamd{config}"); - luaL_argcheck (L, ud != NULL, pos, "'config' expected"); - return ud ? *((struct rspamd_config **)ud) : NULL; + void *ud = rspamd_lua_check_udata(L, pos, "rspamd{config}"); + luaL_argcheck(L, ud != NULL, pos, "'config' expected"); + return ud ? *((struct rspamd_config **) ud) : NULL; } static struct rspamd_monitored * -lua_check_monitored (lua_State * L, gint pos) +lua_check_monitored(lua_State *L, gint pos) { - void *ud = rspamd_lua_check_udata (L, pos, "rspamd{monitored}"); - luaL_argcheck (L, ud != NULL, pos, "'monitored' expected"); - return ud ? *((struct rspamd_monitored **)ud) : NULL; + void *ud = rspamd_lua_check_udata(L, pos, "rspamd{monitored}"); + luaL_argcheck(L, ud != NULL, pos, "'monitored' expected"); + return ud ? *((struct rspamd_monitored **) ud) : NULL; } /*** Config functions ***/ static gint -lua_config_get_api_version (lua_State *L) +lua_config_get_api_version(lua_State *L) { - msg_warn ("get_api_version is deprecated, do not use it"); - lua_pushnumber (L, 100); + msg_warn("get_api_version is deprecated, do not use it"); + lua_pushnumber(L, 100); return 1; } static gint -lua_config_get_module_opt (lua_State * L) +lua_config_get_module_opt(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); const gchar *mname, *optname; const ucl_object_t *obj; if (cfg) { - mname = luaL_checkstring (L, 2); - optname = luaL_checkstring (L, 3); + mname = luaL_checkstring(L, 2); + optname = luaL_checkstring(L, 3); if (mname && optname) { - obj = rspamd_config_get_module_opt (cfg, mname, optname); + obj = rspamd_config_get_module_opt(cfg, mname, optname); if (obj) { - return ucl_object_push_lua (L, obj, TRUE); + return ucl_object_push_lua(L, obj, TRUE); } } } - lua_pushnil (L); + lua_pushnil(L); return 1; } static int -lua_config_get_mempool (lua_State * L) +lua_config_get_mempool(lua_State *L) { LUA_TRACE_POINT; rspamd_mempool_t **ppool; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); if (cfg != NULL) { - ppool = lua_newuserdata (L, sizeof (rspamd_mempool_t *)); - rspamd_lua_setclass (L, "rspamd{mempool}", -1); + ppool = lua_newuserdata(L, sizeof(rspamd_mempool_t *)); + rspamd_lua_setclass(L, "rspamd{mempool}", -1); *ppool = cfg->cfg_pool; } else { - lua_pushnil (L); + lua_pushnil(L); } return 1; } static int -lua_config_get_resolver (lua_State * L) +lua_config_get_resolver(lua_State *L) { LUA_TRACE_POINT; struct rspamd_dns_resolver **pres; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); if (cfg != NULL && cfg->dns_resolver) { - pres = lua_newuserdata (L, sizeof (*pres)); - rspamd_lua_setclass (L, "rspamd{resolver}", -1); + pres = lua_newuserdata(L, sizeof(*pres)); + rspamd_lua_setclass(L, "rspamd{resolver}", -1); *pres = cfg->dns_resolver; } else { - lua_pushnil (L); + lua_pushnil(L); } return 1; } static gint -lua_config_get_all_opt (lua_State * L) +lua_config_get_all_opt(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); const gchar *mname; const ucl_object_t *obj, *cur, *cur_elt; ucl_object_iter_t it = NULL; gint i; if (cfg) { - mname = luaL_checkstring (L, 2); + mname = luaL_checkstring(L, 2); if (mname) { - obj = ucl_obj_get_key (cfg->rcl_obj, mname); + obj = ucl_obj_get_key(cfg->rcl_obj, mname); /* Flatten object */ - if (obj != NULL && (ucl_object_type (obj) == UCL_OBJECT || - ucl_object_type (obj) == UCL_ARRAY)) { + if (obj != NULL && (ucl_object_type(obj) == UCL_OBJECT || + ucl_object_type(obj) == UCL_ARRAY)) { - lua_newtable (L); - it = ucl_object_iterate_new (obj); + lua_newtable(L); + it = ucl_object_iterate_new(obj); - LL_FOREACH (obj, cur) { - it = ucl_object_iterate_reset (it, cur); + LL_FOREACH(obj, cur) + { + it = ucl_object_iterate_reset(it, cur); - while ((cur_elt = ucl_object_iterate_safe (it, true))) { - lua_pushstring (L, ucl_object_key (cur_elt)); - ucl_object_push_lua (L, cur_elt, true); - lua_settable (L, -3); + while ((cur_elt = ucl_object_iterate_safe(it, true))) { + lua_pushstring(L, ucl_object_key(cur_elt)); + ucl_object_push_lua(L, cur_elt, true); + lua_settable(L, -3); } } - ucl_object_iterate_free (it); + ucl_object_iterate_free(it); return 1; } else if (obj != NULL) { - lua_newtable (L); + lua_newtable(L); i = 1; - LL_FOREACH (obj, cur) { - lua_pushinteger (L, i++); - ucl_object_push_lua (L, cur, true); - lua_settable (L, -3); + LL_FOREACH(obj, cur) + { + lua_pushinteger(L, i++); + ucl_object_push_lua(L, cur, true); + lua_settable(L, -3); } return 1; } } } - lua_pushnil (L); + lua_pushnil(L); return 1; } @@ -1093,43 +1093,43 @@ struct rspamd_lua_cached_config { }; static void -lua_config_ucl_dtor (gpointer p) +lua_config_ucl_dtor(gpointer p) { struct rspamd_lua_cached_config *cached = p; - luaL_unref (cached->L, LUA_REGISTRYINDEX, cached->ref); + luaL_unref(cached->L, LUA_REGISTRYINDEX, cached->ref); } static gint -lua_config_get_ucl (lua_State * L) +lua_config_get_ucl(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); struct rspamd_lua_cached_config *cached; if (cfg) { - cached = rspamd_mempool_get_variable (cfg->cfg_pool, "ucl_cached"); + cached = rspamd_mempool_get_variable(cfg->cfg_pool, "ucl_cached"); if (cached) { - lua_rawgeti (L, LUA_REGISTRYINDEX, cached->ref); + lua_rawgeti(L, LUA_REGISTRYINDEX, cached->ref); } else { if (cfg->rcl_obj) { ucl_object_push_lua(L, cfg->rcl_obj, true); lua_pushvalue(L, -1); - cached = rspamd_mempool_alloc (cfg->cfg_pool, sizeof(*cached)); + cached = rspamd_mempool_alloc(cfg->cfg_pool, sizeof(*cached)); cached->L = L; cached->ref = luaL_ref(L, LUA_REGISTRYINDEX); rspamd_mempool_set_variable(cfg->cfg_pool, "ucl_cached", - cached, lua_config_ucl_dtor); + cached, lua_config_ucl_dtor); } else { - lua_pushnil (L); + lua_pushnil(L); } } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; @@ -1137,38 +1137,37 @@ lua_config_get_ucl (lua_State * L) static gint -lua_config_get_classifier (lua_State * L) +lua_config_get_classifier(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); struct rspamd_classifier_config *clc = NULL, **pclc = NULL; const gchar *name; GList *cur; if (cfg) { - name = luaL_checkstring (L, 2); + name = luaL_checkstring(L, 2); - cur = g_list_first (cfg->classifiers); + cur = g_list_first(cfg->classifiers); while (cur) { clc = cur->data; - if (g_ascii_strcasecmp (clc->name, name) == 0) { + if (g_ascii_strcasecmp(clc->name, name) == 0) { pclc = &clc; break; } - cur = g_list_next (cur); + cur = g_list_next(cur); } if (pclc) { - pclc = lua_newuserdata (L, - sizeof (struct rspamd_classifier_config *)); - rspamd_lua_setclass (L, "rspamd{classifier}", -1); + pclc = lua_newuserdata(L, + sizeof(struct rspamd_classifier_config *)); + rspamd_lua_setclass(L, "rspamd{classifier}", -1); *pclc = clc; return 1; } } - lua_pushnil (L); + lua_pushnil(L); return 1; - } struct lua_callback_data { @@ -1192,24 +1191,24 @@ struct lua_callback_data { * Unref symbol if it is local reference */ static void -lua_destroy_cfg_symbol (gpointer ud) +lua_destroy_cfg_symbol(gpointer ud) { struct lua_callback_data *cd = ud; /* Unref callback */ if (cd->cb_is_ref) { - luaL_unref (cd->L, LUA_REGISTRYINDEX, cd->callback.ref); + luaL_unref(cd->L, LUA_REGISTRYINDEX, cd->callback.ref); } } static gint -lua_config_register_module_option (lua_State *L) +lua_config_register_module_option(lua_State *L) { return 0; } static gint -rspamd_compare_order_func (gconstpointer a, gconstpointer b) +rspamd_compare_order_func(gconstpointer a, gconstpointer b) { const struct lua_callback_data *cb1 = a, *cb2 = b; @@ -1218,41 +1217,41 @@ rspamd_compare_order_func (gconstpointer a, gconstpointer b) } static void -lua_metric_symbol_callback (struct rspamd_task *task, - struct rspamd_symcache_dynamic_item *item, - gpointer ud) +lua_metric_symbol_callback(struct rspamd_task *task, + struct rspamd_symcache_dynamic_item *item, + gpointer ud) { struct lua_callback_data *cd = ud; struct rspamd_task **ptask; - gint level = lua_gettop (cd->L), nresults, err_idx, ret; + gint level = lua_gettop(cd->L), nresults, err_idx, ret; lua_State *L = cd->L; struct rspamd_symbol_result *s; cd->item = item; - rspamd_symcache_item_async_inc (task, item, "lua symbol"); - lua_pushcfunction (L, &rspamd_lua_traceback); - err_idx = lua_gettop (L); + rspamd_symcache_item_async_inc(task, item, "lua symbol"); + lua_pushcfunction(L, &rspamd_lua_traceback); + err_idx = lua_gettop(L); - level ++; + level++; if (cd->cb_is_ref) { - lua_rawgeti (L, LUA_REGISTRYINDEX, cd->callback.ref); + lua_rawgeti(L, LUA_REGISTRYINDEX, cd->callback.ref); } else { - lua_getglobal (L, cd->callback.name); + lua_getglobal(L, cd->callback.name); } - ptask = lua_newuserdata (L, sizeof (struct rspamd_task *)); - rspamd_lua_setclass (L, "rspamd{task}", -1); + ptask = lua_newuserdata(L, sizeof(struct rspamd_task *)); + rspamd_lua_setclass(L, "rspamd{task}", -1); *ptask = task; - if ((ret = lua_pcall (L, 1, LUA_MULTRET, err_idx)) != 0) { - msg_err_task ("call to (%s) failed (%d): %s", cd->symbol, ret, - lua_tostring (L, -1)); - lua_settop (L, err_idx); /* Not -1 here, as err_func is popped below */ + if ((ret = lua_pcall(L, 1, LUA_MULTRET, err_idx)) != 0) { + msg_err_task("call to (%s) failed (%d): %s", cd->symbol, ret, + lua_tostring(L, -1)); + lua_settop(L, err_idx); /* Not -1 here, as err_func is popped below */ } else { - nresults = lua_gettop (L) - level; + nresults = lua_gettop(L) - level; if (nresults >= 1) { /* Function returned boolean, so maybe we need to insert result? */ @@ -1261,13 +1260,13 @@ lua_metric_symbol_callback (struct rspamd_task *task, gdouble flag = 1.0; gint type; - type = lua_type (cd->L, level + 1); + type = lua_type(cd->L, level + 1); if (type == LUA_TBOOLEAN) { - res = lua_toboolean (L, level + 1); + res = lua_toboolean(L, level + 1); } else if (type == LUA_TNUMBER) { - res = lua_tonumber (L, level + 1); + res = lua_tonumber(L, level + 1); } else if (type == LUA_TNIL) { /* Can happen sometimes... */ @@ -1275,16 +1274,16 @@ lua_metric_symbol_callback (struct rspamd_task *task, } else { /* Something bogus has been returned, so we should log it */ - msg_err_task ("invalid return value for %s: %s", - cd->symbol, lua_typename (L, type)); + msg_err_task("invalid return value for %s: %s", + cd->symbol, lua_typename(L, type)); res = FALSE; } if (res) { gint first_opt = 2; - if (lua_type (L, level + 2) == LUA_TNUMBER) { - flag = lua_tonumber (L, level + 2); + if (lua_type(L, level + 2) == LUA_TNUMBER) { + flag = lua_tonumber(L, level + 2); /* Shift opt index */ first_opt = 3; } @@ -1292,131 +1291,131 @@ lua_metric_symbol_callback (struct rspamd_task *task, flag = res; } - s = rspamd_task_insert_result (task, cd->symbol, flag, NULL); + s = rspamd_task_insert_result(task, cd->symbol, flag, NULL); if (s) { - guint last_pos = lua_gettop (L); + guint last_pos = lua_gettop(L); for (i = level + first_opt; i <= last_pos; i++) { - if (lua_type (L, i) == LUA_TSTRING) { + if (lua_type(L, i) == LUA_TSTRING) { gsize optlen; - const char *opt = lua_tolstring (L, i, &optlen); + const char *opt = lua_tolstring(L, i, &optlen); - rspamd_task_add_result_option (task, s, opt, optlen); + rspamd_task_add_result_option(task, s, opt, optlen); } - else if (lua_type (L, i) == LUA_TUSERDATA) { - struct rspamd_lua_text *t = lua_check_text (L, i); + else if (lua_type(L, i) == LUA_TUSERDATA) { + struct rspamd_lua_text *t = lua_check_text(L, i); if (t) { - rspamd_task_add_result_option (task, s, t->start, - t->len); + rspamd_task_add_result_option(task, s, t->start, + t->len); } } - else if (lua_type (L, i) == LUA_TTABLE) { - gsize objlen = rspamd_lua_table_size (L, i); + else if (lua_type(L, i) == LUA_TTABLE) { + gsize objlen = rspamd_lua_table_size(L, i); - for (guint j = 1; j <= objlen; j ++) { - lua_rawgeti (L, i, j); + for (guint j = 1; j <= objlen; j++) { + lua_rawgeti(L, i, j); - if (lua_type (L, -1) == LUA_TSTRING) { + if (lua_type(L, -1) == LUA_TSTRING) { gsize optlen; - const char *opt = lua_tolstring (L, -1, &optlen); + const char *opt = lua_tolstring(L, -1, &optlen); - rspamd_task_add_result_option (task, s, opt, optlen); + rspamd_task_add_result_option(task, s, opt, optlen); } - else if (lua_type (L, -1) == LUA_TUSERDATA) { - struct rspamd_lua_text *t = lua_check_text (L, -1); + else if (lua_type(L, -1) == LUA_TUSERDATA) { + struct rspamd_lua_text *t = lua_check_text(L, -1); if (t) { - rspamd_task_add_result_option (task, s, t->start, - t->len); + rspamd_task_add_result_option(task, s, t->start, + t->len); } } - lua_pop (L, 1); + lua_pop(L, 1); } } } } } - lua_pop (L, nresults); + lua_pop(L, nresults); } } - lua_pop (L, 1); /* Error function */ - rspamd_symcache_item_async_dec_check (task, cd->item, "lua symbol"); - g_assert (lua_gettop (L) == level - 1); + lua_pop(L, 1); /* Error function */ + rspamd_symcache_item_async_dec_check(task, cd->item, "lua symbol"); + g_assert(lua_gettop(L) == level - 1); } -static void lua_metric_symbol_callback_return (struct thread_entry *thread_entry, - int ret); +static void lua_metric_symbol_callback_return(struct thread_entry *thread_entry, + int ret); -static void lua_metric_symbol_callback_error (struct thread_entry *thread_entry, - int ret, - const char *msg); +static void lua_metric_symbol_callback_error(struct thread_entry *thread_entry, + int ret, + const char *msg); static void -lua_metric_symbol_callback_coro (struct rspamd_task *task, - struct rspamd_symcache_dynamic_item *item, - gpointer ud) +lua_metric_symbol_callback_coro(struct rspamd_task *task, + struct rspamd_symcache_dynamic_item *item, + gpointer ud) { struct lua_callback_data *cd = ud; struct rspamd_task **ptask; struct thread_entry *thread_entry; cd->item = item; - rspamd_symcache_item_async_inc (task, item, "lua coro symbol"); - thread_entry = lua_thread_pool_get_for_task (task); + rspamd_symcache_item_async_inc(task, item, "lua coro symbol"); + thread_entry = lua_thread_pool_get_for_task(task); g_assert(thread_entry->cd == NULL); thread_entry->cd = cd; lua_State *thread = thread_entry->lua_state; - cd->stack_level = lua_gettop (thread); + cd->stack_level = lua_gettop(thread); if (cd->cb_is_ref) { - lua_rawgeti (thread, LUA_REGISTRYINDEX, cd->callback.ref); + lua_rawgeti(thread, LUA_REGISTRYINDEX, cd->callback.ref); } else { - lua_getglobal (thread, cd->callback.name); + lua_getglobal(thread, cd->callback.name); } - ptask = lua_newuserdata (thread, sizeof (struct rspamd_task *)); - rspamd_lua_setclass (thread, "rspamd{task}", -1); + ptask = lua_newuserdata(thread, sizeof(struct rspamd_task *)); + rspamd_lua_setclass(thread, "rspamd{task}", -1); *ptask = task; thread_entry->finish_callback = lua_metric_symbol_callback_return; thread_entry->error_callback = lua_metric_symbol_callback_error; - lua_thread_call (thread_entry, 1); + lua_thread_call(thread_entry, 1); } static void -lua_metric_symbol_callback_error (struct thread_entry *thread_entry, - int ret, - const char *msg) +lua_metric_symbol_callback_error(struct thread_entry *thread_entry, + int ret, + const char *msg) { struct lua_callback_data *cd = thread_entry->cd; struct rspamd_task *task = thread_entry->task; - msg_err_task ("call to coroutine (%s) failed (%d): %s", cd->symbol, ret, msg); + msg_err_task("call to coroutine (%s) failed (%d): %s", cd->symbol, ret, msg); - rspamd_symcache_item_async_dec_check (task, cd->item, "lua coro symbol"); + rspamd_symcache_item_async_dec_check(task, cd->item, "lua coro symbol"); } static void -lua_metric_symbol_callback_return (struct thread_entry *thread_entry, int ret) +lua_metric_symbol_callback_return(struct thread_entry *thread_entry, int ret) { struct lua_callback_data *cd = thread_entry->cd; struct rspamd_task *task = thread_entry->task; int nresults; struct rspamd_symbol_result *s; - (void)ret; + (void) ret; lua_State *L = thread_entry->lua_state; - nresults = lua_gettop (L) - cd->stack_level; + nresults = lua_gettop(L) - cd->stack_level; if (nresults >= 1) { /* Function returned boolean, so maybe we need to insert result? */ @@ -1425,23 +1424,23 @@ lua_metric_symbol_callback_return (struct thread_entry *thread_entry, int ret) gdouble flag = 1.0; gint type; - type = lua_type (L, cd->stack_level + 1); + type = lua_type(L, cd->stack_level + 1); if (type == LUA_TBOOLEAN) { - res = lua_toboolean (L, cd->stack_level + 1); + res = lua_toboolean(L, cd->stack_level + 1); } else if (type == LUA_TFUNCTION) { - g_assert_not_reached (); + g_assert_not_reached(); } else { - res = lua_tonumber (L, cd->stack_level + 1); + res = lua_tonumber(L, cd->stack_level + 1); } if (res) { gint first_opt = 2; - if (lua_type (L, cd->stack_level + 2) == LUA_TNUMBER) { - flag = lua_tonumber (L, cd->stack_level + 2); + if (lua_type(L, cd->stack_level + 2) == LUA_TNUMBER) { + flag = lua_tonumber(L, cd->stack_level + 2); /* Shift opt index */ first_opt = 3; } @@ -1449,96 +1448,95 @@ lua_metric_symbol_callback_return (struct thread_entry *thread_entry, int ret) flag = res; } - s = rspamd_task_insert_result (task, cd->symbol, flag, NULL); + s = rspamd_task_insert_result(task, cd->symbol, flag, NULL); if (s) { - guint last_pos = lua_gettop (L); + guint last_pos = lua_gettop(L); for (i = cd->stack_level + first_opt; i <= last_pos; i++) { - if (lua_type (L, i) == LUA_TSTRING) { + if (lua_type(L, i) == LUA_TSTRING) { gsize optlen; - const char *opt = lua_tolstring (L, i, &optlen); + const char *opt = lua_tolstring(L, i, &optlen); - rspamd_task_add_result_option (task, s, opt, optlen); + rspamd_task_add_result_option(task, s, opt, optlen); } - else if (lua_type (L, i) == LUA_TUSERDATA) { - struct rspamd_lua_text *t = lua_check_text (L, i); + else if (lua_type(L, i) == LUA_TUSERDATA) { + struct rspamd_lua_text *t = lua_check_text(L, i); if (t) { - rspamd_task_add_result_option (task, s, t->start, - t->len); + rspamd_task_add_result_option(task, s, t->start, + t->len); } } - else if (lua_type (L, i) == LUA_TTABLE) { - gsize objlen = rspamd_lua_table_size (L, i); + else if (lua_type(L, i) == LUA_TTABLE) { + gsize objlen = rspamd_lua_table_size(L, i); - for (guint j = 1; j <= objlen; j ++) { - lua_rawgeti (L, i, j); + for (guint j = 1; j <= objlen; j++) { + lua_rawgeti(L, i, j); - if (lua_type (L, -1) == LUA_TSTRING) { + if (lua_type(L, -1) == LUA_TSTRING) { gsize optlen; - const char *opt = lua_tolstring (L, -1, &optlen); + const char *opt = lua_tolstring(L, -1, &optlen); - rspamd_task_add_result_option (task, s, opt, optlen); + rspamd_task_add_result_option(task, s, opt, optlen); } - else if (lua_type (L, -1) == LUA_TUSERDATA) { - struct rspamd_lua_text *t = lua_check_text (L, -1); + else if (lua_type(L, -1) == LUA_TUSERDATA) { + struct rspamd_lua_text *t = lua_check_text(L, -1); if (t) { - rspamd_task_add_result_option (task, s, t->start, - t->len); + rspamd_task_add_result_option(task, s, t->start, + t->len); } } - lua_pop (L, 1); + lua_pop(L, 1); } } } } - } - lua_pop (L, nresults); + lua_pop(L, nresults); } - g_assert (lua_gettop (L) == cd->stack_level); /* we properly cleaned up the stack */ + g_assert(lua_gettop(L) == cd->stack_level); /* we properly cleaned up the stack */ cd->stack_level = 0; - rspamd_symcache_item_async_dec_check (task, cd->item, "lua coro symbol"); + rspamd_symcache_item_async_dec_check(task, cd->item, "lua coro symbol"); } static GArray * -rspamd_process_id_list (const gchar *entries) +rspamd_process_id_list(const gchar *entries) { gchar **sym_elts; GArray *ret; - sym_elts = g_strsplit_set (entries, ",;", -1); - guint nids = g_strv_length (sym_elts); - ret = g_array_sized_new(FALSE, FALSE, sizeof (guint32), nids); + sym_elts = g_strsplit_set(entries, ",;", -1); + guint nids = g_strv_length(sym_elts); + ret = g_array_sized_new(FALSE, FALSE, sizeof(guint32), nids); - for (guint i = 0; i < nids; i ++) { - guint32 v = rspamd_config_name_to_id (sym_elts[i], strlen (sym_elts[i])); + for (guint i = 0; i < nids; i++) { + guint32 v = rspamd_config_name_to_id(sym_elts[i], strlen(sym_elts[i])); g_array_append_val(ret, v); } - g_strfreev (sym_elts); + g_strfreev(sym_elts); return ret; } static gint -rspamd_register_symbol_fromlua (lua_State *L, - struct rspamd_config *cfg, - const gchar *name, - gint ref, - gdouble weight, - gint priority, - enum rspamd_symbol_type type, - gint parent, - GArray *allowed_ids, - GArray *forbidden_ids, - gboolean optional) +rspamd_register_symbol_fromlua(lua_State *L, + struct rspamd_config *cfg, + const gchar *name, + gint ref, + gdouble weight, + gint priority, + enum rspamd_symbol_type type, + gint parent, + GArray *allowed_ids, + GArray *forbidden_ids, + gboolean optional) { struct lua_callback_data *cd; gint ret = -1; @@ -1547,14 +1545,14 @@ rspamd_register_symbol_fromlua (lua_State *L, priority = 1; } - if ((ret = rspamd_symcache_find_symbol (cfg->cache, name)) != -1) { + if ((ret = rspamd_symcache_find_symbol(cfg->cache, name)) != -1) { if (optional) { - msg_debug_config ("duplicate symbol: %s, skip registering", name); + msg_debug_config("duplicate symbol: %s, skip registering", name); return ret; } else { - msg_err_config ("duplicate symbol: %s, skip registering", name); + msg_err_config("duplicate symbol: %s, skip registering", name); return -1; } @@ -1562,164 +1560,165 @@ rspamd_register_symbol_fromlua (lua_State *L, if (allowed_ids && !(type & SYMBOL_TYPE_EXPLICIT_DISABLE)) { /* Mark symbol as explicit allow */ - msg_info_config ("mark symbol %s as explicit enable as its execution is" - "allowed merely on specific settings ids", name); + msg_info_config("mark symbol %s as explicit enable as its execution is" + "allowed merely on specific settings ids", + name); type |= SYMBOL_TYPE_EXPLICIT_ENABLE; } if (ref != -1) { - cd = rspamd_mempool_alloc0 (cfg->cfg_pool, - sizeof (struct lua_callback_data)); + cd = rspamd_mempool_alloc0(cfg->cfg_pool, + sizeof(struct lua_callback_data)); cd->magic = rspamd_lua_callback_magic; cd->cb_is_ref = TRUE; cd->callback.ref = ref; cd->L = L; if (name) { - cd->symbol = rspamd_mempool_strdup (cfg->cfg_pool, name); + cd->symbol = rspamd_mempool_strdup(cfg->cfg_pool, name); } if (type & SYMBOL_TYPE_USE_CORO) { - ret = rspamd_symcache_add_symbol (cfg->cache, - name, - priority, - lua_metric_symbol_callback_coro, - cd, - type, - parent); + ret = rspamd_symcache_add_symbol(cfg->cache, + name, + priority, + lua_metric_symbol_callback_coro, + cd, + type, + parent); } else { - ret = rspamd_symcache_add_symbol (cfg->cache, - name, - priority, - lua_metric_symbol_callback, - cd, - type, - parent); - } - rspamd_mempool_add_destructor (cfg->cfg_pool, - (rspamd_mempool_destruct_t)lua_destroy_cfg_symbol, - cd); + ret = rspamd_symcache_add_symbol(cfg->cache, + name, + priority, + lua_metric_symbol_callback, + cd, + type, + parent); + } + rspamd_mempool_add_destructor(cfg->cfg_pool, + (rspamd_mempool_destruct_t) lua_destroy_cfg_symbol, + cd); } else { /* No callback */ - ret = rspamd_symcache_add_symbol (cfg->cache, - name, - priority, - NULL, - NULL, - type, - parent); + ret = rspamd_symcache_add_symbol(cfg->cache, + name, + priority, + NULL, + NULL, + type, + parent); } if (allowed_ids) { - rspamd_symcache_set_allowed_settings_ids (cfg->cache, name, - &g_array_index(allowed_ids, guint32, 0), allowed_ids->len); + rspamd_symcache_set_allowed_settings_ids(cfg->cache, name, + &g_array_index(allowed_ids, guint32, 0), allowed_ids->len); } if (forbidden_ids) { - rspamd_symcache_set_forbidden_settings_ids (cfg->cache, name, - &g_array_index(forbidden_ids, guint32, 0), forbidden_ids->len); + rspamd_symcache_set_forbidden_settings_ids(cfg->cache, name, + &g_array_index(forbidden_ids, guint32, 0), forbidden_ids->len); } return ret; } static gint -lua_config_register_post_filter (lua_State *L) +lua_config_register_post_filter(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); gint order = 0, cbref, ret; if (cfg) { - if (lua_type (L, 3) == LUA_TNUMBER) { - order = lua_tonumber (L, 3); + if (lua_type(L, 3) == LUA_TNUMBER) { + order = lua_tonumber(L, 3); } - if (lua_type (L, 2) == LUA_TFUNCTION) { - lua_pushvalue (L, 2); + if (lua_type(L, 2) == LUA_TFUNCTION) { + lua_pushvalue(L, 2); /* Get a reference */ - cbref = luaL_ref (L, LUA_REGISTRYINDEX); + cbref = luaL_ref(L, LUA_REGISTRYINDEX); } else { - return luaL_error (L, "invalid type for callback: %s", - lua_typename (L, lua_type (L, 2))); + return luaL_error(L, "invalid type for callback: %s", + lua_typename(L, lua_type(L, 2))); } - msg_warn_config ("register_post_filter function is deprecated, " - "use register_symbol instead"); + msg_warn_config("register_post_filter function is deprecated, " + "use register_symbol instead"); - ret = rspamd_register_symbol_fromlua (L, - cfg, - NULL, - cbref, - 1.0, - order, - SYMBOL_TYPE_POSTFILTER|SYMBOL_TYPE_CALLBACK, - -1, - NULL, NULL, - FALSE); + ret = rspamd_register_symbol_fromlua(L, + cfg, + NULL, + cbref, + 1.0, + order, + SYMBOL_TYPE_POSTFILTER | SYMBOL_TYPE_CALLBACK, + -1, + NULL, NULL, + FALSE); - lua_pushboolean (L, ret); + lua_pushboolean(L, ret); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_register_pre_filter (lua_State *L) +lua_config_register_pre_filter(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); gint order = 0, cbref, ret; if (cfg) { - if (lua_type (L, 3) == LUA_TNUMBER) { - order = lua_tonumber (L, 3); + if (lua_type(L, 3) == LUA_TNUMBER) { + order = lua_tonumber(L, 3); } - if (lua_type (L, 2) == LUA_TFUNCTION) { - lua_pushvalue (L, 2); + if (lua_type(L, 2) == LUA_TFUNCTION) { + lua_pushvalue(L, 2); /* Get a reference */ - cbref = luaL_ref (L, LUA_REGISTRYINDEX); + cbref = luaL_ref(L, LUA_REGISTRYINDEX); } else { - return luaL_error (L, "invalid type for callback: %s", - lua_typename (L, lua_type (L, 2))); + return luaL_error(L, "invalid type for callback: %s", + lua_typename(L, lua_type(L, 2))); } - msg_warn_config ("register_pre_filter function is deprecated, " - "use register_symbol instead"); + msg_warn_config("register_pre_filter function is deprecated, " + "use register_symbol instead"); - ret = rspamd_register_symbol_fromlua (L, - cfg, - NULL, - cbref, - 1.0, - order, - SYMBOL_TYPE_PREFILTER|SYMBOL_TYPE_CALLBACK, - -1, - NULL, NULL, - FALSE); + ret = rspamd_register_symbol_fromlua(L, + cfg, + NULL, + cbref, + 1.0, + order, + SYMBOL_TYPE_PREFILTER | SYMBOL_TYPE_CALLBACK, + -1, + NULL, NULL, + FALSE); - lua_pushboolean (L, ret); + lua_pushboolean(L, ret); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_get_key (lua_State *L) +lua_config_get_key(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); const gchar *name; size_t namelen; const ucl_object_t *val; @@ -1728,62 +1727,62 @@ lua_config_get_key (lua_State *L) if (name && cfg) { val = ucl_object_lookup_len(cfg->rcl_obj, name, namelen); if (val != NULL) { - ucl_object_push_lua (L, val, val->type != UCL_ARRAY); + ucl_object_push_lua(L, val, val->type != UCL_ARRAY); } else { - lua_pushnil (L); + lua_pushnil(L); } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static guint -lua_parse_symbol_flags (const gchar *str) +lua_parse_symbol_flags(const gchar *str) { guint ret = 0; if (str) { - if (strstr (str, "fine") != NULL) { + if (strstr(str, "fine") != NULL) { ret |= SYMBOL_TYPE_FINE; } - if (strstr (str, "nice") != NULL) { + if (strstr(str, "nice") != NULL) { ret |= SYMBOL_TYPE_FINE; } - if (strstr (str, "empty") != NULL) { + if (strstr(str, "empty") != NULL) { ret |= SYMBOL_TYPE_EMPTY; } - if (strstr (str, "skip") != NULL) { + if (strstr(str, "skip") != NULL) { ret |= SYMBOL_TYPE_SKIPPED; } - if (strstr (str, "nostat") != NULL) { + if (strstr(str, "nostat") != NULL) { ret |= SYMBOL_TYPE_NOSTAT; } - if (strstr (str, "idempotent") != NULL) { + if (strstr(str, "idempotent") != NULL) { ret |= SYMBOL_TYPE_IDEMPOTENT; } - if (strstr (str, "trivial") != NULL) { + if (strstr(str, "trivial") != NULL) { ret |= SYMBOL_TYPE_TRIVIAL; } - if (strstr (str, "ghost") != NULL) { + if (strstr(str, "ghost") != NULL) { ret |= SYMBOL_TYPE_GHOST; } - if (strstr (str, "mime") != NULL) { + if (strstr(str, "mime") != NULL) { ret |= SYMBOL_TYPE_MIME_ONLY; } - if (strstr (str, "ignore_passthrough") != NULL) { + if (strstr(str, "ignore_passthrough") != NULL) { ret |= SYMBOL_TYPE_IGNORE_PASSTHROUGH; } - if (strstr (str, "explicit_disable") != NULL) { + if (strstr(str, "explicit_disable") != NULL) { ret |= SYMBOL_TYPE_EXPLICIT_DISABLE; } - if (strstr (str, "explicit_enable") != NULL) { + if (strstr(str, "explicit_enable") != NULL) { ret |= SYMBOL_TYPE_EXPLICIT_ENABLE; } - if (strstr (str, "coro") != NULL) { + if (strstr(str, "coro") != NULL) { ret |= SYMBOL_TYPE_USE_CORO; } } @@ -1792,58 +1791,58 @@ lua_parse_symbol_flags (const gchar *str) } static guint -lua_parse_symbol_type (const gchar *str) +lua_parse_symbol_type(const gchar *str) { guint ret = SYMBOL_TYPE_NORMAL; gchar **vec; guint i, l; if (str) { - vec = g_strsplit_set (str, ",;", -1); + vec = g_strsplit_set(str, ",;", -1); if (vec) { - l = g_strv_length (vec); + l = g_strv_length(vec); - for (i = 0; i < l; i ++) { + for (i = 0; i < l; i++) { str = vec[i]; /* TODO: total shit, rework some day */ - if (g_ascii_strcasecmp (str, "virtual") == 0) { + if (g_ascii_strcasecmp(str, "virtual") == 0) { ret |= SYMBOL_TYPE_VIRTUAL; ret &= ~SYMBOL_TYPE_NORMAL; ret &= ~SYMBOL_TYPE_CALLBACK; } - else if (g_ascii_strcasecmp (str, "callback") == 0) { + else if (g_ascii_strcasecmp(str, "callback") == 0) { ret |= SYMBOL_TYPE_CALLBACK; ret &= ~SYMBOL_TYPE_NORMAL; ret &= ~SYMBOL_TYPE_VIRTUAL; } - else if (g_ascii_strcasecmp (str, "normal") == 0) { + else if (g_ascii_strcasecmp(str, "normal") == 0) { ret |= SYMBOL_TYPE_NORMAL; ret &= ~SYMBOL_TYPE_CALLBACK; ret &= ~SYMBOL_TYPE_VIRTUAL; } - else if (g_ascii_strcasecmp (str, "prefilter") == 0) { + else if (g_ascii_strcasecmp(str, "prefilter") == 0) { ret |= SYMBOL_TYPE_PREFILTER | SYMBOL_TYPE_GHOST; } - else if (g_ascii_strcasecmp (str, "postfilter") == 0) { + else if (g_ascii_strcasecmp(str, "postfilter") == 0) { ret |= SYMBOL_TYPE_POSTFILTER | SYMBOL_TYPE_GHOST; } - else if (g_ascii_strcasecmp (str, "connfilter") == 0 || - g_ascii_strcasecmp (str, "conn_filter") == 0) { + else if (g_ascii_strcasecmp(str, "connfilter") == 0 || + g_ascii_strcasecmp(str, "conn_filter") == 0) { ret |= SYMBOL_TYPE_CONNFILTER | SYMBOL_TYPE_GHOST; } - else if (g_ascii_strcasecmp (str, "idempotent") == 0) { - ret |= SYMBOL_TYPE_GHOST | + else if (g_ascii_strcasecmp(str, "idempotent") == 0) { + ret |= SYMBOL_TYPE_GHOST | SYMBOL_TYPE_IDEMPOTENT | SYMBOL_TYPE_CALLBACK; } else { gint fl = 0; - fl = lua_parse_symbol_flags (str); + fl = lua_parse_symbol_flags(str); if (fl == 0) { - msg_warn ("bad type: %s", str); + msg_warn("bad type: %s", str); } else { ret |= fl; @@ -1851,7 +1850,7 @@ lua_parse_symbol_type (const gchar *str) } } - g_strfreev (vec); + g_strfreev(vec); } } @@ -1865,105 +1864,106 @@ enum lua_push_symbol_flags_opts { LUA_SYMOPT_FLAG_USE_ARRAY = 1u << 3u, }; -#define LUA_SYMOPT_IS_ARRAY(f) ((f) & (LUA_SYMOPT_FLAG_CREATE_ARRAY|LUA_SYMOPT_FLAG_USE_ARRAY)) -#define LUA_SYMOPT_IS_CREATE(f) ((f) & (LUA_SYMOPT_FLAG_CREATE_ARRAY|LUA_SYMOPT_FLAG_CREATE_MAP)) -#define LUA_OPTION_PUSH(nm) do { \ - if (LUA_SYMOPT_IS_ARRAY(fl)) { \ - lua_pushstring (L, #nm); \ - lua_rawseti (L, -2, i++); \ - } \ - else { \ - lua_pushboolean (L, true); \ - lua_setfield (L, -2, #nm); \ - } \ -} while(0) +#define LUA_SYMOPT_IS_ARRAY(f) ((f) & (LUA_SYMOPT_FLAG_CREATE_ARRAY | LUA_SYMOPT_FLAG_USE_ARRAY)) +#define LUA_SYMOPT_IS_CREATE(f) ((f) & (LUA_SYMOPT_FLAG_CREATE_ARRAY | LUA_SYMOPT_FLAG_CREATE_MAP)) +#define LUA_OPTION_PUSH(nm) \ + do { \ + if (LUA_SYMOPT_IS_ARRAY(fl)) { \ + lua_pushstring(L, #nm); \ + lua_rawseti(L, -2, i++); \ + } \ + else { \ + lua_pushboolean(L, true); \ + lua_setfield(L, -2, #nm); \ + } \ + } while (0) static void -lua_push_symbol_flags (lua_State *L, guint flags, enum lua_push_symbol_flags_opts fl) +lua_push_symbol_flags(lua_State *L, guint flags, enum lua_push_symbol_flags_opts fl) { guint i = 1; - if (LUA_SYMOPT_IS_CREATE (fl)) { - lua_newtable (L); + if (LUA_SYMOPT_IS_CREATE(fl)) { + lua_newtable(L); } if (flags & SYMBOL_TYPE_FINE) { - LUA_OPTION_PUSH (fine); + LUA_OPTION_PUSH(fine); } if (flags & SYMBOL_TYPE_EMPTY) { - LUA_OPTION_PUSH (empty); + LUA_OPTION_PUSH(empty); } if (flags & SYMBOL_TYPE_EXPLICIT_DISABLE) { - LUA_OPTION_PUSH (explicit_disable); + LUA_OPTION_PUSH(explicit_disable); } if (flags & SYMBOL_TYPE_EXPLICIT_ENABLE) { - LUA_OPTION_PUSH (explicit_enable); + LUA_OPTION_PUSH(explicit_enable); } if (flags & SYMBOL_TYPE_IGNORE_PASSTHROUGH) { - LUA_OPTION_PUSH (ignore_passthrough); + LUA_OPTION_PUSH(ignore_passthrough); } if (flags & SYMBOL_TYPE_NOSTAT) { - LUA_OPTION_PUSH (nostat); + LUA_OPTION_PUSH(nostat); } if (flags & SYMBOL_TYPE_IDEMPOTENT) { - LUA_OPTION_PUSH (idempotent); + LUA_OPTION_PUSH(idempotent); } if (flags & SYMBOL_TYPE_MIME_ONLY) { - LUA_OPTION_PUSH (mime); + LUA_OPTION_PUSH(mime); } if (flags & SYMBOL_TYPE_TRIVIAL) { - LUA_OPTION_PUSH (trivial); + LUA_OPTION_PUSH(trivial); } if (flags & SYMBOL_TYPE_SKIPPED) { - LUA_OPTION_PUSH (skip); + LUA_OPTION_PUSH(skip); } if (flags & SYMBOL_TYPE_COMPOSITE) { - LUA_OPTION_PUSH (composite); + LUA_OPTION_PUSH(composite); } } static gint -lua_config_get_symbol_flags (lua_State *L) +lua_config_get_symbol_flags(lua_State *L) { - struct rspamd_config *cfg = lua_check_config (L, 1); - const gchar *name = luaL_checkstring (L, 2); + struct rspamd_config *cfg = lua_check_config(L, 1); + const gchar *name = luaL_checkstring(L, 2); guint flags; if (cfg && name) { - flags = rspamd_symcache_get_symbol_flags (cfg->cache, - name); + flags = rspamd_symcache_get_symbol_flags(cfg->cache, + name); if (flags != 0) { - lua_push_symbol_flags (L, flags, LUA_SYMOPT_FLAG_CREATE_ARRAY); + lua_push_symbol_flags(L, flags, LUA_SYMOPT_FLAG_CREATE_ARRAY); } else { - lua_pushnil (L); + lua_pushnil(L); } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_register_symbol (lua_State * L) +lua_config_register_symbol(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); const gchar *name = NULL, *type_str = NULL, - *description = NULL, *group = NULL; + *description = NULL, *group = NULL; double weight = 0, score = NAN, parent_float = NAN; gboolean one_shot = FALSE; gint ret = -1, cbref = -1; @@ -1974,95 +1974,95 @@ lua_config_register_symbol (lua_State * L) int prev_top = lua_gettop(L); if (cfg) { - if (!rspamd_lua_parse_table_arguments (L, 2, &err, - RSPAMD_LUA_PARSE_ARGUMENTS_DEFAULT, - "name=S;weight=N;callback=F;type=S;priority=I;parent=D;" - "score=D;description=S;group=S;one_shot=B;nshots=I", - &name, &weight, &cbref, &type_str, - &priority, &parent_float, - &score, &description, &group, &one_shot, &nshots)) { - msg_err_config ("bad arguments: %e", err); - g_error_free (err); + if (!rspamd_lua_parse_table_arguments(L, 2, &err, + RSPAMD_LUA_PARSE_ARGUMENTS_DEFAULT, + "name=S;weight=N;callback=F;type=S;priority=I;parent=D;" + "score=D;description=S;group=S;one_shot=B;nshots=I", + &name, &weight, &cbref, &type_str, + &priority, &parent_float, + &score, &description, &group, &one_shot, &nshots)) { + msg_err_config("bad arguments: %e", err); + g_error_free(err); lua_settop(L, prev_top); - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } /* Deal with flags and ids */ - lua_pushstring (L, "flags"); - lua_gettable (L, 2); + lua_pushstring(L, "flags"); + lua_gettable(L, 2); if (lua_type(L, -1) == LUA_TSTRING) { - flags = lua_parse_symbol_flags (lua_tostring (L, -1)); + flags = lua_parse_symbol_flags(lua_tostring(L, -1)); } else if (lua_type(L, -1) == LUA_TTABLE) { - for (lua_pushnil (L); lua_next (L, -2); lua_pop (L, 1)) { - flags |= lua_parse_symbol_flags (lua_tostring (L, -1)); + for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) { + flags |= lua_parse_symbol_flags(lua_tostring(L, -1)); } } - lua_pop (L, 1); /* Clean flags */ + lua_pop(L, 1); /* Clean flags */ lua_pushstring(L, "allowed_ids"); - lua_gettable (L, 2); + lua_gettable(L, 2); if (lua_type(L, -1) == LUA_TSTRING) { - allowed_ids = rspamd_process_id_list(lua_tostring (L, -1)); + allowed_ids = rspamd_process_id_list(lua_tostring(L, -1)); } else if (lua_type(L, -1) == LUA_TTABLE) { - allowed_ids = g_array_sized_new(FALSE, FALSE, sizeof (guint32), - rspamd_lua_table_size(L, -1)); - for (lua_pushnil (L); lua_next (L, -2); lua_pop (L, 1)) { + allowed_ids = g_array_sized_new(FALSE, FALSE, sizeof(guint32), + rspamd_lua_table_size(L, -1)); + for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) { guint32 v = lua_tointeger(L, -1); g_array_append_val(allowed_ids, v); } } - lua_pop (L, 1); + lua_pop(L, 1); lua_pushstring(L, "forbidden_ids"); - lua_gettable (L, 2); + lua_gettable(L, 2); if (lua_type(L, -1) == LUA_TSTRING) { - forbidden_ids = rspamd_process_id_list(lua_tostring (L, -1)); + forbidden_ids = rspamd_process_id_list(lua_tostring(L, -1)); } else if (lua_type(L, -1) == LUA_TTABLE) { - forbidden_ids = g_array_sized_new(FALSE, FALSE, sizeof (guint32), - rspamd_lua_table_size(L, -1)); - for (lua_pushnil (L); lua_next (L, -2); lua_pop (L, 1)) { + forbidden_ids = g_array_sized_new(FALSE, FALSE, sizeof(guint32), + rspamd_lua_table_size(L, -1)); + for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) { guint32 v = lua_tointeger(L, -1); g_array_append_val(forbidden_ids, v); } } - lua_pop (L, 1); + lua_pop(L, 1); if (nshots == 0) { nshots = cfg->default_max_shots; } - type = lua_parse_symbol_type (type_str); + type = lua_parse_symbol_type(type_str); if (!name && !(type & SYMBOL_TYPE_CALLBACK)) { lua_settop(L, prev_top); - return luaL_error (L, "no symbol name but type is not callback"); + return luaL_error(L, "no symbol name but type is not callback"); } else if (!(type & SYMBOL_TYPE_VIRTUAL) && cbref == -1) { lua_settop(L, prev_top); - return luaL_error (L, "no callback for symbol %s", name); + return luaL_error(L, "no callback for symbol %s", name); } - if (isnan (parent_float)) { + if (isnan(parent_float)) { parent = -1; } else { parent = parent_float; } - ret = rspamd_register_symbol_fromlua (L, - cfg, - name, - cbref, - weight == 0 ? 1.0 : weight, - priority, - type | flags, - parent, - allowed_ids, forbidden_ids, - FALSE); + ret = rspamd_register_symbol_fromlua(L, + cfg, + name, + cbref, + weight == 0 ? 1.0 : weight, + priority, + type | flags, + parent, + allowed_ids, forbidden_ids, + FALSE); if (allowed_ids) { g_array_free(allowed_ids, TRUE); @@ -2079,17 +2079,17 @@ lua_config_register_symbol (lua_State * L) } rspamd_config_add_symbol(cfg, name, - score, description, group, flags, - 0, nshots); + score, description, group, flags, + 0, nshots); lua_pushstring(L, "groups"); lua_gettable(L, 2); - if (lua_istable (L, -1)) { - for (lua_pushnil(L); lua_next(L, -2); lua_pop (L, 1)) { + if (lua_istable(L, -1)) { + for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) { if (lua_isstring(L, -1)) { rspamd_config_add_symbol_group(cfg, name, - lua_tostring (L, -1)); + lua_tostring(L, -1)); } else { lua_settop(L, prev_top); @@ -2098,15 +2098,15 @@ lua_config_register_symbol (lua_State * L) } } - lua_pop (L, 1); + lua_pop(L, 1); } - lua_pushstring (L, "augmentations"); - lua_gettable (L, 2); + lua_pushstring(L, "augmentations"); + lua_gettable(L, 2); - if (lua_type (L, -1) == LUA_TTABLE) { + if (lua_type(L, -1) == LUA_TTABLE) { int tbl_idx = lua_gettop(L); - for (lua_pushnil(L); lua_next(L, tbl_idx); lua_pop (L, 1)) { + for (lua_pushnil(L); lua_next(L, tbl_idx); lua_pop(L, 1)) { size_t len; const char *augmentation = lua_tolstring(L, -1, &len), *eqsign_pos; @@ -2125,13 +2125,13 @@ lua_config_register_symbol (lua_State * L) char *augmentation_value = rspamd_ftokdup(&tok); if (!rspamd_symcache_add_symbol_augmentation(cfg->cache, ret, - augentation_name, augmentation_value)) { + augentation_name, augmentation_value)) { lua_settop(L, prev_top); g_free(augmentation_value); g_free(augentation_name); return luaL_error(L, "unknown or invalid augmentation %s in symbol %s", - augmentation, name); + augmentation, name); } g_free(augmentation_value); @@ -2140,11 +2140,11 @@ lua_config_register_symbol (lua_State * L) else { /* Just a value */ if (!rspamd_symcache_add_symbol_augmentation(cfg->cache, ret, - augmentation, NULL)) { + augmentation, NULL)) { lua_settop(L, prev_top); return luaL_error(L, "unknown augmentation %s in symbol %s", - augmentation, name); + augmentation, name); } } } @@ -2154,230 +2154,230 @@ lua_config_register_symbol (lua_State * L) else { lua_settop(L, prev_top); - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } - lua_settop (L, prev_top); - lua_pushinteger (L, ret); + lua_settop(L, prev_top); + lua_pushinteger(L, ret); return 1; } static gint -lua_config_register_symbols (lua_State *L) +lua_config_register_symbols(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); gint i, top, idx, ret = -1; const gchar *sym; gdouble weight = 1.0; - if (lua_gettop (L) < 3) { + if (lua_gettop(L) < 3) { if (cfg) { - msg_err_config ("not enough arguments to register a function"); + msg_err_config("not enough arguments to register a function"); } - lua_error (L); + lua_error(L); return 0; } if (cfg) { - if (lua_type (L, 2) == LUA_TSTRING) { - lua_getglobal (L, luaL_checkstring (L, 2)); + if (lua_type(L, 2) == LUA_TSTRING) { + lua_getglobal(L, luaL_checkstring(L, 2)); } else { - lua_pushvalue (L, 2); + lua_pushvalue(L, 2); } - idx = luaL_ref (L, LUA_REGISTRYINDEX); + idx = luaL_ref(L, LUA_REGISTRYINDEX); - if (lua_type (L, 3) == LUA_TNUMBER) { - weight = lua_tonumber (L, 3); + if (lua_type(L, 3) == LUA_TNUMBER) { + weight = lua_tonumber(L, 3); top = 4; } else { top = 3; } - sym = luaL_checkstring (L, top ++); - ret = rspamd_register_symbol_fromlua (L, - cfg, - sym, - idx, - weight, - 0, - SYMBOL_TYPE_CALLBACK, - -1, - NULL, NULL, - FALSE); - - for (i = top; i <= lua_gettop (L); i++) { - if (lua_type (L, i) == LUA_TTABLE) { - lua_pushvalue (L, i); - lua_pushnil (L); - while (lua_next (L, -2)) { - lua_pushvalue (L, -2); - sym = luaL_checkstring (L, -2); - rspamd_symcache_add_symbol (cfg->cache, sym, - 0, NULL, NULL, - SYMBOL_TYPE_VIRTUAL, ret); - lua_pop (L, 2); + sym = luaL_checkstring(L, top++); + ret = rspamd_register_symbol_fromlua(L, + cfg, + sym, + idx, + weight, + 0, + SYMBOL_TYPE_CALLBACK, + -1, + NULL, NULL, + FALSE); + + for (i = top; i <= lua_gettop(L); i++) { + if (lua_type(L, i) == LUA_TTABLE) { + lua_pushvalue(L, i); + lua_pushnil(L); + while (lua_next(L, -2)) { + lua_pushvalue(L, -2); + sym = luaL_checkstring(L, -2); + rspamd_symcache_add_symbol(cfg->cache, sym, + 0, NULL, NULL, + SYMBOL_TYPE_VIRTUAL, ret); + lua_pop(L, 2); } - lua_pop (L, 1); + lua_pop(L, 1); } - else if (lua_type (L, i) == LUA_TSTRING) { - sym = luaL_checkstring (L, i); - rspamd_symcache_add_symbol (cfg->cache, sym, - 0, NULL, NULL, - SYMBOL_TYPE_VIRTUAL, ret); + else if (lua_type(L, i) == LUA_TSTRING) { + sym = luaL_checkstring(L, i); + rspamd_symcache_add_symbol(cfg->cache, sym, + 0, NULL, NULL, + SYMBOL_TYPE_VIRTUAL, ret); } } } - lua_pushinteger (L, ret); + lua_pushinteger(L, ret); return 1; } static gint -lua_config_register_virtual_symbol (lua_State * L) +lua_config_register_virtual_symbol(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); const gchar *name; double weight; gint ret = -1, parent = -1; if (cfg) { - name = luaL_checkstring (L, 2); - weight = luaL_checknumber (L, 3); + name = luaL_checkstring(L, 2); + weight = luaL_checknumber(L, 3); - if (lua_gettop (L) > 3) { - parent = lua_tonumber (L, 4); + if (lua_gettop(L) > 3) { + parent = lua_tonumber(L, 4); } if (name) { - ret = rspamd_symcache_add_symbol (cfg->cache, name, - weight > 0 ? 0 : -1, NULL, NULL, - SYMBOL_TYPE_VIRTUAL, parent); + ret = rspamd_symcache_add_symbol(cfg->cache, name, + weight > 0 ? 0 : -1, NULL, NULL, + SYMBOL_TYPE_VIRTUAL, parent); } } - lua_pushinteger (L, ret); + lua_pushinteger(L, ret); return 1; } static gint -lua_config_register_callback_symbol (lua_State * L) +lua_config_register_callback_symbol(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); const gchar *name = NULL; double weight; gint ret = -1, top = 2; if (cfg) { - if (lua_type (L, 2) == LUA_TSTRING) { + if (lua_type(L, 2) == LUA_TSTRING) { /* Legacy syntax */ - name = luaL_checkstring (L, 2); - top ++; + name = luaL_checkstring(L, 2); + top++; } - weight = luaL_checknumber (L, top); + weight = luaL_checknumber(L, top); - if (lua_type (L, top + 1) == LUA_TSTRING) { - lua_getglobal (L, luaL_checkstring (L, top + 1)); + if (lua_type(L, top + 1) == LUA_TSTRING) { + lua_getglobal(L, luaL_checkstring(L, top + 1)); } else { - lua_pushvalue (L, top + 1); + lua_pushvalue(L, top + 1); } - ret = rspamd_register_symbol_fromlua (L, - cfg, - name, - luaL_ref (L, LUA_REGISTRYINDEX), - weight, - 0, - SYMBOL_TYPE_CALLBACK, - -1, - NULL, NULL, - FALSE); + ret = rspamd_register_symbol_fromlua(L, + cfg, + name, + luaL_ref(L, LUA_REGISTRYINDEX), + weight, + 0, + SYMBOL_TYPE_CALLBACK, + -1, + NULL, NULL, + FALSE); } - lua_pushinteger (L, ret); + lua_pushinteger(L, ret); return 1; } static gint -lua_config_register_callback_symbol_priority (lua_State * L) +lua_config_register_callback_symbol_priority(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); const gchar *name = NULL; double weight; gint priority, ret = -1, top = 2; if (cfg) { - if (lua_type (L, 2) == LUA_TSTRING) { + if (lua_type(L, 2) == LUA_TSTRING) { /* Legacy syntax */ - name = luaL_checkstring (L, 2); - top ++; + name = luaL_checkstring(L, 2); + top++; } - weight = luaL_checknumber (L, top); - priority = luaL_checknumber (L, top + 1); + weight = luaL_checknumber(L, top); + priority = luaL_checknumber(L, top + 1); - if (lua_type (L, top + 2) == LUA_TSTRING) { - lua_getglobal (L, luaL_checkstring (L, top + 2)); + if (lua_type(L, top + 2) == LUA_TSTRING) { + lua_getglobal(L, luaL_checkstring(L, top + 2)); } else { - lua_pushvalue (L, top + 2); + lua_pushvalue(L, top + 2); } - ret = rspamd_register_symbol_fromlua (L, - cfg, - name, - luaL_ref (L, LUA_REGISTRYINDEX), - weight, - priority, - SYMBOL_TYPE_CALLBACK, - -1, - NULL, NULL, - FALSE); + ret = rspamd_register_symbol_fromlua(L, + cfg, + name, + luaL_ref(L, LUA_REGISTRYINDEX), + weight, + priority, + SYMBOL_TYPE_CALLBACK, + -1, + NULL, NULL, + FALSE); } - lua_pushinteger (L, ret); + lua_pushinteger(L, ret); return 1; } static gint -lua_config_register_dependency (lua_State * L) +lua_config_register_dependency(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); const gchar *parent = NULL, *child = NULL; gint child_id; if (cfg == NULL) { - lua_error (L); + lua_error(L); return 0; } - if (lua_type (L, 2) == LUA_TNUMBER) { - child_id = luaL_checknumber (L, 2); - parent = luaL_checkstring (L, 3); + if (lua_type(L, 2) == LUA_TNUMBER) { + child_id = luaL_checknumber(L, 2); + parent = luaL_checkstring(L, 3); - return luaL_error(L,"calling for obsolete method to register deps for symbol %d->%s", - child_id, parent); + return luaL_error(L, "calling for obsolete method to register deps for symbol %d->%s", + child_id, parent); } else { - child = luaL_checkstring (L,2); - parent = luaL_checkstring (L, 3); + child = luaL_checkstring(L, 2); + parent = luaL_checkstring(L, 3); if (child != NULL && parent != NULL) { - rspamd_symcache_add_delayed_dependency (cfg->cache, child, - parent); + rspamd_symcache_add_delayed_dependency(cfg->cache, child, + parent); } } @@ -2385,12 +2385,12 @@ lua_config_register_dependency (lua_State * L) } static gint -lua_config_set_metric_symbol (lua_State * L) +lua_config_set_metric_symbol(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); const gchar *description = NULL, - *group = NULL, *name = NULL, *flags_str = NULL; + *group = NULL, *name = NULL, *flags_str = NULL; double score; gboolean one_shot = FALSE, one_param = FALSE; GError *err = NULL; @@ -2400,36 +2400,36 @@ lua_config_set_metric_symbol (lua_State * L) if (cfg) { - if (lua_type (L, 2) == LUA_TTABLE) { - if (!rspamd_lua_parse_table_arguments (L, 2, &err, - RSPAMD_LUA_PARSE_ARGUMENTS_DEFAULT, - "*name=S;score=N;description=S;" - "group=S;one_shot=B;one_param=B;priority=N;flags=S;" - "nshots=I", - &name, &score, &description, - &group, &one_shot, &one_param, - &priority, &flags_str, &nshots)) { - msg_err_config ("bad arguments: %e", err); - g_error_free (err); + if (lua_type(L, 2) == LUA_TTABLE) { + if (!rspamd_lua_parse_table_arguments(L, 2, &err, + RSPAMD_LUA_PARSE_ARGUMENTS_DEFAULT, + "*name=S;score=N;description=S;" + "group=S;one_shot=B;one_param=B;priority=N;flags=S;" + "nshots=I", + &name, &score, &description, + &group, &one_shot, &one_param, + &priority, &flags_str, &nshots)) { + msg_err_config("bad arguments: %e", err); + g_error_free(err); return 0; } } else { - name = luaL_checkstring (L, 2); - score = luaL_checknumber (L, 3); + name = luaL_checkstring(L, 2); + score = luaL_checknumber(L, 3); - if (lua_gettop (L) > 3 && lua_type (L, 4) == LUA_TSTRING) { - description = luaL_checkstring (L, 4); + if (lua_gettop(L) > 3 && lua_type(L, 4) == LUA_TSTRING) { + description = luaL_checkstring(L, 4); } - if (lua_gettop (L) > 4 && lua_type (L, 5) == LUA_TSTRING) { + if (lua_gettop(L) > 4 && lua_type(L, 5) == LUA_TSTRING) { /* XXX: metrics */ } - if (lua_gettop (L) > 5 && lua_type (L, 6) == LUA_TSTRING) { - group = luaL_checkstring (L, 6); + if (lua_gettop(L) > 5 && lua_type(L, 6) == LUA_TSTRING) { + group = luaL_checkstring(L, 6); } - if (lua_gettop (L) > 6 && lua_type (L, 7) == LUA_TBOOLEAN) { - one_shot = lua_toboolean (L, 7); + if (lua_gettop(L) > 6 && lua_type(L, 7) == LUA_TBOOLEAN) { + one_shot = lua_toboolean(L, 7); } } @@ -2445,51 +2445,52 @@ lua_config_set_metric_symbol (lua_State * L) } if (flags_str) { - if (strstr (flags_str, "one_shot") != NULL) { + if (strstr(flags_str, "one_shot") != NULL) { nshots = 1; } - if (strstr (flags_str, "ignore") != NULL) { + if (strstr(flags_str, "ignore") != NULL) { flags |= RSPAMD_SYMBOL_FLAG_IGNORE_METRIC; } - if (strstr (flags_str, "one_param") != NULL) { + if (strstr(flags_str, "one_param") != NULL) { flags |= RSPAMD_SYMBOL_FLAG_ONEPARAM; } } - rspamd_config_add_symbol (cfg, name, - score, description, group, flags, (guint) priority, nshots); + rspamd_config_add_symbol(cfg, name, + score, description, group, flags, (guint) priority, nshots); - if (lua_type (L, 2) == LUA_TTABLE) { - lua_pushstring (L, "groups"); - lua_gettable (L, 2); + if (lua_type(L, 2) == LUA_TTABLE) { + lua_pushstring(L, "groups"); + lua_gettable(L, 2); - if (lua_istable (L, -1)) { - for (lua_pushnil (L); lua_next (L, -2); lua_pop (L, 1)) { - if (lua_isstring (L, -1)) { - rspamd_config_add_symbol_group (cfg, name, - lua_tostring (L, -1)); - } else { - return luaL_error (L, "invalid groups element"); + if (lua_istable(L, -1)) { + for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) { + if (lua_isstring(L, -1)) { + rspamd_config_add_symbol_group(cfg, name, + lua_tostring(L, -1)); + } + else { + return luaL_error(L, "invalid groups element"); } } } - lua_pop (L, 1); + lua_pop(L, 1); } } else { - return luaL_error (L, "invalid arguments, rspamd_config expected"); + return luaL_error(L, "invalid arguments, rspamd_config expected"); } return 0; } static gint -lua_config_set_metric_action (lua_State * L) +lua_config_set_metric_action(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); const gchar *name = NULL; double threshold = NAN; GError *err = NULL; @@ -2498,174 +2499,175 @@ lua_config_set_metric_action (lua_State * L) if (cfg) { - if (lua_type (L, 2) == LUA_TTABLE) { - if (!rspamd_lua_parse_table_arguments (L, 2, &err, - RSPAMD_LUA_PARSE_ARGUMENTS_DEFAULT, - "*action=S;score=N;" - "priority=N", - &name, &threshold, - &priority)) { - msg_err_config ("bad arguments: %e", err); - g_error_free (err); + if (lua_type(L, 2) == LUA_TTABLE) { + if (!rspamd_lua_parse_table_arguments(L, 2, &err, + RSPAMD_LUA_PARSE_ARGUMENTS_DEFAULT, + "*action=S;score=N;" + "priority=N", + &name, &threshold, + &priority)) { + msg_err_config("bad arguments: %e", err); + g_error_free(err); return 0; } } - else if (lua_type (L, 2) == LUA_TSTRING && lua_type (L, 3) == LUA_TTABLE) { - name = lua_tostring (L, 2); - obj_tbl = ucl_object_lua_import (L, 3); + else if (lua_type(L, 2) == LUA_TSTRING && lua_type(L, 3) == LUA_TTABLE) { + name = lua_tostring(L, 2); + obj_tbl = ucl_object_lua_import(L, 3); if (obj_tbl) { if (name) { - rspamd_config_set_action_score (cfg, name, obj_tbl); - ucl_object_unref (obj_tbl); + rspamd_config_set_action_score(cfg, name, obj_tbl); + ucl_object_unref(obj_tbl); } else { - ucl_object_unref (obj_tbl); - return luaL_error (L, "invalid first argument, action name expected"); + ucl_object_unref(obj_tbl); + return luaL_error(L, "invalid first argument, action name expected"); } } else { - return luaL_error (L, "invalid second argument, table expected"); + return luaL_error(L, "invalid second argument, table expected"); } } else { - return luaL_error (L, "invalid arguments, table expected"); + return luaL_error(L, "invalid arguments, table expected"); } - if (name != NULL && !isnan (threshold) && threshold != 0) { - obj_tbl = ucl_object_typed_new (UCL_OBJECT); - ucl_object_insert_key (obj_tbl, ucl_object_fromdouble (threshold), - "score", 0, false); - ucl_object_insert_key (obj_tbl, ucl_object_fromdouble (priority), - "priority", 0, false); - rspamd_config_set_action_score (cfg, name, obj_tbl); - ucl_object_unref (obj_tbl); + if (name != NULL && !isnan(threshold) && threshold != 0) { + obj_tbl = ucl_object_typed_new(UCL_OBJECT); + ucl_object_insert_key(obj_tbl, ucl_object_fromdouble(threshold), + "score", 0, false); + ucl_object_insert_key(obj_tbl, ucl_object_fromdouble(priority), + "priority", 0, false); + rspamd_config_set_action_score(cfg, name, obj_tbl); + ucl_object_unref(obj_tbl); } } else { - return luaL_error (L, "invalid arguments, rspamd_config expected"); + return luaL_error(L, "invalid arguments, rspamd_config expected"); } return 0; } static gint -lua_config_get_metric_action (lua_State * L) +lua_config_get_metric_action(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); - const gchar *act_name = luaL_checkstring (L, 2); + struct rspamd_config *cfg = lua_check_config(L, 1); + const gchar *act_name = luaL_checkstring(L, 2); struct rspamd_action *act; if (cfg && act_name) { - act = rspamd_config_get_action (cfg, act_name); + act = rspamd_config_get_action(cfg, act_name); if (act) { - if (!isnan (act->threshold)) { - lua_pushnumber (L, act->threshold); + if (!isnan(act->threshold)) { + lua_pushnumber(L, act->threshold); } else { - lua_pushnil (L); + lua_pushnil(L); } } else { - lua_pushnil (L); + lua_pushnil(L); } } else { - return luaL_error (L, "invalid arguments, rspamd_config expected"); + return luaL_error(L, "invalid arguments, rspamd_config expected"); } return 1; } static gint -lua_config_get_all_actions (lua_State * L) +lua_config_get_all_actions(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); struct rspamd_action *act, *tmp; if (cfg) { - lua_createtable (L, 0, HASH_COUNT (cfg->actions)); - - HASH_ITER (hh, cfg->actions, act, tmp) { - if (!isnan (act->threshold)) { - lua_pushstring (L, act->name); - lua_pushnumber (L, act->threshold); - lua_settable (L, -3); + lua_createtable(L, 0, HASH_COUNT(cfg->actions)); + + HASH_ITER(hh, cfg->actions, act, tmp) + { + if (!isnan(act->threshold)) { + lua_pushstring(L, act->name); + lua_pushnumber(L, act->threshold); + lua_settable(L, -3); } } } else { - return luaL_error (L, "invalid arguments, rspamd_config expected"); + return luaL_error(L, "invalid arguments, rspamd_config expected"); } return 1; } static gint -lua_config_add_composite (lua_State * L) +lua_config_add_composite(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); gchar *name; const gchar *expr_str; struct rspamd_composite *composite; gboolean ret = FALSE; if (cfg) { - name = rspamd_mempool_strdup (cfg->cfg_pool, luaL_checkstring (L, 2)); - expr_str = luaL_checkstring (L, 3); + name = rspamd_mempool_strdup(cfg->cfg_pool, luaL_checkstring(L, 2)); + expr_str = luaL_checkstring(L, 3); if (name && expr_str) { composite = rspamd_composites_manager_add_from_string(cfg->composites_manager, - name, expr_str); + name, expr_str); if (composite) { - rspamd_symcache_add_symbol (cfg->cache, name, - 0, NULL, composite, SYMBOL_TYPE_COMPOSITE, -1); + rspamd_symcache_add_symbol(cfg->cache, name, + 0, NULL, composite, SYMBOL_TYPE_COMPOSITE, -1); ret = TRUE; } } } - lua_pushboolean (L, ret); + lua_pushboolean(L, ret); return 1; } static gint -lua_config_newindex (lua_State *L) +lua_config_newindex(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); const gchar *name; GArray *allowed_ids = NULL, *forbidden_ids = NULL; gint id, nshots; guint flags = 0; gboolean optional = FALSE; - name = luaL_checkstring (L, 2); + name = luaL_checkstring(L, 2); - if (cfg != NULL && name != NULL && lua_gettop (L) == 3) { + if (cfg != NULL && name != NULL && lua_gettop(L) == 3) { - if (lua_type (L, 3) == LUA_TFUNCTION) { + if (lua_type(L, 3) == LUA_TFUNCTION) { /* Normal symbol from just a function */ - lua_pushvalue (L, 3); - rspamd_register_symbol_fromlua (L, - cfg, - name, - luaL_ref (L, LUA_REGISTRYINDEX), - 1.0, - 0, - SYMBOL_TYPE_NORMAL, - -1, - NULL, NULL, - FALSE); - } - else if (lua_type (L, 3) == LUA_TTABLE) { + lua_pushvalue(L, 3); + rspamd_register_symbol_fromlua(L, + cfg, + name, + luaL_ref(L, LUA_REGISTRYINDEX), + 1.0, + 0, + SYMBOL_TYPE_NORMAL, + -1, + NULL, NULL, + FALSE); + } + else if (lua_type(L, 3) == LUA_TTABLE) { guint type = SYMBOL_TYPE_NORMAL, priority = 0; gint idx; gdouble weight = 1.0, score = NAN; @@ -2684,262 +2686,260 @@ lua_config_newindex (lua_State *L) * "one_shot" - optional one shot mode * "description" - optional description */ - lua_pushvalue (L, 3); - lua_pushstring (L, "callback"); - lua_gettable (L, -2); - - if (lua_type (L, -1) != LUA_TFUNCTION) { - lua_pop (L, 2); - msg_info_config ("cannot find callback definition for %s", - name); + lua_pushvalue(L, 3); + lua_pushstring(L, "callback"); + lua_gettable(L, -2); + + if (lua_type(L, -1) != LUA_TFUNCTION) { + lua_pop(L, 2); + msg_info_config("cannot find callback definition for %s", + name); return 0; } - idx = luaL_ref (L, LUA_REGISTRYINDEX); + idx = luaL_ref(L, LUA_REGISTRYINDEX); /* Optional fields */ - lua_pushstring (L, "weight"); - lua_gettable (L, -2); + lua_pushstring(L, "weight"); + lua_gettable(L, -2); - if (lua_type (L, -1) == LUA_TNUMBER) { - weight = lua_tonumber (L, -1); + if (lua_type(L, -1) == LUA_TNUMBER) { + weight = lua_tonumber(L, -1); } - lua_pop (L, 1); + lua_pop(L, 1); - lua_pushstring (L, "priority"); - lua_gettable (L, -2); + lua_pushstring(L, "priority"); + lua_gettable(L, -2); - if (lua_type (L, -1) == LUA_TNUMBER) { + if (lua_type(L, -1) == LUA_TNUMBER) { priority = lua_tointeger(L, -1); } - lua_pop (L, 1); + lua_pop(L, 1); - lua_pushstring (L, "optional"); - lua_gettable (L, -2); + lua_pushstring(L, "optional"); + lua_gettable(L, -2); - if (lua_type (L, -1) == LUA_TBOOLEAN) { - optional = lua_toboolean (L, -1); + if (lua_type(L, -1) == LUA_TBOOLEAN) { + optional = lua_toboolean(L, -1); } - lua_pop (L, 1); + lua_pop(L, 1); - lua_pushstring (L, "type"); - lua_gettable (L, -2); + lua_pushstring(L, "type"); + lua_gettable(L, -2); - if (lua_type (L, -1) == LUA_TSTRING) { - type_str = lua_tostring (L, -1); - type = lua_parse_symbol_type (type_str); + if (lua_type(L, -1) == LUA_TSTRING) { + type_str = lua_tostring(L, -1); + type = lua_parse_symbol_type(type_str); } - lua_pop (L, 1); + lua_pop(L, 1); /* Deal with flags and ids */ - lua_pushstring (L, "flags"); - lua_gettable (L, -2); + lua_pushstring(L, "flags"); + lua_gettable(L, -2); if (lua_type(L, -1) == LUA_TSTRING) { - flags = lua_parse_symbol_flags (lua_tostring (L, -1)); + flags = lua_parse_symbol_flags(lua_tostring(L, -1)); } else if (lua_type(L, -1) == LUA_TTABLE) { - for (lua_pushnil (L); lua_next (L, -2); lua_pop (L, 1)) { - flags |= lua_parse_symbol_flags (lua_tostring (L, -1)); + for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) { + flags |= lua_parse_symbol_flags(lua_tostring(L, -1)); } } - lua_pop (L, 1); /* Clean flags */ + lua_pop(L, 1); /* Clean flags */ lua_pushstring(L, "allowed_ids"); - lua_gettable (L, -2); + lua_gettable(L, -2); if (lua_type(L, -1) == LUA_TSTRING) { - allowed_ids = rspamd_process_id_list(lua_tostring (L, -1)); + allowed_ids = rspamd_process_id_list(lua_tostring(L, -1)); } else if (lua_type(L, -1) == LUA_TTABLE) { - allowed_ids = g_array_sized_new(FALSE, FALSE, sizeof (guint32), - rspamd_lua_table_size(L, -1)); - for (lua_pushnil (L); lua_next (L, -2); lua_pop (L, 1)) { + allowed_ids = g_array_sized_new(FALSE, FALSE, sizeof(guint32), + rspamd_lua_table_size(L, -1)); + for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) { guint32 v = lua_tointeger(L, -1); g_array_append_val(allowed_ids, v); } } - lua_pop (L, 1); + lua_pop(L, 1); lua_pushstring(L, "forbidden_ids"); - lua_gettable (L, -2); + lua_gettable(L, -2); if (lua_type(L, -1) == LUA_TSTRING) { - forbidden_ids = rspamd_process_id_list(lua_tostring (L, -1)); + forbidden_ids = rspamd_process_id_list(lua_tostring(L, -1)); } else if (lua_type(L, -1) == LUA_TTABLE) { - forbidden_ids = g_array_sized_new(FALSE, FALSE, sizeof (guint32), - rspamd_lua_table_size(L, -1)); - for (lua_pushnil (L); lua_next (L, -2); lua_pop (L, 1)) { + forbidden_ids = g_array_sized_new(FALSE, FALSE, sizeof(guint32), + rspamd_lua_table_size(L, -1)); + for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) { guint32 v = lua_tointeger(L, -1); g_array_append_val(forbidden_ids, v); } } - lua_pop (L, 1); - - id = rspamd_register_symbol_fromlua (L, - cfg, - name, - idx, - weight, - priority, - type | flags, - -1, - allowed_ids, forbidden_ids, - optional); + lua_pop(L, 1); + + id = rspamd_register_symbol_fromlua(L, + cfg, + name, + idx, + weight, + priority, + type | flags, + -1, + allowed_ids, forbidden_ids, + optional); if (allowed_ids) { - g_array_free (allowed_ids, TRUE); + g_array_free(allowed_ids, TRUE); } if (forbidden_ids) { - g_array_free (forbidden_ids, TRUE); + g_array_free(forbidden_ids, TRUE); } if (id != -1) { /* Check for condition */ - lua_pushstring (L, "condition"); - lua_gettable (L, -2); + lua_pushstring(L, "condition"); + lua_gettable(L, -2); - if (lua_type (L, -1) == LUA_TFUNCTION) { + if (lua_type(L, -1) == LUA_TFUNCTION) { gint condref; /* Here we pop function from the stack, so no lua_pop is required */ - condref = luaL_ref (L, LUA_REGISTRYINDEX); - g_assert (name != NULL); - rspamd_symcache_add_condition_delayed (cfg->cache, - name, L, condref); - + condref = luaL_ref(L, LUA_REGISTRYINDEX); + g_assert(name != NULL); + rspamd_symcache_add_condition_delayed(cfg->cache, + name, L, condref); } else { - lua_pop (L, 1); + lua_pop(L, 1); } /* Check for augmentations */ - lua_pushstring (L, "augmentations"); - lua_gettable (L, -2); + lua_pushstring(L, "augmentations"); + lua_gettable(L, -2); - if (lua_type (L, -1) == LUA_TTABLE) { + if (lua_type(L, -1) == LUA_TTABLE) { int tbl_idx = lua_gettop(L); - for (lua_pushnil(L); lua_next(L, tbl_idx); lua_pop (L, 1)) { + for (lua_pushnil(L); lua_next(L, tbl_idx); lua_pop(L, 1)) { rspamd_symcache_add_symbol_augmentation(cfg->cache, id, - lua_tostring(L, -1), NULL); + lua_tostring(L, -1), NULL); } } - lua_pop (L, 1); + lua_pop(L, 1); } /* * Now check if a symbol has not been registered in any metric and * insert default value if applicable */ - struct rspamd_symbol *sym = g_hash_table_lookup (cfg->symbols, name); + struct rspamd_symbol *sym = g_hash_table_lookup(cfg->symbols, name); if (sym == NULL || (sym->flags & RSPAMD_SYMBOL_FLAG_UNSCORED)) { nshots = cfg->default_max_shots; - lua_pushstring (L, "score"); - lua_gettable (L, -2); - if (lua_type (L, -1) == LUA_TNUMBER) { - score = lua_tonumber (L, -1); + lua_pushstring(L, "score"); + lua_gettable(L, -2); + if (lua_type(L, -1) == LUA_TNUMBER) { + score = lua_tonumber(L, -1); if (sym) { /* Reset unscored flag */ sym->flags &= ~RSPAMD_SYMBOL_FLAG_UNSCORED; } } - lua_pop (L, 1); + lua_pop(L, 1); - lua_pushstring (L, "group"); - lua_gettable (L, -2); - if (lua_type (L, -1) == LUA_TSTRING) { - group = lua_tostring (L, -1); + lua_pushstring(L, "group"); + lua_gettable(L, -2); + if (lua_type(L, -1) == LUA_TSTRING) { + group = lua_tostring(L, -1); } - lua_pop (L, 1); + lua_pop(L, 1); - if (!isnan (score) || group != NULL) { - lua_pushstring (L, "description"); - lua_gettable (L, -2); + if (!isnan(score) || group != NULL) { + lua_pushstring(L, "description"); + lua_gettable(L, -2); - if (lua_type (L, -1) == LUA_TSTRING) { - description = lua_tostring (L, -1); + if (lua_type(L, -1) == LUA_TSTRING) { + description = lua_tostring(L, -1); } - lua_pop (L, 1); + lua_pop(L, 1); - lua_pushstring (L, "one_shot"); - lua_gettable (L, -2); + lua_pushstring(L, "one_shot"); + lua_gettable(L, -2); - if (lua_type (L, -1) == LUA_TBOOLEAN) { - if (lua_toboolean (L, -1)) { + if (lua_type(L, -1) == LUA_TBOOLEAN) { + if (lua_toboolean(L, -1)) { nshots = 1; } } - lua_pop (L, 1); + lua_pop(L, 1); - lua_pushstring (L, "one_param"); - lua_gettable (L, -2); + lua_pushstring(L, "one_param"); + lua_gettable(L, -2); - if (lua_type (L, -1) == LUA_TBOOLEAN) { - if (lua_toboolean (L, -1)) { + if (lua_type(L, -1) == LUA_TBOOLEAN) { + if (lua_toboolean(L, -1)) { flags |= RSPAMD_SYMBOL_FLAG_ONEPARAM; } } - lua_pop (L, 1); + lua_pop(L, 1); /* * Do not override the existing symbols (using zero priority), * since we are defining default values here */ - if (!isnan (score)) { - rspamd_config_add_symbol (cfg, name, score, - description, group, flags, 0, nshots); + if (!isnan(score)) { + rspamd_config_add_symbol(cfg, name, score, + description, group, flags, 0, nshots); } else if (group) { /* Add with zero score */ - rspamd_config_add_symbol (cfg, name, NAN, - description, group, flags, 0, nshots); + rspamd_config_add_symbol(cfg, name, NAN, + description, group, flags, 0, nshots); } - lua_pushstring (L, "groups"); - lua_gettable (L, -2); + lua_pushstring(L, "groups"); + lua_gettable(L, -2); - if (lua_istable (L, -1)) { - for (lua_pushnil (L); lua_next (L, -2); lua_pop (L, 1)) { - if (lua_isstring (L, -1)) { - rspamd_config_add_symbol_group (cfg, name, - lua_tostring (L, -1)); + if (lua_istable(L, -1)) { + for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) { + if (lua_isstring(L, -1)) { + rspamd_config_add_symbol_group(cfg, name, + lua_tostring(L, -1)); } else { - return luaL_error (L, "invalid groups element"); + return luaL_error(L, "invalid groups element"); } } } - lua_pop (L, 1); + lua_pop(L, 1); } } - else - { + else { /* Fill in missing fields from lua definition if they are not set */ if (sym->description == NULL) { - lua_pushstring (L, "description"); - lua_gettable (L, -2); + lua_pushstring(L, "description"); + lua_gettable(L, -2); - if (lua_type (L, -1) == LUA_TSTRING) { - description = lua_tostring (L, -1); + if (lua_type(L, -1) == LUA_TSTRING) { + description = lua_tostring(L, -1); } - lua_pop (L, 1); + lua_pop(L, 1); if (description) { - sym->description = rspamd_mempool_strdup (cfg->cfg_pool, description); + sym->description = rspamd_mempool_strdup(cfg->cfg_pool, description); } } /* If ungrouped and there is a group defined in lua, change the primary group * Otherwise, add to the list of groups for this symbol. */ - lua_pushstring (L, "group"); - lua_gettable (L, -2); - if (lua_type (L, -1) == LUA_TSTRING) { - group = lua_tostring (L, -1); + lua_pushstring(L, "group"); + lua_gettable(L, -2); + if (lua_type(L, -1) == LUA_TSTRING) { + group = lua_tostring(L, -1); } - lua_pop (L, 1); + lua_pop(L, 1); if (group) { if (sym->flags & RSPAMD_SYMBOL_FLAG_UNGROUPED) { /* Unset the "ungrouped" group */ @@ -2947,71 +2947,71 @@ lua_config_newindex (lua_State *L) } /* Add the group. If the symbol was ungrouped, this will * clear RSPAMD_SYMBOL_FLAG_UNGROUPED from the flags. */ - rspamd_config_add_symbol_group (cfg, name, group); + rspamd_config_add_symbol_group(cfg, name, group); } } /* Remove table from stack */ - lua_pop (L, 1); + lua_pop(L, 1); } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 0; } static gint -lua_config_add_condition (lua_State *L) +lua_config_add_condition(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); - const gchar *sym = luaL_checkstring (L, 2); + struct rspamd_config *cfg = lua_check_config(L, 1); + const gchar *sym = luaL_checkstring(L, 2); gboolean ret = FALSE; gint condref; - if (cfg && sym && lua_type (L, 3) == LUA_TFUNCTION) { - lua_pushvalue (L, 3); - condref = luaL_ref (L, LUA_REGISTRYINDEX); + if (cfg && sym && lua_type(L, 3) == LUA_TFUNCTION) { + lua_pushvalue(L, 3); + condref = luaL_ref(L, LUA_REGISTRYINDEX); - ret = rspamd_symcache_add_condition_delayed (cfg->cache, sym, L, - condref); + ret = rspamd_symcache_add_condition_delayed(cfg->cache, sym, L, + condref); if (!ret) { - luaL_unref (L, LUA_REGISTRYINDEX, condref); + luaL_unref(L, LUA_REGISTRYINDEX, condref); } } - lua_pushboolean (L, ret); + lua_pushboolean(L, ret); return 1; } static gint -lua_config_set_peak_cb (lua_State *L) +lua_config_set_peak_cb(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); gint condref; - if (cfg && lua_type (L, 2) == LUA_TFUNCTION) { - lua_pushvalue (L, 2); - condref = luaL_ref (L, LUA_REGISTRYINDEX); - rspamd_symcache_set_peak_callback (cfg->cache, - condref); + if (cfg && lua_type(L, 2) == LUA_TFUNCTION) { + lua_pushvalue(L, 2); + condref = luaL_ref(L, LUA_REGISTRYINDEX); + rspamd_symcache_set_peak_callback(cfg->cache, + condref); } return 0; } static gint -lua_config_enable_symbol (lua_State *L) +lua_config_enable_symbol(lua_State *L) { - struct rspamd_config *cfg = lua_check_config (L, 1); - const char *sym = luaL_checkstring (L, 2); + struct rspamd_config *cfg = lua_check_config(L, 1); + const char *sym = luaL_checkstring(L, 2); if (!sym || !cfg) { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } rspamd_symcache_enable_symbol_static(cfg->cache, sym); @@ -3020,13 +3020,13 @@ lua_config_enable_symbol (lua_State *L) } static gint -lua_config_disable_symbol (lua_State *L) +lua_config_disable_symbol(lua_State *L) { - struct rspamd_config *cfg = lua_check_config (L, 1); - const char *sym = luaL_checkstring (L, 2); + struct rspamd_config *cfg = lua_check_config(L, 1); + const char *sym = luaL_checkstring(L, 2); if (!sym || !cfg) { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } rspamd_symcache_disable_symbol_static(cfg->cache, sym); @@ -3035,10 +3035,10 @@ lua_config_disable_symbol (lua_State *L) } static gint -lua_config_register_regexp (lua_State *L) +lua_config_register_regexp(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); struct rspamd_lua_regexp *re = NULL; rspamd_regexp_t *cache_re; const gchar *type_str = NULL, *header_str = NULL; @@ -3060,39 +3060,39 @@ lua_config_register_regexp (lua_State *L) * - `pcre_only`: allow merely pcre for this regexp */ if (cfg != NULL) { - if (!rspamd_lua_parse_table_arguments (L, 2, &err, - RSPAMD_LUA_PARSE_ARGUMENTS_DEFAULT, - "*re=U{regexp};*type=S;header=S;pcre_only=B", - &re, &type_str, &header_str, &pcre_only)) { - msg_err_config ("cannot get parameters list: %e", err); + if (!rspamd_lua_parse_table_arguments(L, 2, &err, + RSPAMD_LUA_PARSE_ARGUMENTS_DEFAULT, + "*re=U{regexp};*type=S;header=S;pcre_only=B", + &re, &type_str, &header_str, &pcre_only)) { + msg_err_config("cannot get parameters list: %e", err); if (err) { - g_error_free (err); + g_error_free(err); } } else { - type = rspamd_re_cache_type_from_string (type_str); + type = rspamd_re_cache_type_from_string(type_str); if ((type == RSPAMD_RE_HEADER || - type == RSPAMD_RE_RAWHEADER || - type == RSPAMD_RE_MIMEHEADER) && - header_str == NULL) { - msg_err_config ( - "header argument is mandatory for header/rawheader regexps"); + type == RSPAMD_RE_RAWHEADER || + type == RSPAMD_RE_MIMEHEADER) && + header_str == NULL) { + msg_err_config( + "header argument is mandatory for header/rawheader regexps"); } else { if (pcre_only) { - rspamd_regexp_set_flags (re->re, - rspamd_regexp_get_flags (re->re) | RSPAMD_REGEXP_FLAG_PCRE_ONLY); + rspamd_regexp_set_flags(re->re, + rspamd_regexp_get_flags(re->re) | RSPAMD_REGEXP_FLAG_PCRE_ONLY); } if (header_str != NULL) { /* Include the last \0 */ - header_len = strlen (header_str) + 1; + header_len = strlen(header_str) + 1; } - cache_re = rspamd_re_cache_add (cfg->re_cache, re->re, type, - (gpointer) header_str, header_len, -1); + cache_re = rspamd_re_cache_add(cfg->re_cache, re->re, type, + (gpointer) header_str, header_len, -1); /* * XXX: here are dragons! @@ -3107,12 +3107,12 @@ lua_config_register_regexp (lua_State *L) * lua object */ if (cache_re != re->re) { - rspamd_regexp_unref (re->re); - re->re = rspamd_regexp_ref (cache_re); + rspamd_regexp_unref(re->re); + re->re = rspamd_regexp_ref(cache_re); if (pcre_only) { - rspamd_regexp_set_flags (re->re, - rspamd_regexp_get_flags (re->re) | RSPAMD_REGEXP_FLAG_PCRE_ONLY); + rspamd_regexp_set_flags(re->re, + rspamd_regexp_get_flags(re->re) | RSPAMD_REGEXP_FLAG_PCRE_ONLY); } } } @@ -3123,24 +3123,24 @@ lua_config_register_regexp (lua_State *L) } static gint -lua_config_replace_regexp (lua_State *L) +lua_config_replace_regexp(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); struct rspamd_lua_regexp *old_re = NULL, *new_re = NULL; gboolean pcre_only = FALSE; GError *err = NULL; if (cfg != NULL) { - if (!rspamd_lua_parse_table_arguments (L, 2, &err, - RSPAMD_LUA_PARSE_ARGUMENTS_DEFAULT, - "*old_re=U{regexp};*new_re=U{regexp};pcre_only=B", - &old_re, &new_re, &pcre_only)) { - gint ret = luaL_error (L, "cannot get parameters list: %s", - err ? err->message : "invalid arguments"); + if (!rspamd_lua_parse_table_arguments(L, 2, &err, + RSPAMD_LUA_PARSE_ARGUMENTS_DEFAULT, + "*old_re=U{regexp};*new_re=U{regexp};pcre_only=B", + &old_re, &new_re, &pcre_only)) { + gint ret = luaL_error(L, "cannot get parameters list: %s", + err ? err->message : "invalid arguments"); if (err) { - g_error_free (err); + g_error_free(err); } return ret; @@ -3148,11 +3148,11 @@ lua_config_replace_regexp (lua_State *L) else { if (pcre_only) { - rspamd_regexp_set_flags (new_re->re, - rspamd_regexp_get_flags (new_re->re) | RSPAMD_REGEXP_FLAG_PCRE_ONLY); + rspamd_regexp_set_flags(new_re->re, + rspamd_regexp_get_flags(new_re->re) | RSPAMD_REGEXP_FLAG_PCRE_ONLY); } - rspamd_re_cache_replace (cfg->re_cache, old_re->re, new_re->re); + rspamd_re_cache_replace(cfg->re_cache, old_re->re, new_re->re); } } @@ -3160,157 +3160,157 @@ lua_config_replace_regexp (lua_State *L) } static gint -lua_config_register_worker_script (lua_State *L) +lua_config_register_worker_script(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); - const gchar *worker_type = luaL_checkstring (L, 2), *wtype; + struct rspamd_config *cfg = lua_check_config(L, 1); + const gchar *worker_type = luaL_checkstring(L, 2), *wtype; struct rspamd_worker_conf *cf; GList *cur; struct rspamd_worker_lua_script *sc; gboolean found = FALSE; - if (cfg == NULL || worker_type == NULL || lua_type (L, 3) != LUA_TFUNCTION) { - return luaL_error (L, "invalid arguments"); + if (cfg == NULL || worker_type == NULL || lua_type(L, 3) != LUA_TFUNCTION) { + return luaL_error(L, "invalid arguments"); } - for (cur = g_list_first (cfg->workers); cur != NULL; cur = g_list_next (cur)) { + for (cur = g_list_first(cfg->workers); cur != NULL; cur = g_list_next(cur)) { cf = cur->data; - wtype = g_quark_to_string (cf->type); + wtype = g_quark_to_string(cf->type); - if (g_ascii_strcasecmp (wtype, worker_type) == 0) { - sc = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (*sc)); - lua_pushvalue (L, 3); - sc->cbref = luaL_ref (L, LUA_REGISTRYINDEX); - DL_APPEND (cf->scripts, sc); + if (g_ascii_strcasecmp(wtype, worker_type) == 0) { + sc = rspamd_mempool_alloc0(cfg->cfg_pool, sizeof(*sc)); + lua_pushvalue(L, 3); + sc->cbref = luaL_ref(L, LUA_REGISTRYINDEX); + DL_APPEND(cf->scripts, sc); found = TRUE; } } - lua_pushboolean (L, found); + lua_pushboolean(L, found); return 1; } static gint -lua_config_add_on_load (lua_State *L) +lua_config_add_on_load(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); struct rspamd_config_cfg_lua_script *sc; - if (cfg == NULL || lua_type (L, 2) != LUA_TFUNCTION) { - return luaL_error (L, "invalid arguments"); + if (cfg == NULL || lua_type(L, 2) != LUA_TFUNCTION) { + return luaL_error(L, "invalid arguments"); } - sc = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (*sc)); - lua_pushvalue (L, 2); - sc->cbref = luaL_ref (L, LUA_REGISTRYINDEX); - DL_APPEND (cfg->on_load_scripts, sc); + sc = rspamd_mempool_alloc0(cfg->cfg_pool, sizeof(*sc)); + lua_pushvalue(L, 2); + sc->cbref = luaL_ref(L, LUA_REGISTRYINDEX); + DL_APPEND(cfg->on_load_scripts, sc); return 0; } static inline int -rspamd_post_init_sc_sort (const struct rspamd_config_cfg_lua_script *pra, - const struct rspamd_config_cfg_lua_script *prb) +rspamd_post_init_sc_sort(const struct rspamd_config_cfg_lua_script *pra, + const struct rspamd_config_cfg_lua_script *prb) { /* Inverse sort */ return prb->priority - pra->priority; } static gint -lua_config_add_post_init (lua_State *L) +lua_config_add_post_init(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); struct rspamd_config_cfg_lua_script *sc; guint priority = 0; lua_Debug d; gchar tmp[256], *p; - if (cfg == NULL || lua_type (L, 2) != LUA_TFUNCTION) { - return luaL_error (L, "invalid arguments"); + if (cfg == NULL || lua_type(L, 2) != LUA_TFUNCTION) { + return luaL_error(L, "invalid arguments"); } - if (lua_type (L, 3) == LUA_TNUMBER) { - priority = lua_tointeger (L , 3); + if (lua_type(L, 3) == LUA_TNUMBER) { + priority = lua_tointeger(L, 3); } - if (lua_getstack (L, 1, &d) == 1) { - (void) lua_getinfo (L, "Sl", &d); - if ((p = strrchr (d.short_src, '/')) == NULL) { + if (lua_getstack(L, 1, &d) == 1) { + (void) lua_getinfo(L, "Sl", &d); + if ((p = strrchr(d.short_src, '/')) == NULL) { p = d.short_src; } else { p++; } - if (strlen (p) > 200) { - rspamd_snprintf (tmp, sizeof (tmp), "%10s...]:%d", p, - d.currentline); + if (strlen(p) > 200) { + rspamd_snprintf(tmp, sizeof(tmp), "%10s...]:%d", p, + d.currentline); } else { - rspamd_snprintf (tmp, sizeof (tmp), "%s:%d", p, - d.currentline); + rspamd_snprintf(tmp, sizeof(tmp), "%s:%d", p, + d.currentline); } } - sc = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (*sc)); - lua_pushvalue (L, 2); - sc->cbref = luaL_ref (L, LUA_REGISTRYINDEX); + sc = rspamd_mempool_alloc0(cfg->cfg_pool, sizeof(*sc)); + lua_pushvalue(L, 2); + sc->cbref = luaL_ref(L, LUA_REGISTRYINDEX); sc->priority = priority; - sc->lua_src_pos = rspamd_mempool_strdup (cfg->cfg_pool, tmp); - DL_APPEND (cfg->post_init_scripts, sc); - DL_SORT (cfg->post_init_scripts, rspamd_post_init_sc_sort); + sc->lua_src_pos = rspamd_mempool_strdup(cfg->cfg_pool, tmp); + DL_APPEND(cfg->post_init_scripts, sc); + DL_SORT(cfg->post_init_scripts, rspamd_post_init_sc_sort); return 0; } static gint -lua_config_add_config_unload (lua_State *L) +lua_config_add_config_unload(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); struct rspamd_config_cfg_lua_script *sc; lua_Debug d; gchar tmp[256], *p; - if (cfg == NULL || lua_type (L, 2) != LUA_TFUNCTION) { - return luaL_error (L, "invalid arguments"); + if (cfg == NULL || lua_type(L, 2) != LUA_TFUNCTION) { + return luaL_error(L, "invalid arguments"); } - if (lua_getstack (L, 1, &d) == 1) { - (void) lua_getinfo (L, "Sl", &d); - if ((p = strrchr (d.short_src, '/')) == NULL) { + if (lua_getstack(L, 1, &d) == 1) { + (void) lua_getinfo(L, "Sl", &d); + if ((p = strrchr(d.short_src, '/')) == NULL) { p = d.short_src; } else { p++; } - if (strlen (p) > 20) { - rspamd_snprintf (tmp, sizeof (tmp), "%10s...]:%d", p, - d.currentline); + if (strlen(p) > 20) { + rspamd_snprintf(tmp, sizeof(tmp), "%10s...]:%d", p, + d.currentline); } else { - rspamd_snprintf (tmp, sizeof (tmp), "%s:%d", p, - d.currentline); + rspamd_snprintf(tmp, sizeof(tmp), "%s:%d", p, + d.currentline); } } - sc = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (*sc)); - lua_pushvalue (L, 2); - sc->cbref = luaL_ref (L, LUA_REGISTRYINDEX); - sc->lua_src_pos = rspamd_mempool_strdup (cfg->cfg_pool, tmp); - DL_APPEND (cfg->config_unload_scripts, sc); + sc = rspamd_mempool_alloc0(cfg->cfg_pool, sizeof(*sc)); + lua_pushvalue(L, 2); + sc->cbref = luaL_ref(L, LUA_REGISTRYINDEX); + sc->lua_src_pos = rspamd_mempool_strdup(cfg->cfg_pool, tmp); + DL_APPEND(cfg->config_unload_scripts, sc); return 0; } -static void lua_periodic_callback_finish (struct thread_entry *thread, int ret); -static void lua_periodic_callback_error (struct thread_entry *thread, int ret, const char *msg); +static void lua_periodic_callback_finish(struct thread_entry *thread, int ret); +static void lua_periodic_callback_error(struct thread_entry *thread, int ret, const char *msg); struct rspamd_lua_periodic { struct ev_loop *event_loop; @@ -3325,52 +3325,52 @@ struct rspamd_lua_periodic { }; static void -lua_periodic_dtor (struct rspamd_lua_periodic *periodic) +lua_periodic_dtor(struct rspamd_lua_periodic *periodic) { - luaL_unref (periodic->L, LUA_REGISTRYINDEX, periodic->cbref); - ev_timer_stop (periodic->event_loop, &periodic->ev); + luaL_unref(periodic->L, LUA_REGISTRYINDEX, periodic->cbref); + ev_timer_stop(periodic->event_loop, &periodic->ev); } static void -lua_periodic_fin (gpointer p) +lua_periodic_fin(gpointer p) { - struct rspamd_lua_periodic *periodic = (struct rspamd_lua_periodic *)p; + struct rspamd_lua_periodic *periodic = (struct rspamd_lua_periodic *) p; - REF_RELEASE (periodic); + REF_RELEASE(periodic); } static void -lua_periodic_callback (struct ev_loop *loop, ev_timer *w, int revents) +lua_periodic_callback(struct ev_loop *loop, ev_timer *w, int revents) { - struct rspamd_lua_periodic *periodic = (struct rspamd_lua_periodic *)w->data; + struct rspamd_lua_periodic *periodic = (struct rspamd_lua_periodic *) w->data; struct rspamd_config **pcfg, *cfg; struct ev_loop **pev_base; struct thread_entry *thread; lua_State *L; - REF_RETAIN (periodic); - thread = lua_thread_pool_get_for_config (periodic->cfg); + REF_RETAIN(periodic); + thread = lua_thread_pool_get_for_config(periodic->cfg); thread->cd = periodic; thread->finish_callback = lua_periodic_callback_finish; thread->error_callback = lua_periodic_callback_error; L = thread->lua_state; - lua_rawgeti (L, LUA_REGISTRYINDEX, periodic->cbref); - pcfg = lua_newuserdata (L, sizeof (*pcfg)); - rspamd_lua_setclass (L, "rspamd{config}", -1); + lua_rawgeti(L, LUA_REGISTRYINDEX, periodic->cbref); + pcfg = lua_newuserdata(L, sizeof(*pcfg)); + rspamd_lua_setclass(L, "rspamd{config}", -1); cfg = periodic->cfg; *pcfg = cfg; - pev_base = lua_newuserdata (L, sizeof (*pev_base)); - rspamd_lua_setclass (L, "rspamd{ev_base}", -1); + pev_base = lua_newuserdata(L, sizeof(*pev_base)); + rspamd_lua_setclass(L, "rspamd{ev_base}", -1); *pev_base = periodic->event_loop; - lua_pushnumber (L, ev_now (periodic->event_loop)); + lua_pushnumber(L, ev_now(periodic->event_loop)); - lua_thread_call (thread, 3); + lua_thread_call(thread, 3); } static void -lua_periodic_callback_finish (struct thread_entry *thread, int ret) +lua_periodic_callback_finish(struct thread_entry *thread, int ret) { lua_State *L; struct rspamd_lua_periodic *periodic = thread->cd; @@ -3379,19 +3379,19 @@ lua_periodic_callback_finish (struct thread_entry *thread, int ret) L = thread->lua_state; - ev_now_update (periodic->event_loop); + ev_now_update(periodic->event_loop); if (ret == 0) { - if (lua_type (L, -1) == LUA_TBOOLEAN) { - plan_more = lua_toboolean (L, -1); + if (lua_type(L, -1) == LUA_TBOOLEAN) { + plan_more = lua_toboolean(L, -1); timeout = periodic->timeout; } - else if (lua_type (L, -1) == LUA_TNUMBER) { - timeout = lua_tonumber (L, -1); + else if (lua_type(L, -1) == LUA_TNUMBER) { + timeout = lua_tonumber(L, -1); plan_more = timeout > 0 ? TRUE : FALSE; } - lua_pop (L, 1); /* Return value */ + lua_pop(L, 1); /* Return value */ } if (periodic->cfg->cur_worker) { @@ -3403,151 +3403,151 @@ lua_periodic_callback_finish (struct thread_entry *thread, int ret) if (plan_more) { if (periodic->need_jitter) { - timeout = rspamd_time_jitter (timeout, 0.0); + timeout = rspamd_time_jitter(timeout, 0.0); } periodic->ev.repeat = timeout; - ev_timer_again (periodic->event_loop, &periodic->ev); + ev_timer_again(periodic->event_loop, &periodic->ev); } else { - ev_timer_stop (periodic->event_loop, &periodic->ev); + ev_timer_stop(periodic->event_loop, &periodic->ev); } - REF_RELEASE (periodic); + REF_RELEASE(periodic); } static void -lua_periodic_callback_error (struct thread_entry *thread, int ret, const char *msg) +lua_periodic_callback_error(struct thread_entry *thread, int ret, const char *msg) { struct rspamd_config *cfg; struct rspamd_lua_periodic *periodic = thread->cd; cfg = periodic->cfg; - msg_err_config ("call to periodic script (registered at %s) failed: %s", - periodic->lua_src_pos, msg); + msg_err_config("call to periodic script (registered at %s) failed: %s", + periodic->lua_src_pos, msg); - lua_periodic_callback_finish (thread, ret); + lua_periodic_callback_finish(thread, ret); } static gint -lua_config_add_periodic (lua_State *L) +lua_config_add_periodic(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); - struct ev_loop *ev_base = lua_check_ev_base (L, 2); - gdouble timeout = lua_tonumber (L, 3); + struct rspamd_config *cfg = lua_check_config(L, 1); + struct ev_loop *ev_base = lua_check_ev_base(L, 2); + gdouble timeout = lua_tonumber(L, 3); struct rspamd_lua_periodic *periodic; gboolean need_jitter = FALSE; lua_Debug d; gchar tmp[256], *p; - if (cfg == NULL || timeout < 0 || lua_type (L, 4) != LUA_TFUNCTION) { - return luaL_error (L, "invalid arguments"); + if (cfg == NULL || timeout < 0 || lua_type(L, 4) != LUA_TFUNCTION) { + return luaL_error(L, "invalid arguments"); } - if (lua_type (L, 5) == LUA_TBOOLEAN) { - need_jitter = lua_toboolean (L, 5); + if (lua_type(L, 5) == LUA_TBOOLEAN) { + need_jitter = lua_toboolean(L, 5); } - if (lua_getstack (L, 1, &d) == 1) { - (void) lua_getinfo (L, "Sl", &d); - if ((p = strrchr (d.short_src, '/')) == NULL) { + if (lua_getstack(L, 1, &d) == 1) { + (void) lua_getinfo(L, "Sl", &d); + if ((p = strrchr(d.short_src, '/')) == NULL) { p = d.short_src; } else { p++; } - if (strlen (p) > 20) { - rspamd_snprintf (tmp, sizeof (tmp), "%10s...]:%d", p, - d.currentline); + if (strlen(p) > 20) { + rspamd_snprintf(tmp, sizeof(tmp), "%10s...]:%d", p, + d.currentline); } else { - rspamd_snprintf (tmp, sizeof (tmp), "%s:%d", p, - d.currentline); + rspamd_snprintf(tmp, sizeof(tmp), "%s:%d", p, + d.currentline); } } - periodic = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (*periodic)); + periodic = rspamd_mempool_alloc0(cfg->cfg_pool, sizeof(*periodic)); periodic->timeout = timeout; periodic->L = L; periodic->cfg = cfg; periodic->event_loop = ev_base; periodic->need_jitter = need_jitter; - periodic->lua_src_pos = rspamd_mempool_strdup (cfg->cfg_pool, tmp); - lua_pushvalue (L, 4); - periodic->cbref = luaL_ref (L, LUA_REGISTRYINDEX); + periodic->lua_src_pos = rspamd_mempool_strdup(cfg->cfg_pool, tmp); + lua_pushvalue(L, 4); + periodic->cbref = luaL_ref(L, LUA_REGISTRYINDEX); if (need_jitter) { - timeout = rspamd_time_jitter (timeout, 0.0); + timeout = rspamd_time_jitter(timeout, 0.0); } - ev_timer_init (&periodic->ev, lua_periodic_callback, timeout, 0.0); + ev_timer_init(&periodic->ev, lua_periodic_callback, timeout, 0.0); periodic->ev.data = periodic; - ev_timer_start (ev_base, &periodic->ev); - REF_INIT_RETAIN (periodic, lua_periodic_dtor); + ev_timer_start(ev_base, &periodic->ev); + REF_INIT_RETAIN(periodic, lua_periodic_dtor); - rspamd_mempool_add_destructor (cfg->cfg_pool, lua_periodic_fin, - periodic); + rspamd_mempool_add_destructor(cfg->cfg_pool, lua_periodic_fin, + periodic); return 0; } static gint -lua_config_get_symbols_count (lua_State *L) +lua_config_get_symbols_count(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); guint res = 0; if (cfg != NULL) { - res = rspamd_symcache_stats_symbols_count (cfg->cache); + res = rspamd_symcache_stats_symbols_count(cfg->cache); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } - lua_pushinteger (L, res); + lua_pushinteger(L, res); return 1; } static gint -lua_config_get_symbols_cksum (lua_State *L) +lua_config_get_symbols_cksum(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); guint64 res = 0, *pres; if (cfg != NULL) { - res = rspamd_symcache_get_cksum (cfg->cache); + res = rspamd_symcache_get_cksum(cfg->cache); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } - pres = lua_newuserdata (L, sizeof (res)); + pres = lua_newuserdata(L, sizeof(res)); *pres = res; - rspamd_lua_setclass (L, "rspamd{int64}", -1); + rspamd_lua_setclass(L, "rspamd{int64}", -1); return 1; } static gint -lua_config_get_symbols_counters (lua_State *L) +lua_config_get_symbols_counters(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); ucl_object_t *counters; if (cfg != NULL) { - counters = rspamd_symcache_counters (cfg->cache); - ucl_object_push_lua (L, counters, true); - ucl_object_unref (counters); + counters = rspamd_symcache_counters(cfg->cache); + ucl_object_push_lua(L, counters, true); + ucl_object_unref(counters); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; @@ -3560,9 +3560,9 @@ struct lua_metric_symbols_cbdata { }; static void -lua_metric_symbol_inserter (gpointer k, gpointer v, gpointer ud) +lua_metric_symbol_inserter(gpointer k, gpointer v, gpointer ud) { - struct lua_metric_symbols_cbdata *cbd = (struct lua_metric_symbols_cbdata *)ud; + struct lua_metric_symbols_cbdata *cbd = (struct lua_metric_symbols_cbdata *) ud; lua_State *L; const gchar *sym = k; struct rspamd_symbol *s = (struct rspamd_symbol *) v; @@ -3575,100 +3575,101 @@ lua_metric_symbol_inserter (gpointer k, gpointer v, gpointer ud) lua_pushstring(L, sym); /* Symbol name */ } - lua_createtable (L, 0, 6); - lua_pushstring (L, "score"); - lua_pushnumber (L, s->score); - lua_settable (L, -3); - lua_pushstring (L, "description"); - lua_pushstring (L, s->description); - lua_settable (L, -3); + lua_createtable(L, 0, 6); + lua_pushstring(L, "score"); + lua_pushnumber(L, s->score); + lua_settable(L, -3); + lua_pushstring(L, "description"); + lua_pushstring(L, s->description); + lua_settable(L, -3); - lua_pushstring (L, "flags"); - lua_createtable (L, 0, 3); + lua_pushstring(L, "flags"); + lua_createtable(L, 0, 3); if (s->flags & RSPAMD_SYMBOL_FLAG_IGNORE_METRIC) { - lua_pushstring (L, "ignore"); - lua_pushboolean (L, true); - lua_settable (L, -3); + lua_pushstring(L, "ignore"); + lua_pushboolean(L, true); + lua_settable(L, -3); } if (s->flags & RSPAMD_SYMBOL_FLAG_ONEPARAM) { - lua_pushstring (L, "oneparam"); - lua_pushboolean (L, true); - lua_settable (L, -3); + lua_pushstring(L, "oneparam"); + lua_pushboolean(L, true); + lua_settable(L, -3); } if (s->flags & RSPAMD_SYMBOL_FLAG_UNGROUPED) { - lua_pushstring (L, "ungrouped"); - lua_pushboolean (L, true); - lua_settable (L, -3); + lua_pushstring(L, "ungrouped"); + lua_pushboolean(L, true); + lua_settable(L, -3); } if (s->flags & RSPAMD_SYMBOL_FLAG_DISABLED) { - lua_pushstring (L, "disabled"); - lua_pushboolean (L, true); - lua_settable (L, -3); + lua_pushstring(L, "disabled"); + lua_pushboolean(L, true); + lua_settable(L, -3); } if (s->cache_item) { - guint sflags = rspamd_symcache_get_symbol_flags (cbd->cfg->cache, sym); + guint sflags = rspamd_symcache_get_symbol_flags(cbd->cfg->cache, sym); - lua_push_symbol_flags (L, sflags, LUA_SYMOPT_FLAG_USE_MAP); + lua_push_symbol_flags(L, sflags, LUA_SYMOPT_FLAG_USE_MAP); guint nids; - const guint *allowed_ids = rspamd_symcache_get_allowed_settings_ids (cbd->cfg->cache, - sym, &nids); + const guint *allowed_ids = rspamd_symcache_get_allowed_settings_ids(cbd->cfg->cache, + sym, &nids); if (allowed_ids && nids > 0) { - lua_createtable (L, nids, 0); + lua_createtable(L, nids, 0); - for (i = 0; i < nids; i ++) { - lua_pushinteger (L, allowed_ids[i]); - lua_rawseti (L, -2, i + 1); + for (i = 0; i < nids; i++) { + lua_pushinteger(L, allowed_ids[i]); + lua_rawseti(L, -2, i + 1); } - lua_setfield (L, -2, "allowed_ids"); + lua_setfield(L, -2, "allowed_ids"); } - const guint *forbidden_ids = rspamd_symcache_get_forbidden_settings_ids ( - cbd->cfg->cache, - sym, &nids); + const guint *forbidden_ids = rspamd_symcache_get_forbidden_settings_ids( + cbd->cfg->cache, + sym, &nids); if (forbidden_ids && nids > 0) { - lua_createtable (L, nids, 0); + lua_createtable(L, nids, 0); - for (i = 0; i < nids; i ++) { - lua_pushinteger (L, forbidden_ids[i]); - lua_rawseti (L, -2, i + 1); + for (i = 0; i < nids; i++) { + lua_pushinteger(L, forbidden_ids[i]); + lua_rawseti(L, -2, i + 1); } - lua_setfield (L, -2, "forbidden_ids"); + lua_setfield(L, -2, "forbidden_ids"); } } - lua_settable (L, -3); /* Flags -> flags_table */ + lua_settable(L, -3); /* Flags -> flags_table */ - lua_pushstring (L, "nshots"); - lua_pushinteger (L, s->nshots); - lua_settable (L, -3); + lua_pushstring(L, "nshots"); + lua_pushinteger(L, s->nshots); + lua_settable(L, -3); if (s->gr) { - lua_pushstring (L, "group"); - lua_pushstring (L, s->gr->name); - lua_settable (L, -3); + lua_pushstring(L, "group"); + lua_pushstring(L, s->gr->name); + lua_settable(L, -3); } if (s->groups && s->groups->len > 0) { - lua_pushstring (L, "groups"); - lua_createtable (L, s->groups->len, 0); + lua_pushstring(L, "groups"); + lua_createtable(L, s->groups->len, 0); - PTR_ARRAY_FOREACH (s->groups, i, gr) { - lua_pushstring (L, gr->name); - lua_rawseti (L, -2, i + 1); /* Groups[i + 1] = group_name */ + PTR_ARRAY_FOREACH(s->groups, i, gr) + { + lua_pushstring(L, gr->name); + lua_rawseti(L, -2, i + 1); /* Groups[i + 1] = group_name */ } - lua_settable (L, -3); /* Groups -> groups_table */ + lua_settable(L, -3); /* Groups -> groups_table */ } else { - lua_createtable (L, 0, 0); - lua_setfield (L, -2, "groups"); + lua_createtable(L, 0, 0); + lua_setfield(L, -2, "groups"); } if (cbd->is_table) { @@ -3677,10 +3678,10 @@ lua_metric_symbol_inserter (gpointer k, gpointer v, gpointer ud) } static gint -lua_config_get_symbols (lua_State *L) +lua_config_get_symbols(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); if (cfg != NULL) { struct lua_metric_symbols_cbdata cbd; @@ -3689,23 +3690,23 @@ lua_config_get_symbols (lua_State *L) cbd.cfg = cfg; cbd.is_table = true; - lua_createtable (L, 0, g_hash_table_size (cfg->symbols)); - g_hash_table_foreach (cfg->symbols, - lua_metric_symbol_inserter, - &cbd); + lua_createtable(L, 0, g_hash_table_size(cfg->symbols)); + g_hash_table_foreach(cfg->symbols, + lua_metric_symbol_inserter, + &cbd); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_get_symbol (lua_State *L) +lua_config_get_symbol(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); const gchar *sym_name = luaL_checkstring(L, 2); if (cfg != NULL && sym_name != NULL) { @@ -3716,7 +3717,7 @@ lua_config_get_symbol (lua_State *L) cbd.L = L; cbd.cfg = cfg; cbd.is_table = false; - lua_metric_symbol_inserter((void *)sym_name, s, &cbd); + lua_metric_symbol_inserter((void *) sym_name, s, &cbd); } else { /* No config for a symbol */ @@ -3724,261 +3725,261 @@ lua_config_get_symbol (lua_State *L) } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_get_symbol_callback (lua_State *L) +lua_config_get_symbol_callback(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); - const gchar *sym = luaL_checkstring (L, 2); + struct rspamd_config *cfg = lua_check_config(L, 1); + const gchar *sym = luaL_checkstring(L, 2); struct rspamd_abstract_callback_data *abs_cbdata; struct lua_callback_data *cbd; if (cfg != NULL && sym != NULL) { - abs_cbdata = rspamd_symcache_get_cbdata (cfg->cache, sym); + abs_cbdata = rspamd_symcache_get_cbdata(cfg->cache, sym); if (abs_cbdata == NULL || abs_cbdata->magic != rspamd_lua_callback_magic) { - lua_pushnil (L); + lua_pushnil(L); } else { - cbd = (struct lua_callback_data *)abs_cbdata; + cbd = (struct lua_callback_data *) abs_cbdata; if (cbd->cb_is_ref) { - lua_rawgeti (L, LUA_REGISTRYINDEX, cbd->callback.ref); + lua_rawgeti(L, LUA_REGISTRYINDEX, cbd->callback.ref); } else { - lua_getglobal (L, cbd->callback.name); + lua_getglobal(L, cbd->callback.name); } } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_set_symbol_callback (lua_State *L) +lua_config_set_symbol_callback(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); - const gchar *sym = luaL_checkstring (L, 2); + struct rspamd_config *cfg = lua_check_config(L, 1); + const gchar *sym = luaL_checkstring(L, 2); struct rspamd_abstract_callback_data *abs_cbdata; struct lua_callback_data *cbd; - if (cfg != NULL && sym != NULL && lua_type (L, 3) == LUA_TFUNCTION) { - abs_cbdata = rspamd_symcache_get_cbdata (cfg->cache, sym); + if (cfg != NULL && sym != NULL && lua_type(L, 3) == LUA_TFUNCTION) { + abs_cbdata = rspamd_symcache_get_cbdata(cfg->cache, sym); if (abs_cbdata == NULL || abs_cbdata->magic != rspamd_lua_callback_magic) { - lua_pushboolean (L, FALSE); + lua_pushboolean(L, FALSE); } else { - cbd = (struct lua_callback_data *)abs_cbdata; + cbd = (struct lua_callback_data *) abs_cbdata; if (cbd->cb_is_ref) { - luaL_unref (L, LUA_REGISTRYINDEX, cbd->callback.ref); + luaL_unref(L, LUA_REGISTRYINDEX, cbd->callback.ref); } else { cbd->cb_is_ref = TRUE; } - lua_pushvalue (L, 3); - cbd->callback.ref = luaL_ref (L, LUA_REGISTRYINDEX); - lua_pushboolean (L, TRUE); + lua_pushvalue(L, 3); + cbd->callback.ref = luaL_ref(L, LUA_REGISTRYINDEX); + lua_pushboolean(L, TRUE); } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_get_symbol_stat (lua_State *L) +lua_config_get_symbol_stat(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); - const gchar *sym = luaL_checkstring (L, 2); + struct rspamd_config *cfg = lua_check_config(L, 1); + const gchar *sym = luaL_checkstring(L, 2); gdouble freq, stddev, tm; guint hits; if (cfg != NULL && sym != NULL) { - if (!rspamd_symcache_stat_symbol (cfg->cache, sym, &freq, - &stddev, &tm, &hits)) { - lua_pushnil (L); + if (!rspamd_symcache_stat_symbol(cfg->cache, sym, &freq, + &stddev, &tm, &hits)) { + lua_pushnil(L); } else { - lua_createtable (L, 0, 4); - lua_pushstring (L, "frequency"); - lua_pushnumber (L, freq); - lua_settable (L, -3); - lua_pushstring (L, "sttdev"); - lua_pushnumber (L, stddev); - lua_settable (L, -3); - lua_pushstring (L, "time"); - lua_pushnumber (L, tm); - lua_settable (L, -3); - lua_pushstring (L, "hits"); - lua_pushinteger (L, hits); - lua_settable (L, -3); + lua_createtable(L, 0, 4); + lua_pushstring(L, "frequency"); + lua_pushnumber(L, freq); + lua_settable(L, -3); + lua_pushstring(L, "sttdev"); + lua_pushnumber(L, stddev); + lua_settable(L, -3); + lua_pushstring(L, "time"); + lua_pushnumber(L, tm); + lua_settable(L, -3); + lua_pushstring(L, "hits"); + lua_pushinteger(L, hits); + lua_settable(L, -3); } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_get_symbol_parent (lua_State *L) +lua_config_get_symbol_parent(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); - const gchar *sym = luaL_checkstring (L, 2), *parent; + struct rspamd_config *cfg = lua_check_config(L, 1); + const gchar *sym = luaL_checkstring(L, 2), *parent; if (cfg != NULL && sym != NULL) { - parent = rspamd_symcache_get_parent (cfg->cache, sym); + parent = rspamd_symcache_get_parent(cfg->cache, sym); if (parent) { - lua_pushstring (L, parent); + lua_pushstring(L, parent); } else { - lua_pushnil (L); + lua_pushnil(L); } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_get_group_symbols (lua_State *L) +lua_config_get_group_symbols(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); - const gchar *gr_name = luaL_checkstring (L, 2); + struct rspamd_config *cfg = lua_check_config(L, 1); + const gchar *gr_name = luaL_checkstring(L, 2); if (cfg != NULL && gr_name != NULL) { struct rspamd_symbols_group *group; - group = g_hash_table_lookup (cfg->groups, gr_name); + group = g_hash_table_lookup(cfg->groups, gr_name); if (group == NULL) { - lua_pushnil (L); + lua_pushnil(L); } else { guint i = 1; gpointer k, v; GHashTableIter it; - lua_createtable (L, g_hash_table_size (group->symbols), 0); - g_hash_table_iter_init (&it, group->symbols); + lua_createtable(L, g_hash_table_size(group->symbols), 0); + g_hash_table_iter_init(&it, group->symbols); - while (g_hash_table_iter_next (&it, &k, &v)) { - lua_pushstring (L, k); - lua_rawseti (L, -2, i); - i ++; + while (g_hash_table_iter_next(&it, &k, &v)) { + lua_pushstring(L, k); + lua_rawseti(L, -2, i); + i++; } } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_get_groups (lua_State *L) +lua_config_get_groups(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); gboolean need_private; struct rspamd_symbols_group *gr; GHashTableIter it; gpointer k, v; if (cfg) { - if (lua_isboolean (L, 2)) { - need_private = lua_toboolean (L, 2); + if (lua_isboolean(L, 2)) { + need_private = lua_toboolean(L, 2); } else { need_private = !(cfg->public_groups_only); } - lua_createtable (L, 0, g_hash_table_size (cfg->groups)); - g_hash_table_iter_init (&it, cfg->groups); + lua_createtable(L, 0, g_hash_table_size(cfg->groups)); + g_hash_table_iter_init(&it, cfg->groups); - while (g_hash_table_iter_next (&it, &k, &v)) { - gr = (struct rspamd_symbols_group *)v; + while (g_hash_table_iter_next(&it, &k, &v)) { + gr = (struct rspamd_symbols_group *) v; if (need_private || (gr->flags & RSPAMD_SYMBOL_GROUP_PUBLIC)) { - lua_createtable (L, 0, 4); - - lua_pushstring (L, gr->description); - lua_setfield (L, -2, "description"); - lua_pushnumber (L, gr->max_score); - lua_setfield (L, -2, "max_score"); - lua_pushboolean (L, (gr->flags & RSPAMD_SYMBOL_GROUP_PUBLIC) != 0); - lua_setfield (L, -2, "is_public"); + lua_createtable(L, 0, 4); + + lua_pushstring(L, gr->description); + lua_setfield(L, -2, "description"); + lua_pushnumber(L, gr->max_score); + lua_setfield(L, -2, "max_score"); + lua_pushboolean(L, (gr->flags & RSPAMD_SYMBOL_GROUP_PUBLIC) != 0); + lua_setfield(L, -2, "is_public"); /* TODO: maybe push symbols as well */ /* Parent table indexed by group name */ - lua_setfield (L, -2, gr->name); + lua_setfield(L, -2, gr->name); } } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_register_finish_script (lua_State *L) +lua_config_register_finish_script(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); struct rspamd_config_cfg_lua_script *sc; - if (cfg != NULL && lua_type (L, 2) == LUA_TFUNCTION) { - sc = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (*sc)); - lua_pushvalue (L, 2); - sc->cbref = luaL_ref (L, LUA_REGISTRYINDEX); - DL_APPEND (cfg->on_term_scripts, sc); + if (cfg != NULL && lua_type(L, 2) == LUA_TFUNCTION) { + sc = rspamd_mempool_alloc0(cfg->cfg_pool, sizeof(*sc)); + lua_pushvalue(L, 2); + sc->cbref = luaL_ref(L, LUA_REGISTRYINDEX); + DL_APPEND(cfg->on_term_scripts, sc); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 0; } static inline bool -rspamd_lua_config_check_settings_symbols_object (const ucl_object_t *obj) +rspamd_lua_config_check_settings_symbols_object(const ucl_object_t *obj) { if (obj == NULL) { /* Semantically valid */ return true; } - if (ucl_object_type (obj) == UCL_OBJECT) { + if (ucl_object_type(obj) == UCL_OBJECT) { /* Key-value mapping - should be okay */ return true; } - if (ucl_object_type (obj) == UCL_ARRAY) { + if (ucl_object_type(obj) == UCL_ARRAY) { /* Okay if empty */ if (obj->len == 0) { return true; @@ -3990,48 +3991,48 @@ rspamd_lua_config_check_settings_symbols_object (const ucl_object_t *obj) } static gint -lua_config_register_settings_id (lua_State *L) +lua_config_register_settings_id(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); - const gchar *settings_name = luaL_checkstring (L, 2); + struct rspamd_config *cfg = lua_check_config(L, 1); + const gchar *settings_name = luaL_checkstring(L, 2); if (cfg != NULL && settings_name) { ucl_object_t *sym_enabled, *sym_disabled; enum rspamd_config_settings_policy policy = RSPAMD_SETTINGS_POLICY_DEFAULT; - sym_enabled = ucl_object_lua_import (L, 3); + sym_enabled = ucl_object_lua_import(L, 3); - if (!rspamd_lua_config_check_settings_symbols_object (sym_enabled)) { - ucl_object_unref (sym_enabled); + if (!rspamd_lua_config_check_settings_symbols_object(sym_enabled)) { + ucl_object_unref(sym_enabled); - return luaL_error (L, "invalid symbols enabled"); + return luaL_error(L, "invalid symbols enabled"); } - sym_disabled = ucl_object_lua_import (L, 4); + sym_disabled = ucl_object_lua_import(L, 4); - if (!rspamd_lua_config_check_settings_symbols_object (sym_disabled)) { - ucl_object_unref (sym_enabled); - ucl_object_unref (sym_disabled); + if (!rspamd_lua_config_check_settings_symbols_object(sym_disabled)) { + ucl_object_unref(sym_enabled); + ucl_object_unref(sym_disabled); - return luaL_error (L, "invalid symbols enabled"); + return luaL_error(L, "invalid symbols enabled"); } /* Check policy */ - if (lua_isstring (L, 5)) { - const gchar *policy_str = lua_tostring (L, 5); + if (lua_isstring(L, 5)) { + const gchar *policy_str = lua_tostring(L, 5); - if (strcmp (policy_str, "default") == 0) { + if (strcmp(policy_str, "default") == 0) { policy = RSPAMD_SETTINGS_POLICY_DEFAULT; } - else if (strcmp (policy_str, "implicit_allow") == 0) { + else if (strcmp(policy_str, "implicit_allow") == 0) { policy = RSPAMD_SETTINGS_POLICY_IMPLICIT_ALLOW; } - else if (strcmp (policy_str, "implicit_deny") == 0) { + else if (strcmp(policy_str, "implicit_deny") == 0) { policy = RSPAMD_SETTINGS_POLICY_IMPLICIT_DENY; } else { - return luaL_error (L, "invalid settings policy: %s", policy_str); + return luaL_error(L, "invalid settings policy: %s", policy_str); } } else { @@ -4041,78 +4042,78 @@ lua_config_register_settings_id (lua_State *L) } } - rspamd_config_register_settings_id (cfg, settings_name, sym_enabled, - sym_disabled, policy); + rspamd_config_register_settings_id(cfg, settings_name, sym_enabled, + sym_disabled, policy); if (sym_enabled) { - ucl_object_unref (sym_enabled); + ucl_object_unref(sym_enabled); } if (sym_disabled) { - ucl_object_unref (sym_disabled); + ucl_object_unref(sym_disabled); } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 0; } static gint -lua_config_register_monitored (lua_State *L) +lua_config_register_monitored(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); struct rspamd_monitored *m, **pm; const gchar *url, *type; ucl_object_t *params = NULL; - url = lua_tostring (L, 2); - type = lua_tostring (L, 3); + url = lua_tostring(L, 2); + type = lua_tostring(L, 3); if (cfg != NULL && url != NULL && type != NULL) { - if (g_ascii_strcasecmp (type, "dns") == 0) { + if (g_ascii_strcasecmp(type, "dns") == 0) { lua_Debug ar; - if (lua_type (L, 4) == LUA_TTABLE) { - params = ucl_object_lua_import (L, 4); + if (lua_type(L, 4) == LUA_TTABLE) { + params = ucl_object_lua_import(L, 4); } /* Get lua line and source */ - lua_getstack (L, 1, &ar); - lua_getinfo (L, "nSl", &ar); + lua_getstack(L, 1, &ar); + lua_getinfo(L, "nSl", &ar); - m = rspamd_monitored_create_ (cfg->monitored_ctx, url, - RSPAMD_MONITORED_DNS, RSPAMD_MONITORED_DEFAULT, - params, ar.short_src); + m = rspamd_monitored_create_(cfg->monitored_ctx, url, + RSPAMD_MONITORED_DNS, RSPAMD_MONITORED_DEFAULT, + params, ar.short_src); if (m) { - pm = lua_newuserdata (L, sizeof (*pm)); + pm = lua_newuserdata(L, sizeof(*pm)); *pm = m; - rspamd_lua_setclass (L, "rspamd{monitored}", -1); + rspamd_lua_setclass(L, "rspamd{monitored}", -1); } else { - lua_pushnil (L); + lua_pushnil(L); } if (params) { - ucl_object_unref (params); + ucl_object_unref(params); } } else { - return luaL_error (L, "invalid monitored type: %s", type); + return luaL_error(L, "invalid monitored type: %s", type); } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_add_doc (lua_State *L) +lua_config_add_doc(lua_State *L) { LUA_TRACE_POINT; struct rspamd_config *cfg; @@ -4122,149 +4123,149 @@ lua_config_add_doc (lua_State *L) gboolean required = FALSE; GError *err = NULL; - cfg = lua_check_config (L, 1); + cfg = lua_check_config(L, 1); - if (lua_type (L, 2 ) == LUA_TSTRING) { - path = luaL_checkstring (L, 2); + if (lua_type(L, 2) == LUA_TSTRING) { + path = luaL_checkstring(L, 2); } - option = luaL_checkstring (L, 3); - doc_string = luaL_checkstring (L, 4); + option = luaL_checkstring(L, 3); + doc_string = luaL_checkstring(L, 4); if (cfg && option && doc_string) { - if (lua_type (L, 5) == LUA_TTABLE) { - if (!rspamd_lua_parse_table_arguments (L, 5, &err, - RSPAMD_LUA_PARSE_ARGUMENTS_DEFAULT, - "type=S;default=S;required=B", - &type_str, &default_value, &required)) { - msg_err_config ("cannot get parameters list: %e", err); + if (lua_type(L, 5) == LUA_TTABLE) { + if (!rspamd_lua_parse_table_arguments(L, 5, &err, + RSPAMD_LUA_PARSE_ARGUMENTS_DEFAULT, + "type=S;default=S;required=B", + &type_str, &default_value, &required)) { + msg_err_config("cannot get parameters list: %e", err); if (err) { - g_error_free (err); + g_error_free(err); } if (type_str) { - if (!ucl_object_string_to_type (type_str, &type)) { - msg_err_config ("invalid type: %s", type_str); + if (!ucl_object_string_to_type(type_str, &type)) { + msg_err_config("invalid type: %s", type_str); } } } } - rspamd_rcl_add_doc_by_path (cfg, path, doc_string, option, - type, NULL, 0, default_value, required); + rspamd_rcl_add_doc_by_path(cfg, path, doc_string, option, + type, NULL, 0, default_value, required); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 0; } static gint -lua_config_add_example (lua_State *L) +lua_config_add_example(lua_State *L) { LUA_TRACE_POINT; struct rspamd_config *cfg; const gchar *path = NULL, *option, *doc_string, *example; gsize example_len; - cfg = lua_check_config (L, 1); + cfg = lua_check_config(L, 1); - if (lua_type (L, 2 ) == LUA_TSTRING) { - path = luaL_checkstring (L, 2); + if (lua_type(L, 2) == LUA_TSTRING) { + path = luaL_checkstring(L, 2); } - option = luaL_checkstring (L, 3); - doc_string = luaL_checkstring (L, 4); - example = luaL_checklstring (L, 5, &example_len); + option = luaL_checkstring(L, 3); + doc_string = luaL_checkstring(L, 4); + example = luaL_checklstring(L, 5, &example_len); if (cfg && option && doc_string && example) { - rspamd_rcl_add_doc_by_example (cfg, path, doc_string, option, - example, example_len); + rspamd_rcl_add_doc_by_example(cfg, path, doc_string, option, + example, example_len); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 0; } static gint -lua_config_get_cpu_flags (lua_State *L) +lua_config_get_cpu_flags(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); struct rspamd_cryptobox_library_ctx *crypto_ctx; if (cfg != NULL) { crypto_ctx = cfg->libs_ctx->crypto_ctx; - lua_newtable (L); + lua_newtable(L); if (crypto_ctx->cpu_config & CPUID_SSSE3) { - lua_pushstring (L, "ssse3"); - lua_pushboolean (L, true); - lua_settable (L, -3); + lua_pushstring(L, "ssse3"); + lua_pushboolean(L, true); + lua_settable(L, -3); } if (crypto_ctx->cpu_config & CPUID_SSE41) { - lua_pushstring (L, "sse41"); - lua_pushboolean (L, true); - lua_settable (L, -3); + lua_pushstring(L, "sse41"); + lua_pushboolean(L, true); + lua_settable(L, -3); } if (crypto_ctx->cpu_config & CPUID_SSE42) { - lua_pushstring (L, "sse42"); - lua_pushboolean (L, true); - lua_settable (L, -3); + lua_pushstring(L, "sse42"); + lua_pushboolean(L, true); + lua_settable(L, -3); } if (crypto_ctx->cpu_config & CPUID_SSE2) { - lua_pushstring (L, "sse2"); - lua_pushboolean (L, true); - lua_settable (L, -3); + lua_pushstring(L, "sse2"); + lua_pushboolean(L, true); + lua_settable(L, -3); } if (crypto_ctx->cpu_config & CPUID_SSE3) { - lua_pushstring (L, "sse3"); - lua_pushboolean (L, true); - lua_settable (L, -3); + lua_pushstring(L, "sse3"); + lua_pushboolean(L, true); + lua_settable(L, -3); } if (crypto_ctx->cpu_config & CPUID_AVX) { - lua_pushstring (L, "avx"); - lua_pushboolean (L, true); - lua_settable (L, -3); + lua_pushstring(L, "avx"); + lua_pushboolean(L, true); + lua_settable(L, -3); } if (crypto_ctx->cpu_config & CPUID_AVX2) { - lua_pushstring (L, "avx2"); - lua_pushboolean (L, true); - lua_settable (L, -3); + lua_pushstring(L, "avx2"); + lua_pushboolean(L, true); + lua_settable(L, -3); } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_has_torch (lua_State *L) +lua_config_has_torch(lua_State *L) { - msg_warn ("use of the obsoleted `has_torch` function"); - lua_pushboolean (L, false); + msg_warn("use of the obsoleted `has_torch` function"); + lua_pushboolean(L, false); return 1; } static gint -lua_config_experimental_enabled (lua_State *L) +lua_config_experimental_enabled(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); if (cfg != NULL) { - lua_pushboolean (L, cfg->enable_experimental); + lua_pushboolean(L, cfg->enable_experimental); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; @@ -4276,79 +4277,80 @@ struct rspamd_lua_include_trace_cbdata { }; static void -lua_include_trace_cb (struct ucl_parser *parser, - const ucl_object_t *parent, - const ucl_object_t *args, - const char *path, - size_t pathlen, - void *user_data) +lua_include_trace_cb(struct ucl_parser *parser, + const ucl_object_t *parent, + const ucl_object_t *args, + const char *path, + size_t pathlen, + void *user_data) { struct rspamd_lua_include_trace_cbdata *cbdata = - (struct rspamd_lua_include_trace_cbdata *)user_data; + (struct rspamd_lua_include_trace_cbdata *) user_data; gint err_idx; lua_State *L; L = cbdata->L; - lua_pushcfunction (L, &rspamd_lua_traceback); - err_idx = lua_gettop (L); + lua_pushcfunction(L, &rspamd_lua_traceback); + err_idx = lua_gettop(L); - lua_rawgeti (L, LUA_REGISTRYINDEX, cbdata->cbref); + lua_rawgeti(L, LUA_REGISTRYINDEX, cbdata->cbref); /* Current filename */ - lua_pushstring (L, ucl_parser_get_cur_file (parser)); + lua_pushstring(L, ucl_parser_get_cur_file(parser)); /* Included filename */ - lua_pushlstring (L, path, pathlen); + lua_pushlstring(L, path, pathlen); /* Params */ if (args) { - ucl_object_push_lua (L, args, true); + ucl_object_push_lua(L, args, true); } else { - lua_newtable (L); + lua_newtable(L); } /* Parent */ if (parent) { - lua_pushstring (L, ucl_object_key (parent)); + lua_pushstring(L, ucl_object_key(parent)); } else { - lua_pushnil (L); + lua_pushnil(L); } - if (lua_pcall (L, 4, 0, err_idx) != 0) { - msg_err ("lua call to local include trace failed: %s", lua_tostring (L, -1)); + if (lua_pcall(L, 4, 0, err_idx) != 0) { + msg_err("lua call to local include trace failed: %s", lua_tostring(L, -1)); } - lua_settop (L, err_idx - 1); + lua_settop(L, err_idx - 1); } -#define LUA_TABLE_TO_HASH(htb, idx) do { \ - lua_pushstring (L, (idx)); \ - lua_gettable (L, -2); \ - if (lua_isstring (L, -1)) { \ - g_hash_table_insert ((htb), (idx), g_strdup (lua_tostring (L, -1))); \ - } \ - lua_pop (L, 1); \ -} while(0) +#define LUA_TABLE_TO_HASH(htb, idx) \ + do { \ + lua_pushstring(L, (idx)); \ + lua_gettable(L, -2); \ + if (lua_isstring(L, -1)) { \ + g_hash_table_insert((htb), (idx), g_strdup(lua_tostring(L, -1))); \ + } \ + lua_pop(L, 1); \ + } while (0) static gint -lua_config_load_ucl (lua_State *L) +lua_config_load_ucl(lua_State *L) { - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); const gchar *filename; - GHashTable *paths = g_hash_table_new_full (rspamd_str_hash, rspamd_str_equal, - NULL, g_free); + GHashTable *paths = g_hash_table_new_full(rspamd_str_hash, rspamd_str_equal, + NULL, g_free); GError *err = NULL; if (cfg) { - if (lua_isstring (L, 2)) { - filename = lua_tostring (L, 2); + if (lua_isstring(L, 2)) { + filename = lua_tostring(L, 2); } else { filename = RSPAMD_CONFDIR "/rspamd.conf"; } /* Convert rspamd_paths */ - lua_getglobal (L, "rspamd_paths"); + lua_getglobal(L, "rspamd_paths"); - if (lua_istable (L, -1)) { + if (lua_istable(L, -1)) { LUA_TABLE_TO_HASH(paths, RSPAMD_CONFDIR_INDEX); LUA_TABLE_TO_HASH(paths, RSPAMD_LOCAL_CONFDIR_INDEX); LUA_TABLE_TO_HASH(paths, RSPAMD_RUNDIR_INDEX); @@ -4361,49 +4363,49 @@ lua_config_load_ucl (lua_State *L) LUA_TABLE_TO_HASH(paths, RSPAMD_PREFIX_INDEX); } - lua_pop (L, 1); + lua_pop(L, 1); - if (lua_isfunction (L, 3)) { + if (lua_isfunction(L, 3)) { struct rspamd_lua_include_trace_cbdata cbd; - lua_pushvalue (L, 3); - cbd.cbref = luaL_ref (L, LUA_REGISTRYINDEX); + lua_pushvalue(L, 3); + cbd.cbref = luaL_ref(L, LUA_REGISTRYINDEX); cbd.L = L; - if (!rspamd_config_parse_ucl (cfg, filename, paths, - lua_include_trace_cb, &cbd, lua_toboolean (L, 4), &err)) { - luaL_unref (L, LUA_REGISTRYINDEX, cbd.cbref); - lua_pushboolean (L, false); - lua_pushfstring (L, "failed to load config: %s", err->message); - g_error_free (err); - g_hash_table_unref (paths); + if (!rspamd_config_parse_ucl(cfg, filename, paths, + lua_include_trace_cb, &cbd, lua_toboolean(L, 4), &err)) { + luaL_unref(L, LUA_REGISTRYINDEX, cbd.cbref); + lua_pushboolean(L, false); + lua_pushfstring(L, "failed to load config: %s", err->message); + g_error_free(err); + g_hash_table_unref(paths); return 2; } - luaL_unref (L, LUA_REGISTRYINDEX, cbd.cbref); + luaL_unref(L, LUA_REGISTRYINDEX, cbd.cbref); } else { - if (!rspamd_config_parse_ucl (cfg, filename, paths, NULL, NULL, - lua_toboolean (L, 3), &err)) { - lua_pushboolean (L, false); - lua_pushfstring (L, "failed to load config: %s", err->message); - g_error_free (err); - g_hash_table_unref (paths); + if (!rspamd_config_parse_ucl(cfg, filename, paths, NULL, NULL, + lua_toboolean(L, 3), &err)) { + lua_pushboolean(L, false); + lua_pushfstring(L, "failed to load config: %s", err->message); + g_error_free(err); + g_hash_table_unref(paths); return 2; } } - rspamd_rcl_maybe_apply_lua_transform (cfg); - rspamd_config_calculate_cksum (cfg); + rspamd_rcl_maybe_apply_lua_transform(cfg); + rspamd_config_calculate_cksum(cfg); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } - g_hash_table_unref (paths); - lua_pushboolean (L, true); + g_hash_table_unref(paths); + lua_pushboolean(L, true); return 1; } @@ -4411,203 +4413,204 @@ lua_config_load_ucl (lua_State *L) #undef IDX_TO_HASH static gint -lua_config_parse_rcl (lua_State *L) +lua_config_parse_rcl(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); - GHashTable *excluded = g_hash_table_new_full (rspamd_str_hash, rspamd_str_equal, - g_free, NULL); + struct rspamd_config *cfg = lua_check_config(L, 1); + GHashTable *excluded = g_hash_table_new_full(rspamd_str_hash, rspamd_str_equal, + g_free, NULL); GError *err = NULL; struct rspamd_rcl_section *top; if (cfg) { - if (lua_istable (L, 2)) { - lua_pushvalue (L, 2); + if (lua_istable(L, 2)) { + lua_pushvalue(L, 2); - for (lua_pushnil (L); lua_next (L, -2); lua_pop (L, 1)) { - g_hash_table_insert (excluded, g_strdup (lua_tostring (L, -1)), - GINT_TO_POINTER (-1)); + for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) { + g_hash_table_insert(excluded, g_strdup(lua_tostring(L, -1)), + GINT_TO_POINTER(-1)); } - lua_pop (L, 1); + lua_pop(L, 1); } - top = rspamd_rcl_config_init (cfg, excluded); + top = rspamd_rcl_config_init(cfg, excluded); - if (!rspamd_rcl_parse (top, cfg, cfg, cfg->cfg_pool, cfg->rcl_obj, &err)) { - lua_pushboolean (L, false); - lua_pushfstring (L, "failed to load config: %s", err->message); - g_error_free (err); - g_hash_table_unref (excluded); - rspamd_rcl_section_free (top); + if (!rspamd_rcl_parse(top, cfg, cfg, cfg->cfg_pool, cfg->rcl_obj, &err)) { + lua_pushboolean(L, false); + lua_pushfstring(L, "failed to load config: %s", err->message); + g_error_free(err); + g_hash_table_unref(excluded); + rspamd_rcl_section_free(top); return 2; } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } - g_hash_table_unref (excluded); - rspamd_rcl_section_free (top); - lua_pushboolean (L, true); + g_hash_table_unref(excluded); + rspamd_rcl_section_free(top); + lua_pushboolean(L, true); return 1; } static gint -lua_config_init_modules (lua_State *L) +lua_config_init_modules(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); if (cfg != NULL) { - rspamd_lua_post_load_config (cfg); - lua_pushboolean (L, rspamd_init_filters (cfg, false, false)); + rspamd_lua_post_load_config(cfg); + lua_pushboolean(L, rspamd_init_filters(cfg, false, false)); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_init_subsystem (lua_State *L) +lua_config_init_subsystem(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); - const gchar *subsystem = luaL_checkstring (L, 2); + struct rspamd_config *cfg = lua_check_config(L, 1); + const gchar *subsystem = luaL_checkstring(L, 2); gchar **parts; guint nparts, i; if (cfg != NULL && subsystem != NULL) { - parts = g_strsplit_set (subsystem, ";,", -1); - nparts = g_strv_length (parts); + parts = g_strsplit_set(subsystem, ";,", -1); + nparts = g_strv_length(parts); - for (i = 0; i < nparts; i ++) { - if (strcmp (parts[i], "filters") == 0) { - rspamd_lua_post_load_config (cfg); - rspamd_init_filters (cfg, false, false); + for (i = 0; i < nparts; i++) { + if (strcmp(parts[i], "filters") == 0) { + rspamd_lua_post_load_config(cfg); + rspamd_init_filters(cfg, false, false); } - else if (strcmp (parts[i], "langdet") == 0) { + else if (strcmp(parts[i], "langdet") == 0) { if (!cfg->lang_det) { - cfg->lang_det = rspamd_language_detector_init (cfg); - rspamd_mempool_add_destructor (cfg->cfg_pool, - (rspamd_mempool_destruct_t) rspamd_language_detector_unref, - cfg->lang_det); + cfg->lang_det = rspamd_language_detector_init(cfg); + rspamd_mempool_add_destructor(cfg->cfg_pool, + (rspamd_mempool_destruct_t) rspamd_language_detector_unref, + cfg->lang_det); } } - else if (strcmp (parts[i], "stat") == 0) { - rspamd_stat_init (cfg, NULL); + else if (strcmp(parts[i], "stat") == 0) { + rspamd_stat_init(cfg, NULL); } - else if (strcmp (parts[i], "dns") == 0) { - struct ev_loop *ev_base = lua_check_ev_base (L, 3); + else if (strcmp(parts[i], "dns") == 0) { + struct ev_loop *ev_base = lua_check_ev_base(L, 3); if (ev_base) { - cfg->dns_resolver = rspamd_dns_resolver_init (rspamd_log_default_logger (), - ev_base, - cfg); + cfg->dns_resolver = rspamd_dns_resolver_init(rspamd_log_default_logger(), + ev_base, + cfg); } else { - g_strfreev (parts); + g_strfreev(parts); - return luaL_error (L, "no event base specified"); + return luaL_error(L, "no event base specified"); } } - else if (strcmp (parts[i], "symcache") == 0) { - rspamd_symcache_init (cfg->cache); + else if (strcmp(parts[i], "symcache") == 0) { + rspamd_symcache_init(cfg->cache); } else { - int ret = luaL_error (L, "invalid param: %s", parts[i]); - g_strfreev (parts); + int ret = luaL_error(L, "invalid param: %s", parts[i]); + g_strfreev(parts); return ret; } } - g_strfreev (parts); + g_strfreev(parts); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 0; } static gint -lua_config_register_re_selector (lua_State *L) +lua_config_register_re_selector(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); - const gchar *name = luaL_checkstring (L, 2); - const gchar *selector_str = luaL_checkstring (L, 3); + struct rspamd_config *cfg = lua_check_config(L, 1); + const gchar *name = luaL_checkstring(L, 2); + const gchar *selector_str = luaL_checkstring(L, 3); const gchar *delimiter = ""; bool flatten = false; - gint top = lua_gettop (L); + gint top = lua_gettop(L); bool res = false; if (cfg && name && selector_str) { - if (lua_gettop (L) >= 4) { - delimiter = luaL_checkstring (L, 4); + if (lua_gettop(L) >= 4) { + delimiter = luaL_checkstring(L, 4); - if (lua_isboolean (L, 5)) { - flatten = lua_toboolean (L, 5); + if (lua_isboolean(L, 5)) { + flatten = lua_toboolean(L, 5); } } - if (luaL_dostring (L, "return require \"lua_selectors\"") != 0) { - msg_warn_config ("cannot require lua_selectors: %s", - lua_tostring (L, -1)); + if (luaL_dostring(L, "return require \"lua_selectors\"") != 0) { + msg_warn_config("cannot require lua_selectors: %s", + lua_tostring(L, -1)); } else { - if (lua_type (L, -1) != LUA_TTABLE) { - msg_warn_config ("lua selectors must return " - "table and not %s", - lua_typename (L, lua_type (L, -1))); + if (lua_type(L, -1) != LUA_TTABLE) { + msg_warn_config("lua selectors must return " + "table and not %s", + lua_typename(L, lua_type(L, -1))); } else { - lua_pushstring (L, "create_selector_closure"); - lua_gettable (L, -2); + lua_pushstring(L, "create_selector_closure"); + lua_gettable(L, -2); - if (lua_type (L, -1) != LUA_TFUNCTION) { - msg_warn_config ("create_selector_closure must return " - "function and not %s", - lua_typename (L, lua_type (L, -1))); + if (lua_type(L, -1) != LUA_TFUNCTION) { + msg_warn_config("create_selector_closure must return " + "function and not %s", + lua_typename(L, lua_type(L, -1))); } else { gint err_idx, ret; struct rspamd_config **pcfg; - lua_pushcfunction (L, &rspamd_lua_traceback); - err_idx = lua_gettop (L); + lua_pushcfunction(L, &rspamd_lua_traceback); + err_idx = lua_gettop(L); /* Push function */ - lua_pushvalue (L, -2); + lua_pushvalue(L, -2); - pcfg = lua_newuserdata (L, sizeof (*pcfg)); - rspamd_lua_setclass (L, "rspamd{config}", -1); + pcfg = lua_newuserdata(L, sizeof(*pcfg)); + rspamd_lua_setclass(L, "rspamd{config}", -1); *pcfg = cfg; - lua_pushstring (L, selector_str); - lua_pushstring (L, delimiter); - lua_pushboolean (L, flatten); - - if ((ret = lua_pcall (L, 4, 1, err_idx)) != 0) { - msg_err_config ("call to create_selector_closure lua " - "script failed (%d): %s", ret, - lua_tostring (L, -1)); + lua_pushstring(L, selector_str); + lua_pushstring(L, delimiter); + lua_pushboolean(L, flatten); + + if ((ret = lua_pcall(L, 4, 1, err_idx)) != 0) { + msg_err_config("call to create_selector_closure lua " + "script failed (%d): %s", + ret, + lua_tostring(L, -1)); } else { - if (lua_type (L, -1) != LUA_TFUNCTION) { - msg_warn_config ("create_selector_closure " - "invocation must return " - "function and not %s", - lua_typename (L, lua_type (L, -1))); + if (lua_type(L, -1) != LUA_TFUNCTION) { + msg_warn_config("create_selector_closure " + "invocation must return " + "function and not %s", + lua_typename(L, lua_type(L, -1))); } else { - ret = luaL_ref (L, LUA_REGISTRYINDEX); - rspamd_re_cache_add_selector (cfg->re_cache, - name, ret); + ret = luaL_ref(L, LUA_REGISTRYINDEX); + rspamd_re_cache_add_selector(cfg->re_cache, + name, ret); res = true; } } @@ -4616,160 +4619,159 @@ lua_config_register_re_selector (lua_State *L) } } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } - lua_settop (L, top); - lua_pushboolean (L, res); + lua_settop(L, top); + lua_pushboolean(L, res); if (res) { - msg_info_config ("registered regexp selector %s", name); + msg_info_config("registered regexp selector %s", name); } return 1; } static gint -lua_config_get_tld_path (lua_State *L) +lua_config_get_tld_path(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); if (cfg != NULL) { - lua_pushstring (L, cfg->tld_file); + lua_pushstring(L, cfg->tld_file); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_get_dns_max_requests (lua_State *L) +lua_config_get_dns_max_requests(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); if (cfg != NULL) { - lua_pushinteger (L, cfg->dns_max_requests); + lua_pushinteger(L, cfg->dns_max_requests); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_config_get_dns_timeout (lua_State *L) +lua_config_get_dns_timeout(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_config *cfg = lua_check_config (L, 1); + struct rspamd_config *cfg = lua_check_config(L, 1); if (cfg != NULL) { - lua_pushnumber (L, cfg->dns_timeout); + lua_pushnumber(L, cfg->dns_timeout); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_monitored_alive (lua_State *L) +lua_monitored_alive(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_monitored *m = lua_check_monitored (L, 1); + struct rspamd_monitored *m = lua_check_monitored(L, 1); if (m) { - lua_pushboolean (L, rspamd_monitored_alive (m)); + lua_pushboolean(L, rspamd_monitored_alive(m)); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_monitored_offline (lua_State *L) +lua_monitored_offline(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_monitored *m = lua_check_monitored (L, 1); + struct rspamd_monitored *m = lua_check_monitored(L, 1); if (m) { - lua_pushnumber (L, rspamd_monitored_offline_time (m)); + lua_pushnumber(L, rspamd_monitored_offline_time(m)); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_monitored_total_offline (lua_State *L) +lua_monitored_total_offline(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_monitored *m = lua_check_monitored (L, 1); + struct rspamd_monitored *m = lua_check_monitored(L, 1); if (m) { - lua_pushnumber (L, rspamd_monitored_total_offline_time (m)); + lua_pushnumber(L, rspamd_monitored_total_offline_time(m)); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } static gint -lua_monitored_latency (lua_State *L) +lua_monitored_latency(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_monitored *m = lua_check_monitored (L, 1); + struct rspamd_monitored *m = lua_check_monitored(L, 1); if (m) { - lua_pushnumber (L, rspamd_monitored_latency (m)); + lua_pushnumber(L, rspamd_monitored_latency(m)); } else { - return luaL_error (L, "invalid arguments"); + return luaL_error(L, "invalid arguments"); } return 1; } -void -luaopen_config (lua_State * L) +void luaopen_config(lua_State *L) { - rspamd_lua_new_class (L, "rspamd{config}", configlib_m); + rspamd_lua_new_class(L, "rspamd{config}", configlib_m); - lua_pop (L, 1); + lua_pop(L, 1); - rspamd_lua_new_class (L, "rspamd{monitored}", monitoredlib_m); + rspamd_lua_new_class(L, "rspamd{monitored}", monitoredlib_m); - lua_pop (L, 1); + lua_pop(L, 1); } -void -lua_call_finish_script (struct rspamd_config_cfg_lua_script *sc, - struct rspamd_task *task) { +void lua_call_finish_script(struct rspamd_config_cfg_lua_script *sc, + struct rspamd_task *task) +{ struct rspamd_task **ptask; struct thread_entry *thread; - thread = lua_thread_pool_get_for_task (task); + thread = lua_thread_pool_get_for_task(task); thread->task = task; lua_State *L = thread->lua_state; - lua_rawgeti (L, LUA_REGISTRYINDEX, sc->cbref); + lua_rawgeti(L, LUA_REGISTRYINDEX, sc->cbref); - ptask = lua_newuserdata (L, sizeof (struct rspamd_task *)); - rspamd_lua_setclass (L, "rspamd{task}", - 1); + ptask = lua_newuserdata(L, sizeof(struct rspamd_task *)); + rspamd_lua_setclass(L, "rspamd{task}", -1); *ptask = task; - lua_thread_call (thread, 1); + lua_thread_call(thread, 1); } |