summaryrefslogtreecommitdiffstats
path: root/src/libserver/cfg_utils.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2017-01-03 13:22:43 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2017-01-03 13:22:43 +0000
commit0ba131089412a41c632703109903185d1e057aff (patch)
tree9ef31256b246bc66163d7ce0b6ce2edb47dc6d7c /src/libserver/cfg_utils.c
parent16c8c89c354a62aae901c63a43688a164b4d9ea0 (diff)
downloadrspamd-0ba131089412a41c632703109903185d1e057aff.tar.gz
rspamd-0ba131089412a41c632703109903185d1e057aff.zip
[Minor] Move common functions from libmime
Diffstat (limited to 'src/libserver/cfg_utils.c')
-rw-r--r--src/libserver/cfg_utils.c85
1 files changed, 85 insertions, 0 deletions
diff --git a/src/libserver/cfg_utils.c b/src/libserver/cfg_utils.c
index fe8f2ef8a..306965df8 100644
--- a/src/libserver/cfg_utils.c
+++ b/src/libserver/cfg_utils.c
@@ -1723,3 +1723,88 @@ rspamd_config_radix_from_ucl (struct rspamd_config *cfg,
return TRUE;
}
+
+gboolean
+rspamd_action_from_str (const gchar *data, gint *result)
+{
+ guint64 h;
+
+ h = rspamd_cryptobox_fast_hash_specific (RSPAMD_CRYPTOBOX_XXHASH64,
+ data, strlen (data), 0xdeadbabe);
+
+ switch (h) {
+ case 0x9917BFDB46332B8CULL: /* reject */
+ *result = METRIC_ACTION_REJECT;
+ break;
+ case 0x7130EE37D07B3715ULL: /* greylist */
+ *result = METRIC_ACTION_GREYLIST;
+ break;
+ case 0xCA6087E05480C60CULL: /* add_header */
+ case 0x87A3D27783B16241ULL: /* add header */
+ *result = METRIC_ACTION_ADD_HEADER;
+ break;
+ case 0x4963374ED8B90449ULL: /* rewrite_subject */
+ case 0x5C9FC4679C025948ULL: /* rewrite subject */
+ *result = METRIC_ACTION_REWRITE_SUBJECT;
+ break;
+ case 0xFC7D6502EE71FDD9ULL: /* soft reject */
+ case 0x73576567C262A82DULL: /* soft_reject */
+ *result = METRIC_ACTION_SOFT_REJECT;
+ break;
+ case 0x207091B927D1EC0DULL: /* no action */
+ case 0xB7D92D002CD46325ULL: /* no_action */
+ case 0x167C0DF4BAA9BCECULL: /* accept */
+ *result = METRIC_ACTION_NOACTION;
+ break;
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+const gchar *
+rspamd_action_to_str (enum rspamd_metric_action action)
+{
+ switch (action) {
+ case METRIC_ACTION_REJECT:
+ return "reject";
+ case METRIC_ACTION_SOFT_REJECT:
+ return "soft reject";
+ case METRIC_ACTION_REWRITE_SUBJECT:
+ return "rewrite subject";
+ case METRIC_ACTION_ADD_HEADER:
+ return "add header";
+ case METRIC_ACTION_GREYLIST:
+ return "greylist";
+ case METRIC_ACTION_NOACTION:
+ return "no action";
+ case METRIC_ACTION_MAX:
+ return "invalid max action";
+ }
+
+ return "unknown action";
+}
+
+const gchar *
+rspamd_action_to_str_alt (enum rspamd_metric_action action)
+{
+ switch (action) {
+ case METRIC_ACTION_REJECT:
+ return "reject";
+ case METRIC_ACTION_SOFT_REJECT:
+ return "soft_reject";
+ case METRIC_ACTION_REWRITE_SUBJECT:
+ return "rewrite_subject";
+ case METRIC_ACTION_ADD_HEADER:
+ return "add_header";
+ case METRIC_ACTION_GREYLIST:
+ return "greylist";
+ case METRIC_ACTION_NOACTION:
+ return "no action";
+ case METRIC_ACTION_MAX:
+ return "invalid max action";
+ }
+
+ return "unknown action";
+}