Cleaning up Net::LDAP documentation.
This commit is contained in:
parent
5f5031b853
commit
59dac76d47
|
@ -1,12 +1,16 @@
|
||||||
require 'ostruct'
|
require 'ostruct'
|
||||||
|
|
||||||
module Net
|
module Net # :nodoc:
|
||||||
class LDAP
|
class LDAP
|
||||||
begin
|
begin
|
||||||
require 'openssl'
|
require 'openssl'
|
||||||
|
##
|
||||||
|
# Set to +true+ if OpenSSL is available and LDAPS is supported.
|
||||||
HasOpenSSL = true
|
HasOpenSSL = true
|
||||||
rescue LoadError
|
rescue LoadError
|
||||||
|
# :stopdoc:
|
||||||
HasOpenSSL = false
|
HasOpenSSL = false
|
||||||
|
# :startdoc:
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -19,16 +23,6 @@ require 'net/ldap/dataset'
|
||||||
require 'net/ldap/password'
|
require 'net/ldap/password'
|
||||||
require 'net/ldap/entry'
|
require 'net/ldap/entry'
|
||||||
|
|
||||||
# == Net::LDAP
|
|
||||||
#
|
|
||||||
# This library provides a pure-Ruby implementation of the LDAP client
|
|
||||||
# protocol, per RFC-2251. 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 the LDAP protocol itself, and thus presenting as
|
|
||||||
# Ruby-like a programming interface as possible.
|
|
||||||
#
|
|
||||||
# == Quick-start for the Impatient
|
# == Quick-start for the Impatient
|
||||||
# === Quick Example of a user-authentication against an LDAP directory:
|
# === Quick Example of a user-authentication against an LDAP directory:
|
||||||
#
|
#
|
||||||
|
|
|
@ -1,25 +1,3 @@
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006 by Francis Cianfrocca. All Rights Reserved.
|
|
||||||
#
|
|
||||||
# Gmail: garbagecat10
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
#
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# An LDAP Dataset. Used primarily as an intermediate format for converting
|
# An LDAP Dataset. Used primarily as an intermediate format for converting
|
||||||
# to and from LDIF strings and Net::LDAP::Entry objects.
|
# to and from LDIF strings and Net::LDAP::Entry objects.
|
||||||
|
@ -28,78 +6,7 @@ class Net::LDAP::Dataset < Hash
|
||||||
# Dataset object comments.
|
# Dataset object comments.
|
||||||
attr_reader :comments
|
attr_reader :comments
|
||||||
|
|
||||||
class << self
|
def initialize(*args, &block) # :nodoc:
|
||||||
class ChompedIO #:nodoc:
|
|
||||||
def initialize(io)
|
|
||||||
@io = io
|
|
||||||
end
|
|
||||||
def gets
|
|
||||||
s = @io.gets
|
|
||||||
s.chomp if s
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
##
|
|
||||||
# Reads an object that returns data line-wise (using #gets) and parses
|
|
||||||
# LDIF data into a Dataset object.
|
|
||||||
def read_ldif(io) #:yields: entry-type, value Used mostly for debugging.
|
|
||||||
ds = Net::LDAP::Dataset.new
|
|
||||||
io = ChompedIO.new(io)
|
|
||||||
|
|
||||||
line = io.gets
|
|
||||||
dn = nil
|
|
||||||
|
|
||||||
while line
|
|
||||||
new_line = io.gets
|
|
||||||
|
|
||||||
if new_line =~ /^[\s]+/
|
|
||||||
line << " " << $'
|
|
||||||
else
|
|
||||||
nextline = new_line
|
|
||||||
|
|
||||||
if line =~ /^#/
|
|
||||||
ds.comments << line
|
|
||||||
yield :comment, line if block_given?
|
|
||||||
elsif line =~ /^dn:[\s]*/i
|
|
||||||
dn = $'
|
|
||||||
ds[dn] = Hash.new { |k,v| k[v] = [] }
|
|
||||||
yield :dn, dn if block_given?
|
|
||||||
elsif line.empty?
|
|
||||||
dn = nil
|
|
||||||
yield :end, nil if block_given?
|
|
||||||
elsif line =~ /^([^:]+):([\:]?)[\s]*/
|
|
||||||
# $1 is the attribute name
|
|
||||||
# $2 is a colon iff the attr-value is base-64 encoded
|
|
||||||
# $' is the attr-value
|
|
||||||
# Avoid the Base64 class because not all Ruby versions have it.
|
|
||||||
attrvalue = ($2 == ":") ? $'.unpack('m').shift : $'
|
|
||||||
ds[dn][$1.downcase.to_sym] << attrvalue
|
|
||||||
yield :attr, [$1.downcase.to_sym, attrvalue] if block_given?
|
|
||||||
end
|
|
||||||
|
|
||||||
line = nextline
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
ds
|
|
||||||
end
|
|
||||||
|
|
||||||
##
|
|
||||||
# Creates a Dataset object from an Entry object. Used mostly to assist
|
|
||||||
# with the conversion of
|
|
||||||
def from_entry(entry)
|
|
||||||
dataset = Net::LDAP::Dataset.new
|
|
||||||
hash = { }
|
|
||||||
entry.each_attribute do |attribute, value|
|
|
||||||
next if attribute == :dn
|
|
||||||
hash[attribute] = value
|
|
||||||
end
|
|
||||||
dataset[entry.dn] = hash
|
|
||||||
dataset
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def initialize(*args, &block) #:nodoc:
|
|
||||||
super
|
super
|
||||||
@comments = []
|
@comments = []
|
||||||
end
|
end
|
||||||
|
@ -152,6 +59,7 @@ class Net::LDAP::Dataset < Hash
|
||||||
ary
|
ary
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
# This is an internal convenience method to determine if a value requires
|
# This is an internal convenience method to determine if a value requires
|
||||||
# base64-encoding before conversion to LDIF output. The standard approach
|
# base64-encoding before conversion to LDIF output. The standard approach
|
||||||
# in most LDAP tools is to check whether the value is a password, or if
|
# in most LDAP tools is to check whether the value is a password, or if
|
||||||
|
@ -162,13 +70,84 @@ class Net::LDAP::Dataset < Hash
|
||||||
# why we handle the simplest cases first. Ideally, we would also test the
|
# why we handle the simplest cases first. Ideally, we would also test the
|
||||||
# first/last byte, but it's a bit harder to do this in a way that's
|
# first/last byte, but it's a bit harder to do this in a way that's
|
||||||
# compatible with both 1.8.6 and 1.8.7.
|
# compatible with both 1.8.6 and 1.8.7.
|
||||||
def value_is_binary?(value)
|
def value_is_binary?(value) # :nodoc:
|
||||||
value = value.to_s
|
value = value.to_s
|
||||||
return true if value[0] == ?: or value[0] == ?<
|
return true if value[0] == ?: or value[0] == ?<
|
||||||
value.each_byte { |byte| return true if (byte < 32) || (byte > 126) }
|
value.each_byte { |byte| return true if (byte < 32) || (byte > 126) }
|
||||||
false
|
false
|
||||||
end
|
end
|
||||||
private :value_is_binary?
|
private :value_is_binary?
|
||||||
|
|
||||||
|
class << self
|
||||||
|
class ChompedIO # :nodoc:
|
||||||
|
def initialize(io)
|
||||||
|
@io = io
|
||||||
|
end
|
||||||
|
def gets
|
||||||
|
s = @io.gets
|
||||||
|
s.chomp if s
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Creates a Dataset object from an Entry object. Used mostly to assist
|
||||||
|
# with the conversion of
|
||||||
|
def from_entry(entry)
|
||||||
|
dataset = Net::LDAP::Dataset.new
|
||||||
|
hash = { }
|
||||||
|
entry.each_attribute do |attribute, value|
|
||||||
|
next if attribute == :dn
|
||||||
|
hash[attribute] = value
|
||||||
|
end
|
||||||
|
dataset[entry.dn] = hash
|
||||||
|
dataset
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Reads an object that returns data line-wise (using #gets) and parses
|
||||||
|
# LDIF data into a Dataset object.
|
||||||
|
def read_ldif(io)
|
||||||
|
ds = Net::LDAP::Dataset.new
|
||||||
|
io = ChompedIO.new(io)
|
||||||
|
|
||||||
|
line = io.gets
|
||||||
|
dn = nil
|
||||||
|
|
||||||
|
while line
|
||||||
|
new_line = io.gets
|
||||||
|
|
||||||
|
if new_line =~ /^[\s]+/
|
||||||
|
line << " " << $'
|
||||||
|
else
|
||||||
|
nextline = new_line
|
||||||
|
|
||||||
|
if line =~ /^#/
|
||||||
|
ds.comments << line
|
||||||
|
yield :comment, line if block_given?
|
||||||
|
elsif line =~ /^dn:[\s]*/i
|
||||||
|
dn = $'
|
||||||
|
ds[dn] = Hash.new { |k,v| k[v] = [] }
|
||||||
|
yield :dn, dn if block_given?
|
||||||
|
elsif line.empty?
|
||||||
|
dn = nil
|
||||||
|
yield :end, nil if block_given?
|
||||||
|
elsif line =~ /^([^:]+):([\:]?)[\s]*/
|
||||||
|
# $1 is the attribute name
|
||||||
|
# $2 is a colon iff the attr-value is base-64 encoded
|
||||||
|
# $' is the attr-value
|
||||||
|
# Avoid the Base64 class because not all Ruby versions have it.
|
||||||
|
attrvalue = ($2 == ":") ? $'.unpack('m').shift : $'
|
||||||
|
ds[dn][$1.downcase.to_sym] << attrvalue
|
||||||
|
yield :attr, [$1.downcase.to_sym, attrvalue] if block_given?
|
||||||
|
end
|
||||||
|
|
||||||
|
line = nextline
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
ds
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
require 'net/ldap/entry' unless defined? Net::LDAP::Entry
|
require 'net/ldap/entry' unless defined? Net::LDAP::Entry
|
||||||
|
|
|
@ -1,27 +1,3 @@
|
||||||
# LDAP Entry (search-result) support classes
|
|
||||||
#
|
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006 by Francis Cianfrocca. All Rights Reserved.
|
|
||||||
#
|
|
||||||
# Gmail: garbagecat10
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
#
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# Objects of this class represent individual entries in an LDAP directory.
|
# Objects of this class represent individual entries in an LDAP directory.
|
||||||
# User code generally does not instantiate this class. Net::LDAP#search
|
# User code generally does not instantiate this class. Net::LDAP#search
|
||||||
|
|
|
@ -1,25 +1,3 @@
|
||||||
# Copyright (C) 2006 by Francis Cianfrocca and other contributors. All
|
|
||||||
# Rights Reserved.
|
|
||||||
#
|
|
||||||
# Gmail: garbagecat10
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify it
|
|
||||||
# under the terms of the GNU General Public License as published by the Free
|
|
||||||
# Software Foundation; either version 2 of the License, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful, but
|
|
||||||
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
||||||
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
# for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License along
|
|
||||||
# with this program; if not, write to:
|
|
||||||
# Free Software Foundation, Inc.
|
|
||||||
# 51 Franklin St, Fifth Floor
|
|
||||||
# Boston, MA 02110-1301
|
|
||||||
# USA
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# Class Net::LDAP::Filter is used to constrain LDAP searches. An object of
|
# Class Net::LDAP::Filter is used to constrain LDAP searches. An object of
|
||||||
# this class is passed to Net::LDAP#search in the parameter :filter.
|
# this class is passed to Net::LDAP#search in the parameter :filter.
|
||||||
|
|
|
@ -1,25 +1,3 @@
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006 by Francis Cianfrocca. All Rights Reserved.
|
|
||||||
#
|
|
||||||
# Gmail: garbagecat10
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
#
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
require 'digest/sha1'
|
require 'digest/sha1'
|
||||||
require 'digest/md5'
|
require 'digest/md5'
|
||||||
|
|
||||||
|
|
|
@ -1,27 +1,3 @@
|
||||||
# LDAP PDU support classes
|
|
||||||
#
|
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006 by Francis Cianfrocca. All Rights Reserved.
|
|
||||||
#
|
|
||||||
# Gmail: garbagecat10
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
#
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
require 'ostruct'
|
require 'ostruct'
|
||||||
|
|
||||||
##
|
##
|
||||||
|
@ -261,7 +237,8 @@ end
|
||||||
|
|
||||||
module Net
|
module Net
|
||||||
##
|
##
|
||||||
# Handle the renamed constants.
|
# Handle renamed constants Net::LdapPdu (Net::LDAP::PDU) and
|
||||||
|
# Net::LdapPduError (Net::LDAP::PDU::Error).
|
||||||
def self.const_missing(name) #:nodoc:
|
def self.const_missing(name) #:nodoc:
|
||||||
case name.to_s
|
case name.to_s
|
||||||
when "LdapPdu"
|
when "LdapPdu"
|
||||||
|
@ -275,4 +252,3 @@ module Net
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end # module Net
|
end # module Net
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue