commit c269f2a: [Minor] Implement `hosts` parameter in DNS config

Vsevolod Stakhov vsevolod at highsecure.ru
Tue Mar 17 15:49:12 UTC 2020


Author: Vsevolod Stakhov
Date: 2020-03-17 15:41:05 +0000
URL: https://github.com/rspamd/rspamd/commit/c269f2a59c51347ff074010f8bd0f3b117e7c0d6 (HEAD -> master)

[Minor] Implement `hosts` parameter in DNS config

---
 src/libserver/dns.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/libserver/dns.c b/src/libserver/dns.c
index 1d114ec96..8fe0c6f92 100644
--- a/src/libserver/dns.c
+++ b/src/libserver/dns.c
@@ -766,18 +766,32 @@ rspamd_dns_resolver_config_ucl (struct rspamd_config *cfg,
 	}
 
 	hosts = ucl_object_lookup (dns_section, "hosts");
+
 	if (hosts == NULL) {
 		/* Read normal `/etc/hosts` file */
 		rspamd_dns_read_hosts_file (cfg, dns_resolver, "/etc/hosts");
 	}
 	else if (ucl_object_type (hosts) == UCL_NULL) {
-
+		/* Do nothing, hosts are explicitly disabled */
 	}
 	else if (ucl_object_type (hosts) == UCL_STRING) {
-
+		if (!rspamd_dns_read_hosts_file (cfg, dns_resolver, ucl_object_tostring (hosts))) {
+			msg_err_config ("cannot read hosts file %s", ucl_object_tostring (hosts));
+		}
 	}
 	else if (ucl_object_type (hosts) == UCL_ARRAY) {
+		const ucl_object_t *cur;
+		ucl_object_iter_t it = NULL;
 
+		while ((cur = ucl_object_iterate (hosts, &it, true)) != NULL) {
+			if (!rspamd_dns_read_hosts_file (cfg, dns_resolver, ucl_object_tostring (cur))) {
+				msg_err_config ("cannot read hosts file %s", ucl_object_tostring (cur));
+			}
+		}
+	}
+	else {
+		msg_err_config ("invalid type for hosts parameter: %s",
+				ucl_object_type_to_string (ucl_object_type (hosts)));
 	}
 
 	fails_cache_size = ucl_object_lookup (dns_section, "fails_cache_size");


More information about the Commits mailing list