Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
ruby-ldap and paged results on windows
Dave King
8/22/2007 3:14:00 AM
Hi-
I'm trying to get paged results to work with ruby-ldap against
Active Directory in Windows. I compiled ruby-ldap 0.9.7 following the
directions on
http://www.turnofthecrank.com/2006/09/11/ruby-ldap-...
Then I tried to run this code I found. The error I get is that ruby
can't find the constant LDAP_CONTROL_PAGEDRESULTS and if I put
LDAP.constants it's not listed. Any ideas?
require 'ldap'
# Find a PagedResults control in an Array of LDAP controls.
#
def paged_results_ctl( ctls )
ctls.each do |ctl|
return ctl if ctl.oid == LDAP::LDAP_CONTROL_PAGEDRESULTS
end
nil
end
unless ARGV[0]
$stderr.puts "Please give a page size."
exit
end
page_size = ARGV[0].to_i
cookie = ''
critical = true
conn = LDAP::Conn.new( 'foo.corp.google.com', 389 )
conn.set_option( LDAP::LDAP_OPT_PROTOCOL_VERSION, 3 )
conn.bind( 'user', 'password' )
search = 0
total = 0
loop do
ber_string = LDAP::Control.encode( page_size, cookie )
control = LDAP::Control.new( LDAP::LDAP_CONTROL_PAGEDRESULTS,
ber_string,
critical )
conn.set_option( LDAP::LDAP_OPT_SERVER_CONTROLS, [control] )
count = 0
# In this patched version of ruby-ldap, Conn#search no longer returns
self.
# Instead, it returns an Array of LDAP referrals and controls, each of
# which is also an Array.
conn.search( 'ou=users,ou=nyc,dc=corp,dc=google,dc=com',
LDAP::LDAP_SCOPE_SUBTREE, 'cn=*', ['cn']) do |x|
count += 1
end
printf( "Page %d has %d entries.\n", search += 1, count )
printf( "That's %d entries in total.\n", total += count )
# Get the PagedResults control from the list of controls set by the
# last search operation.
control = paged_results_ctl( conn.controls )
# How many entries does the server estimate are left?
# Also, get the cookie returned by the last search.
returned_size, cookie = control.decode
puts "Returned size = #{returned_size}" if $DEBUG
# According to RFC 2696, the server may not be able to estimate the number
# of results outstanding. In that case, it will return zero, so we should
# only use the new size if it is non-zero.
page_size = returned_size if returned_size > 0
puts "Returned cookie = #{cookie.inspect}" if $DEBUG
break if cookie.empty?
puts
end
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
ruby-ldap and paged results on windows
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password