Project

ruby-ldap

0.09
No release in over 3 years
Low commit activity in last 3 years
There's a lot of open issues
It provides the interface to some LDAP libraries (e.g. OpenLDAP, Netscape SDK and Active Directory). The common API for application development is described in RFC1823 and is supported by Ruby/LDAP.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme
                 Ruby/LDAP -- A Ruby extension library for LDAP

Copyright (C) 2000-2004 Takaaki Tateishi <ttate@users.sourceforge.net>      
Copyright (C) 2005-2006 Ian Macdonald <ian@caliban.org>
Copyright (C) 2009 Alexey Chebotar <alexey.chebotar@gmail.com>
-------------------------------------------------------------------------------

DESCRIPTION

Ruby/LDAP is a Ruby extension library that provides an interface to the LDAP
API as described in RFC1823.
-------------------------------------------------------------------------------

REQUIREMENT

  * Ruby 1.8.x or 1.9.x
  * OpenLDAP, Netscape SDK, Windows 2003 or Windows XP
-------------------------------------------------------------------------------

PORTS

  * FreeBSD ("Akinori -Aki- MUSHA" <knu@idaemons.org>)
  * Debian (Akira Yamada <akira@ruby-lang.org>)
-------------------------------------------------------------------------------

BUILDING

extconf.rb will try to use the OpenLDAP 2 or Netscape SDK libraries and guess
paths to some header files and libraries from the position of ldap.h. If you'd
like to see the available options for extconf.rb, run it with '--help' option.

    $ ruby extconf.rb [--with-openldap1|--with-openldap2|--with-netscape|--with-wldap32]
    $ make

This will create ldap.so, which you can either manually copy into place or
install with:

    $ make install

If you're building the software on Windows, you may need to use nmake instead
of make.
-------------------------------------------------------------------------------

LICENSE

See COPYING.
-------------------------------------------------------------------------------

AVAILABLE CLASSES and METHODS

     LDAP::LDAP_VERSION
     LDAP::LDAP_MAX_VERSION
     LDAP::VERSION
     LDAP::MAJOR_VERSION
     LDAP::MINOR_VERSION
     LDAP::LDAP_PORT
     LDAP::LDAPS_PORT
     LDAP::LDAP_API_INFO_VERSION
     LDAP::LDAP_VENDOR_NAME
     LDAP::LDAP_VENDOR_VERSION
     LDAP::LDAP_API_VERSION
     LDAP.err2string(errcode)
     LDAP.dn2ufn(dn)
     LDAP.mod(mod_op, mod_type, mod_vals) (= LDAP::Mod.new)
     LDAP.hash2mods(mod_op, hash)
     LDAP.entry2hash(entry) (= entry.to_hash)
     LDAP::Conn.new(host = "localhost", port = LDAP::LDAP_PORT)
                    : conn (raise LDAP::Error)
     LDAP::Conn.open(host = "localhost", port = LDAP::LDAP_PORT)
                    : conn (raise LDAP::Error)
     LDAP::Conn#simple_bind(dn = nil, password = nil) { ... }
                    : conn (raise LDAP::ResultError)
     LDAP::Conn#bind(dn = nil, password = nil,
                     method = LDAP::LDAP_AUTH_SIMPLE) {|conn| ... }
                     (raise LDAP::ResultError)
     LDAP::Conn#bind(dn = nil, password = nil,
                     method = LDAP::LDAP_AUTH_SIMPLE) : conn
                     (raise LDAP::ResultError)
     LDAP::Conn#sasl_bind(dn = nil, mech = nil, cred = nil,
			  sctrls=nil, cctrls=nil) {|conn| ... } 
			  (raise LDAP::ResultError)
     LDAP::Conn#sasl_bind(dn = nil, mech = nil, cred = nil,
			  sctrls=nil, cctrls=nil) : conn
			  (raise LDAP::ResultError)
     LDAP::Conn#bound? : true || false
     LDAP::Conn#unbind() (raise LDAP::ResultError)
     LDAP::Conn#start_tls
     LDAP::Conn#perror(str)
     LDAP::Conn#result2error(ldap_msg) : errcode
     LDAP::Conn#err2string(errcode) : errmsg
     LDAP::Conn#get_errno : errcode [if available]
     LDAP::Conn#search(basedn, scope, filter, attrs = nil, attrsonly = false,
                       sec = 0, usec = 0,
		       s_attr = nil, s_proc = nil) {|entry| ... }
                       : conn (raise LDAP::ResultError)
     LDAP::Conn#search2(basedn, scope, filter, attrs = nil, attrsonly = false,
                        sec = 0, usec = 0,
			s_attr = nil, s_proc = nil) {|entry_as_hash| ... }
                        : conn (if a block is given) /
		          Array of Hash (if no block is given)
                          (raise LDAP::ResultError)
     LDAP::Conn#search_ext(basedn, scope, filter, attrs = nil,
			   attrsonly = false, serverctrls, clientctrls,
			   sec = 0, usec = 0,
			   s_attr = nil, s_proc = nil) {|entry| ... }
                           : conn (raise LDAP::ResultError)
     LDAP::Conn#search_ext2(basedn, scope, filter, attrs = nil,
			    attrsonly = false,
                            serverctrls, clientctrls, sec = 0, usec = 0,
                            s_attr = nil, s_proc = nil) {|entry_as_hash| ... }
                            : conn (if a block is given) /
			      Array of Hash (if no block is given)
                              (raise LDAP::ResultError)
     LDAP::Conn#add(dn, ldap_mods) : self (raise LDAP::ResultError)
     LDAP::Conn#add_ext(dn, ldap_mods, serverctrls, clientctrls)
                        : self (raise LDAP::ResultError)
     LDAP::Conn#modify(dn, ldap_mods) : self (raise LDAP::ResultError)
     LDAP::Conn#modify_ext(dn, ldap_mods, serverctrls, clientctrls)
                           : self (raise LDAP::ResultError)
     LDAP::Conn#modrdn(olddn, newdn, delete) : self (raise LDAP::ResultError)
     LDAP::Conn#delete(dn) : self (raise LDAP::ResultError)
     LDAP::Conn#delete(dn, serverctrls, clientctrls) : self
		       (raise LDAP::ResultError)
     LDAP::Conn#compare(dn, attr, val) : self
     LDAP::Conn#compare_ext(dn, attr, val, serverctrls, clientctrls) : self
     LDAP::Conn#set_option(opt, data) : self (raise LDAP::ResultError)
     LDAP::Conn#get_option(opt) : data (raise LDAP::ResultError)
     LDAP::Conn#schema(base = nil, attrs = nil,
		       sec = 0, usec = 0) : LDAP::Schema
     LDAP::Conn#root_dse(attrs = nil, sec = 0, usec = 0) : Array of Hash
     LDAP::SSLConn.new(host = 'localhost', port = LDAP_PORT,
		       start_tls = false, sctrls=nil, cctrls=nil)
		       : conn (raise LDAP::Error)
     LDAP::Mod.new(mod_op, mod_type, mod_vals) : ldap_mod
     LDAP::Mod#inspect : String
     LDAP::Mod#mod_op : mod_op
     LDAP::Mod#mod_type : mod_type
     LDAP::Mod#mod_vals : mod_vals
     LDAP::Mod#mod_op=(mod_op)
     LDAP::Mod#mod_type=(mod_type)
     LDAP::Mod#mod_vals=(mod_vals)
     LDAP::Entry#get_dn : dn
     LDAP::Entry#get_values : vals
     LDAP::Entry#get_attributes : attrs
     LDAP::Entry#dn (= get_dn)
     LDAP::Entry#vals (= get_values)
     LDAP::Entry#[] (= get_values)
     LDAP::Entry#attrs (= get_attributes)
     LDAP::Entry#to_hash : Hash
     LDAP::Entry#inspect : String
     LDAP::Control.new : LDAP::Control
     LDAP::Control#oid : String
     LDAP::Control#oid=(oid) : oid
     LDAP::Control#critical : true || false
     LDAP::Control#critical? : true || false
     LDAP::Control#critical=(crit) : crit
     LDAP::Control#value : String
     LDAP::Control#value=(val) : val
     LDAP::Control#inspect : String

SSLConn is a subclass of Conn, so its objects have access to the same methods
as Conn objects.

In ldap/schema.rb:

     LDAP::Conn#schema(attrs = nil, sec = 0, usec = 0) : schema
     LDAP::Schema#must(oc) : attributes
     LDAP::Schema#may(oc)  : attributes
     LDAP::Schema#names(attr) : names
     LDAP::Schema#sup(oc)  : object class

In ldap/control.rb:

     LDAP::Control.encode(array) : String
     LDAP::Control#decode : Array

In ldap/ldif.rb:

     LDAP::Entry#to_ldif : LDAP::LDIF::Entry
     LDAP::Entry#to_s : Alias of LDAP::Entry#to_ldif
     LDAP::Mod#to_ldif(dn) : LDAP::LDIF::Mod
     LDAP::Mod#to_s(dn) : Alias of LDAP::Mod#to_ldif
     LDAP::Record.new(dn, change_type, attrs, mods=nil, ctrls=nil)
     LDAP::Record#send(conn) : self
     LDAP::Record#clean : self
     LDAP::LDIF.mods_to_ldif( dn, *mods )
     LDAP::LDIF.parse_entry(lines) : LDAP::Record (raise LDAP::LDIFError)
     LDAP::LDIF.parse_file(file, sort=false)
			   : self (if a block is given) /
			     Array (if no block is given)

See also test/*.rb for examples.
-------------------------------------------------------------------------------

REFERENCES

  * T. Howes, M. Smith (University of Michigan): RFC1823, The LDAP Application
    Program Interface, August 1995
  * T. Howes (University of Michigan): RFC1960, A String Representation of LDAP
    Search Filters, June 1996
  * M. Wahl, Critical Angle Inc, T. Hows, Netscape Communications Gorp., S.
    Kille, Isode Limited: Lightweight Directory Access Protocol (v3), December
    1997
  * M. Wahl, Critical Angle Inc., A. Coulbeck, Isode Inc., T. Howes, Netscape
    Communications Corp., S. Kille, Isode Limited: December 1997
  * M .Wahl, Critical Angle Inc., S. Kille, Isode Ltd., T. Howes, Netscape
    Communications Corp.: Lightweight Directory Access Protocol (v3): UTF-8
    String Representation of Distinguished Names, December 1997
  * T. Howes, Netscape Communications Gorp.: The String Representation of LDAP
    Search Filters, December 1997
  * F. Yergeau (Alis Technologies): RFC2279, UTF-8, a transformation format of
    ISO 10646, October 1998
  * Netscape Communications Corp.: Netscape Directory SDK
  * C. Weider, A. Herron, A. Anantha, T. Howes: RFC2696, LDAP Control
    Extension for Simple Paged Results Manipulation, September 1999
  * Luiz Ernesto Pinheiro Malere: LDAP Linux HOWTO, February 2000
  * G. Good: RFC2849, The LDAP Data Interchange Format (LDIF) - Technical
    Specification, June 2000.
  * Tim Howes, Mark Smith: Understanding and Deploying LDAP Directory Servers
  * The OpenLDAP Project: OpenLDAP 2.2 Administrator's Guide, February 2004

Here are some URLs that contain useful information about LDAP:

  * University of Michigan
    http://www.umich.edu/~dirsvcs/ldap/
  * OpenLDAP Project
    http://www.openldap.org/
  * Netscape Communications
    http://developer.netscape.com/docs/manuals/communicator/ldap45.htm
  * Netscape Directory SDK
    https://wiki.mozilla.org/Directory
  * Active Directory Service Interfaces Overview
    http://www.microsoft.com/windows2000/techinfo/howitworks/activedirectory/
    adsilinks.asp
  * LDAP schema repository
    http://www.hklc.com/ldapschema/
    http://ldap.hklc.com/
  * Object Identifiers Registry
    http://www.alvestrand.no/harald/objectid/
-------------------------------------------------------------------------------

THANKS

This list maybe not correct. If you notice mistakes of this list, please point out.

* Adam Doligalski
* Akinori MUSHA
* Akira Yamada
* Andrew Broman
* Anthony M. Martinez
* Antonio Terceiro
* Aprotim Sanyal
* Brian Leake
* Chris Scharf
* David Campbell
* Francesco Malvezzi
* Hadmut Danisch
* Hiroki Najima
* Jan Mikkelsen
* Kouhei Sutou
* Marek Veber
* Mark Kittisopikul
* Michael Granger
* Milos Jakubicek
* Pirmin Kalberer
* Radek Hnilica
* S. Potter
* SUENAGA Hiroki
* Tilo Sloboda
* Usa Nakamura
* Yuri Arabadji
* Yuuzou Gotou
* atsu@@metallic.co.jp
* bbense
* bidon