This chapter describes how to write entry store and entry fetch plug-ins. You can use these types of plug-ins to invoke functions before and after data is read from the default database.
Note. Entry store and entry fetch plug-ins work only with the default database. If you are using your own database and have your own database plug-in, entry store and entry fetch plug-ins will not work.
Figure 10.1 illustrates how the Directory Server back-end calls entry store and entry fetch functions before writing and reading data from the database.
Figure 10.1 How the server calls entry store and entry fetch plug-in functions
Instead, entry store and entry fetch plug-in functions must have the following prototype:
void function_name( char **entry, unsigned long *len ); On Windows NT, use the following prototype and make sure to include the function in a .def file:
void function_name( char **entry, unsigned long *len );
__declspec( dllexport ) void function_name( char **entry, unsigned long *len ); The parameters are described below:
__declspec( dllexport ) void function_name( char **entry, unsigned long *len );
entry
len
Since the text of the entry is passed in as an argument, you can modify the entry before it gets saved to disk and modify the entry after it is read from disk.
Instead, you specify the function name directly in the server configuration file. Add a directive in the following form to specify the name and location of your plug-in function.
In Netscape Directory Server 3.x, add this to the ldbm database section of the slapd.conf file:
plugin entrystore <library_name> <function_name> plugin entryfetch <library_name> <function_name> In Netscape Directory Server 4.0, add this to the slapd.ldbm.conf file:
plugin entrystore <library_name> <function_name>
plugin entryfetch <library_name> <function_name>
plugin entrystore [on|off] "<name of plugin>" <library_name> <function_name>
plugin entryfetch [on|off] "<name of plugin>" <library_name> <function_name>
<library_name> is the name and path to your shared library or dynamic link library, and <function_name> is the name of your plug-in function.
For example, the following directives register the function named my_store() as the entry store plug-in function and my_fetch() as the entry fetch plug-in function. Both functions are defined in the library /usr/nslib/myentry.so.
plugin entrystore on "my entrystore plugin" /serverroot/myentry.so my_store plugin entryfetch on "my entryfetch plugin" /serverroot/myentry.so my_fetch Note. Each entry store and entry fetch plug-in is associated with the default ldbm back-end. Make sure that the plugin directive that registers the plug-in is within the database section for ldbm in the slapd.conf file for Netscape Directory Server 3.x and in the slapd.ldbm.conf file for Netscape Directory Server 4.0. (The plugin directive should be after the database ldbm directive and before the next database directive, if any.)
plugin entrystore on "my entrystore plugin" /serverroot/myentry.so my_store
plugin entryfetch on "my entryfetch plugin" /serverroot/myentry.so my_fetch