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 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 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