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