diff options
Diffstat (limited to 'ldapaddressbook/ldapaddressbook.h')
| -rw-r--r-- | ldapaddressbook/ldapaddressbook.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/ldapaddressbook/ldapaddressbook.h b/ldapaddressbook/ldapaddressbook.h new file mode 100644 index 0000000..bbef9c0 --- /dev/null +++ b/ldapaddressbook/ldapaddressbook.h @@ -0,0 +1,108 @@ +#ifndef ldapaddressbook_h +#define ldapaddressbook_h + + +#include <stdio.h> + +/* +** Copyright 2000-2002 Double Precision, Inc. See COPYING for +** distribution information. +*/ + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** This module implements an abstraction of an interface to an LDAP address +** book. There's no reason to reinvent the wheel, so we simply run ldapsearch +** as a child process, and read its output. ldapsearch is run indirectly, via +** a stub shell script that can be customized on a given system. The template +** for the stub shell script is provided. +** +** There's a small library here that can be used to maintain a configuration +** file listing available address books that can be contacted. The format +** of each line in this library is simply: +** +** name<tab>host<tab>port<tab>suffix<tab>binddn<tab>bindpw +** +** Functions are provided to add and remove names from this configuration +** file easily. The above is parsed into the following structure: +*/ + +struct ldapabook { + struct ldapabook *next; + + char *name; + char *host; + char *port; + char *suffix; + char *binddn; + char *bindpw; + + struct ldapabook_opts *opts; + + } ; + +struct ldapabook_opts { + struct ldapabook_opts *next; + char *options; /* First char - name, rest - value */ +} ; + + /* Potential first chars: */ + +#define SASL_SECURITY_PROPERTIES 'O' +#define SASL_AUTHENTICATION_ID 'U' +#define SASL_AUTHENTICATION_RID 'X' /* u:username, or dn:dn */ +#define SASL_AUTHENTICATION_MECHANISM 'Y' +#define SASL_STARTTLS 'Z' + +/* Read a configuration file, and create a link list of ldapabook structs */ + +struct ldapabook *ldapabook_read(const char *); /* filename */ + +/* Free memory allocated by ldapabook_init */ + +void ldapabook_free(struct ldapabook *); + +/* Find a certain address book */ + +const struct ldapabook *ldapabook_find(const struct ldapabook *, + const char *); + +/* Add a new entry to the address book */ + +int ldapabook_add(const char *, /* filename */ + const struct ldapabook *); /* new entry */ + +/* Delete an entry from the address book */ + +int ldapabook_del(const char *, /* filename */ + const char *, /* temporary filename on same filesys */ + const char *); /* name to delete */ + +/* Run ldapsearch in the background, return a file descriptor containing +** ldapsearch's output. +*/ + +int ldapabook_search(const struct ldapabook *b, /* Search this address book */ + const char *script, + const char *search, + int (*callback_func)(const char *utf8_name, + const char *address, + void *callback_arg), + void (*callback_err)(const char *errmsg, + void *callback_arg), + void *callback_arg); + +/* +** Internal function: +*/ + +void ldapabook_writerec(const struct ldapabook *, FILE *); + +#ifdef __cplusplus +} +#endif + +#endif |
