blob: 49b79ea8f6d11d4832c2c7a9bfa4113daafc4673 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#ifndef RSPAMD_MODULE_SURBL
#define RSPAMD_MODULE_SURBL
#include "config.h"
#include "main.h"
#include "cfg_file.h"
#include "memcached.h"
#include "trie.h"
#define DEFAULT_REDIRECTOR_PORT 8080
#define DEFAULT_SURBL_WEIGHT 10
#define DEFAULT_REDIRECTOR_CONNECT_TIMEOUT 1000
#define DEFAULT_REDIRECTOR_READ_TIMEOUT 5000
#define DEFAULT_SURBL_MAX_URLS 1000
#define DEFAULT_SURBL_URL_EXPIRE 86400
#define DEFAULT_SURBL_SYMBOL "SURBL_DNS"
#define DEFAULT_SURBL_SUFFIX "multi.surbl.org"
#define SURBL_OPTION_NOIP 1
#define MAX_LEVELS 10
struct redirector_upstream {
struct upstream up;
struct in_addr ina;
guint16 port;
gchar *name;
};
struct surbl_ctx {
gint (*filter)(struct worker_task *task);
guint16 weight;
guint connect_timeout;
guint read_timeout;
guint max_urls;
guint url_expire;
GList *suffixes;
GList *bits;
gchar *metric;
const gchar *tld2_file;
const gchar *whitelist_file;
gchar *redirector_symbol;
GHashTable **exceptions;
GHashTable *whitelist;
GHashTable *redirector_hosts;
rspamd_trie_t *redirector_trie;
GPtrArray *redirector_ptrs;
guint use_redirector;
struct redirector_upstream *redirectors;
guint32 redirectors_number;
memory_pool_t *surbl_pool;
};
struct suffix_item {
const gchar *suffix;
const gchar *symbol;
guint32 options;
};
struct dns_param {
struct uri *url;
struct worker_task *task;
gchar *host_resolve;
struct suffix_item *suffix;
};
struct redirector_param {
struct uri *url;
struct worker_task *task;
struct redirector_upstream *redirector;
enum {
STATE_CONNECT,
STATE_READ,
} state;
struct event ev;
gint sock;
GTree *tree;
struct suffix_item *suffix;
};
struct memcached_param {
struct uri *url;
struct worker_task *task;
memcached_ctx_t *ctx;
GTree *tree;
struct suffix_item *suffix;
};
struct surbl_bit_item {
guint32 bit;
const gchar *symbol;
};
#endif
|