We're pleased to announce the first release of Net::LDAP, the first pure-Ruby LDAP library. Net::LDAP intends to be a feature-complete LDAP client which can access as much as possible of the functionality of the most-used LDAP server implementations. Net::LDAP includes a full implementation of the LDAP wire-line protocol so it can also be used in LDAP server implementations. Thanks for Austin Ziegler for invaluable help in reviewing the implementation and providing the release structure. = What is Net::LDAP for Ruby? This library provides a pure-Ruby implementation of an LDAP client. It can be used to access any server which implements the LDAP protocol. Net::LDAP is intended to provide full LDAP functionality while hiding the more arcane aspects of the LDAP protocol itself, so as to make the programming interface as Ruby-like as possible. In particular, this means that there is no direct dependence on the structure of the various "traditional" LDAP clients. This is a ground-up rethinking of the LDAP API. Net::LDAP is based on RFC-1777, which specifies the Lightweight Directory Access Protocol, as amended and extended by subsequent RFCs and by the more widely-used directory implementations. Homepage:: http://ruby-pdf.rubyforge.org/net-ldap/ Download:: http://rubyforge.org/frs/?**** Copyright:: 2006 Francis Cianfrocca == LICENCE NOTES Please read the file LICENCE for licensing restrictions on this library. In the simplest terms, this library is available under the same terms as Ruby itself. == Requirements and Installation Net::LDAP requires Ruby 1.8.2 or better. Net::LDAP can be installed with: % ruby setup.rb Alternatively, you can use the RubyGems version of Net::LDAP available as ruby-net-ldap-0.0.1.gem from the usual sources. == Whet your appetite: require 'net/ldap' ldap = Net::LDAP.new :host => server_ip_address, :port => 389, :auth => { :method => :simple, :username => "cn=manager,dc=example,dc=com", :password => "opensesame" } filter = Net::LDAP::Filter.eq( "cn", "George*" ) treebase = "dc=example,dc=com" ldap.search( :base => treebase, :filter => filter ) do |entry| puts "DN: #{entry.dn}" entry.each do |attribute, values| puts " #{attribute}:" values.each do |value| puts " --->#{value}" end end end p ldap.get_operation_result == Net::LDAP 0.0.1: April 30, 2006 [...] [signature here]