#include "login-common.h"
#include "settings-parser.h"
#include "login-settings.h"
+#include "settings-parser.h"
#include <unistd.h>
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),
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",
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;
}
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;
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",
/* 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