[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: syncrepl style client library functions

lee_jensen@sento.com wrote: On Wed, 2005-03-09 at 13:50 -0700, Richard Megginson wrote: lee_jensen@sento.com wrote: Hello, I am currently using syncrepl to replicate to a slave ldap server. I am impressed with the refresh and persist functionality and would like to write a client application that performs certain actions when ldap updates are made. Ideally this client would not poll the server but could use a refresh and persist style search to recieve notification when updates are made from the master. A couple questions, 1) Is this possible? It should be. Can anyone provide any more information on this? Are the syncrepl calls just a generic client interface that anyone can use or is it some kind of undocumented protocol that should only be used by the replication engine? I'm not sure about the slurpd protocol, but if you're talking about this http://www.ietf.org/internet-drafts/draft-zeilenga-ldup-sync-06.txt then that is the documentation - just plain old LDAP + some controls. 2) Are there any known client libraries specifically for scripting languages (PHP,Perl,Python) A c library is also acceptable but requires more work. I would suggest Net::LDAP as it allows you the flexibility to define your own controls based on their ASN.1 definitions. I've looked at the docs on CPAN for Net::LDAP and can't find any way to call a generic function I'm assuming in this case refreshAndPersist?? Can anyone provide more information preferably some code examples? No, there is no "function" called refreshAndPersist. You basically construct a Sync Request Control using the Net::LDAP::Controls module and send that along with a plain old LDAP search request. Then you just read the search results along with the controls returned. 2) If I can use this kind of functionality from a scripting language and a library is available how can I implement functionality like syncrepl such that if the script dies it can reconnect and get changes made since the script died as well as persist in recieving future updates. Also if the LDAP server dies can I keep the client alive and poll the server till it comes back up. Are these native library calls or do they need to be implemented in some other way. (I realize this is many questions in one, sorry) You have to make sure you save the cookie sent from the server frequently and in a secure place, so you can pass this to the server the next time to only get the delta updates. If the LDAP server dies you should get back some sort of error like LDAP_SERVER_DOWN, and you will get a similar error if you attempt to reconnect while the server is down. So yes, you could poll trying to reconnect until you get LDAP_SUCCESS. This makes sense... Thanks for your help, Lee