diff options
| author | Sam Varshavchik | 2013-08-19 16:39:41 -0400 | 
|---|---|---|
| committer | Sam Varshavchik | 2013-08-25 14:43:51 -0400 | 
| commit | 9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch) | |
| tree | 7a81a04cb51efb078ee350859a64be2ebc6b8813 /ldapaddressbook/ldapaddressbook.h | |
| parent | a9520698b770168d1f33d6301463bb70a19655ec (diff) | |
| download | courier-libs-9c45d9ad13fdf439d44d7443ae75da15ea0223ed.tar.bz2 | |
Initial checkin
Imported from subversion report, converted to git. Updated all paths in
scripts and makefiles, reflecting the new directory hierarchy.
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 | 
