Some ruby code written to manage an ldap directory.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
977 B

class SdAdmin::Database::Ldap
attr_writer :base_dn, :mapper
def initialize(args = {})
@con = {:host => 'host.one.virtual', :port => 389}
@con[:host] = args[:host] if args[:host]
@con[:port] = args[:port] if args[:port]
@base_dn = args[:base_dn] if args[:base_dn]
@ldap = Net::LDAP.new(@con)
filter = args[:filter] if args[:filter]
end
def filter=(filter)
@filter = Net::LDAP::Filter::construct(filter)
end
def each
_load.each{|key,entry| puts "DEBUG: #{key}"; yield key,entry}
end
def [](id)
_load[id]
end
def []=(id, data)
end
def insert(data)
end
def delete(id)
end
private
def _load!
@data = Hash.new
@ldap.search(:base => @base_dn, :filter => @filter) do |entry|
attributes = Hash.new
entry.each{|attr,value| attributes.merge!({attr => value})}
@data.merge!({attributes[:dn][0] => attributes})
end
end
def _load
_load! if ! @data
@data
end
end