]> source.dussan.org Git - rspamd.git/commitdiff
Add ability to insert documentation strings
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 27 Dec 2015 12:58:23 +0000 (12:58 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 27 Dec 2015 13:10:40 +0000 (13:10 +0000)
Issue: #461

src/controller.c
src/fuzzy_storage.c
src/hs_helper.c
src/http_proxy.c
src/libserver/cfg_rcl.c
src/libserver/cfg_rcl.h
src/libserver/protocol.c
src/lua_worker.c
src/smtp_proxy.c
src/worker.c

index f16bf42a072bfbe3b2f759ecf0a5de56fc9db23a..68ce74a3aca645a3f8a1c4786fe1549f2e47af07 100644 (file)
@@ -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;
 }
index c70f5a148ef381c662b93006fe9a9f2392100d20..8e84ddea7630788482e056edb672cd643b59b6fe 100644 (file)
@@ -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;
index 1d49537c03f8679b1dd1131e21f4b7bd2c4f3d69..7ca14e672683f40c1dc4c9d8a650e7cfe60f29d7 100644 (file)
@@ -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;
 }
index 43cacae9c9d6e98540216503d94c31a1e0c287c2..eebd5c91ebfa91e94e81f318d1339cfef79037f1 100644 (file)
@@ -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;
 }
index 7ddc14f93dbad850a083007e7ee62cfe5784869a..41c6d3f179945f4b9beab6c04a0ac82bcedc8a12 100644 (file)
 
 #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;
index 81a61e2a22e1a496944c415effa972d45cbaefac..d7b1c0de2fe550de52947dcf45184a712cc1f772 100644 (file)
@@ -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
index 58850209e2f445c4630b6193ed7cda557516acf0..93ed5a546e870c39d029cc453c6c9bf5dcd8b878 100644 (file)
@@ -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);
        }
 }
 
index 1e37419a25b5d0ddc2fc6caa89a906efa5752051..7188cb6b80748b07f94d473b1c66394e001e8e38 100644 (file)
@@ -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);
index 9c5364f1ee52daadc365f24e86d03f74c1131263..ff4a9f553400d8f174abba9d1c0947e3be92f008 100644 (file)
@@ -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;
 }
index 63cb778f456a602fec12390fcb33c03bb43f34ab..cce45c405028a9462ee4f1b38eabb44008673049 100644 (file)
@@ -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;
 }