dovecot-2.2: doveadm director move/map: Use director_username_ha...

dovecot at dovecot.org dovecot at dovecot.org
Thu Mar 27 09:02:42 UTC 2014


details:   http://hg.dovecot.org/dovecot-2.2/rev/b697a214e122
changeset: 17173:b697a214e122
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Mar 27 10:02:08 2014 +0100
description:
doveadm director move/map: Use director_username_hash setting for calculating hashes.

diffstat:

 src/doveadm/doveadm-director.c |  16 +++-------------
 src/doveadm/doveadm-settings.c |   2 ++
 src/doveadm/doveadm-settings.h |   1 +
 3 files changed, 6 insertions(+), 13 deletions(-)

diffs (77 lines):

diff -r 57638bf8ee3e -r b697a214e122 src/doveadm/doveadm-director.c
--- a/src/doveadm/doveadm-director.c	Wed Mar 26 16:17:34 2014 +0100
+++ b/src/doveadm/doveadm-director.c	Thu Mar 27 10:02:08 2014 +0100
@@ -9,6 +9,7 @@
 #include "write-full.h"
 #include "master-service.h"
 #include "auth-master.h"
+#include "mail-user-hash.h"
 #include "doveadm.h"
 #include "doveadm-print.h"
 
@@ -180,17 +181,6 @@
 	director_disconnect(ctx);
 }
 
-static unsigned int director_username_hash(const char *username)
-{
-	unsigned char md5[MD5_RESULTLEN];
-	unsigned int i, hash = 0;
-
-	md5_get_digest(username, strlen(username), md5);
-	for (i = 0; i < sizeof(hash); i++)
-		hash = (hash << CHAR_BIT) | md5[i];
-	return hash;
-}
-
 static void
 user_list_add(const char *username, pool_t pool,
 	      HASH_TABLE_TYPE(user_list) users)
@@ -200,7 +190,7 @@
 
 	user = p_new(pool, struct user_list, 1);
 	user->name = p_strdup(pool, username);
-	user_hash = director_username_hash(username);
+	user_hash = mail_user_hash(username, doveadm_settings->director_username_hash);
 
 	old_user = hash_table_lookup(users, POINTER_CAST(user_hash));
 	if (old_user != NULL)
@@ -440,7 +430,7 @@
 	    argv[optind+2] != NULL)
 		director_cmd_help(cmd_director_move);
 
-	user_hash = director_username_hash(argv[optind++]);
+	user_hash = mail_user_hash(argv[optind++], doveadm_settings->director_username_hash);
 	host = argv[optind];
 
 	director_get_host(host, &ips, &ips_count);
diff -r 57638bf8ee3e -r b697a214e122 src/doveadm/doveadm-settings.c
--- a/src/doveadm/doveadm-settings.c	Wed Mar 26 16:17:34 2014 +0100
+++ b/src/doveadm/doveadm-settings.c	Thu Mar 27 10:02:08 2014 +0100
@@ -67,6 +67,7 @@
 	DEF(SET_STR, dsync_remote_cmd),
 	DEF(SET_STR, ssl_client_ca_dir),
 	DEF(SET_STR, ssl_client_ca_file),
+	DEF(SET_STR, director_username_hash),
 
 	{ SET_STRLIST, "plugin", offsetof(struct doveadm_settings, plugin_envs), NULL },
 
@@ -88,6 +89,7 @@
 	.dsync_remote_cmd = "ssh -l%{login} %{host} doveadm dsync-server -u%u -U",
 	.ssl_client_ca_dir = "",
 	.ssl_client_ca_file = "",
+	.director_username_hash = "%Lu",
 
 	.plugin_envs = ARRAY_INIT
 };
diff -r 57638bf8ee3e -r b697a214e122 src/doveadm/doveadm-settings.h
--- a/src/doveadm/doveadm-settings.h	Wed Mar 26 16:17:34 2014 +0100
+++ b/src/doveadm/doveadm-settings.h	Thu Mar 27 10:02:08 2014 +0100
@@ -16,6 +16,7 @@
 	const char *dsync_remote_cmd;
 	const char *ssl_client_ca_dir;
 	const char *ssl_client_ca_file;
+	const char *director_username_hash;
 
 	ARRAY(const char *) plugin_envs;
 };


More information about the dovecot-cvs mailing list