Class: ActiveLdap::Adapter::JndiConnection
- Inherits:
-
Object
- Object
- ActiveLdap::Adapter::JndiConnection
show all
- Defined in:
- lib/active_ldap/adapter/jndi_connection.rb
Defined Under Namespace
Modules: Scope
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) ⇒ Object
-
#simple_bind(bind_dn, password) ⇒ Object
-
#unbind ⇒ Object
Constructor Details
#initialize(host, port, method) ⇒ JndiConnection
Returns a new instance of JndiConnection.
74
75
76
77
78
79
80
|
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 74
def initialize(host, port, method)
@host = host
@port = port
@method = method
@context = nil
@tls = nil
end
|
Instance Method Details
#add(dn, records) ⇒ Object
128
129
130
131
132
133
134
|
# 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
|
#bind_as_anonymous ⇒ Object
103
104
105
106
|
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 103
def bind_as_anonymous
setup_context(nil, nil, "none")
bound?
end
|
#bound? ⇒ Boolean
89
90
91
|
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 89
def bound?
not @context.nil?
end
|
#delete(dn) ⇒ Object
150
151
152
|
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 150
def delete(dn)
@context.destroy_subcontext(dn)
end
|
#modify(dn, records) ⇒ Object
136
137
138
139
|
# 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
|
#modify_rdn(dn, new_rdn, delete_old_rdn) ⇒ Object
141
142
143
144
145
146
147
148
|
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 141
def modify_rdn(dn, new_rdn, delete_old_rdn)
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
93
94
95
96
|
# 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
|
#search(base, scope, filter, attrs, limit) ⇒ Object
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
# 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
|
#simple_bind(bind_dn, password) ⇒ Object
98
99
100
101
|
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 98
def simple_bind(bind_dn, password)
setup_context(bind_dn, password, "simple")
bound?
end
|
#unbind ⇒ Object
82
83
84
85
86
87
|
# File 'lib/active_ldap/adapter/jndi_connection.rb', line 82
def unbind
@tls.close if @tls
@tls = nil
@context.close if @context
@context = nil
end
|