[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: ruby-ldap and paged results on windows

Dave King

8/22/2007 2:58:00 PM


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-...
>>
>> 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.



1 Answer

Dave King

8/26/2007 5:35:00 AM

0

What I really wanted to do was this

(&(samaccounttype=805306368)(|(lastLogonTimestamp<=128231111837280000)(&(!(lastLogonTimestamp=*))(whenCreated<=
20070522000000.0Z))))

and that works.

Thanks


Francis Cianfrocca wrote:
> On 8/22/07, dave@davewking.com <dave@davewking.com> wrote:
>
>>
>> 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.
>>
>>
>>
>>
>>
>
> I can help you debug this. The only thing I can see offhand that is weird is
> the Zulu timestring. You can help me by taking each of the individual
> branches in your filter, without the &s and the !, and just run them one by
> one through Net::LDAP::Filter.construct till you find the one that breaks.
>
>