]> source.dussan.org Git - rspamd.git/commitdiff
Add special cases in metric actions: reject_score and spam_score for managing metric...
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Fri, 22 Oct 2010 16:56:31 +0000 (20:56 +0400)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Fri, 22 Oct 2010 16:56:31 +0000 (20:56 +0400)
src/settings.c

index edfc5a21d849cf0d9a262151ac48690f1c07658e..cbf73ddd499d63bb71e8a5964e237b0eb7d6c77c 100644 (file)
@@ -227,6 +227,7 @@ json_fin_cb (memory_pool_t * pool, struct map_cb_data *data)
                                        act_it = json_object_iter (it_val);
                                        while (act_it) {
                                                act_value = json_object_iter_value (act_it);
+
                                                if (it_val && json_is_number (act_value)) {
                                                        if (check_action_str (json_object_iter_key (act_it), &j)) {
                                                                new_act = g_malloc (sizeof (struct metric_action));
@@ -234,6 +235,21 @@ json_fin_cb (memory_pool_t * pool, struct map_cb_data *data)
                                                                new_act->score = json_number_value (act_value);
                                                                cur_act = g_list_prepend (cur_act, new_act);
                                                        }
+                                                       else {
+                                                               /* Special cases */
+                                                               if (g_ascii_strcasecmp (json_object_iter_key (act_it), "spam_score") == 0) {
+                                                                       score = g_malloc (sizeof (double));
+                                                                       *score = json_number_value (act_it);
+                                                                       g_hash_table_insert (cur_settings->metric_scores,
+                                                                                       g_strdup (json_object_iter_key (act_it)), score);
+                                                               }
+                                                               else if (g_ascii_strcasecmp (json_object_iter_key (act_it), "reject_score") == 0) {
+                                                                       score = g_malloc (sizeof (double));
+                                                                       *score = json_number_value (act_it);
+                                                                       g_hash_table_insert (cur_settings->reject_scores,
+                                                                                       g_strdup (json_object_iter_key (act_it)), score);
+                                                               }
+                                                       }
                                                }
                                                act_it = json_object_iter_next (it_val, act_it);
                                        }