1/*++
2/* NAME
3/*	mail_dict 3
4/* SUMMARY
5/*	register application-specific dictionaries
6/* SYNOPSIS
7/*	#include <mail_dict.h>
8/*
9/*	void	mail_dict_init()
10/* DESCRIPTION
11/*	This module registers dictionary types that depend on higher-level
12/*	Postfix-specific interfaces and protocols.
13/* LICENSE
14/* .ad
15/* .fi
16/*	The Secure Mailer license must be distributed with this software.
17/* AUTHOR(S)
18/*	Wietse Venema
19/*	IBM T.J. Watson Research
20/*	P.O. Box 704
21/*	Yorktown Heights, NY 10598, USA
22/*--*/
23
24/* System library. */
25
26#include <sys_defs.h>
27
28/* Utility library. */
29
30#include <dict.h>
31#include <msg.h>
32
33/* Global library. */
34
35#include <dict_proxy.h>
36#include <dict_ldap.h>
37#include <dict_mysql.h>
38#include <dict_pgsql.h>
39#include <dict_sqlite.h>
40#include <dict_memcache.h>
41#include <mail_dict.h>
42
43typedef struct {
44    char   *type;
45    struct DICT *(*open) (const char *, int, int);
46} DICT_OPEN_INFO;
47
48static const DICT_OPEN_INFO dict_open_info[] = {
49    DICT_TYPE_PROXY, dict_proxy_open,
50#ifdef HAS_LDAP
51    DICT_TYPE_LDAP, dict_ldap_open,
52#endif
53#ifdef HAS_MYSQL
54    DICT_TYPE_MYSQL, dict_mysql_open,
55#endif
56#ifdef HAS_PGSQL
57    DICT_TYPE_PGSQL, dict_pgsql_open,
58#endif
59#ifdef HAS_SQLITE
60    DICT_TYPE_SQLITE, dict_sqlite_open,
61#endif
62    DICT_TYPE_MEMCACHE, dict_memcache_open,
63    0,
64};
65
66/* mail_dict_init - dictionaries that depend on Postfix-specific interfaces */
67
68void    mail_dict_init(void)
69{
70    const DICT_OPEN_INFO *dp;
71
72    for (dp = dict_open_info; dp->type; dp++)
73	dict_open_register(dp->type, dp->open);
74}
75
76#ifdef TEST
77 /*
78  * Proof-of-concept test program.
79  */
80
81#include <mail_proto.h>
82#include <mail_params.h>
83
84int     main(int argc, char **argv)
85{
86    var_queue_dir = DEF_QUEUE_DIR;
87    var_proxymap_service = DEF_PROXYMAP_SERVICE;
88    var_proxywrite_service = DEF_PROXYWRITE_SERVICE;
89    var_ipc_timeout = 3600;
90    mail_dict_init();
91    dict_test(argc, argv);
92    return (0);
93}
94
95#endif
96