]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Added default_internal_user and default_login_user settings, which services use as...
authorTimo Sirainen <tss@iki.fi>
Sat, 13 Feb 2010 06:08:57 +0000 (08:08 +0200)
committerTimo Sirainen <tss@iki.fi>
Sat, 13 Feb 2010 06:08:57 +0000 (08:08 +0200)
--HG--
branch : HEAD

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

index 2d7e2590a07501c47ab68bfdaded0a714eb325bf..dd6a72ad502bb898077e433e817fafc1c57c7f35 100644 (file)
@@ -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
index 501e71bb1b4abfc89a180c8ef1cc36635d08dce2..f28d6b7186afa0abf8746abfe12b8b37630f9e32 100644 (file)
@@ -26,7 +26,7 @@ struct service_settings anvil_service_settings = {
        .protocol = "",
        .type = "anvil",
        .executable = "anvil",
-       .user = "dovecot",
+       .user = "$default_internal_user",
        .group = "",
        .privileged_group = "",
        .extra_groups = "",
index ae7696ede8a1235c85926d363bc75a48950fa4cf..0f9e8a28fe171f51f4a8956e518bd64f05df3bc8 100644 (file)
@@ -23,7 +23,7 @@ struct service_settings dict_service_settings = {
        .protocol = "",
        .type = "",
        .executable = "dict",
-       .user = "dovecot",
+       .user = "$default_internal_user",
        .group = "",
        .privileged_group = "",
        .extra_groups = "",
index 87ecb7a2e0f43a766232558bbcbc051178865803..89db9c00185c216f4df99fa16eea9c0fe3e74083 100644 (file)
@@ -26,7 +26,7 @@ struct service_settings dns_client_service_settings = {
        .protocol = "",
        .type = "",
        .executable = "dns-client",
-       .user = "dovecot",
+       .user = "$default_internal_user",
        .group = "",
        .privileged_group = "",
        .extra_groups = "",
index 8fb20e9a61188b8442de18ea8d5b9fdd5fa02311..d1469608e1b0f3dcfa028290ff67a441b1ec466c 100644 (file)
@@ -28,7 +28,7 @@ struct service_settings imap_login_service_settings = {
        .protocol = "imap",
        .type = "login",
        .executable = "imap-login",
-       .user = "dovecot",
+       .user = "$default_login_user",
        .group = "",
        .privileged_group = "",
        .extra_groups = "",
index b632d98e8505b5c140b2a10043c4f9efeeb1cee2..6700339f56fab547c2ae0957e04f5b252ed03661 100644 (file)
@@ -171,6 +171,8 @@ static const struct setting_define master_setting_defines[] = {
        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 @@ static const struct master_settings master_default_settings = {
        .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,
index 9e325c6ad534df4ab2a4a3874dc98079531b6135..b899e994758dae521eeb3c205d1bb104ad638135 100644 (file)
@@ -9,6 +9,8 @@ struct master_settings {
        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;
index c95069bf2b1450a2b26d7ec123633496b8214888..aa4a41f9c9b4bb861cb8b383808726c515d94a82 100644 (file)
@@ -168,7 +168,7 @@ service_create(pool_t pool, const struct service_settings *set,
        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 @@ service_create(pool_t pool, const struct service_settings *set,
                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)
index 220278b65bba8b074efd8a8462b09c5726c0229f..3ae9513eb9e147279662e316ef1c5eb966464ce5 100644 (file)
@@ -28,7 +28,7 @@ struct service_settings pop3_login_service_settings = {
        .protocol = "pop3",
        .type = "login",
        .executable = "pop3-login",
-       .user = "dovecot",
+       .user = "$default_login_user",
        .group = "",
        .privileged_group = "",
        .extra_groups = "",
index 9bb62b394caef438caebbabb924eb5ba528a58ce..f22724459e6e8114108918f857c2521f0eec3ee2 100644 (file)
@@ -12,7 +12,7 @@ struct service_settings tcpwrap_service_settings = {
        .protocol = "",
        .type = "",
        .executable = "tcpwrap",
-       .user = "dovecot",
+       .user = "$default_internal_user",
        .group = "",
        .privileged_group = "",
        .extra_groups = "",