passdb-passwd-file.c revision dd93aba1901a457346990f49c54a738947dc7128
02c335c23bf5fa225a467c19f2c063fb0dc7b8c3Timo Sirainen/* Copyright (c) 2002-2008 Dovecot authors, see the included COPYING file */
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainenstatic void passwd_file_save_results(struct auth_request *request,
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen *scheme_r = password_get_scheme(crypted_pass_r);
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen *scheme_r = request->passdb->passdb->default_pass_scheme;
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen /* save the password so cache can use it */
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen table = auth_request_get_var_expand_table(request, NULL);
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen auth_request_set_field(request, key, value, NULL);
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainenpasswd_file_verify_plain(struct auth_request *request, const char *password,
e6d7d19c328e7043ad35d5a52c1617bde915a16fTimo Sirainen struct passdb_module *_module = request->passdb->passdb;
b99f3f908d51f4d1f7628bdf2cc6100cd8587656Timo Sirainen pu = db_passwd_file_lookup(module->pwf, request);
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen callback(PASSDB_RESULT_USER_UNKNOWN, request);
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen passwd_file_save_results(request, pu, &crypted_pass, &scheme);
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen ret = auth_request_password_verify(request, password, crypted_pass,
bf91bed88d4e294b4577ba2a3b14d87cf35ae135Timo Sirainen callback(ret > 0 ? PASSDB_RESULT_OK : PASSDB_RESULT_PASSWORD_MISMATCH,
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainenpasswd_file_lookup_credentials(struct auth_request *request,
e34d170f8f0e084bd94bfbc1a7085ece67e508dfTimo Sirainen struct passdb_module *_module = request->passdb->passdb;
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen pu = db_passwd_file_lookup(module->pwf, request);
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen callback(PASSDB_RESULT_USER_UNKNOWN, NULL, 0, request);
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen passwd_file_save_results(request, pu, &crypted_pass, &scheme);
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen passdb_handle_credentials(PASSDB_RESULT_OK, crypted_pass, scheme,
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainenpasswd_file_preinit(struct auth_passdb *auth_passdb, const char *args)
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen const char *scheme = PASSWD_FILE_DEFAULT_SCHEME;
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen const char *format = PASSWD_FILE_DEFAULT_USERNAME_FORMAT;
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen scheme = p_strdup(auth_passdb->auth->pool, value);
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen format = p_strdup(auth_passdb->auth->pool, value);
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen i_fatal("passdb passwd-file: Unknown setting: %s", key);
3697080532ccd9f51fac108be6079b616c7a2ddfTimo Sirainen module->pwf = db_passwd_file_init(args, format, FALSE,
a28a6267f48971117dec958b160deefd14ebb7a6Timo Sirainen t_strconcat(format, module->pwf->path, NULL));
3697080532ccd9f51fac108be6079b616c7a2ddfTimo Sirainenstatic void passwd_file_init(struct passdb_module *_module,
23079bf0a6e7489c5f542b0b897a71bdfd884a51Timo Sirainenstatic void passwd_file_deinit(struct passdb_module *_module)
fa5957ffc9b676bfd649fa9953e63e72ee4ebeb4Timo Sirainenstruct passdb_module_interface passdb_passwd_file = {
fa5957ffc9b676bfd649fa9953e63e72ee4ebeb4Timo Sirainen "passwd-file",