The new server API no longer uses upload_type. Removed it from CitContext.
[citadel.git] / citadel / server.h
index 10e8bee731ff5e246c196e24c901ee50bc535472..572091636f7a3dcf21c46c713d22bfd9caded0a2 100644 (file)
@@ -1,3 +1,17 @@
+/* 
+ * Main declarations file for the Citadel server
+ *
+ * Copyright (c) 1987-2018 by the citadel.org team
+ *
+ * This program is open source software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
 #ifndef SERVER_H
 #define SERVER_H
 
@@ -21,6 +35,7 @@ struct CtdlMessage {
        char cm_anon_type;              /* Anonymous or author-visible */
        char cm_format_type;            /* Format type */
        char *cm_fields[256];           /* Data fields */
+       long cm_lengths[256];           /* size of datafields */
        unsigned int cm_flags;          /* How to handle (NOT SAVED TO DISK) */
 };
 
@@ -28,21 +43,43 @@ struct CtdlMessage {
 #define        CM_SKIP_HOOKS   0x01            /* Don't run server-side handlers */
 
 
-
-#define CTDLEXIT_SHUTDOWN      0       /* Normal shutdown; do NOT auto-restart */
+/* Data structure returned by validate_recipients() */
+typedef struct __recptypes {
+       int recptypes_magic;
+        int num_local;
+        int num_internet;
+        int num_ignet;
+       int num_room;
+        int num_error;
+       char *errormsg;
+       char *recp_local;
+       char *recp_internet;
+       char *recp_room;
+       char *recp_orgroom;
+       char *display_recp;
+       char *bounce_to;
+       char *envelope_from;
+       char *sending_room;
+} recptypes;
+
+#define RECPTYPES_MAGIC 0xfeeb
+
+#define CTDLEXIT_SHUTDOWN      0       // Normal shutdown; do NOT auto-restart
 
 /*
  * Exit codes 101 through 109 are used for conditions in which
  * we deliberately do NOT want the service to automatically
  * restart.
  */
-#define CTDLEXIT_CONFIG                101     /* Could not read citadel.config */
-#define CTDLEXIT_CONTROL       102     /* Could not acquire lock */
-#define CTDLEXIT_HOME          103     /* Citadel home directory not found */
-#define CTDLEXIT_OOD           104     /* Out Of Date config - rerun setup */
-#define CTDLEXIT_DB            105     /* Unable to initialize database */
-#define CTDLEXIT_LIBCITADEL    106     /* Incorrect version of libcitadel */
-#define CTDL_EXIT_UNSUP_AUTH   107     /* Unsupported auth mode configured */
+#define CTDLEXIT_CONFIG                101     // Could not read system configuration
+#define CTDLEXIT_CONTROL       102     // Could not acquire lock
+#define CTDLEXIT_HOME          103     // Citadel home directory not found
+#define CTDLEXIT_OOD           104     // Out Of Date config - rerun setup
+#define CTDLEXIT_DB            105     // Unable to initialize database
+#define CTDLEXIT_LIBCITADEL    106     // Incorrect version of libcitadel
+#define CTDL_EXIT_UNSUP_AUTH   107     // Unsupported auth mode configured
+#define CTDLEXIT_UNUSER                108     // Could not determine uid to run as
+#define CTDLEXIT_CRYPTO                109     // Problem initializing SSL or TLS
 
 /*
  * Reasons why a session would be terminated (set CC->kill_me to these values)
@@ -77,23 +114,9 @@ enum {
 #define CS_CHAT                2       /* chat mode */
 #define CS_POSTING     4       /* Posting */
 
-
-/*
- * This is the control record for the message base... 
- */
-struct CitControl {
-       long MMhighest;                 /* highest message number in file   */
-       unsigned MMflags;               /* Global system flags              */
-       long MMnextuser;                /* highest user number on system    */
-       long MMnextroom;                /* highest room number on system    */
-       int version;                    /* Server-hosted upgrade level      */
-       int fulltext_wordbreaker;       /* ID of wordbreaker in use         */
-       long MMfulltext;                /* highest message number indexed   */
-       int MMdbversion;                /* Version of Berkeley DB used on previous server run */
-};
-
 extern int ScheduledShutdown;
-extern struct CitControl CitControl;
+extern uid_t ctdluid;
+extern int sanity_diag_mode;
 
 struct ExpressMessage {
        struct ExpressMessage *next;
@@ -122,7 +145,6 @@ enum {
        S_SUPPMSGMAIN,
        S_CONFIG,
        S_HOUSEKEEPING,
-       S_NTTLIST,
        S_DIRECTORY,
        S_NETCONFIGS,
        S_PUBLIC_CLIENTS,
@@ -143,14 +165,6 @@ enum {
 };
 
 
-/*
- * Upload types
- */
-#define UPL_FILE       0
-#define UPL_NET                1
-#define UPL_IMAGE      2
-
-
 /*
  * message transfer formats
  */
@@ -186,7 +200,8 @@ enum {
        CDB_FULLTEXT,           /* full text search index        */
        CDB_EUIDINDEX,          /* locate msgs by EUID           */
        CDB_USERSBYNUMBER,      /* index of users by number      */
-       CDB_OPENID,             /* associates OpenIDs with users */
+       CDB_EXTAUTH,            /* associates OpenIDs with users */
+       CDB_CONFIG,             /* system configuration database */
        MAXCDB                  /* total number of CDB's defined */
 };
 
@@ -224,6 +239,7 @@ struct cdbdata {
 #define EVT_BEFORESAVE 201
 #define EVT_AFTERSAVE  202
 #define EVT_SMTPSCAN   203     /* called before submitting a msg from SMTP */
+#define EVT_AFTERUSRMBOXSAVE 204 /* called afte a message was saved into a users inbox */
 /* Priority levels for paging functions (lower is better) */
 enum {
        XMSG_PRI_LOCAL,         /* Other users on -this- server */
@@ -260,9 +276,9 @@ struct MetaData {
        int meta_refcount;              /* Number of rooms pointing to this msg */
        char meta_content_type[64];     /* Cached MIME content-type */
        long meta_rfc822_length;        /* Cache of RFC822-translated msg length */
-       char mimetype[64];              /* if we were able to guess the mimetype for the data */ 
 };
 
+
 /* Calls to AdjRefCount() are queued and deferred, so the user doesn't
  * have to wait for various disk-intensive operations to complete synchronously.
  * This is the record format.
@@ -290,15 +306,6 @@ struct UseTable {
        time_t ut_timestamp;
 };
 
-
-
-/* Preferred field order                                                       */
-/*               **********                    Important fields                */
-/*                         ***************     Semi-important fields           */
-/*                                        **   internal only                   */
-/*                                          *  Message text (MUST be last)     */
-///#define FORDER      "IPTAFONHRDBCEWJGKLQSVXZYU12M"
-
 typedef enum _MsgField {
        eAuthor       = 'A',
        eBig_message  = 'B',
@@ -326,6 +333,6 @@ typedef enum _MsgField {
        eSuppressIdx  = '1',
        eExtnotify    = '2',
        eVltMsgNum    = '3'
-}eMsgField;
+} eMsgField;
 
 #endif /* SERVER_H */