@@ -34,6 +34,8 @@ | |||
#include "libutil/rrd.h" | |||
#include "unix-std.h" | |||
#include <math.h> | |||
#include <tclDecls.h> | |||
#include <curses.h> | |||
/* 60 seconds for worker's IO */ | |||
#define DEFAULT_WORKER_IO_TIMEOUT 60000 | |||
@@ -2263,47 +2265,99 @@ init_controller_worker (struct rspamd_config *cfg) | |||
ctx->timeout = DEFAULT_WORKER_IO_TIMEOUT; | |||
rspamd_rcl_register_worker_option (cfg, type, "password", | |||
rspamd_rcl_parse_struct_string, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, password), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "enable_password", | |||
rspamd_rcl_parse_struct_string, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, enable_password), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "ssl", | |||
rspamd_rcl_parse_struct_boolean, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, use_ssl), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "ssl_cert", | |||
rspamd_rcl_parse_struct_string, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, ssl_cert), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "ssl_key", | |||
rspamd_rcl_parse_struct_string, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, ssl_key), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "timeout", | |||
rspamd_rcl_parse_struct_time, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, | |||
timeout), RSPAMD_CL_FLAG_TIME_INTEGER); | |||
rspamd_rcl_register_worker_option (cfg, type, "secure_ip", | |||
rspamd_rcl_parse_struct_string_list, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, secure_ip), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "static_dir", | |||
rspamd_rcl_parse_struct_string, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, | |||
static_files_dir), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "keypair", | |||
rspamd_rcl_parse_struct_keypair, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, | |||
key), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "stats_path", | |||
rspamd_rcl_parse_struct_string, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, saved_stats_path), 0); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"password", | |||
rspamd_rcl_parse_struct_string, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, password), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"enable_password", | |||
rspamd_rcl_parse_struct_string, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, | |||
enable_password), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"ssl", | |||
rspamd_rcl_parse_struct_boolean, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, use_ssl), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"ssl_cert", | |||
rspamd_rcl_parse_struct_string, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, ssl_cert), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"ssl_key", | |||
rspamd_rcl_parse_struct_string, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, ssl_key), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"timeout", | |||
rspamd_rcl_parse_struct_time, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, | |||
timeout), | |||
RSPAMD_CL_FLAG_TIME_INTEGER, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"secure_ip", | |||
rspamd_rcl_parse_struct_string_list, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, secure_ip), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"static_dir", | |||
rspamd_rcl_parse_struct_string, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, | |||
static_files_dir), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"keypair", | |||
rspamd_rcl_parse_struct_keypair, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, | |||
key), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"stats_path", | |||
rspamd_rcl_parse_struct_string, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_controller_worker_ctx, | |||
saved_stats_path), | |||
0, | |||
NULL); | |||
return ctx; | |||
} |
@@ -1136,49 +1136,98 @@ init_fuzzy (struct rspamd_config *cfg) | |||
(GDestroyNotify) rspamd_inet_address_destroy, g_free, | |||
rspamd_inet_address_hash, rspamd_inet_address_equal); | |||
rspamd_rcl_register_worker_option (cfg, type, "hashfile", | |||
rspamd_rcl_parse_struct_string, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_fuzzy_storage_ctx, hashfile), 0); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"hashfile", | |||
rspamd_rcl_parse_struct_string, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_fuzzy_storage_ctx, hashfile), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, type, "hash_file", | |||
rspamd_rcl_parse_struct_string, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_fuzzy_storage_ctx, hashfile), 0); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"hash_file", | |||
rspamd_rcl_parse_struct_string, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_fuzzy_storage_ctx, hashfile), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, type, "file", | |||
rspamd_rcl_parse_struct_string, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_fuzzy_storage_ctx, hashfile), 0); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"file", | |||
rspamd_rcl_parse_struct_string, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_fuzzy_storage_ctx, hashfile), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, type, "database", | |||
rspamd_rcl_parse_struct_string, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_fuzzy_storage_ctx, hashfile), 0); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"database", | |||
rspamd_rcl_parse_struct_string, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_fuzzy_storage_ctx, hashfile), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, type, "sync", | |||
rspamd_rcl_parse_struct_time, ctx, | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"sync", | |||
rspamd_rcl_parse_struct_time, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_fuzzy_storage_ctx, | |||
sync_timeout), RSPAMD_CL_FLAG_TIME_FLOAT); | |||
sync_timeout), | |||
RSPAMD_CL_FLAG_TIME_FLOAT, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, type, "expire", | |||
rspamd_rcl_parse_struct_time, ctx, | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"expire", | |||
rspamd_rcl_parse_struct_time, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_fuzzy_storage_ctx, | |||
expire), RSPAMD_CL_FLAG_TIME_FLOAT); | |||
expire), | |||
RSPAMD_CL_FLAG_TIME_FLOAT, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, type, "allow_update", | |||
rspamd_rcl_parse_struct_string, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_fuzzy_storage_ctx, update_map), 0); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"allow_update", | |||
rspamd_rcl_parse_struct_string, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_fuzzy_storage_ctx, update_map), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, type, "keypair", | |||
fuzzy_parse_keypair, ctx, | |||
0, RSPAMD_CL_FLAG_MULTIPLE); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"keypair", | |||
fuzzy_parse_keypair, | |||
ctx, | |||
0, | |||
RSPAMD_CL_FLAG_MULTIPLE, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, type, "keypair_cache_size", | |||
rspamd_rcl_parse_struct_integer, ctx, | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"keypair_cache_size", | |||
rspamd_rcl_parse_struct_integer, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_fuzzy_storage_ctx, | |||
keypair_cache_size), | |||
RSPAMD_CL_FLAG_UINT); | |||
keypair_cache_size), | |||
RSPAMD_CL_FLAG_UINT, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, type, "encrypted_only", | |||
rspamd_rcl_parse_struct_boolean, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_fuzzy_storage_ctx, encrypted_only), 0); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"encrypted_only", | |||
rspamd_rcl_parse_struct_boolean, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_fuzzy_storage_ctx, encrypted_only), | |||
0, | |||
NULL); | |||
return ctx; |
@@ -75,13 +75,22 @@ init_hs_helper (struct rspamd_config *cfg) | |||
ctx->hs_dir = RSPAMD_DBDIR "/"; | |||
ctx->max_time = default_max_time; | |||
rspamd_rcl_register_worker_option (cfg, type, "cache_dir", | |||
rspamd_rcl_parse_struct_string, ctx, | |||
G_STRUCT_OFFSET (struct hs_helper_ctx, hs_dir), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "max_time", | |||
rspamd_rcl_parse_struct_time, ctx, | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"cache_dir", | |||
rspamd_rcl_parse_struct_string, | |||
ctx, | |||
G_STRUCT_OFFSET (struct hs_helper_ctx, hs_dir), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"max_time", | |||
rspamd_rcl_parse_struct_time, | |||
ctx, | |||
G_STRUCT_OFFSET (struct hs_helper_ctx, max_time), | |||
RSPAMD_CL_FLAG_TIME_FLOAT); | |||
RSPAMD_CL_FLAG_TIME_FLOAT, | |||
NULL); | |||
return ctx; | |||
} |
@@ -22,6 +22,8 @@ | |||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
*/ | |||
#include <tclDecls.h> | |||
#include <curses.h> | |||
#include "config.h" | |||
#include "libutil/util.h" | |||
#include "libutil/map.h" | |||
@@ -203,20 +205,41 @@ init_http_proxy (struct rspamd_config *cfg) | |||
ctx->rotate_tm = DEFAULT_ROTATION_TIME; | |||
ctx->cfg = cfg; | |||
rspamd_rcl_register_worker_option (cfg, type, "timeout", | |||
rspamd_rcl_parse_struct_time, ctx, | |||
G_STRUCT_OFFSET (struct http_proxy_ctx, | |||
timeout), RSPAMD_CL_FLAG_TIME_FLOAT); | |||
rspamd_rcl_register_worker_option (cfg, type, "rotate", | |||
rspamd_rcl_parse_struct_time, ctx, | |||
G_STRUCT_OFFSET (struct http_proxy_ctx, | |||
rotate_tm), RSPAMD_CL_FLAG_TIME_FLOAT); | |||
rspamd_rcl_register_worker_option (cfg, type, "keypair", | |||
rspamd_rcl_parse_struct_keypair, ctx, | |||
G_STRUCT_OFFSET (struct http_proxy_ctx, | |||
key), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "upstream", | |||
http_proxy_parse_upstream, ctx, 0, 0); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"timeout", | |||
rspamd_rcl_parse_struct_time, | |||
ctx, | |||
G_STRUCT_OFFSET (struct http_proxy_ctx, | |||
timeout), | |||
RSPAMD_CL_FLAG_TIME_FLOAT, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"rotate", | |||
rspamd_rcl_parse_struct_time, | |||
ctx, | |||
G_STRUCT_OFFSET (struct http_proxy_ctx, | |||
rotate_tm), | |||
RSPAMD_CL_FLAG_TIME_FLOAT, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"keypair", | |||
rspamd_rcl_parse_struct_keypair, | |||
ctx, | |||
G_STRUCT_OFFSET (struct http_proxy_ctx, | |||
key), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"upstream", | |||
http_proxy_parse_upstream, | |||
ctx, | |||
0, | |||
0, | |||
NULL); | |||
return ctx; | |||
} |
@@ -39,6 +39,10 @@ | |||
#ifdef HAVE_GLOB_H | |||
#include <glob.h> | |||
#include <cursesp.h> | |||
#include <itclInt.h> | |||
#include <cursesf.h> | |||
#endif | |||
struct rspamd_rcl_default_handler_data { | |||
@@ -1231,7 +1235,8 @@ rspamd_rcl_add_default_handler (struct rspamd_rcl_section *section, | |||
const gchar *name, | |||
rspamd_rcl_default_handler_t handler, | |||
goffset offset, | |||
gint flags) | |||
gint flags, | |||
const gchar *doc_string) | |||
{ | |||
struct rspamd_rcl_default_handler_data *new; | |||
@@ -1271,57 +1276,68 @@ rspamd_rcl_config_init (void) | |||
"log_buffer", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_config, log_buf_size), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"log_urls", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_config, log_urls), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"log_re_cache", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_config, log_re_cache), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"debug_ip", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_config, debug_ip_map), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"debug_symbols", | |||
rspamd_rcl_parse_struct_string_list, | |||
G_STRUCT_OFFSET (struct rspamd_config, debug_symbols), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"log_color", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_config, log_color), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"color", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_config, log_color), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"log_systemd", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_config, log_systemd), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"systemd", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_config, log_systemd), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"debug_modules", | |||
rspamd_rcl_parse_struct_string_list, | |||
G_STRUCT_OFFSET (struct rspamd_config, debug_modules), | |||
RSPAMD_CL_FLAG_STRING_LIST_HASH); | |||
RSPAMD_CL_FLAG_STRING_LIST_HASH, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"log_format", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_config, log_format_str), | |||
0); | |||
0, | |||
NULL); | |||
/** | |||
* Options section | |||
*/ | |||
@@ -1335,176 +1351,214 @@ rspamd_rcl_config_init (void) | |||
"cache_file", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_config, cache_filename), | |||
RSPAMD_CL_FLAG_STRING_PATH); | |||
RSPAMD_CL_FLAG_STRING_PATH, | |||
NULL); | |||
/* Old DNS configuration */ | |||
rspamd_rcl_add_default_handler (sub, | |||
"dns_nameserver", | |||
rspamd_rcl_parse_struct_string_list, | |||
G_STRUCT_OFFSET (struct rspamd_config, nameservers), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"dns_timeout", | |||
rspamd_rcl_parse_struct_time, | |||
G_STRUCT_OFFSET (struct rspamd_config, dns_timeout), | |||
RSPAMD_CL_FLAG_TIME_FLOAT); | |||
RSPAMD_CL_FLAG_TIME_FLOAT, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"dns_retransmits", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_config, dns_retransmits), | |||
RSPAMD_CL_FLAG_INT_32); | |||
RSPAMD_CL_FLAG_INT_32, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"dns_sockets", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_config, dns_io_per_server), | |||
RSPAMD_CL_FLAG_INT_32); | |||
RSPAMD_CL_FLAG_INT_32, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"dns_max_requests", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_config, dns_max_requests), | |||
RSPAMD_CL_FLAG_INT_32); | |||
RSPAMD_CL_FLAG_INT_32, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"classify_headers", | |||
rspamd_rcl_parse_struct_string_list, | |||
G_STRUCT_OFFSET (struct rspamd_config, classify_headers), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"control_socket", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_config, control_socket_path), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"explicit_modules", | |||
rspamd_rcl_parse_struct_string_list, | |||
G_STRUCT_OFFSET (struct rspamd_config, explicit_modules), | |||
RSPAMD_CL_FLAG_STRING_LIST_HASH); | |||
RSPAMD_CL_FLAG_STRING_LIST_HASH, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"allow_raw_input", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_config, allow_raw_input), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"raw_mode", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_config, raw_mode), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"one_shot", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_config, one_shot_mode), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"check_attachements", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_config, check_text_attachements), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"tempdir", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_config, temp_dir), | |||
RSPAMD_CL_FLAG_STRING_PATH); | |||
RSPAMD_CL_FLAG_STRING_PATH, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"pidfile", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_config, pid_file), | |||
RSPAMD_CL_FLAG_STRING_PATH); | |||
RSPAMD_CL_FLAG_STRING_PATH, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"filters", | |||
rspamd_rcl_parse_struct_string_list, | |||
G_STRUCT_OFFSET (struct rspamd_config, filters), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"max_diff", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_config, max_diff), | |||
RSPAMD_CL_FLAG_INT_SIZE); | |||
RSPAMD_CL_FLAG_INT_SIZE, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"map_watch_interval", | |||
rspamd_rcl_parse_struct_time, | |||
G_STRUCT_OFFSET (struct rspamd_config, map_timeout), | |||
RSPAMD_CL_FLAG_TIME_FLOAT); | |||
RSPAMD_CL_FLAG_TIME_FLOAT, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"dynamic_conf", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_config, dynamic_conf), | |||
0); | |||
rspamd_rcl_add_default_handler (sub, "rrd", rspamd_rcl_parse_struct_string, | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"rrd", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_config, | |||
rrd_file), RSPAMD_CL_FLAG_STRING_PATH); | |||
rrd_file), | |||
RSPAMD_CL_FLAG_STRING_PATH, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"history_file", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_config, history_file), | |||
RSPAMD_CL_FLAG_STRING_PATH); | |||
RSPAMD_CL_FLAG_STRING_PATH, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"use_mlock", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_config, mlock_statfile_pool), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"strict_protocol_headers", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_config, strict_protocol_headers), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"check_all_filters", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_config, check_all_filters), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"all_filters", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_config, check_all_filters), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"min_word_len", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_config, min_word_len), | |||
RSPAMD_CL_FLAG_UINT); | |||
RSPAMD_CL_FLAG_UINT, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"max_word_len", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_config, max_word_len), | |||
RSPAMD_CL_FLAG_UINT); | |||
RSPAMD_CL_FLAG_UINT, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"words_decay", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_config, words_decay), | |||
RSPAMD_CL_FLAG_UINT); | |||
RSPAMD_CL_FLAG_UINT, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"url_tld", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_config, tld_file), | |||
RSPAMD_CL_FLAG_STRING_PATH); | |||
RSPAMD_CL_FLAG_STRING_PATH, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"tld", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_config, tld_file), | |||
RSPAMD_CL_FLAG_STRING_PATH); | |||
RSPAMD_CL_FLAG_STRING_PATH, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"history_rows", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_config, history_rows), | |||
RSPAMD_CL_FLAG_UINT); | |||
RSPAMD_CL_FLAG_UINT, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"disable_hyperscan", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_config, disable_hyperscan), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"cores_dir", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_config, cores_dir), | |||
RSPAMD_CL_FLAG_STRING_PATH); | |||
RSPAMD_CL_FLAG_STRING_PATH, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"max_cores_size", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_config, max_cores_size), | |||
RSPAMD_CL_FLAG_INT_SIZE); | |||
RSPAMD_CL_FLAG_INT_SIZE, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"max_cores_count", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_config, max_cores_count), | |||
RSPAMD_CL_FLAG_INT_SIZE); | |||
RSPAMD_CL_FLAG_INT_SIZE, | |||
NULL); | |||
/* New DNS configuration */ | |||
ssub = rspamd_rcl_add_section (&sub->subsections, "dns", NULL, NULL, | |||
@@ -1513,32 +1567,38 @@ rspamd_rcl_config_init (void) | |||
"nameserver", | |||
rspamd_rcl_parse_struct_string_list, | |||
G_STRUCT_OFFSET (struct rspamd_config, nameservers), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (ssub, | |||
"server", | |||
rspamd_rcl_parse_struct_string_list, | |||
G_STRUCT_OFFSET (struct rspamd_config, nameservers), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (ssub, | |||
"timeout", | |||
rspamd_rcl_parse_struct_time, | |||
G_STRUCT_OFFSET (struct rspamd_config, dns_timeout), | |||
RSPAMD_CL_FLAG_TIME_FLOAT); | |||
RSPAMD_CL_FLAG_TIME_FLOAT, | |||
NULL); | |||
rspamd_rcl_add_default_handler (ssub, | |||
"retransmits", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_config, dns_retransmits), | |||
RSPAMD_CL_FLAG_INT_32); | |||
RSPAMD_CL_FLAG_INT_32, | |||
NULL); | |||
rspamd_rcl_add_default_handler (ssub, | |||
"sockets", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_config, dns_io_per_server), | |||
RSPAMD_CL_FLAG_INT_32); | |||
RSPAMD_CL_FLAG_INT_32, | |||
NULL); | |||
rspamd_rcl_add_default_handler (ssub, | |||
"connections", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_config, dns_io_per_server), | |||
RSPAMD_CL_FLAG_INT_32); | |||
RSPAMD_CL_FLAG_INT_32, | |||
NULL); | |||
/* New upstreams configuration */ | |||
@@ -1548,17 +1608,20 @@ rspamd_rcl_config_init (void) | |||
"max_errors", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_config, upstream_max_errors), | |||
RSPAMD_CL_FLAG_UINT); | |||
RSPAMD_CL_FLAG_UINT, | |||
NULL); | |||
rspamd_rcl_add_default_handler (ssub, | |||
"error_time", | |||
rspamd_rcl_parse_struct_time, | |||
G_STRUCT_OFFSET (struct rspamd_config, upstream_error_time), | |||
RSPAMD_CL_FLAG_TIME_FLOAT); | |||
RSPAMD_CL_FLAG_TIME_FLOAT, | |||
NULL); | |||
rspamd_rcl_add_default_handler (ssub, | |||
"revive_time", | |||
rspamd_rcl_parse_struct_time, | |||
G_STRUCT_OFFSET (struct rspamd_config, upstream_revive_time), | |||
RSPAMD_CL_FLAG_TIME_FLOAT); | |||
RSPAMD_CL_FLAG_TIME_FLOAT, | |||
NULL); | |||
/** | |||
* Metric section | |||
@@ -1574,17 +1637,20 @@ rspamd_rcl_config_init (void) | |||
"unknown_weight", | |||
rspamd_rcl_parse_struct_double, | |||
G_STRUCT_OFFSET (struct metric, unknown_weight), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"grow_factor", | |||
rspamd_rcl_parse_struct_double, | |||
G_STRUCT_OFFSET (struct metric, grow_factor), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"subject", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct metric, subject), | |||
0); | |||
0, | |||
NULL); | |||
/* Ungrouped symbols */ | |||
ssub = rspamd_rcl_add_section (&sub->subsections, | |||
@@ -1597,17 +1663,20 @@ rspamd_rcl_config_init (void) | |||
"description", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_symbol_def, description), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (ssub, | |||
"score", | |||
rspamd_rcl_parse_struct_double, | |||
G_STRUCT_OFFSET (struct rspamd_symbol_def, score), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (ssub, | |||
"weight", | |||
rspamd_rcl_parse_struct_double, | |||
G_STRUCT_OFFSET (struct rspamd_symbol_def, score), | |||
0); | |||
0, | |||
NULL); | |||
/* Actions part */ | |||
ssub = rspamd_rcl_add_section (&sub->subsections, | |||
@@ -1628,17 +1697,20 @@ rspamd_rcl_config_init (void) | |||
"disabled", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_symbols_group, disabled), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (ssub, | |||
"enabled", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_symbols_group, disabled), | |||
RSPAMD_CL_FLAG_BOOLEAN_INVERSE); | |||
RSPAMD_CL_FLAG_BOOLEAN_INVERSE, | |||
NULL); | |||
rspamd_rcl_add_default_handler (ssub, | |||
"max_score", | |||
rspamd_rcl_parse_struct_double, | |||
G_STRUCT_OFFSET (struct rspamd_symbols_group, max_score), | |||
0); | |||
0, | |||
NULL); | |||
/* Grouped symbols */ | |||
sssub = rspamd_rcl_add_section (&ssub->subsections, | |||
@@ -1651,17 +1723,20 @@ rspamd_rcl_config_init (void) | |||
"description", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_symbol_def, description), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sssub, | |||
"score", | |||
rspamd_rcl_parse_struct_double, | |||
G_STRUCT_OFFSET (struct rspamd_symbol_def, score), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sssub, | |||
"weight", | |||
rspamd_rcl_parse_struct_double, | |||
G_STRUCT_OFFSET (struct rspamd_symbol_def, score), | |||
0); | |||
0, | |||
NULL); | |||
/** | |||
* Worker section | |||
@@ -1676,17 +1751,20 @@ rspamd_rcl_config_init (void) | |||
"count", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_worker_conf, count), | |||
RSPAMD_CL_FLAG_INT_16); | |||
RSPAMD_CL_FLAG_INT_16, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"max_files", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_worker_conf, rlimit_nofile), | |||
RSPAMD_CL_FLAG_INT_32); | |||
RSPAMD_CL_FLAG_INT_32, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"max_core", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_worker_conf, rlimit_maxcore), | |||
RSPAMD_CL_FLAG_INT_32); | |||
RSPAMD_CL_FLAG_INT_32, | |||
NULL); | |||
/** | |||
* Modules handler | |||
@@ -1714,22 +1792,26 @@ rspamd_rcl_config_init (void) | |||
"min_tokens", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_classifier_config, min_tokens), | |||
RSPAMD_CL_FLAG_INT_32); | |||
RSPAMD_CL_FLAG_INT_32, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"max_tokens", | |||
rspamd_rcl_parse_struct_integer, | |||
G_STRUCT_OFFSET (struct rspamd_classifier_config, max_tokens), | |||
RSPAMD_CL_FLAG_INT_32); | |||
RSPAMD_CL_FLAG_INT_32, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"backend", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_classifier_config, backend), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"name", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_classifier_config, name), | |||
0); | |||
0, | |||
NULL); | |||
/* | |||
* Statfile defaults | |||
@@ -1744,12 +1826,14 @@ rspamd_rcl_config_init (void) | |||
"label", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_statfile_config, label), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (ssub, | |||
"spam", | |||
rspamd_rcl_parse_struct_boolean, | |||
G_STRUCT_OFFSET (struct rspamd_statfile_config, is_spam), | |||
0); | |||
0, | |||
NULL); | |||
/** | |||
* Composites handler | |||
@@ -2584,7 +2668,8 @@ rspamd_rcl_register_worker_option (struct rspamd_config *cfg, | |||
rspamd_rcl_default_handler_t handler, | |||
gpointer target, | |||
glong offset, | |||
gint flags) | |||
gint flags, | |||
const gchar *doc_string) | |||
{ | |||
struct rspamd_worker_param_parser *nhandler; | |||
struct rspamd_worker_cfg_parser *nparser; |
@@ -99,12 +99,13 @@ typedef void (*rspamd_rcl_section_fin_t)(rspamd_mempool_t *pool, gpointer ud); | |||
* @param flags flags for the parser | |||
* @return newly created structure | |||
*/ | |||
struct rspamd_rcl_default_handler_data * rspamd_rcl_add_default_handler ( | |||
struct rspamd_rcl_default_handler_data *rspamd_rcl_add_default_handler ( | |||
struct rspamd_rcl_section *section, | |||
const gchar *name, | |||
rspamd_rcl_default_handler_t handler, | |||
goffset offset, | |||
gint flags); | |||
gint flags, | |||
const gchar *doc_string); | |||
/** | |||
* Add new section to the configuration | |||
@@ -324,7 +325,8 @@ void rspamd_rcl_register_worker_option (struct rspamd_config *cfg, | |||
rspamd_rcl_default_handler_t handler, | |||
gpointer target, | |||
glong offset, | |||
gint flags); | |||
gint flags, | |||
const gchar *doc_string); | |||
/** | |||
* Register a default parser for a worker |
@@ -22,6 +22,8 @@ | |||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
*/ | |||
#include <glib-unix.h> | |||
#include <itcl2TclOO.h> | |||
#include "config.h" | |||
#include "rspamd.h" | |||
#include "util.h" | |||
@@ -527,37 +529,44 @@ rspamd_protocol_control_parser_init (void) | |||
"ip", | |||
rspamd_rcl_parse_struct_addr, | |||
G_STRUCT_OFFSET (struct rspamd_task, from_addr), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"from", | |||
rspamd_rcl_parse_struct_mime_addr, | |||
G_STRUCT_OFFSET (struct rspamd_task, from_envelope), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"rcpt", | |||
rspamd_rcl_parse_struct_mime_addr, | |||
G_STRUCT_OFFSET (struct rspamd_task, rcpt_envelope), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"helo", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_task, helo), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"user", | |||
rspamd_rcl_parse_struct_string, | |||
G_STRUCT_OFFSET (struct rspamd_task, user), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"pass_all", | |||
rspamd_protocol_parse_task_flags, | |||
G_STRUCT_OFFSET (struct rspamd_task, flags), | |||
0); | |||
0, | |||
NULL); | |||
rspamd_rcl_add_default_handler (sub, | |||
"json", | |||
rspamd_protocol_parse_task_flags, | |||
G_STRUCT_OFFSET (struct rspamd_task, flags), | |||
0); | |||
0, | |||
NULL); | |||
} | |||
} | |||
@@ -22,6 +22,7 @@ | |||
*/ | |||
#include <tclDecls.h> | |||
#include "config.h" | |||
#include "util.h" | |||
#include "rspamd.h" | |||
@@ -325,9 +326,14 @@ init_lua_worker (struct rspamd_config *cfg) | |||
(GDestroyNotify)g_list_free); | |||
rspamd_rcl_register_worker_option (cfg, type, "file", | |||
rspamd_rcl_parse_struct_string, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_lua_worker_ctx, file), 0); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"file", | |||
rspamd_rcl_parse_struct_string, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_lua_worker_ctx, file), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_parser (cfg, type, rspamd_lua_worker_parser, | |||
ctx); |
@@ -984,41 +984,81 @@ init_smtp_proxy (struct rspamd_config *cfg) | |||
ctx->smtp_delay = 0; | |||
ctx->instant_reject = TRUE; | |||
rspamd_rcl_register_worker_option (cfg, type, "upstreams", | |||
rspamd_rcl_parse_struct_string, ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, upstreams_str), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "timeout", | |||
rspamd_rcl_parse_struct_time, ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, | |||
smtp_timeout_raw), RSPAMD_CL_FLAG_TIME_UINT_32); | |||
rspamd_rcl_register_worker_option (cfg, type, "delay", | |||
rspamd_rcl_parse_struct_time, ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, | |||
smtp_delay), RSPAMD_CL_FLAG_TIME_UINT_32); | |||
rspamd_rcl_register_worker_option (cfg, type, "jitter", | |||
rspamd_rcl_parse_struct_time, ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, | |||
delay_jitter), RSPAMD_CL_FLAG_TIME_UINT_32); | |||
rspamd_rcl_register_worker_option (cfg, type, "xclient", | |||
rspamd_rcl_parse_struct_boolean, ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, use_xclient), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "instant_reject", | |||
rspamd_rcl_parse_struct_boolean, ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, instant_reject), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "proxy_buffer", | |||
rspamd_rcl_parse_struct_integer, ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, | |||
proxy_buf_len), RSPAMD_CL_FLAG_INT_32); | |||
rspamd_rcl_register_worker_option (cfg, type, "dnsbl", | |||
rspamd_rcl_parse_struct_string_list, ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, rbls), 0); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"upstreams", | |||
rspamd_rcl_parse_struct_string, | |||
ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, upstreams_str), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"timeout", | |||
rspamd_rcl_parse_struct_time, | |||
ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, | |||
smtp_timeout_raw), | |||
RSPAMD_CL_FLAG_TIME_UINT_32, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"delay", | |||
rspamd_rcl_parse_struct_time, | |||
ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, | |||
smtp_delay), | |||
RSPAMD_CL_FLAG_TIME_UINT_32, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"jitter", | |||
rspamd_rcl_parse_struct_time, | |||
ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, | |||
delay_jitter), | |||
RSPAMD_CL_FLAG_TIME_UINT_32, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"xclient", | |||
rspamd_rcl_parse_struct_boolean, | |||
ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, use_xclient), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"instant_reject", | |||
rspamd_rcl_parse_struct_boolean, | |||
ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, instant_reject), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"proxy_buffer", | |||
rspamd_rcl_parse_struct_integer, | |||
ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, | |||
proxy_buf_len), | |||
RSPAMD_CL_FLAG_INT_32, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"dnsbl", | |||
rspamd_rcl_parse_struct_string_list, | |||
ctx, | |||
G_STRUCT_OFFSET (struct smtp_proxy_ctx, rbls), | |||
0, | |||
NULL); | |||
return ctx; | |||
} |
@@ -27,6 +27,8 @@ | |||
*/ | |||
#include <libserver/rspamd_control.h> | |||
#include <tclDecls.h> | |||
#include <curses.h> | |||
#include "config.h" | |||
#include "libutil/util.h" | |||
#include "libutil/map.h" | |||
@@ -324,41 +326,81 @@ init_worker (struct rspamd_config *cfg) | |||
ctx->cfg = cfg; | |||
ctx->task_timeout = DEFAULT_TASK_TIMEOUT; | |||
rspamd_rcl_register_worker_option (cfg, type, "mime", | |||
rspamd_rcl_parse_struct_boolean, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_worker_ctx, is_mime), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "http", | |||
rspamd_rcl_parse_struct_boolean, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_worker_ctx, is_http), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "json", | |||
rspamd_rcl_parse_struct_boolean, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_worker_ctx, is_json), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "allow_learn", | |||
rspamd_rcl_parse_struct_boolean, ctx, | |||
G_STRUCT_OFFSET (struct rspamd_worker_ctx, allow_learn), 0); | |||
rspamd_rcl_register_worker_option (cfg, type, "timeout", | |||
rspamd_rcl_parse_struct_time, ctx, | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"mime", | |||
rspamd_rcl_parse_struct_boolean, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_worker_ctx, is_mime), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"http", | |||
rspamd_rcl_parse_struct_boolean, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_worker_ctx, is_http), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"json", | |||
rspamd_rcl_parse_struct_boolean, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_worker_ctx, is_json), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"allow_learn", | |||
rspamd_rcl_parse_struct_boolean, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_worker_ctx, allow_learn), | |||
0, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"timeout", | |||
rspamd_rcl_parse_struct_time, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_worker_ctx, | |||
timeout), RSPAMD_CL_FLAG_TIME_INTEGER); | |||
rspamd_rcl_register_worker_option (cfg, type, "task_timeout", | |||
rspamd_rcl_parse_struct_time, ctx, | |||
timeout), | |||
RSPAMD_CL_FLAG_TIME_INTEGER, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"task_timeout", | |||
rspamd_rcl_parse_struct_time, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_worker_ctx, | |||
task_timeout), RSPAMD_CL_FLAG_TIME_FLOAT); | |||
rspamd_rcl_register_worker_option (cfg, type, "max_tasks", | |||
rspamd_rcl_parse_struct_integer, ctx, | |||
task_timeout), | |||
RSPAMD_CL_FLAG_TIME_FLOAT, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"max_tasks", | |||
rspamd_rcl_parse_struct_integer, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_worker_ctx, | |||
max_tasks), RSPAMD_CL_FLAG_INT_32); | |||
rspamd_rcl_register_worker_option (cfg, type, "keypair", | |||
rspamd_rcl_parse_struct_keypair, ctx, | |||
max_tasks), | |||
RSPAMD_CL_FLAG_INT_32, | |||
NULL); | |||
rspamd_rcl_register_worker_option (cfg, | |||
type, | |||
"keypair", | |||
rspamd_rcl_parse_struct_keypair, | |||
ctx, | |||
G_STRUCT_OFFSET (struct rspamd_worker_ctx, | |||
key), 0); | |||
key), | |||
0, | |||
NULL); | |||
return ctx; | |||
} |