Exemplo n.º 1
0
static LmHandlerResult
sasl_features_cb (LmMessageHandler *handler,
		  LmConnection     *connection,
		  LmMessage        *message,
		  gpointer          user_data)
{
    	LmMessageNode *mechanisms;
	LmSASL        *sasl;

	g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, "Stream features received\n");
	mechanisms = lm_message_node_find_child (message->node, "mechanisms");
	if (!mechanisms) {
		return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
	}

	sasl = (LmSASL *) user_data;
	sasl->features_received = TRUE;

	sasl_set_auth_type (sasl, mechanisms);

	if (sasl->start_auth) {
		sasl_authenticate (sasl);
	}

	return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
}
Exemplo n.º 2
0
void perl_mongo_connect(SV *client, mongo_link* link) {
#ifdef MONGO_SSL
  if(link->ssl){
    ssl_connect(link, client);
    link->sender = ssl_send;
    link->receiver = ssl_recv;
    return;
  }
#endif

  non_ssl_connect(link);
  link->sender = non_ssl_send;
  link->receiver = non_ssl_recv;

  SV* sasl_flag = perl_mongo_call_method( client, "sasl", 0, 0 );

  if ( SvIV(sasl_flag) == 1 ) { 
#ifdef MONGO_SASL
      sasl_authenticate( client, link );
#else
      croak( "MongoDB: sasl => 1 specified, but this driver was not compiled with SASL support\n" );
#endif
  }
  
  SvREFCNT_dec(sasl_flag);
  
}
Exemplo n.º 3
0
void
lm_sasl_authenticate (LmSASL              *sasl,
		      const gchar         *username,
		      const gchar         *password,
		      const gchar         *server,
		      LmSASLResultHandler  handler)
{
	sasl->username   = g_strdup (username);
	sasl->password   = g_strdup (password);
	sasl->server     = g_strdup (server);
	sasl->handler    = handler;

	sasl->challenge_cb = lm_message_handler_new (sasl_challenge_cb,
						     sasl,
						     NULL);
	lm_connection_register_message_handler (sasl->connection,
						sasl->challenge_cb,
						LM_MESSAGE_TYPE_CHALLENGE,
						LM_HANDLER_PRIORITY_FIRST);
	
	sasl->success_cb = lm_message_handler_new (sasl_success_cb,
						   sasl,
						   NULL);
	lm_connection_register_message_handler (sasl->connection,
						sasl->success_cb,
						LM_MESSAGE_TYPE_SUCCESS,
						LM_HANDLER_PRIORITY_FIRST);

	sasl->failure_cb = lm_message_handler_new (sasl_failure_cb,
						   sasl,
						   NULL);
	lm_connection_register_message_handler (sasl->connection,
						sasl->failure_cb,
						LM_MESSAGE_TYPE_FAILURE,
						LM_HANDLER_PRIORITY_FIRST);

	if (sasl->features_received) {
		sasl_authenticate (sasl);
	} else {
		sasl->start_auth = TRUE;
	}
}