sasl-server.c revision 9c3577aeb78a27920439ad9f1e62ee03699378c3
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User/* Copyright (C) 2002-2004 Timo Sirainen */
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews ssl_proxy_has_valid_client_cert(client->proxy))
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews auth_flags |= AUTH_REQUEST_FLAG_VALID_CLIENT_CERT;
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewscall_client_callback(struct client *client, enum sasl_server_reply reply,
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews /* NOTE: client may be destroyed now */
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrewsmaster_callback(struct client *client, enum master_login_status status)
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews enum sasl_server_reply reply = SASL_SERVER_REPLY_MASTER_FAILED;
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User data = "Maximum number of connections exceeded";
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User call_client_callback(client, reply, data, NULL);
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updaterstatic void authenticate_callback(struct auth_request *request, int status,
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews unsigned int i;
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews /* client aborted */
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User /* continue */
03ebc228ee3725738b067b6bd7082a9a731822a1Tinderbox User client->sasl_callback(client, SASL_SERVER_REPLY_CONTINUE,
549c517e2ecad52bb1d32f08920e29d4e8cda71eTinderbox User /* user can't login */
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews call_client_callback(client, SASL_SERVER_REPLY_SUCCESS,
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User master_request_login(client, master_callback,
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User /* parse our username if it's there */
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User call_client_callback(client, SASL_SERVER_REPLY_AUTH_FAILED,
28a5dd720187fddb16055a0f64b63a7b66f29f64Mark Andrewsvoid sasl_server_auth_begin(struct client *client,
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User client->auth_mech_name = str_ucase(i_strdup(mech_name));
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews mech = auth_client_find_mech(auth_client, mech_name);
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews "Unsupported authentication mechanism.");
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews if (!client->secured && disable_plaintext_auth &&
5747235bf35e7398984fd6b4632743396895ea7aTinderbox User "Plaintext authentication disabled.");
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User info.cert_username = client->proxy == NULL ? NULL :
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews info.initial_resp_base64 = initial_resp_base64;
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User auth_client_request_new(auth_client, NULL, &info,
30370d905e9be3be7d9b947fd432bacecbb13bb9Evan Hunt t_strconcat("Authentication failed: ", error, NULL));
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox Userstatic void sasl_server_auth_cancel(struct client *client, const char *reason,
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews str_sanitize(client->auth_mech_name, MAX_MECH_NAME);
dd65eb1efb40b1c47d57963192bfc54873b219beAutomatic Updater auth_client_request_abort(client->auth_request);
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews call_client_callback(client, reply, reason, NULL);
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox Uservoid sasl_server_auth_failed(struct client *client, const char *reason)
30370d905e9be3be7d9b947fd432bacecbb13bb9Evan Hunt sasl_server_auth_cancel(client, reason, SASL_SERVER_REPLY_AUTH_FAILED);
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafssonvoid sasl_server_auth_client_error(struct client *client, const char *reason)