diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-04-07 13:43:09 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-04-07 13:43:09 +0100 |
commit | 93e08dc6e00459b2fda6119bfc630b0fb996758c (patch) | |
tree | a87580f5a57c28a4fc2540932223167c0d8e77d7 /src/plugins | |
parent | d5bd63254fb2df011b1499c27bc3741890c8ed9f (diff) | |
download | rspamd-93e08dc6e00459b2fda6119bfc630b0fb996758c.tar.gz rspamd-93e08dc6e00459b2fda6119bfc630b0fb996758c.zip |
[Feature] Add magic for callback data in rspamd rules
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/regexp.c | 10 | ||||
-rw-r--r-- | src/plugins/surbl.c | 4 | ||||
-rw-r--r-- | src/plugins/surbl.h | 1 |
3 files changed, 15 insertions, 0 deletions
diff --git a/src/plugins/regexp.c b/src/plugins/regexp.c index d80b11f1f..deb5adab5 100644 --- a/src/plugins/regexp.c +++ b/src/plugins/regexp.c @@ -25,7 +25,10 @@ #include "libutil/map.h" #include "lua/lua_common.h" +static const guint64 rspamd_regexp_cb_magic = 0xca9d9649fc3e2659ULL; + struct regexp_module_item { + guint64 magic; struct rspamd_expression *expr; const gchar *symbol; struct ucl_lua_funcdata *lua_function; @@ -151,6 +154,8 @@ regexp_module_config (struct rspamd_config *cfg) cur_item = rspamd_mempool_alloc0 (regexp_module_ctx->regexp_pool, sizeof (struct regexp_module_item)); cur_item->symbol = ucl_object_key (value); + cur_item->magic = rspamd_regexp_cb_magic; + if (!read_regexp_expression (regexp_module_ctx->regexp_pool, cur_item, ucl_object_key (value), ucl_obj_tostring (value), cfg)) { @@ -170,8 +175,10 @@ regexp_module_config (struct rspamd_config *cfg) /* Just a lua function */ cur_item = rspamd_mempool_alloc0 (regexp_module_ctx->regexp_pool, sizeof (struct regexp_module_item)); + cur_item->magic = rspamd_regexp_cb_magic; cur_item->symbol = ucl_object_key (value); cur_item->lua_function = ucl_object_toclosure (value); + rspamd_symbols_cache_add_symbol (cfg->cache, cur_item->symbol, 0, @@ -199,6 +206,8 @@ regexp_module_config (struct rspamd_config *cfg) cur_item = rspamd_mempool_alloc0 (regexp_module_ctx->regexp_pool, sizeof (struct regexp_module_item)); cur_item->symbol = ucl_object_key (value); + cur_item->magic = rspamd_regexp_cb_magic; + if (!read_regexp_expression (regexp_module_ctx->regexp_pool, cur_item, ucl_object_key (value), ucl_obj_tostring (elt), cfg)) { @@ -221,6 +230,7 @@ regexp_module_config (struct rspamd_config *cfg) cur_item = rspamd_mempool_alloc0 ( regexp_module_ctx->regexp_pool, sizeof (struct regexp_module_item)); + cur_item->magic = rspamd_regexp_cb_magic; cur_item->symbol = ucl_object_key (value); cur_item->lua_function = ucl_object_toclosure (value); } diff --git a/src/plugins/surbl.c b/src/plugins/surbl.c index ad2c3be9c..3034a9f47 100644 --- a/src/plugins/surbl.c +++ b/src/plugins/surbl.c @@ -43,6 +43,7 @@ #include "unix-std.h" static struct surbl_ctx *surbl_module_ctx = NULL; +static const guint64 rspamd_surbl_cb_magic = 0xe09b8536f80de0d1ULL; static void surbl_test_url (struct rspamd_task *task, void *user_data); static void surbl_dns_callback (struct rdns_reply *reply, gpointer arg); @@ -57,6 +58,7 @@ static void process_dns_results (struct rspamd_task *task, #define WHITELIST_ERROR 0 #define CONVERSION_ERROR 1 #define DUPLICATE_ERROR 1 + GQuark surbl_error_quark (void) { @@ -600,8 +602,10 @@ surbl_module_config (struct rspamd_config *cfg) "definition"); continue; } + new_suffix = rspamd_mempool_alloc0 (surbl_module_ctx->surbl_pool, sizeof (struct suffix_item)); + new_suffix->magic = rspamd_surbl_cb_magic; new_suffix->suffix = rspamd_mempool_strdup ( surbl_module_ctx->surbl_pool, ucl_obj_tostring (cur)); diff --git a/src/plugins/surbl.h b/src/plugins/surbl.h index 68b27c3f0..69d7d6166 100644 --- a/src/plugins/surbl.h +++ b/src/plugins/surbl.h @@ -41,6 +41,7 @@ struct surbl_ctx { }; struct suffix_item { + guint64 magic; const gchar *suffix; const gchar *symbol; guint32 options; |