def prepare_configuration(configuration)
configuration = configuration.symbolize_keys
uri = configuration.delete(:uri)
return configuration unless uri
begin
uri = URI.parse(uri)
rescue URI::InvalidURIError
raise ConfigurationError.new(_("invalid URI: %s") % uri)
end
unless uri.is_a?(URI::LDAP)
raise ConfigurationError.new(_("not a LDAP URI: %s") % uri.to_s)
end
uri_configuration = {:port => uri.port}
uri_configuration[:host] = uri.host if uri.host
uri_configuration[:bind_dn] = uri.dn if uri.dn
uri_configuration[:scope] = uri.scope if uri.scope
uri_configuration[:method] = :ssl if uri.is_a?(URI::LDAPS)
uri_configuration.merge(configuration)
end