Re: ruby-ldap and paged results on windows
- From: dave@xxxxxxxxxxxxx
- Date: Wed, 22 Aug 2007 23:58:25 +0900
On 8/21/07, Dave King <dave / davewking.com> wrote:
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-and-win32/
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?
The literal value of the control is "1.2.840.113556.1.4.319"
You might try defining that in your code and see if it works. (If you have
sharp eyes you'll notice that the enterprise number in the OID belongs to
Microsoft. Paged controls started life as a hack to make Active Directory
performance slightly less horrible.)
If you're still having trouble, try the Net::LDAP library. It supports
paged
results transparently.
Thanks for the tip. I tried setting the value of the control, then I got
an error that said
uninitialized constant LDAP_OPT_SERVER_CONTROLS (NameError)
Somewhere I found that this should be 0x12 (which may be wrong) so I set
it to that and got this error
`set_option': the set_option() function is unimplemented on this machine
(NotImplementedError)
So it looks like my problems may be bigger than undefined constants. I've
also been looking at Net::LDAP as well, the only problem I've found there
is that it doesn't parse my ldap filters right so I have to rewrite them
in the Net::LDAP way. For example this filter works fine in ruby-ldap
(&(samaccounttype=805306368)(|(lastLogonTimestamp<=128231111837280000)(&(!(lastLogonTimestamp=*)(whenCreated<=20070522000000.0Z)))))
but in Net::LDAP it gives me this error
c:/ruby/lib/ruby/gems/1.8/gems/ruby-net-ldap-0.0.4/lib/net/ldap/filter.rb:302:in
`initialize': invalid filter syntax (Net::LDAP::LdapError)
when i run it like this
filter =
Net::LDAP::Filter.construct("(&(samaccounttype=805306368)(|(lastLogonTimestamp<=128231111837280000)(&(!(lastLogonTimestamp=*)(whenCreated<=20070522000000.0Z)))))")
I can rewrite my stuff to use the Net::LDAP filters, but it would be nice
to just use the ldap filter string.
.
- Prev by Date: Re: Dear Lazyweb: Gem Platforms
- Next by Date: Filling cells in grid by type
- Previous by thread: ruby-ldap and paged results on windows
- Next by thread: Re: ruby-ldap and paged results on windows
- Index(es):
Relevant Pages
|