]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: Remove passdb/userdb_default/override_fields
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 9 Aug 2024 20:18:50 +0000 (23:18 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:39:59 +0000 (10:39 +0200)
All passdbs and userdbs now support the passdb/userdb_fields, which
replaces these.

src/auth/auth-request.c
src/auth/auth-request.h
src/auth/auth-settings.c
src/auth/auth-settings.h
src/auth/auth-worker-server.c
src/auth/auth.c

index 3db841d3a38049682d61e02fbfd99396edc9e751..c221eb8b1e76b194c3c03b732d8cef511a92d558 100644 (file)
@@ -907,91 +907,6 @@ int auth_request_set_userdb_fields_ex(struct auth_request *request, void *contex
        return 0;
 }
 
-static int auth_request_set_default_fields(struct auth_request *request)
-{
-       struct event *event = authdb_event(request);
-       const struct auth_passdb_pre_settings *pre_set;
-       const char *error;
-
-       if (settings_get(event, &auth_passdb_pre_setting_parser_info, 0,
-                        &pre_set, &error) < 0) {
-               e_error(event, "%s", error);
-               return -1;
-       }
-       auth_request_set_strlist(request, &pre_set->default_fields,
-                                STATIC_PASS_SCHEME);
-       settings_free(pre_set);
-       return 0;
-}
-
-static int auth_request_set_override_fields(struct auth_request *request)
-{
-       struct event *event = authdb_event(request);
-       const struct auth_passdb_post_settings *post_set;
-       const char *error;
-
-       if (request->passdb->passdb->iface.fields_supported) {
-               /* passdb_fields was already processed. It may be referring to
-                  %{driver:*} fields that are not available currently, so just
-                  skip processing the passdb_override_fields. This setting
-                  will go away anyway once all passdbs are converted to use
-                  fields. */
-               return 0;
-       }
-
-       if (settings_get(event, &auth_passdb_post_setting_parser_info, 0,
-                        &post_set, &error) < 0) {
-               e_error(event, "%s", error);
-               return -1;
-       }
-       auth_request_set_strlist(request, &post_set->override_fields,
-                                STATIC_PASS_SCHEME);
-       settings_free(post_set);
-       return 0;
-}
-
-int auth_request_set_userdb_default_fields(struct auth_request *request)
-{
-       struct event *event = authdb_event(request);
-       const struct auth_userdb_pre_settings *pre_set;
-       const char *error;
-
-       if (settings_get(event, &auth_userdb_pre_setting_parser_info, 0,
-                        &pre_set, &error) < 0) {
-               e_error(event, "%s", error);
-               return -1;
-       }
-       auth_request_set_userdb_strlist(request, &pre_set->default_fields);
-       settings_free(pre_set);
-       return 0;
-}
-
-static int auth_request_set_userdb_override_fields(struct auth_request *request)
-{
-       struct event *event = authdb_event(request);
-       const struct auth_userdb_post_settings *post_set;
-       const char *error;
-
-       if (request->userdb->userdb->iface->fields_supported) {
-               /* userdb_fields was already processed. It may be referring to
-                  %{driver:*} fields that are not available currently, so just
-                  skip processing the userdb_override_fields. This setting
-                  will go away anyway once all userdbs are converted to use
-                  fields. */
-               return 0;
-       }
-
-
-       if (settings_get(event, &auth_userdb_post_setting_parser_info, 0,
-                        &post_set, &error) < 0) {
-               e_error(event, "%s", error);
-               return -1;
-       }
-       auth_request_set_userdb_strlist(request, &post_set->override_fields);
-       settings_free(post_set);
-       return 0;
-}
-
 static int
 auth_request_finish_passdb_lookup(enum passdb_result *result,
                                  struct auth_request *request,
@@ -1197,9 +1112,6 @@ auth_request_verify_plain_callback_finish(enum passdb_result result,
 {
        int ret;
 
-       if (auth_request_set_override_fields(request) < 0)
-               result = PASSDB_RESULT_INTERNAL_FAILURE;
-
        if ((ret = auth_request_handle_passdb_callback(&result, request)) == 0) {
                /* try next passdb */
                auth_request_verify_plain(request, request->mech_password,
@@ -1414,9 +1326,6 @@ void auth_request_default_verify_plain_continue(
                        PASSDB_RESULT_INTERNAL_FAILURE, request);
        } else if (passdb->passdb->blocking) {
                passdb_blocking_verify_plain(request);
-       } else if (auth_request_set_default_fields(request) < 0) {
-               auth_request_verify_plain_callback(
-                       PASSDB_RESULT_INTERNAL_FAILURE, request);
        } else {
                passdb->passdb->iface.verify_plain(
                        request, password, auth_request_verify_plain_callback);
@@ -1431,9 +1340,6 @@ auth_request_lookup_credentials_finish(enum passdb_result result,
 {
        int ret;
 
-       if (auth_request_set_override_fields(request) < 0)
-               result = PASSDB_RESULT_INTERNAL_FAILURE;
-
        if ((ret = auth_request_handle_passdb_callback(&result, request)) == 0) {
                /* try next passdb */
                if (request->fields.skip_password_check &&
@@ -1603,10 +1509,6 @@ auth_request_lookup_credentials_policy_continue(
                                        uchar_empty_ptr, 0, request);
        } else if (passdb->passdb->blocking) {
                passdb_blocking_lookup_credentials(request);
-       } else if (auth_request_set_default_fields(request) < 0) {
-               auth_request_lookup_credentials_callback(
-                                       PASSDB_RESULT_INTERNAL_FAILURE,
-                                       uchar_empty_ptr, 0, request);
        } else {
                passdb->passdb->iface.lookup_credentials(request,
                        auth_request_lookup_credentials_callback);
@@ -1706,9 +1608,7 @@ auth_request_lookup_user_cache(struct auth_request *request, const char *key,
        }
 
        /* We want to preserve any userdb fields set by the earlier passdb
-          lookup, so initialize userdb_reply only if it doesn't exist.
-          Don't add userdb's default_fields, because the entire userdb part of
-          the result comes from the cache. */
+          lookup, so initialize userdb_reply only if it doesn't exist. */
        if (request->fields.userdb_reply == NULL)
                auth_request_init_userdb_reply(request);
        auth_request_userdb_import(request, value);
@@ -1741,10 +1641,7 @@ void auth_request_userdb_callback(enum userdb_result result,
 
        if (result == USERDB_RESULT_OK) {
                /* this userdb lookup succeeded, preserve its extra fields */
-               if (auth_request_set_userdb_override_fields(request) < 0)
-                       result = USERDB_RESULT_INTERNAL_FAILURE;
-               else
-                       auth_fields_snapshot(request->fields.userdb_reply);
+               auth_fields_snapshot(request->fields.userdb_reply);
        } else {
                /* this userdb lookup failed, remove any extra fields
                   it set */
@@ -1873,15 +1770,6 @@ void auth_request_lookup_user(struct auth_request *request,
 
        auth_request_userdb_lookup_begin(request);
 
-       /* we still want to set default_fields. these override any
-          existing fields set by previous userdbs (because if that is
-          unwanted, ":protected" can be used). */
-       if (auth_request_set_userdb_default_fields(request) < 0) {
-               auth_request_userdb_callback(
-                       USERDB_RESULT_INTERNAL_FAILURE, request);
-               return;
-       }
-
        /* (for now) auth_cache is shared between passdb and userdb */
        cache_key = passdb_cache == NULL ? NULL : userdb->cache_key;
        if (cache_key != NULL) {
index f82992098147b9035d14e9b17d524f39fc6deab8..5c8326eb69bb1bbe57aae1cfa5fdf7b68c1f8a90 100644 (file)
@@ -423,8 +423,6 @@ void auth_request_userdb_lookup_begin(struct auth_request *request);
 void auth_request_userdb_lookup_end(struct auth_request *request,
                                    enum userdb_result result);
 
-int auth_request_set_userdb_default_fields(struct auth_request *request);
-
 /* Fetches the current authdb event, this is done because
    some lookups can recurse into new lookups, requiring new event,
    which will be returned here. */
index 228fb0c3884a8767ac5f14a99a36ccd100eeabbc..e00fdb716f8c468be3602945836dfc9912185e77 100644 (file)
@@ -159,39 +159,15 @@ const struct setting_parser_info auth_passdb_setting_parser_info = {
        .check_func = auth_passdb_settings_check
 };
 
-static const struct setting_define auth_passdb_pre_setting_defines[] = {
-       { .type = SET_STRLIST, .key = "passdb_default_fields",
-         .offset = offsetof(struct auth_passdb_pre_settings, default_fields) },
-
-       SETTING_DEFINE_LIST_END
-};
-
-static const struct auth_passdb_pre_settings auth_passdb_pre_default_settings = {
-       .default_fields = ARRAY_INIT,
-};
-
-const struct setting_parser_info auth_passdb_pre_setting_parser_info = {
-       .name = "auth_passdb_pre",
-
-       .defines = auth_passdb_pre_setting_defines,
-       .defaults = &auth_passdb_pre_default_settings,
-
-       .struct_size = sizeof(struct auth_passdb_pre_settings),
-       .pool_offset1 = 1 + offsetof(struct auth_passdb_pre_settings, pool),
-};
-
 static const struct setting_define auth_passdb_post_setting_defines[] = {
        { .type = SET_STRLIST, .key = "passdb_fields",
          .offset = offsetof(struct auth_passdb_post_settings, fields) },
-       { .type = SET_STRLIST, .key = "passdb_override_fields",
-         .offset = offsetof(struct auth_passdb_post_settings, override_fields) },
 
        SETTING_DEFINE_LIST_END
 };
 
 static const struct auth_passdb_post_settings auth_passdb_post_default_settings = {
        .fields = ARRAY_INIT,
-       .override_fields = ARRAY_INIT,
 };
 
 const struct setting_parser_info auth_passdb_post_setting_parser_info = {
@@ -253,39 +229,15 @@ const struct setting_parser_info auth_userdb_setting_parser_info = {
        .check_func = auth_userdb_settings_check,
 };
 
-static const struct setting_define auth_userdb_pre_setting_defines[] = {
-       { .type = SET_STRLIST, .key = "userdb_default_fields",
-         .offset = offsetof(struct auth_userdb_pre_settings, default_fields) },
-
-       SETTING_DEFINE_LIST_END
-};
-
-static const struct auth_userdb_pre_settings auth_userdb_pre_default_settings = {
-       .default_fields = ARRAY_INIT,
-};
-
-const struct setting_parser_info auth_userdb_pre_setting_parser_info = {
-       .name = "auth_userdb_pre",
-
-       .defines = auth_userdb_pre_setting_defines,
-       .defaults = &auth_userdb_pre_default_settings,
-
-       .struct_size = sizeof(struct auth_userdb_pre_settings),
-       .pool_offset1 = 1 + offsetof(struct auth_userdb_pre_settings, pool),
-};
-
 static const struct setting_define auth_userdb_post_setting_defines[] = {
        { .type = SET_STRLIST, .key = "userdb_fields",
          .offset = offsetof(struct auth_userdb_post_settings, fields) },
-       { .type = SET_STRLIST, .key = "userdb_override_fields",
-         .offset = offsetof(struct auth_userdb_post_settings, override_fields) },
 
        SETTING_DEFINE_LIST_END
 };
 
 static const struct auth_userdb_post_settings auth_userdb_post_default_settings = {
        .fields = ARRAY_INIT,
-       .override_fields = ARRAY_INIT,
 };
 
 const struct setting_parser_info auth_userdb_post_setting_parser_info = {
index ab7898e4de7b741cddc3239f76af9d7c55657b21..02ed9fd403cc398c3a80947e4e2f8ae8df343c1f 100644 (file)
@@ -4,15 +4,9 @@
 struct master_service;
 struct master_service_settings_output;
 
-struct auth_passdb_pre_settings {
-       pool_t pool;
-       ARRAY_TYPE(const_string) default_fields;
-};
-
 struct auth_passdb_post_settings {
        pool_t pool;
        ARRAY_TYPE(const_string) fields;
-       ARRAY_TYPE(const_string) override_fields;
 };
 
 struct auth_passdb_settings {
@@ -36,15 +30,9 @@ struct auth_passdb_settings {
        bool use_worker;
 };
 
-struct auth_userdb_pre_settings {
-       pool_t pool;
-       ARRAY_TYPE(const_string) default_fields;
-};
-
 struct auth_userdb_post_settings {
        pool_t pool;
        ARRAY_TYPE(const_string) fields;
-       ARRAY_TYPE(const_string) override_fields;
 };
 
 struct auth_userdb_settings {
index 410d146b27fba0a784075a9e5a3461f9577f6363..d0323ec4991dfb5e828beb2df1af54d42576b7b0 100644 (file)
@@ -596,11 +596,6 @@ auth_worker_handle_user(struct auth_worker_command *cmd,
        auth_request_userdb_lookup_begin(auth_request);
        if (auth_request->fields.userdb_reply == NULL)
                auth_request_init_userdb_reply(auth_request);
-       if (auth_request_set_userdb_default_fields(auth_request) < 0) {
-               lookup_user_callback(USERDB_RESULT_INTERNAL_FAILURE,
-                                    auth_request);
-               return TRUE;
-       }
 
        auth_request->userdb->userdb->iface->
                lookup(auth_request, lookup_user_callback);
index 26a50d2043b3d961b56800e5f851a70dc158933d..9303dc105148d2937189a8c6189ed9570574b45e 100644 (file)
@@ -122,20 +122,8 @@ auth_passdb_preinit(struct auth *auth, const struct auth_passdb_settings *_set,
        *dest = auth_passdb;
 
        auth_passdb->passdb = passdb_preinit(auth->pool, event, set);
-       /* make sure any %variables in default_fields exist in cache_key */
        if (auth_passdb->passdb->default_cache_key != NULL && set->use_cache) {
-               struct auth_passdb_pre_settings *passdb_pre_set;
-               const char *error;
-               if (settings_get(event, &auth_passdb_pre_setting_parser_info,
-                                SETTINGS_GET_FLAG_NO_EXPAND,
-                                &passdb_pre_set, &error) < 0)
-                       i_fatal("%s", error);
-               auth_passdb->cache_key = p_strconcat(
-                       auth->pool,
-                       auth_passdb->passdb->default_cache_key,
-                       t_array_const_string_join(&passdb_pre_set->default_fields, ""),
-                       NULL);
-               settings_free(passdb_pre_set);
+               auth_passdb->cache_key = auth_passdb->passdb->default_cache_key;
        } else {
                auth_passdb->cache_key = NULL;
        }
@@ -188,21 +176,8 @@ auth_userdb_preinit(struct auth *auth, const struct auth_userdb_settings *_set)
        *dest = auth_userdb;
 
        auth_userdb->userdb = userdb_preinit(auth->pool, event, set);
-       /* make sure any %variables in default_fields exist in cache_key */
        if (auth_userdb->userdb->default_cache_key != NULL && set->use_cache) {
-               struct auth_userdb_pre_settings *userdb_pre_set;
-               const char *error;
-               if (settings_get(event, &auth_userdb_pre_setting_parser_info,
-                                SETTINGS_GET_FLAG_NO_EXPAND,
-                                &userdb_pre_set, &error) < 0)
-                       i_fatal("%s", error);
-               auth_userdb->cache_key = p_strconcat(
-                       auth->pool,
-                       auth_userdb->userdb->default_cache_key,
-                       t_array_const_string_join(
-                               &userdb_pre_set->default_fields, ""),
-                       NULL);
-               settings_free(userdb_pre_set);
+               auth_userdb->cache_key = auth_userdb->userdb->default_cache_key;
        } else {
                auth_userdb->cache_key = NULL;
        }