1 // Module initialization hub
3 // Copyright (c) 1987-2022 by the citadel.org team
5 // This program is open source software. Use, duplication, or disclosure
6 // is subject to the terms of the GNU General Public License, version 3.
7 // The program is distributed without any warranty, expressed or implied.
9 // To add new modules to the server:
10 // 1. Write the module and place it in a server/modules/[module_name]/ directory
11 // 2. Add its initialization function to server/modules_init.h
12 // 3. Call its initialization function from server/modules_init.c
18 #include "modules_init.h"
20 // Module initialization functions will be called TWICE during startup, once before
21 // the server has gone into multithreading mode, and once afterwards. Most modules
22 // can be initialized while in multithreading mode, but your module code should be
23 // prepared for this kind of initialization. Look at the existing modules to see what
27 void initialize_modules(int is_threading) {
28 threading = is_threading;
29 syslog(LOG_DEBUG, "modules: begin initializing modules (threading=%d)", threading);
30 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_control());
31 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_euidindex());
32 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_msgbase());
33 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_database());
34 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_autocompletion());
35 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_bio());
36 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_blog());
37 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_calendar());
38 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_checkpoint());
39 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_virus());
40 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_file_ops());
41 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_ctdl_message());
42 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_rooms());
43 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_serv_session());
44 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_syscmd());
45 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_serv_user());
46 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_expire());
47 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_fulltext());
48 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_image());
49 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_imap());
50 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_sieve());
51 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_inetcfg());
52 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_instmsg());
53 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_listdeliver());
54 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_listsub());
55 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_migrate());
56 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_newuser());
57 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_nntp());
58 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_notes());
59 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_openid_rp());
60 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_pop3());
61 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_pop3client());
62 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_roomchat());
63 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_rssclient());
64 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_rwho());
65 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_smtp());
66 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_smtpclient());
67 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_spam());
68 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_test());
69 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_upgrade());
70 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_vcard());
71 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_wiki());
72 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_xmpp());
73 syslog(LOG_DEBUG, "modules: init %s", ctdl_module_init_netconfig());
74 syslog(LOG_DEBUG, "modules: finished initializing modules (threading=%d)", threading);