]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
login-common: change login_source_ips to BOOLLIST.
authorsergey.kitov <sergey.kitov@open-xchange.com>
Fri, 20 Oct 2023 08:40:49 +0000 (11:40 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:39:59 +0000 (10:39 +0200)
src/login-common/login-settings.c
src/login-common/login-settings.h
src/login-common/main.c

index 46bb210e06de708e2fb127bfa5c1e6f5d5b37cb6..4cedeb0e7bbdb5b9a82b99cc6fcb85b48af73837 100644 (file)
@@ -3,6 +3,7 @@
 #include "login-common.h"
 #include "settings-parser.h"
 #include "login-settings.h"
+#include "settings-parser.h"
 
 #include <unistd.h>
 
@@ -14,7 +15,7 @@ static bool login_settings_check(void *_set, pool_t pool, const char **error_r);
 
 static const struct setting_define login_setting_defines[] = {
        DEF(BOOLLIST, login_trusted_networks),
-       DEF(STR, login_source_ips),
+       DEF(BOOLLIST, login_source_ips),
        DEF(STR_HIDDEN, login_greeting),
        DEF(STR_NOVARS, login_log_format_elements),
        DEF(STR_NOVARS, login_log_format),
@@ -44,7 +45,7 @@ static const struct setting_define login_setting_defines[] = {
 
 static const struct login_settings login_default_settings = {
        .login_trusted_networks = ARRAY_INIT,
-       .login_source_ips = "",
+       .login_source_ips = ARRAY_INIT,
        .login_greeting = PACKAGE_NAME" ready.",
        .login_log_format_elements = "user=<%u> method=%m rip=%r lip=%l mpid=%e %c session=<%{session}>",
        .login_log_format = "%$: %s",
index 9c043a8930b2b70092f74d1b391ee2ca66625402..9ccb7b973ded980464ed7ae58e90eb0e954f85bb 100644 (file)
@@ -4,7 +4,7 @@
 struct login_settings {
        pool_t pool;
        ARRAY_TYPE(const_string) login_trusted_networks;
-       const char *login_source_ips;
+       ARRAY_TYPE(const_string) login_source_ips;
        const char *login_greeting;
        const char *login_log_format_elements, *login_log_format;
        const char *login_access_sockets;
index c2d558c4df7b2f9e7311d45589edbb749c13d2e5..0138d2121e52602cdead1a04e7bb5173585ea368 100644 (file)
@@ -275,7 +275,7 @@ void login_anvil_init(void)
 }
 
 static void
-parse_login_source_ips(const char *ips_str)
+parse_login_source_ips(const ARRAY_TYPE(const_string) *ips_str)
 {
        const char *const *tmp;
        struct ip_addr *tmp_ips;
@@ -285,7 +285,7 @@ parse_login_source_ips(const char *ips_str)
        i_array_init(&login_source_v4_ips_array, 4);
        i_array_init(&login_source_v6_ips_array, 4);
 
-       for (tmp = t_strsplit_spaces(ips_str, ", "); *tmp != NULL; tmp++) {
+       for (tmp = settings_boollist_get(ips_str); *tmp != NULL; tmp++) {
                ret = net_gethostbyname(*tmp, &tmp_ips, &tmp_ips_count);
                if (ret != 0) {
                        i_error("login_source_ips: net_gethostbyname(%s) failed: %s",
@@ -383,7 +383,7 @@ static void main_preinit(void)
 
        /* read the login_source_ips before chrooting so it can access
           /etc/hosts */
-       parse_login_source_ips(global_login_settings->login_source_ips);
+       parse_login_source_ips(&global_login_settings->login_source_ips);
        if (login_source_v4_ips_count > 0) {
                /* randomize the initial index in case restart_service_count=1
                   (although in that case it's unlikely this setting is