From 8a22018b6e16ab471adf1e24f38d72968e637d52 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 7 Dec 2015 09:18:09 +0000 Subject: [PATCH] Add routine to convert string to re_class type --- src/libserver/re_cache.c | 35 ++++++++++++++++++++++++++++++++++- src/libserver/re_cache.h | 8 +++++++- src/lua/lua_config.c | 16 +--------------- src/lua/lua_task.c | 16 +--------------- 4 files changed, 43 insertions(+), 32 deletions(-) diff --git a/src/libserver/re_cache.c b/src/libserver/re_cache.c index f1ee7157d..3f86fd9c8 100644 --- a/src/libserver/re_cache.c +++ b/src/libserver/re_cache.c @@ -415,6 +415,10 @@ rspamd_re_cache_exec_re (struct rspamd_task *task, debug_task ("checking rawbody regexp: %s -> %d", rspamd_regexp_get_pattern (re), ret); break; + case RSPAMD_RE_MAX: + msg_err_task ("regexp of class invalid has been called: %s", + rspamd_regexp_get_pattern (re)); + break; } setbit (rt->checked, re_id); @@ -526,7 +530,7 @@ rspamd_re_cache_type_to_string (enum rspamd_re_type type) ret = "raw header"; break; case RSPAMD_RE_ALLHEADER: - ret = "raw header"; + ret = "all headers"; break; case RSPAMD_RE_MIME: ret = "part"; @@ -537,6 +541,35 @@ rspamd_re_cache_type_to_string (enum rspamd_re_type type) case RSPAMD_RE_URL: ret = "url"; break; + case RSPAMD_RE_MAX: + ret = "invalid class"; + break; + } + + return ret; +} + +enum rspamd_re_type +rspamd_re_cache_type_from_string (const char *str) +{ + enum rspamd_re_type ret = RSPAMD_RE_MAX; + + if (str != NULL) { + if (strcmp (str, "header") == 0) { + ret = RSPAMD_RE_HEADER; + } + else if (strcmp (str, "rawheader") == 0) { + ret = RSPAMD_RE_RAWHEADER; + } + else if (strcmp (str, "mime") == 0) { + ret = RSPAMD_RE_MIME; + } + else if (strcmp (str, "body") == 0) { + ret = RSPAMD_RE_BODY; + } + else if (strcmp (str, "url") == 0) { + ret = RSPAMD_RE_URL; + } } return ret; diff --git a/src/libserver/re_cache.h b/src/libserver/re_cache.h index c4ec3b2cf..65a8bd392 100644 --- a/src/libserver/re_cache.h +++ b/src/libserver/re_cache.h @@ -37,7 +37,8 @@ enum rspamd_re_type { RSPAMD_RE_ALLHEADER, RSPAMD_RE_MIME, RSPAMD_RE_URL, - RSPAMD_RE_BODY + RSPAMD_RE_BODY, + RSPAMD_RE_MAX }; /** @@ -120,4 +121,9 @@ guint rspamd_re_cache_set_limit (struct rspamd_re_cache *cache, guint limit); */ const gchar * rspamd_re_cache_type_to_string (enum rspamd_re_type type); +/** + * Convert re type string to the type enum + */ +enum rspamd_re_type rspamd_re_cache_type_from_string (const char *str); + #endif diff --git a/src/lua/lua_config.c b/src/lua/lua_config.c index d495d0c9e..b574cba59 100644 --- a/src/lua/lua_config.c +++ b/src/lua/lua_config.c @@ -1588,21 +1588,7 @@ lua_config_register_regexp (lua_State *L) } } else { - if (strcmp (type_str, "header") == 0) { - type = RSPAMD_RE_HEADER; - } - else if (strcmp (type_str, "rawheader") == 0) { - type = RSPAMD_RE_RAWHEADER; - } - else if (strcmp (type_str, "mime") == 0) { - type = RSPAMD_RE_MIME; - } - else if (strcmp (type_str, "body") == 0) { - type = RSPAMD_RE_BODY; - } - else if (strcmp (type_str, "url") == 0) { - type = RSPAMD_RE_URL; - } + type = rspamd_re_cache_type_from_string (type_str); if ((type == RSPAMD_RE_HEADER || type == RSPAMD_RE_RAWHEADER) && header_str == NULL) { diff --git a/src/lua/lua_task.c b/src/lua/lua_task.c index 037337fa8..8246d921b 100644 --- a/src/lua/lua_task.c +++ b/src/lua/lua_task.c @@ -2038,21 +2038,7 @@ lua_task_process_regexp (lua_State *L) } } else { - if (strcmp (type_str, "header") == 0) { - type = RSPAMD_RE_HEADER; - } - else if (strcmp (type_str, "rawheader") == 0) { - type = RSPAMD_RE_RAWHEADER; - } - else if (strcmp (type_str, "mime") == 0) { - type = RSPAMD_RE_MIME; - } - else if (strcmp (type_str, "body") == 0) { - type = RSPAMD_RE_BODY; - } - else if (strcmp (type_str, "url") == 0) { - type = RSPAMD_RE_URL; - } + type = rspamd_re_cache_type_from_string (type_str); if ((type == RSPAMD_RE_HEADER || type == RSPAMD_RE_RAWHEADER) && header_str == NULL) { -- 2.39.5