This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
tsaleh (author)
Thu Aug 09 07:11:55 -0700 2007
| name | age | message | |
|---|---|---|---|
| |
README | Thu Aug 09 07:11:55 -0700 2007 | |
| |
Rakefile | Wed May 09 06:54:18 -0700 2007 | |
| |
bin/ | Wed May 09 06:54:18 -0700 2007 | |
| |
conf/ | Mon Nov 06 10:08:40 -0800 2006 | |
| |
lib/ | Wed May 16 08:12:58 -0700 2007 | |
| |
test/ | Wed May 16 08:11:19 -0700 2007 |
README
ldap-activerecord-gateway
=========================
This is an implementation of an LDAP server which uses active record as the data source.
The server is read-only, and can serve information from any AR model that implements the
#search(string) class method and the #to_ldap_entry instance method.
To use, configure the server by creating a conf/ldap-server.yml file (see ldap-server.example.yml).
The important bits are rails_dir, active_record_model, basedn, and port. Once that's done,
run "./bin/ldap-server.rb start", wait for it to daemonize, and check the log file under $RAILS_ROOT/log/ for
errors. To stop, run "./bin/ldap-server.rb", and if you reconfigure the server or change the underlying
AR model, restart it with "./bin/ldap-server.rb restart".
To test, point your addressbook (ie: Thunderbird or OS X Address Book) at the server and run a search.
Example AR class:
class Person < ActiveRecord::Base
def fullname
"#{firstname} #{lastname}"
end
def to_ldap_entry
{
"objectclass" => ["top", "person", "organizationalPerson", "inetOrgPerson", "mozillaOrgPerson"],
"uid" => ["tbotter-#{id}"],
"sn" => [lastname],
"givenName" => [firstname],
"cn" => [fullname],
"title" => [title],
"o" => [company],
"mail" => [email],
"telephonenumber" => [work_phone],
"homephone" => [home_phone],
"fax" => [fax],
"mobile" => [mobile],
"street" => [address],
"l" => [city],
"st" => [state],
"postalcode" => [zip],
}
end
def self.search(query)
Person.find(:all,
:conditions => ["(email LIKE ?) OR (firstname LIKE ?) OR (lastname LIKE ?)",
"#{query}%", "#{query}%", "#{query}%"])
end
end
Have fun.







