Class: ActiveLdap::Adapter::JndiConnection
- Inherits:
-
Object
- Object
- ActiveLdap::Adapter::JndiConnection
- Defined in:
- lib/active_ldap/adapter/jndi_connection.rb
Defined Under Namespace
Classes: ModifyRecord
Constant Summary collapse
- HashTable =
java.util.Hashtable
- InitialDirContext =
directory.InitialDirContext
- InitialLdapContext =
ldap.InitialLdapContext
- SearchControls =
directory.SearchControls
- ModificationItem =
directory.ModificationItem
- BasicAttributes =
directory.BasicAttributes
- Context =
naming.Context
- StartTlsRequest =
ldap.StartTlsRequest
- Control =
ldap.Control
- NamingException =
naming.NamingException
- NameNotFoundException =
naming.NameNotFoundException
Instance Method Summary collapse
- #add(dn, records) ⇒ Object
- #bind_as_anonymous ⇒ Object
- #bound? ⇒ Boolean
- #delete(dn) ⇒ Object
-
#initialize(host, port, method) ⇒ JndiConnection
constructor
A new instance of JndiConnection.
- #modify(dn, records) ⇒ Object
- #modify_rdn(dn, new_rdn, delete_old_rdn) ⇒ Object
- #sasl_bind(bind_dn, mechanism, quiet) ⇒ Object
- #search(base, scope, filter, attrs, limit, callback, &block) ⇒ Object
- #simple_bind(bind_dn, password) ⇒ Object
- #unbind ⇒ Object
Constructor Details
#initialize(host, port, method) ⇒ JndiConnection
Returns a new instance of JndiConnection.
68 69 70 71 72 73 74 |
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 68 def initialize(host, port, method) @host = host @port = port @method = method @context = nil @tls = nil end |
Instance Method Details
#add(dn, records) ⇒ Object
124 125 126 127 128 129 130 |
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 124 def add(dn, records) attributes = BasicAttributes.new records.each do |record| attributes.put(record.to_java_attribute) end @context.create_subcontext(dn, attributes) end |
#bind_as_anonymous ⇒ Object
97 98 99 100 |
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 97 def bind_as_anonymous setup_context(nil, nil, "none") bound? end |
#bound? ⇒ Boolean
83 84 85 |
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 83 def bound? not @context.nil? end |
#delete(dn) ⇒ Object
146 147 148 |
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 146 def delete(dn) @context.destroy_subcontext(dn) end |
#modify(dn, records) ⇒ Object
132 133 134 135 |
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 132 def modify(dn, records) items = records.collect(&:to_java_modification_item) @context.modify_attributes(dn, items.to_java(ModificationItem)) end |
#modify_rdn(dn, new_rdn, delete_old_rdn) ⇒ Object
137 138 139 140 141 142 143 144 |
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 137 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 |
#sasl_bind(bind_dn, mechanism, quiet) ⇒ Object
87 88 89 90 |
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 87 def sasl_bind(bind_dn, mechanism, quiet) setup_context(bind_dn, password, mechanism) bound? end |
#search(base, scope, filter, attrs, limit, callback, &block) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 102 def search(base, scope, filter, attrs, limit, callback, &block) controls = SearchControls.new controls.search_scope = scope if attrs && !attrs.empty? controls.returning_attributes = attrs.to_java(:string) end i = 0 @context.search(base, filter, controls).each do |result| i += 1 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 callback.call([result.name_in_namespace, attributes], block) break if limit and limit <= i end end |
#simple_bind(bind_dn, password) ⇒ Object
92 93 94 95 |
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 92 def simple_bind(bind_dn, password) setup_context(bind_dn, password, "simple") bound? end |
#unbind ⇒ Object
76 77 78 79 80 81 |
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 76 def unbind @tls.close if @tls @tls = nil @context.close if @context @context = nil end |