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