dovecot-2.2: auth: Moved var_expand() related code to its own file.

dovecot at dovecot.org dovecot at dovecot.org
Fri May 29 17:58:30 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/cb66b25060b7
changeset: 18762:cb66b25060b7
user:      Timo Sirainen <tss at iki.fi>
date:      Fri May 29 19:55:47 2015 +0300
description:
auth: Moved var_expand() related code to its own file.

diffstat:

 src/auth/Makefile.am               |    2 +
 src/auth/auth-request-var-expand.c |  162 +++++++++++++++++++++++++++++++++++++
 src/auth/auth-request-var-expand.h |   26 +++++
 src/auth/auth-request.c            |  157 -----------------------------------
 src/auth/auth-request.h            |   22 +----
 5 files changed, 191 insertions(+), 178 deletions(-)

diffs (truncated from 435 to 300 lines):

diff -r 315adb25e6b4 -r cb66b25060b7 src/auth/Makefile.am
--- a/src/auth/Makefile.am	Fri May 29 19:11:50 2015 +0300
+++ b/src/auth/Makefile.am	Fri May 29 19:55:47 2015 +0300
@@ -70,6 +70,7 @@
 	auth-penalty.c \
 	auth-request.c \
 	auth-request-handler.c \
+	auth-request-var-expand.c \
 	auth-settings.c \
 	auth-fields.c \
 	auth-token.c \
@@ -138,6 +139,7 @@
 	auth-penalty.h \
 	auth-request.h \
 	auth-request-handler.h \
+	auth-request-var-expand.h \
 	auth-settings.h \
 	auth-fields.h \
 	auth-token.h \
diff -r 315adb25e6b4 -r cb66b25060b7 src/auth/auth-request-var-expand.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/auth/auth-request-var-expand.c	Fri May 29 19:55:47 2015 +0300
@@ -0,0 +1,162 @@
+/* Copyright (c) 2002-2015 Dovecot authors, see the included COPYING file */
+
+#include "auth-common.h"
+#include "strescape.h"
+#include "auth-request.h"
+
+const struct var_expand_table
+auth_request_var_expand_static_tab[AUTH_REQUEST_VAR_TAB_COUNT+1] = {
+	{ 'u', NULL, "user" },
+	{ 'n', NULL, "username" },
+	{ 'd', NULL, "domain" },
+	{ 's', NULL, "service" },
+	{ 'h', NULL, "home" },
+	{ 'l', NULL, "lip" },
+	{ 'r', NULL, "rip" },
+	{ 'p', NULL, "pid" },
+	{ 'w', NULL, "password" },
+	{ '!', NULL, NULL },
+	{ 'm', NULL, "mech" },
+	{ 'c', NULL, "secured" },
+	{ 'a', NULL, "lport" },
+	{ 'b', NULL, "rport" },
+	{ 'k', NULL, "cert" },
+	{ '\0', NULL, "login_user" },
+	{ '\0', NULL, "login_username" },
+	{ '\0', NULL, "login_domain" },
+	{ '\0', NULL, "session" },
+	{ '\0', NULL, "real_lip" },
+	{ '\0', NULL, "real_rip" },
+	{ '\0', NULL, "real_lport" },
+	{ '\0', NULL, "real_rport" },
+	{ '\0', NULL, "domain_first" },
+	{ '\0', NULL, "domain_last" },
+	{ '\0', NULL, "master_user" },
+	{ '\0', NULL, "session_pid" },
+	{ '\0', NULL, "orig_user" },
+	{ '\0', NULL, "orig_username" },
+	{ '\0', NULL, "orig_domain" },
+	/* be sure to update AUTH_REQUEST_VAR_TAB_COUNT */
+	{ '\0', NULL, NULL }
+};
+
+static const char *
+escape_none(const char *string,
+	    const struct auth_request *request ATTR_UNUSED)
+{
+	return string;
+}
+
+const char *
+auth_request_str_escape(const char *string,
+			const struct auth_request *request ATTR_UNUSED)
+{
+	return str_escape(string);
+}
+
+struct var_expand_table *
+auth_request_get_var_expand_table_full(const struct auth_request *auth_request,
+				       auth_request_escape_func_t *escape_func,
+				       unsigned int *count)
+{
+	const unsigned int auth_count =
+		N_ELEMENTS(auth_request_var_expand_static_tab);
+	struct var_expand_table *tab, *ret_tab;
+	const char *orig_user;
+
+	if (escape_func == NULL)
+		escape_func = escape_none;
+
+	/* keep the extra fields at the beginning. the last static_tab field
+	   contains the ending NULL-fields. */
+	tab = ret_tab = t_malloc((*count + auth_count) * sizeof(*tab));
+	memset(tab, 0, *count * sizeof(*tab));
+	tab += *count;
+	*count += auth_count;
+
+	memcpy(tab, auth_request_var_expand_static_tab,
+	       auth_count * sizeof(*tab));
+
+	tab[0].value = escape_func(auth_request->user, auth_request);
+	tab[1].value = escape_func(t_strcut(auth_request->user, '@'),
+				   auth_request);
+	tab[2].value = strchr(auth_request->user, '@');
+	if (tab[2].value != NULL)
+		tab[2].value = escape_func(tab[2].value+1, auth_request);
+	tab[3].value = auth_request->service;
+	/* tab[4] = we have no home dir */
+	if (auth_request->local_ip.family != 0)
+		tab[5].value = net_ip2addr(&auth_request->local_ip);
+	if (auth_request->remote_ip.family != 0)
+		tab[6].value = net_ip2addr(&auth_request->remote_ip);
+	tab[7].value = dec2str(auth_request->client_pid);
+	if (auth_request->mech_password != NULL) {
+		tab[8].value = escape_func(auth_request->mech_password,
+					   auth_request);
+	}
+	if (auth_request->userdb_lookup) {
+		tab[9].value = auth_request->userdb == NULL ? "" :
+			dec2str(auth_request->userdb->userdb->id);
+	} else {
+		tab[9].value = auth_request->passdb == NULL ? "" :
+			dec2str(auth_request->passdb->passdb->id);
+	}
+	tab[10].value = auth_request->mech_name == NULL ? "" :
+		auth_request->mech_name;
+	tab[11].value = auth_request->secured ? "secured" : "";
+	tab[12].value = dec2str(auth_request->local_port);
+	tab[13].value = dec2str(auth_request->remote_port);
+	tab[14].value = auth_request->valid_client_cert ? "valid" : "";
+
+	if (auth_request->requested_login_user != NULL) {
+		const char *login_user = auth_request->requested_login_user;
+
+		tab[15].value = escape_func(login_user, auth_request);
+		tab[16].value = escape_func(t_strcut(login_user, '@'),
+					    auth_request);
+		tab[17].value = strchr(login_user, '@');
+		if (tab[17].value != NULL) {
+			tab[17].value = escape_func(tab[17].value+1,
+						    auth_request);
+		}
+	}
+	tab[18].value = auth_request->session_id == NULL ? NULL :
+		escape_func(auth_request->session_id, auth_request);
+	if (auth_request->real_local_ip.family != 0)
+		tab[19].value = net_ip2addr(&auth_request->real_local_ip);
+	if (auth_request->real_remote_ip.family != 0)
+		tab[20].value = net_ip2addr(&auth_request->real_remote_ip);
+	tab[21].value = dec2str(auth_request->real_local_port);
+	tab[22].value = dec2str(auth_request->real_remote_port);
+	tab[23].value = strchr(auth_request->user, '@');
+	if (tab[23].value != NULL) {
+		tab[23].value = escape_func(t_strcut(tab[23].value+1, '@'),
+					    auth_request);
+	}
+	tab[24].value = strrchr(auth_request->user, '@');
+	if (tab[24].value != NULL)
+		tab[24].value = escape_func(tab[24].value+1, auth_request);
+	tab[25].value = auth_request->master_user == NULL ? NULL :
+		escape_func(auth_request->master_user, auth_request);
+	tab[26].value = auth_request->session_pid == (pid_t)-1 ? NULL :
+		dec2str(auth_request->session_pid);
+
+	orig_user = auth_request->original_username != NULL ?
+		auth_request->original_username : auth_request->user;
+	tab[27].value = escape_func(orig_user, auth_request);
+	tab[28].value = escape_func(t_strcut(orig_user, '@'), auth_request);
+	tab[29].value = strchr(orig_user, '@');
+	if (tab[29].value != NULL)
+		tab[29].value = escape_func(tab[29].value+1, auth_request);
+	return ret_tab;
+}
+
+const struct var_expand_table *
+auth_request_get_var_expand_table(const struct auth_request *auth_request,
+				  auth_request_escape_func_t *escape_func)
+{
+	unsigned int count = 0;
+
+	return auth_request_get_var_expand_table_full(auth_request, escape_func,
+						      &count);
+}
diff -r 315adb25e6b4 -r cb66b25060b7 src/auth/auth-request-var-expand.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/auth/auth-request-var-expand.h	Fri May 29 19:55:47 2015 +0300
@@ -0,0 +1,26 @@
+#ifndef AUTH_REQUEST_VAR_EXPAND_H
+#define AUTH_REQUEST_VAR_EXPAND_H
+
+typedef const char *
+auth_request_escape_func_t(const char *string,
+			   const struct auth_request *auth_request);
+
+#define AUTH_REQUEST_VAR_TAB_USER_IDX 0
+#define AUTH_REQUEST_VAR_TAB_USERNAME_IDX 1
+#define AUTH_REQUEST_VAR_TAB_DOMAIN_IDX 2
+#define AUTH_REQUEST_VAR_TAB_COUNT 30
+extern const struct var_expand_table
+auth_request_var_expand_static_tab[AUTH_REQUEST_VAR_TAB_COUNT+1];
+
+const struct var_expand_table *
+auth_request_get_var_expand_table(const struct auth_request *auth_request,
+				  auth_request_escape_func_t *escape_func)
+	ATTR_NULL(2);
+struct var_expand_table *
+auth_request_get_var_expand_table_full(const struct auth_request *auth_request,
+				       auth_request_escape_func_t *escape_func,
+				       unsigned int *count) ATTR_NULL(2);
+const char *auth_request_str_escape(const char *string,
+				    const struct auth_request *request);
+
+#endif
diff -r 315adb25e6b4 -r cb66b25060b7 src/auth/auth-request.c
--- a/src/auth/auth-request.c	Fri May 29 19:11:50 2015 +0300
+++ b/src/auth/auth-request.c	Fri May 29 19:55:47 2015 +0300
@@ -2034,163 +2034,6 @@
 	return ret;
 }
 
-static const char *
-escape_none(const char *string,
-	    const struct auth_request *request ATTR_UNUSED)
-{
-	return string;
-}
-
-const char *
-auth_request_str_escape(const char *string,
-			const struct auth_request *request ATTR_UNUSED)
-{
-	return str_escape(string);
-}
-
-const struct var_expand_table
-auth_request_var_expand_static_tab[AUTH_REQUEST_VAR_TAB_COUNT+1] = {
-	{ 'u', NULL, "user" },
-	{ 'n', NULL, "username" },
-	{ 'd', NULL, "domain" },
-	{ 's', NULL, "service" },
-	{ 'h', NULL, "home" },
-	{ 'l', NULL, "lip" },
-	{ 'r', NULL, "rip" },
-	{ 'p', NULL, "pid" },
-	{ 'w', NULL, "password" },
-	{ '!', NULL, NULL },
-	{ 'm', NULL, "mech" },
-	{ 'c', NULL, "secured" },
-	{ 'a', NULL, "lport" },
-	{ 'b', NULL, "rport" },
-	{ 'k', NULL, "cert" },
-	{ '\0', NULL, "login_user" },
-	{ '\0', NULL, "login_username" },
-	{ '\0', NULL, "login_domain" },
-	{ '\0', NULL, "session" },
-	{ '\0', NULL, "real_lip" },
-	{ '\0', NULL, "real_rip" },
-	{ '\0', NULL, "real_lport" },
-	{ '\0', NULL, "real_rport" },
-	{ '\0', NULL, "domain_first" },
-	{ '\0', NULL, "domain_last" },
-	{ '\0', NULL, "master_user" },
-	{ '\0', NULL, "session_pid" },
-	{ '\0', NULL, "orig_user" },
-	{ '\0', NULL, "orig_username" },
-	{ '\0', NULL, "orig_domain" },
-	/* be sure to update AUTH_REQUEST_VAR_TAB_COUNT */
-	{ '\0', NULL, NULL }
-};
-
-struct var_expand_table *
-auth_request_get_var_expand_table_full(const struct auth_request *auth_request,
-				       auth_request_escape_func_t *escape_func,
-				       unsigned int *count)
-{
-	const unsigned int auth_count =
-		N_ELEMENTS(auth_request_var_expand_static_tab);
-	struct var_expand_table *tab, *ret_tab;
-	const char *orig_user;
-
-	if (escape_func == NULL)
-		escape_func = escape_none;
-
-	/* keep the extra fields at the beginning. the last static_tab field
-	   contains the ending NULL-fields. */
-	tab = ret_tab = t_malloc((*count + auth_count) * sizeof(*tab));
-	memset(tab, 0, *count * sizeof(*tab));
-	tab += *count;
-	*count += auth_count;
-
-	memcpy(tab, auth_request_var_expand_static_tab,
-	       auth_count * sizeof(*tab));
-
-	tab[0].value = escape_func(auth_request->user, auth_request);
-	tab[1].value = escape_func(t_strcut(auth_request->user, '@'),
-				   auth_request);
-	tab[2].value = strchr(auth_request->user, '@');
-	if (tab[2].value != NULL)


More information about the dovecot-cvs mailing list