aboutsummaryrefslogtreecommitdiffstats
path: root/src/libserver/cfg_utils.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2018-06-05 08:28:05 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2018-06-05 08:28:05 +0100
commit7680bbbc5809a228fcfe158f97c3083242787ada (patch)
treea6fb527e97d766100f18f0c6a1628e033397e171 /src/libserver/cfg_utils.c
parentb2c78d1b079e5880b908b27bebebb2a140ae2d4b (diff)
downloadrspamd-7680bbbc5809a228fcfe158f97c3083242787ada.tar.gz
rspamd-7680bbbc5809a228fcfe158f97c3083242787ada.zip
[Feature] Provide $HOSTNAME variable in UCL
Diffstat (limited to 'src/libserver/cfg_utils.c')
-rw-r--r--src/libserver/cfg_utils.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/libserver/cfg_utils.c b/src/libserver/cfg_utils.c
index e606139cf..e58232a00 100644
--- a/src/libserver/cfg_utils.c
+++ b/src/libserver/cfg_utils.c
@@ -1112,12 +1112,15 @@ rspamd_include_map_handler (const guchar *data, gsize len,
#define RSPAMD_VERSION_MINOR_MACRO "VERSION_MINOR"
#define RSPAMD_VERSION_PATCH_MACRO "VERSION_PATCH"
#define RSPAMD_BRANCH_VERSION_MACRO "BRANCH_VERSION"
+#define RSPAMD_HOSTNAME_MACRO "HOSTNAME"
void
rspamd_ucl_add_conf_variables (struct ucl_parser *parser, GHashTable *vars)
{
GHashTableIter it;
gpointer k, v;
+ gchar *hostbuf;
+ gsize hostlen;
ucl_parser_register_variable (parser,
RSPAMD_CONFDIR_MACRO,
@@ -1159,6 +1162,23 @@ rspamd_ucl_add_conf_variables (struct ucl_parser *parser, GHashTable *vars)
"no");
#endif
+ hostlen = sysconf (_SC_HOST_NAME_MAX);
+
+ if (hostlen <= 0) {
+ hostlen = 256;
+ }
+ else {
+ hostlen ++;
+ }
+
+ hostbuf = g_alloca (hostlen);
+ memset (hostbuf, 0, hostlen);
+ gethostname (hostbuf, hostlen - 1);
+
+ /* UCL copies variables, so it is safe to pass an ephemeral buffer here */
+ ucl_parser_register_variable (parser, RSPAMD_HOSTNAME_MACRO,
+ hostbuf);
+
if (vars != NULL) {
g_hash_table_iter_init (&it, vars);