1 /* $NetBSD: mail_dict.c,v 1.3 2023/12/23 20:30:43 christos Exp $ */
2
3 /*++
4 /* NAME
5 /* mail_dict 3
6 /* SUMMARY
7 /* register application-specific dictionaries
8 /* SYNOPSIS
9 /* #include <mail_dict.h>
10 /*
11 /* void mail_dict_init()
12 /* DESCRIPTION
13 /* This module registers dictionary types that depend on higher-level
14 /* Postfix-specific interfaces and protocols.
15 /*
16 /* This also initializes the support for run-time loading of
17 /* lookup tables, if applicable.
18 /*
19 /* The latter requires basic parameter initialization
20 /* by either mail_conf_read() or mail_params_init().
21 /* LICENSE
22 /* .ad
23 /* .fi
24 /* The Secure Mailer license must be distributed with this software.
25 /* AUTHOR(S)
26 /* Wietse Venema
27 /* IBM T.J. Watson Research
28 /* P.O. Box 704
29 /* Yorktown Heights, NY 10598, USA
30 /*
31 /* Wietse Venema
32 /* Google, Inc.
33 /* 111 8th Avenue
34 /* New York, NY 10011, USA
35 /*--*/
36
37 /* System library. */
38
39 #include <sys_defs.h>
40
41 /* Utility library. */
42
43 #include <dict.h>
44 #include <msg.h>
45 #include <mymalloc.h>
46 #include <stringops.h>
47 #include <dynamicmaps.h>
48
49 /* Global library. */
50
51 #include <dict_proxy.h>
52 #include <dict_ldap.h>
53 #include <dict_mysql.h>
54 #include <dict_pgsql.h>
55 #include <dict_sqlite.h>
56 #include <dict_memcache.h>
57 #include <mail_dict.h>
58 #include <mail_params.h>
59 #include <mail_dict.h>
60
61 static const DICT_OPEN_INFO dict_open_info[] = {
62 DICT_TYPE_PROXY, dict_proxy_open, mkmap_proxy_open,
63 #ifndef USE_DYNAMIC_MAPS
64 #ifdef HAS_LDAP
65 DICT_TYPE_LDAP, dict_ldap_open, 0,
66 #endif
67 #ifdef HAS_MYSQL
68 DICT_TYPE_MYSQL, dict_mysql_open, 0,
69 #endif
70 #ifdef HAS_PGSQL
71 DICT_TYPE_PGSQL, dict_pgsql_open, 0,
72 #endif
73 #ifdef HAS_SQLITE
74 DICT_TYPE_SQLITE, dict_sqlite_open, 0,
75 #endif
76 #endif /* !USE_DYNAMIC_MAPS */
77 DICT_TYPE_MEMCACHE, dict_memcache_open, 0,
78 0,
79 };
80
81 /* mail_dict_init - dictionaries that depend on Postfix-specific interfaces */
82
mail_dict_init(void)83 void mail_dict_init(void)
84 {
85 const DICT_OPEN_INFO *dp;
86
87 #ifdef USE_DYNAMIC_MAPS
88 char *path;
89
90 path = concatenate(var_meta_dir, "/", "dynamicmaps.cf",
91 #ifdef SHLIB_VERSION
92 ".", SHLIB_VERSION,
93 #endif
94 (char *) 0);
95 dymap_init(path, var_shlib_dir);
96 myfree(path);
97 #endif
98
99 for (dp = dict_open_info; dp->type; dp++)
100 dict_open_register(dp);
101 }
102
103 #ifdef TEST
104
105 /*
106 * Proof-of-concept test program.
107 */
108
109 #include <mail_proto.h>
110 #include <mail_params.h>
111
main(int argc,char ** argv)112 int main(int argc, char **argv)
113 {
114 var_queue_dir = DEF_QUEUE_DIR;
115 var_proxymap_service = DEF_PROXYMAP_SERVICE;
116 var_proxywrite_service = DEF_PROXYWRITE_SERVICE;
117 var_ipc_timeout = 3600;
118 mail_dict_init();
119 dict_test(argc, argv);
120 return (0);
121 }
122
123 #endif
124