sasl-server.c revision 02ccba3d3be96444abd15b5254864c9151bbeb30
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen/* Copyright (c) 2002-2007 Dovecot authors, see the included COPYING file */
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen ssl_proxy_has_valid_client_cert(client->proxy))
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen auth_flags |= AUTH_REQUEST_FLAG_VALID_CLIENT_CERT;
6789ed17e7ca4021713507baf0dcf6979bb42e0cTimo Sirainencall_client_callback(struct client *client, enum sasl_server_reply reply,
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen i_assert(reply != SASL_SERVER_REPLY_CONTINUE);
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen /* NOTE: client may be destroyed now */
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainenmaster_callback(struct client *client, enum master_login_status status)
6789ed17e7ca4021713507baf0dcf6979bb42e0cTimo Sirainen enum sasl_server_reply reply = SASL_SERVER_REPLY_MASTER_FAILED;
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen data = "Maximum number of connections from user+IP exceeded";
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen call_client_callback(client, reply, data, NULL);
5ce2084ada06ade9f44fc2914c34658e9a842dc1Timo Sirainenstatic void authenticate_callback(struct auth_request *request, int status,
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen unsigned int i;
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen /* client aborted */
4c07b08af30e1065f7022980b60474f229d8cadfTimo Sirainen /* continue */
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen client->sasl_callback(client, SASL_SERVER_REPLY_CONTINUE,
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen /* user can't login */
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen call_client_callback(client, SASL_SERVER_REPLY_SUCCESS,
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen /* parse our username if it's there */
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen call_client_callback(client, SASL_SERVER_REPLY_AUTH_FAILED,
5ce2084ada06ade9f44fc2914c34658e9a842dc1Timo Sirainenvoid sasl_server_auth_begin(struct client *client,
4c07b08af30e1065f7022980b60474f229d8cadfTimo Sirainen client->auth_mech_name = str_ucase(i_strdup(mech_name));
5ce2084ada06ade9f44fc2914c34658e9a842dc1Timo Sirainen mech = auth_client_find_mech(auth_client, mech_name);
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen "Unsupported authentication mechanism.");
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen if (!client->secured && disable_plaintext_auth &&
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen "Plaintext authentication disabled.");
5ce2084ada06ade9f44fc2914c34658e9a842dc1Timo Sirainen info.cert_username = client->proxy == NULL ? NULL :
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen info.initial_resp_base64 = initial_resp_base64;
5ce2084ada06ade9f44fc2914c34658e9a842dc1Timo Sirainen auth_client_request_new(auth_client, NULL, &info,
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen t_strconcat("Authentication failed: ", error, NULL));
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainenstatic void sasl_server_auth_cancel(struct client *client, const char *reason,
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen str_sanitize(client->auth_mech_name, MAX_MECH_NAME);
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen auth_client_request_abort(client->auth_request);
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen call_client_callback(client, reply, reason, NULL);
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainenvoid sasl_server_auth_failed(struct client *client, const char *reason)
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen sasl_server_auth_cancel(client, reason, SASL_SERVER_REPLY_AUTH_FAILED);
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainenvoid sasl_server_auth_client_error(struct client *client, const char *reason)