# File lib/active_ldap/adapter/jndi_connection.rb, line 128 def add(dn, records) attributes = BasicAttributes.new records.each do |record| attributes.put(record.to_java_attribute) end @context.create_subcontext(dn, attributes) end
# File lib/active_ldap/adapter/jndi_connection.rb, line 103 def bind_as_anonymous setup_context(nil, nil, "none") bound? end
# File lib/active_ldap/adapter/jndi_connection.rb, line 89 def bound? not @context.nil? end
# File lib/active_ldap/adapter/jndi_connection.rb, line 150 def delete(dn) @context.destroy_subcontext(dn) end
# File lib/active_ldap/adapter/jndi_connection.rb, line 136 def modify(dn, records) items = records.collect(&:to_java_modification_item) @context.modify_attributes(dn, items.to_java(ModificationItem)) end
# File lib/active_ldap/adapter/jndi_connection.rb, line 141 def modify_rdn(dn, new_rdn, delete_old_rdn) # should use mutex delete_rdn_key = "java.naming.ldap.deleteRDN" @context.add_to_environment(delete_rdn_key, delete_old_rdn.to_s) @context.rename(dn, new_rdn) ensure @context.remove_from_environment(delete_rdn_key) end
# File lib/active_ldap/adapter/jndi_connection.rb, line 93 def sasl_bind(bind_dn, mechanism, quiet) setup_context(bind_dn, password, mechanism) bound? end
# File lib/active_ldap/adapter/jndi_connection.rb, line 108 def search(base, scope, filter, attrs, limit) controls = SearchControls.new controls.search_scope = scope controls.count_limit = limit if limit unless attrs.blank? controls.returning_attributes = attrs.to_java(:string) end @context.search(base, filter, controls).each do |result| attributes = {} result.attributes.get_all.each do |attribute| attributes[attribute.get_id] = attribute.get_all.collect do |value| value.is_a?(String) ? value : String.from_java_bytes(value) end end yield([result.name_in_namespace, attributes]) end end
# File lib/active_ldap/adapter/jndi_connection.rb, line 179 def ldap_uri protocol = @method == :ssl ? "ldaps" : "ldap" "#{protocol}://#{@host}:#{@port}/" end
# File lib/active_ldap/adapter/jndi_connection.rb, line 155 def setup_context(bind_dn, password, authentication) unbind environment = { Context::INITIAL_CONTEXT_FACTORY => "com.sun.jndi.ldap.LdapCtxFactory", Context::PROVIDER_URL => ldap_uri, } environment = HashTable.new(environment) context = InitialLdapContext.new(environment, nil) if @method == :start_tls @tls = context.extended_operation(StartTlsRequest.new) @tls.negotiate end context.add_to_environment(Context::SECURITY_AUTHENTICATION, authentication) if bind_dn context.add_to_environment(Context::SECURITY_PRINCIPAL, bind_dn) end if password context.add_to_environment(Context::SECURITY_CREDENTIALS, password) end context.reconnect(nil) @context = context end
Generated with the Darkfish Rdoc Generator 2.