c6cce4988357fbec8739b864136aa2220ea51337
[citadel.git] / citadel / server / modules_init.c
1 // Module initialization hub
2 //
3 // Copyright (c) 1987-2023 by the citadel.org team
4 //
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 //
8 // To add new modules to the server:
9 // 1. Write the module and place it in a server/modules/[module_name]/ directory
10 // 2. Add its initialization function to server/modules_init.h
11 // 3. Call its initialization function from server/modules_init.c
12
13 #include <stdlib.h>
14 #include <unistd.h>
15 #include <syslog.h>
16 #include <stdio.h>
17 #include "modules_init.h"
18
19 // Module initialization functions will be called TWICE during startup, once before
20 // the server has gone into multithreading mode, and once afterwards.  Most modules
21 // can be initialized while in multithreading mode, but your module code should be
22 // prepared for this kind of initialization.  Look at the existing modules to see what
23 // goes on there.
24 int threading = 0;
25
26 void initialize_modules(int is_threading) {
27         threading = is_threading;
28         syslog(LOG_DEBUG, "extensions: begin initializing modules (threading=%d)", threading);
29         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_control());
30         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_euidindex());
31         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_msgbase());
32         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_autocompletion());
33         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_bio());
34         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_blog());
35         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_calendar());
36         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_checkpoint());
37         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_virus());
38         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_file_ops());
39         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_ctdl_message());
40         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_rooms());
41         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_serv_session());
42         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_syscmd());
43         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_serv_user());
44         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_expire());
45
46         // FIXME
47         // There is something in this module that fux0rs the new backend, causing it to deadlock.
48         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_fulltext());
49
50         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_image());
51         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_imap());
52         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_sieve());
53         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_inetcfg());
54         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_instmsg());
55         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_listdeliver());
56         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_listsub());
57         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_nntp());
58         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_notes());
59         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_pop3());
60         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_pop3client());
61         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_roomchat());
62         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_rssclient());
63         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_rwho());
64         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_smtp());
65         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_smtpclient());
66         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_spam());
67         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_test());
68         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_upgrade());
69         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_vcard());
70         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_wiki());
71         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_xmpp());
72         syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_netconfig());
73         syslog(LOG_DEBUG, "extensions: finished initializing modules (threading=%d)", threading);
74 }