From cd2f92e40eca3ac7036e5cac9f90969a8d26655f Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 20 Feb 2019 13:05:56 +0000 Subject: [PATCH] [Feature] Support User-Agent in HTTP requests Issue: #2750 Closes: #2750 --- src/client/rspamc.c | 4 ---- src/libutil/http_connection.c | 5 +++++ src/libutil/http_context.c | 14 ++++++++++++++ src/plugins/dkim_check.c | 8 +++++++- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/client/rspamc.c b/src/client/rspamc.c index d9af90b7f..0568692b4 100644 --- a/src/client/rspamc.c +++ b/src/client/rspamc.c @@ -554,10 +554,6 @@ add_options (GQueue *opts) GString *numbuf; gchar **hdr, **rcpt; - if (user_agent) { - ADD_CLIENT_HEADER (opts, "User-Agent", user_agent); - } - if (ip != NULL) { rspamd_inet_addr_t *addr = NULL; diff --git a/src/libutil/http_connection.c b/src/libutil/http_connection.c index 8463ff762..fd052951b 100644 --- a/src/libutil/http_connection.c +++ b/src/libutil/http_connection.c @@ -1805,6 +1805,11 @@ rspamd_http_connection_write_message_common (struct rspamd_http_connection *conn } } + if (priv->ctx->config.user_agent) { + rspamd_http_message_add_header (msg, "User-Agent", + priv->ctx->config.user_agent); + } + if (encrypted) { mode = rspamd_keypair_alg (priv->local_key); diff --git a/src/libutil/http_context.c b/src/libutil/http_context.c index 0237af1ab..39a02b179 100644 --- a/src/libutil/http_context.c +++ b/src/libutil/http_context.c @@ -50,11 +50,13 @@ rspamd_http_context_new_default (struct rspamd_config *cfg, static const int default_kp_size = 1024; static const gdouble default_rotate_time = 120; + static const gchar *default_user_agent = "rspamd-" RSPAMD_VERSION_FULL; ctx = g_malloc0 (sizeof (*ctx)); ctx->config.kp_cache_size_client = default_kp_size; ctx->config.kp_cache_size_server = default_kp_size; ctx->config.client_key_rotate_time = default_rotate_time; + ctx->config.user_agent = default_user_agent; if (cfg) { ctx->ssl_ctx = cfg->libs_ctx->ssl_ctx; @@ -127,6 +129,18 @@ rspamd_http_context_create (struct rspamd_config *cfg, if (rotate_time) { ctx->config.client_key_rotate_time = ucl_object_todouble (rotate_time); } + + const ucl_object_t *user_agent; + + user_agent = ucl_object_lookup (client_obj, "user_agent"); + + if (user_agent) { + ctx->config.user_agent = ucl_object_tostring (user_agent); + + if (ctx->config.user_agent && strlen (ctx->config.user_agent) == 0) { + ctx->config.user_agent = NULL; + } + } } server_obj = ucl_object_lookup (http_obj, "server"); diff --git a/src/plugins/dkim_check.c b/src/plugins/dkim_check.c index b7e9e53ee..f7600552b 100644 --- a/src/plugins/dkim_check.c +++ b/src/plugins/dkim_check.c @@ -1545,7 +1545,13 @@ dkim_module_lua_push_verify_result (struct rspamd_dkim_lua_verify_cbdata *cbd, ptask = lua_newuserdata (cbd->L, sizeof (*ptask)); *ptask = task; lua_pushboolean (cbd->L, success); - lua_pushstring (cbd->L, error_str); + + if (error_str) { + lua_pushstring (cbd->L, error_str); + } + else { + lua_pushnil (cbd->L); + } if (cbd->ctx) { if (res->domain) { -- 2.39.5