SET(LIBRSPAMDMIMESRC
${CMAKE_CURRENT_SOURCE_DIR}/email_addr.c
${CMAKE_CURRENT_SOURCE_DIR}/mime_expressions.c
- ${CMAKE_CURRENT_SOURCE_DIR}/filter.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/scan_result.c
${CMAKE_CURRENT_SOURCE_DIR}/images.c
${CMAKE_CURRENT_SOURCE_DIR}/message.c
${CMAKE_CURRENT_SOURCE_DIR}/archives.c
*/
#include "config.h"
#include "mem_pool.h"
-#include "filter.h"
+#include "scan_result.h"
#include "rspamd.h"
#include "message.h"
#include "lua/lua_common.h"
#include "libserver/cfg_file_private.h"
-#include "libmime/filter_private.h"
+#include "libmime/scan_result_private.h"
#include <math.h>
#include "contrib/uthash/utlist.h"
static struct rspamd_counter_data symbols_count;
static void
-rspamd_metric_result_dtor (gpointer d)
+rspamd_scan_result_dtor (gpointer d)
{
- struct rspamd_metric_result *r = (struct rspamd_metric_result *)d;
+ struct rspamd_scan_result *r = (struct rspamd_scan_result *)d;
struct rspamd_symbol_result sres;
rspamd_set_counter_ema (&symbols_count, kh_size (r->symbols), 0.5);
kh_destroy (rspamd_symbols_group_hash, r->sym_groups);
}
-struct rspamd_metric_result *
+struct rspamd_scan_result *
rspamd_create_metric_result (struct rspamd_task *task)
{
- struct rspamd_metric_result *metric_res;
+ struct rspamd_scan_result *metric_res;
guint i;
metric_res = task->result;
}
metric_res = rspamd_mempool_alloc0 (task->task_pool,
- sizeof (struct rspamd_metric_result));
+ sizeof (struct rspamd_scan_result));
metric_res->symbols = kh_init (rspamd_symbols_hash);
metric_res->sym_groups = kh_init (rspamd_symbols_group_hash);
}
rspamd_mempool_add_destructor (task->task_pool,
- rspamd_metric_result_dtor,
+ rspamd_scan_result_dtor,
metric_res);
return metric_res;
const gchar *module,
guint flags)
{
- struct rspamd_metric_result *metric_res;
+ struct rspamd_scan_result *metric_res;
struct rspamd_passthrough_result *pr;
metric_res = task->result;
const gchar *opt,
enum rspamd_symbol_insert_flags flags)
{
- struct rspamd_metric_result *metric_res;
+ struct rspamd_scan_result *metric_res;
struct rspamd_symbol_result *s = NULL;
gdouble final_score, *gr_score = NULL, next_gf = 1.0, diff;
struct rspamd_symbol *sdef;
struct rspamd_passthrough_result *pr;
double max_score = -(G_MAXDOUBLE), sc;
int i;
- struct rspamd_metric_result *mres = task->result;
+ struct rspamd_scan_result *mres = task->result;
gboolean seen_least = FALSE;
if (mres->passthrough_result != NULL) {
/**
- * @file filter.h
- * Filters logic implementation
+ * @file scan_result.h
+ * Scan result holder
*/
-#ifndef RSPAMD_FILTER_H
-#define RSPAMD_FILTER_H
+#ifndef RSPAMD_SCAN_RESULT_H
+#define RSPAMD_SCAN_RESULT_H
#include "config.h"
#include "rspamd_symcache.h"
struct kh_rspamd_symbols_group_hash_s;
-struct rspamd_metric_result {
+struct rspamd_scan_result {
double score; /**< total score */
double grow_factor; /**< current grow factor */
struct rspamd_passthrough_result *passthrough_result;
* @param task task object
* @return metric result or NULL if metric `name` has not been found
*/
-struct rspamd_metric_result *rspamd_create_metric_result (struct rspamd_task *task);
+struct rspamd_scan_result *rspamd_create_metric_result (struct rspamd_task *task);
/**
* Adds a new passthrough result to a task
// Created by Vsevolod Stakhov on 2019-01-14.
//
-#ifndef RSPAMD_FILTER_PRIVATE_H
-#define RSPAMD_FILTER_PRIVATE_H
+#ifndef RSPAMD_SCAN_RESULT_PRIVATE_H
+#define RSPAMD_SCAN_RESULT_PRIVATE_H
-#include "filter.h"
+#include "scan_result.h"
#include "contrib/libucl/khash.h"
#ifdef __cplusplus
}
#endif
-#endif //RSPAMD_FILTER_PRIVATE_H
+#endif //RSPAMD_SCAN_RESULT_PRIVATE_H
#include "cfg_file.h"
#include "rspamd.h"
#include "cfg_file_private.h"
-#include "filter.h"
+#include "scan_result.h"
#include "lua/lua_common.h"
#include "lua/lua_thread_pool.h"
#include "map.h"
#include "expression.h"
#include "task.h"
#include "utlist.h"
-#include "filter.h"
+#include "scan_result.h"
#include "composites.h"
#include <math.h>
struct composites_data {
struct rspamd_task *task;
struct rspamd_composite *composite;
- struct rspamd_metric_result *metric_res;
+ struct rspamd_scan_result *metric_res;
GHashTable *symbols_to_remove;
guint8 *checked;
};
}
static void
-composites_metric_callback (struct rspamd_metric_result *metric_res,
+composites_metric_callback (struct rspamd_scan_result *metric_res,
struct rspamd_task *task)
{
struct composites_data *cd =
#include "config.h"
#include "rspamd.h"
#include "map.h"
-#include "filter.h"
+#include "scan_result.h"
#include "dynamic_cfg.h"
#include "unix-std.h"
#include "lua/lua_common.h"
#include "libutil/http_private.h"
#include "libserver/protocol_internal.h"
#include "libserver/cfg_file_private.h"
-#include "libmime/filter.h"
+#include "libmime/scan_result.h"
#include "libserver/worker_util.h"
#include "utlist.h"
#include "http_private.h"
#include "worker_private.h"
#include "libserver/cfg_file_private.h"
-#include "libmime/filter_private.h"
+#include "libmime/scan_result_private.h"
#include "contrib/zstd/zstd.h"
#include "lua/lua_common.h"
#include "unix-std.h"
}
static ucl_object_t *
-rspamd_metric_result_ucl (struct rspamd_task *task,
- struct rspamd_metric_result *mres, ucl_object_t *top)
+rspamd_scan_result_ucl (struct rspamd_task *task,
+ struct rspamd_scan_result *mres, ucl_object_t *top)
{
struct rspamd_symbol_result *sym;
gboolean is_spam;
(rspamd_mempool_destruct_t)ucl_object_unref, top);
if (flags & RSPAMD_PROTOCOL_METRICS) {
- rspamd_metric_result_ucl (task, task->result, top);
+ rspamd_scan_result_ucl (task, task->result, top);
}
if (flags & RSPAMD_PROTOCOL_MESSAGES) {
rspamd_protocol_http_reply (struct rspamd_http_message *msg,
struct rspamd_task *task, ucl_object_t **pobj)
{
- struct rspamd_metric_result *metric_res;
+ struct rspamd_scan_result *metric_res;
const struct rspamd_re_cache_stat *restat;
ucl_object_t *top = NULL;
struct rspamd_worker_log_pipe *lp;
struct rspamd_protocol_log_message_sum *ls;
lua_State *L = task->cfg->lua_state;
- struct rspamd_metric_result *mres;
+ struct rspamd_scan_result *mres;
struct rspamd_symbol_result *sym;
gint id, i;
guint32 n = 0, nextra = 0;
#define RSPAMD_PROTOCOL_H
#include "config.h"
-#include "filter.h"
+#include "scan_result.h"
#include "http_connection.h"
#include "task.h"
{
guint row_num;
struct roll_history_row *row;
- struct rspamd_metric_result *metric_res;
+ struct rspamd_scan_result *metric_res;
struct history_metric_callback_data cbdata;
struct rspamd_action *action;
gboolean profile;
gdouble profile_start;
- struct rspamd_metric_result *rs;
+ struct rspamd_scan_result *rs;
gdouble lim;
struct rspamd_symcache_item *cur_item;
rspamd_symcache_metric_limit (struct rspamd_task *task,
struct cache_savepoint *cp)
{
- struct rspamd_metric_result *res;
+ struct rspamd_scan_result *res;
double ms;
if (task->flags & RSPAMD_TASK_FLAG_PASS_ALL) {
*/
#include "task.h"
#include "rspamd.h"
-#include "filter.h"
+#include "scan_result.h"
#include "libserver/protocol.h"
#include "libserver/protocol_internal.h"
#include "message.h"
#include "libserver/mempool_vars_internal.h"
#include "libserver/cfg_file_private.h"
#include "libmime/lang_detection.h"
-#include "libmime/filter_private.h"
+#include "libmime/scan_result_private.h"
#ifdef WITH_JEMALLOC
#include <jemalloc/jemalloc.h>
{
static gchar scorebuf[32];
rspamd_ftok_t res = {.begin = NULL, .len = 0};
- struct rspamd_metric_result *mres;
+ struct rspamd_scan_result *mres;
gboolean first = TRUE;
rspamd_fstring_t *symbuf;
struct rspamd_symbol_result *sym;
}
gdouble
-rspamd_task_get_required_score (struct rspamd_task *task, struct rspamd_metric_result *m)
+rspamd_task_get_required_score (struct rspamd_task *task, struct rspamd_scan_result *m)
{
gint i;
struct rspamd_task_data_storage msg; /**< message buffer */
struct rspamd_http_connection *http_conn; /**< HTTP server connection */
struct rspamd_async_session *s; /**< async session object */
- struct rspamd_metric_result *result; /**< Metric result */
+ struct rspamd_scan_result *result; /**< Metric result */
GHashTable *lua_cache; /**< cache of lua objects */
GPtrArray *tokens; /**< statistics tokens */
GArray *meta_words; /**< rspamd_stat_token_t produced from meta headers
* @param m
* @return
*/
-struct rspamd_metric_result;
+struct rspamd_scan_result;
gdouble rspamd_task_get_required_score (struct rspamd_task *task,
- struct rspamd_metric_result *m);
+ struct rspamd_scan_result *m);
/**
* Returns the first header as value for a header
static gboolean
rspamd_stat_has_classifier_symbols (struct rspamd_task *task,
- struct rspamd_metric_result *mres,
+ struct rspamd_scan_result *mres,
struct rspamd_classifier *cl)
{
guint i;
struct rspamd_stat_ctx *st_ctx;
struct rspamd_classifier *cl;
const ucl_object_t *obj, *elt1, *elt2;
- struct rspamd_metric_result *mres = NULL;
+ struct rspamd_scan_result *mres = NULL;
struct rspamd_task **ptask;
lua_State *L;
guint i;
#include "libserver/dkim.h"
#include "libserver/task.h"
#include "libserver/cfg_file_private.h"
-#include "libmime/filter_private.h"
+#include "libmime/scan_result_private.h"
#include "libstat/stat_api.h"
#include "libutil/map_helpers.h"
LUA_TRACE_POINT;
struct rspamd_task *task = lua_check_task (L, 1);
const gchar *symbol_name, *param;
- struct rspamd_metric_result *metric_res;
+ struct rspamd_scan_result *metric_res;
struct rspamd_symbol_result *s = NULL;
double weight;
gint i, top;
gboolean add_metric,
gboolean add_name)
{
- struct rspamd_metric_result *metric_res;
+ struct rspamd_scan_result *metric_res;
struct rspamd_symbol_result *s = NULL;
struct rspamd_symbol_option *opt;
struct rspamd_symbols_group *sym_group;
{
LUA_TRACE_POINT;
struct rspamd_task *task = lua_check_task (L, 1);
- struct rspamd_metric_result *mres;
+ struct rspamd_scan_result *mres;
gint i = 1;
struct rspamd_symbol_result *s;
{
LUA_TRACE_POINT;
struct rspamd_task *task = lua_check_task (L, 1);
- struct rspamd_metric_result *mres;
+ struct rspamd_scan_result *mres;
struct rspamd_symbol_result *s;
gboolean found = FALSE;
gint i = 1;
{
LUA_TRACE_POINT;
struct rspamd_task *task = lua_check_task (L, 1);
- struct rspamd_metric_result *mres;
+ struct rspamd_scan_result *mres;
gint i = 1, id;
struct rspamd_symbol_result *s;
ucl_object_t *settings;
const ucl_object_t *act, *metric_elt, *vars, *cur;
ucl_object_iter_t it = NULL;
- struct rspamd_metric_result *mres;
+ struct rspamd_scan_result *mres;
guint i;
settings = ucl_object_lua_import (L, 2);
{
LUA_TRACE_POINT;
struct rspamd_task *task = lua_check_task (L, 1);
- struct rspamd_metric_result *metric_res;
+ struct rspamd_scan_result *metric_res;
struct rspamd_action *action;
if (task) {
LUA_TRACE_POINT;
struct rspamd_task *task = lua_check_task (L, 1);
gdouble rs;
- struct rspamd_metric_result *metric_res;
+ struct rspamd_scan_result *metric_res;
if (task) {
if ((metric_res = task->result) != NULL) {
{
LUA_TRACE_POINT;
struct rspamd_task *task = lua_check_task (L, 1);
- struct rspamd_metric_result *metric_res;
+ struct rspamd_scan_result *metric_res;
struct rspamd_action *action;
if (task) {
{
LUA_TRACE_POINT;
struct rspamd_task *task = lua_check_task (L, 1);
- struct rspamd_metric_result *metric_res;
+ struct rspamd_scan_result *metric_res;
gdouble nscore;
if (lua_isnumber (L, 2)) {