changeset 10705:bf84cb98bd04 HEAD

Added default_internal_user and default_login_user settings, which services use as default users.
author Timo Sirainen <tss@iki.fi>
date Sat, 13 Feb 2010 08:08:57 +0200
parents c26002b81f57
children 285465d71322
files doc/example-config/conf.d/master.conf src/anvil/anvil-settings.c src/dict/dict-settings.c src/dns/dns-client-settings.c src/imap-login/imap-login-settings.c src/master/master-settings.c src/master/master-settings.h src/master/service.c src/pop3-login/pop3-login-settings.c src/util/tcpwrap-settings.c
diffstat 10 files changed, 26 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/doc/example-config/conf.d/master.conf	Sat Feb 13 08:07:31 2010 +0200
+++ b/doc/example-config/conf.d/master.conf	Sat Feb 13 08:08:57 2010 +0200
@@ -2,6 +2,9 @@
 #default_client_limit = 1000
 #default_vsz_limit = 256M
 
+#default_login_user = dovecot
+#default_internal_user = dovecot
+
 service imap-login {
   inet_listener imap {
     #port = 143
--- a/src/anvil/anvil-settings.c	Sat Feb 13 08:07:31 2010 +0200
+++ b/src/anvil/anvil-settings.c	Sat Feb 13 08:08:57 2010 +0200
@@ -26,7 +26,7 @@
 	.protocol = "",
 	.type = "anvil",
 	.executable = "anvil",
-	.user = "dovecot",
+	.user = "$default_internal_user",
 	.group = "",
 	.privileged_group = "",
 	.extra_groups = "",
--- a/src/dict/dict-settings.c	Sat Feb 13 08:07:31 2010 +0200
+++ b/src/dict/dict-settings.c	Sat Feb 13 08:08:57 2010 +0200
@@ -23,7 +23,7 @@
 	.protocol = "",
 	.type = "",
 	.executable = "dict",
-	.user = "dovecot",
+	.user = "$default_internal_user",
 	.group = "",
 	.privileged_group = "",
 	.extra_groups = "",
--- a/src/dns/dns-client-settings.c	Sat Feb 13 08:07:31 2010 +0200
+++ b/src/dns/dns-client-settings.c	Sat Feb 13 08:08:57 2010 +0200
@@ -26,7 +26,7 @@
 	.protocol = "",
 	.type = "",
 	.executable = "dns-client",
-	.user = "dovecot",
+	.user = "$default_internal_user",
 	.group = "",
 	.privileged_group = "",
 	.extra_groups = "",
--- a/src/imap-login/imap-login-settings.c	Sat Feb 13 08:07:31 2010 +0200
+++ b/src/imap-login/imap-login-settings.c	Sat Feb 13 08:08:57 2010 +0200
@@ -28,7 +28,7 @@
 	.protocol = "imap",
 	.type = "login",
 	.executable = "imap-login",
-	.user = "dovecot",
+	.user = "$default_login_user",
 	.group = "",
 	.privileged_group = "",
 	.extra_groups = "",
--- a/src/master/master-settings.c	Sat Feb 13 08:07:31 2010 +0200
+++ b/src/master/master-settings.c	Sat Feb 13 08:08:57 2010 +0200
@@ -171,6 +171,8 @@
 	DEF(SET_STR, protocols),
 	DEF(SET_STR, listen),
 	DEF(SET_ENUM, ssl),
+	DEF(SET_STR, default_internal_user),
+	DEF(SET_STR, default_login_user),
 	DEF(SET_UINT, default_process_limit),
 	DEF(SET_UINT, default_client_limit),
 	DEF(SET_SIZE, default_vsz_limit),
@@ -195,6 +197,8 @@
 	.protocols = "imap pop3 lmtp",
 	.listen = "*, ::",
 	.ssl = "yes:no:required",
+	.default_internal_user = "dovecot",
+	.default_login_user = "dovecot",
 	.default_process_limit = 100,
 	.default_client_limit = 1000,
 	.default_vsz_limit = 256*1024*1024,
--- a/src/master/master-settings.h	Sat Feb 13 08:07:31 2010 +0200
+++ b/src/master/master-settings.h	Sat Feb 13 08:08:57 2010 +0200
@@ -9,6 +9,8 @@
 	const char *protocols;
 	const char *listen;
 	const char *ssl;
+	const char *default_internal_user;
+	const char *default_login_user;
 	unsigned int default_process_limit;
 	unsigned int default_client_limit;
 	uoff_t default_vsz_limit;
--- a/src/master/service.c	Sat Feb 13 08:07:31 2010 +0200
+++ b/src/master/service.c	Sat Feb 13 08:08:57 2010 +0200
@@ -168,7 +168,7 @@
 	struct inet_listener_settings *const *inet_listeners;
 	struct service *service;
         struct service_listener *l;
-	const char *const *tmp;
+	const char *user, *const *tmp;
 	string_t *str;
 	unsigned int i, unix_count, fifo_count, inet_count;
 
@@ -202,8 +202,17 @@
 		return NULL;
 	}
 
+	/* $variable expansion is typically done by doveconf, but these
+	   variables can come from built-in settings, so we need to expand
+	   them here */
+	user = set->user;
+	if (strcmp(user, "$default_internal_user") == 0)
+		user = set->master_set->default_internal_user;
+	else if (strcmp(user, "$default_login_user") == 0)
+		user = set->master_set->default_login_user;
+
 	/* default gid to user's primary group */
-	if (get_uidgid(set->user, &service->uid, &service->gid, error_r) < 0)
+	if (get_uidgid(user, &service->uid, &service->gid, error_r) < 0)
 		return NULL;
 	if (*set->group != '\0') {
 		if (get_gid(set->group, &service->gid, error_r) < 0)
--- a/src/pop3-login/pop3-login-settings.c	Sat Feb 13 08:07:31 2010 +0200
+++ b/src/pop3-login/pop3-login-settings.c	Sat Feb 13 08:08:57 2010 +0200
@@ -28,7 +28,7 @@
 	.protocol = "pop3",
 	.type = "login",
 	.executable = "pop3-login",
-	.user = "dovecot",
+	.user = "$default_login_user",
 	.group = "",
 	.privileged_group = "",
 	.extra_groups = "",
--- a/src/util/tcpwrap-settings.c	Sat Feb 13 08:07:31 2010 +0200
+++ b/src/util/tcpwrap-settings.c	Sat Feb 13 08:08:57 2010 +0200
@@ -12,7 +12,7 @@
 	.protocol = "",
 	.type = "",
 	.executable = "tcpwrap",
-	.user = "dovecot",
+	.user = "$default_internal_user",
 	.group = "",
 	.privileged_group = "",
 	.extra_groups = "",