# Makefile for Citadel Server
-# Copyright (c) 1987-2022 by Art Cancro and the citadel.org team
+# Copyright (c) 1987-2023 by Art Cancro and the citadel.org team
#
# No, we are NOT using the obsolete GNU Autotools. This configure script works
# well on the Linux operating system (which uses the Linux kernel) and on BSD.
cc ${CFLAGS} \
server/*.c server/modules/*/*.c \
${LDFLAGS} -lresolv -lcitadel -lpthread -lz -lical -lldap -lcrypt -lexpat -lcurl -ldb \
- -Wno-deprecated-declarations \
-o citserver
setup: utils/setup.c server/citadel_dirs.c utils/*.h server/*.h
+++ /dev/null
-// Main Citadel header file
-//
-// Copyright (c) 1987-2022 by the citadel.org team
-//
-// This program is open source software. Use, duplication, or disclosure
-// is subject to the terms of the GNU General Public License, version 3.
-// The program is distributed without any warranty, expressed or implied.
-
-#ifndef CITADEL_H
-#define CITADEL_H
-
-// Suppress these compiler warnings
-#pragma GCC diagnostic ignored "-Wcast-qual"
-#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
-#pragma GCC diagnostic ignored "-Wformat-truncation"
-
-#include "sysdep.h"
-#include <limits.h>
-#include "sysconfig.h"
-#include "typesize.h"
-#include "ipcdef.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#define REV_LEVEL 972 // This version
-#define REV_MIN 591 // Oldest compatible database
-#define EXPORT_REV_MIN 931 // Oldest compatible export files
-#define LIBCITADEL_MIN 951 // Minimum required version of libcitadel
-#define SERVER_TYPE 0 // zero for stock Citadel; other developers please obtain SERVER_TYPE codes for your implementations
-
-// hats off to https://stackoverflow.com/questions/5459868/concatenate-int-to-string-using-c-preprocessor
-#define STR_HELPER(x) #x
-#define STR(x) STR_HELPER(x)
-#define CITADEL "Citadel Server " STR(REV_LEVEL)
-
-#ifdef LIBCITADEL_VERSION_NUMBER
-#if LIBCITADEL_VERSION_NUMBER < LIBCITADEL_MIN
-#error libcitadel is too old. Please upgrade it before continuing.
-#endif
-#endif
-
-// This is the user name and password for the default administrator account
-// that is created when Citadel Server is started with an empty database.
-#define DEFAULT_ADMIN_USERNAME "admin"
-#define DEFAULT_ADMIN_PASSWORD "citadel"
-
-// Various length constants
-#define ROOMNAMELEN 128 // The size of a roomname string
-#define USERNAME_SIZE 64 // The size of a username string
-#define MAX_EDITORS 5 // number of external editors supported ; must be at least 1
-
-// Message expiration policy stuff
-typedef struct ExpirePolicy ExpirePolicy;
-struct ExpirePolicy {
- int expire_mode;
- int expire_value;
-};
-
-#define EXPIRE_NEXTLEVEL 0 // Inherit expiration policy
-#define EXPIRE_MANUAL 1 // Don't expire messages at all
-#define EXPIRE_NUMMSGS 2 // Keep only latest n messages
-#define EXPIRE_AGE 3 // Expire messages after n days
-
-// Bits which may appear in MMflags.
-#define MM_VALID 4 // New users need validating
-
-// Miscellaneous
-#define MES_NORMAL 65 // Normal message
-#define MES_ANONONLY 66 // "****" header
-#define MES_ANONOPT 67 // "Anonymous" header
-
-// Values used internally for function call returns, etc.
-#define NEWREGISTER 0 // new user to register
-#define REREGISTER 1 // existing user reregistering
-
-// number of items which may be handled by the CONF command
-#define NUM_CONFIGS 71
-
-#define TRACE syslog(LOG_DEBUG, "\033[7m Checkpoint: %s : %d \033[0m", __FILE__, __LINE__)
-
-#ifndef LONG_MAX
-#define LONG_MAX 2147483647L
-#endif
-
-// Authentication modes
-#define AUTHMODE_NATIVE 0 // Native (self-contained or "black box")
-#define AUTHMODE_HOST 1 // Authenticate against the host OS user database
-#define AUTHMODE_LDAP 2 // Authenticate using LDAP server with POSIX schema
-#define AUTHMODE_LDAP_AD 3 // Authenticate using LDAP server with Active Directory schema
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // CITADEL_H
--- /dev/null
+// Definitions for the Citadel Server
+//
+// Copyright (c) 1987-2023 by the citadel.org team
+//
+// This program is open source software. Use, duplication, or disclosure
+// is subject to the terms of the GNU General Public License, version 3.
+// The program is distributed without any warranty, expressed or implied.
+
+#ifndef CITADEL_H
+#define CITADEL_H
+
+// Suppress these compiler warnings
+#pragma GCC diagnostic ignored "-Wcast-qual"
+#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
+#pragma GCC diagnostic ignored "-Wformat-truncation"
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
+#include "sysdep.h"
+#include <limits.h>
+#include "sysconfig.h"
+#include "typesize.h"
+#include "ipcdef.h"
+
+
+#define REV_LEVEL 972 // This version
+#define REV_MIN 591 // Oldest compatible database
+#define EXPORT_REV_MIN 931 // Oldest compatible export files
+#define LIBCITADEL_MIN 951 // Minimum required version of libcitadel
+#define SERVER_TYPE 0 // zero for stock Citadel; other developers please obtain SERVER_TYPE codes for your implementations
+
+// hats off to https://stackoverflow.com/questions/5459868/concatenate-int-to-string-using-c-preprocessor
+#define STR_HELPER(x) #x
+#define STR(x) STR_HELPER(x)
+#define CITADEL "Citadel Server " STR(REV_LEVEL)
+
+#ifdef LIBCITADEL_VERSION_NUMBER
+#if LIBCITADEL_VERSION_NUMBER < LIBCITADEL_MIN
+#error libcitadel is too old. Please upgrade it before continuing.
+#endif
+#endif
+
+// This is the user name and password for the default administrator account
+// that is created when Citadel Server is started with an empty database.
+#define DEFAULT_ADMIN_USERNAME "admin"
+#define DEFAULT_ADMIN_PASSWORD "citadel"
+
+// Various length constants
+#define ROOMNAMELEN 128 // The size of a roomname string
+#define USERNAME_SIZE 64 // The size of a username string
+#define MAX_EDITORS 5 // number of external editors supported ; must be at least 1
+
+// Bits which may appear in MMflags.
+#define MM_VALID 4 // New users need validating
+
+// Miscellaneous
+#define MES_NORMAL 65 // Normal message
+#define MES_ANONONLY 66 // "****" header
+#define MES_ANONOPT 67 // "Anonymous" header
+
+// Values used internally for function call returns, etc.
+#define NEWREGISTER 0 // new user to register
+#define REREGISTER 1 // existing user reregistering
+
+// number of items which may be handled by the CONF command
+#define NUM_CONFIGS 71
+
+#define TRACE syslog(LOG_DEBUG, "\033[7m Checkpoint: %s : %d \033[0m", __FILE__, __LINE__)
+
+#ifndef LONG_MAX
+#define LONG_MAX 2147483647L
+#endif
+
+// Authentication modes
+#define AUTHMODE_NATIVE 0 // Native (self-contained or "black box")
+#define AUTHMODE_HOST 1 // Authenticate against the host OS user database
+#define AUTHMODE_LDAP 2 // Authenticate using LDAP server with POSIX schema
+#define AUTHMODE_LDAP_AD 3 // Authenticate using LDAP server with Active Directory schema
+
+#endif // CITADEL_H
#include <errno.h>
#include <syslog.h>
#include <libcitadel.h>
-#include "citadel.h"
+#include "citadel_defs.h"
#include "server.h"
#include "citadel_dirs.h"
#include <syslog.h>
#include <libical/ical.h>
#include <libcitadel.h>
-#include "citadel.h"
+#include "citadel_defs.h"
#include "server.h"
#include "citserver.h"
#include "sysdep_decls.h"
#endif
#include <libcitadel.h>
#include "sysdep_decls.h"
-#include "citadel.h"
+#include "citadel_defs.h"
#include "domain.h"
#include "internet_addressing.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "citadel.h"
+#include "citadel_defs.h"
#include "server.h"
#include "sysdep_decls.h"
#include "citserver.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../msgbase.h"
#include <limits.h>
#include <sys/socket.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include "../../server.h"
#include "serv_crypto.h"
#include "../../sysdep_decls.h"
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../config.h"
#include "../../ctdl_module.h"
#include <time.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../database.h"
#include "../../config.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../sysdep_decls.h"
#include "../../citserver.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../sysdep_decls.h"
#include "../../citserver.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../sysdep_decls.h"
#include "../../citserver.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../sysdep_decls.h"
#include "../../citserver.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../sysdep_decls.h"
#include "../../citserver.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../sysdep_decls.h"
#include "../../citserver.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../sysdep_decls.h"
#include "../../citserver.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../sysdep_decls.h"
#include "../../citserver.h"
#include <string.h>
#include <stdarg.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../sysdep_decls.h"
#include "../../internet_addressing.h"
#include "serv_imap.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <limits.h>
#include <libcitadel.h>
#include "../../sysdep.h"
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../context.h"
#include "../../citserver.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <limits.h>
#include <crypt.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <limits.h>
#include <expat.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <string.h>
#include <limits.h>
#include "../../ctdl_module.h"
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <netinet/in.h>
#include <arpa/inet.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <limits.h>
#include <ctype.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <curl/curl.h>
#include <libcitadel.h>
#include "../../sysconfig.h"
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <expat.h>
#include <curl/curl.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <arpa/inet.h>
#include <assert.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <libcitadel.h>
#include <curl/curl.h>
#include "../../sysconfig.h"
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <netinet/in.h>
#include <arpa/inet.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <limits.h>
#include <sys/socket.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <string.h>
#include <limits.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <ctype.h>
#include <libcitadel.h>
#include <expat.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <ctype.h>
#include <expat.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <ctype.h>
#include <expat.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <ctype.h>
#include <expat.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <ctype.h>
#include <expat.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
#include <ctype.h>
#include <expat.h>
#include <libcitadel.h>
-#include "../../citadel.h"
+#include "../../citadel_defs.h"
#include "../../server.h"
#include "../../citserver.h"
#include "../../support.h"
-// Main declarations file for the Citadel server
+// Data types for the Citadel Server
//
// Copyright (c) 1987-2023 by the citadel.org team
//
#define INLINE
#endif
-#include "citadel.h"
+#include "citadel_defs.h"
#ifdef HAVE_OPENSSL
#define OPENSSL_NO_KRB5 // work around redhat b0rken ssl headers
#include <openssl/ssl.h>
};
+// Message expiration policy stuff
+typedef struct ExpirePolicy ExpirePolicy;
+struct ExpirePolicy {
+ int expire_mode;
+ int expire_value;
+};
+
+#define EXPIRE_NEXTLEVEL 0 // Inherit expiration policy
+#define EXPIRE_MANUAL 1 // Don't expire messages at all
+#define EXPIRE_NUMMSGS 2 // Keep only latest n messages
+#define EXPIRE_AGE 3 // Expire messages after n days
+
// Room records.
struct ctdlroom {
char QRname[ROOMNAMELEN]; // Name of room
#include <sys/stat.h>
#include <libcitadel.h>
-#include "citadel.h"
+#include "citadel_defs.h"
#include "support.h"
// strproc() - make a string 'nice'
#include <string.h>
#include <limits.h>
#include <dirent.h>
-#include "../server/citadel.h"
+#include "../server/citadel_defs.h"
#include "../server/server.h"
#include "../server/sysdep.h"
#include "../server/citadel_dirs.h"
#include "auth.h"
#include "../server/config.h"
#include "../server/citadel_dirs.h"
-#include "../server/citadel.h"
+#include "../server/citadel_defs.h"
int main(void) {
#include <limits.h>
#include <libcitadel.h>
#include "../server/sysdep.h"
-#include "../server/citadel.h"
+#include "../server/citadel_defs.h"
#include "../server/server.h"
#include "../server/citadel_dirs.h"
#include <sys/socket.h>
#include <sys/un.h>
#include <libcitadel.h>
-#include "../server/citadel.h"
+#include "../server/citadel_defs.h"
#include "axdefs.h"
#include "../server/sysdep.h"
#include "../server/config.h"
#include <limits.h>
#include <sys/socket.h>
#include <sys/un.h>
-#include "../server/citadel.h"
+#include "../server/citadel_defs.h"
#include "../server/server.h"
#include "../server/citadel_dirs.h"
#include <libcitadel.h>
#include <sys/un.h>
#include <assert.h>
#include <libcitadel.h>
-#include "../server/citadel.h"
+#include "../server/citadel_defs.h"
#include "../server/server.h"
#include "axdefs.h"
#include "../server/sysdep.h"