diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-06-05 08:28:05 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-06-05 08:28:05 +0100 |
commit | 7680bbbc5809a228fcfe158f97c3083242787ada (patch) | |
tree | a6fb527e97d766100f18f0c6a1628e033397e171 /src/libserver/cfg_utils.c | |
parent | b2c78d1b079e5880b908b27bebebb2a140ae2d4b (diff) | |
download | rspamd-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.c | 20 |
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); |