]> code.citadel.org Git - citadel.git/blobdiff - citadel/server/server.h
citadel.h is now citadel_defs.h
[citadel.git] / citadel / server / server.h
index 645568466e98ca0498bc83bee4e69a2ebd216e0e..09054b182b4e443b3c1f348caf875be1d608fa19 100644 (file)
@@ -1,4 +1,4 @@
-// Main declarations file for the Citadel server
+// Data types for the Citadel Server
 //
 // Copyright (c) 1987-2023 by the citadel.org team
 //
@@ -14,7 +14,7 @@
 #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>
@@ -319,4 +319,52 @@ struct ctdluser {                  // User record
 };
 
 
+// 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
+       char QRpasswd[10];              // Only valid if it's a private rm
+       long QRroomaide;                // User number of room aide
+       long QRhighest;                 // Highest message NUMBER in room
+       time_t QRgen;                   // Generation number of room
+       unsigned QRflags;               // See flag values below
+       char QRdirname[15];             // Directory name, if applicable
+       long msgnum_info;               // msgnum of room banner (info file)
+       char QRfloor;                   // Which floor this room is on
+       time_t QRmtime;                 // Date/time of last post
+       struct ExpirePolicy QRep;       // Message expiration policy
+       long QRnumber;                  // Globally unique room number
+       char QRorder;                   // Sort key for room listing order
+       unsigned QRflags2;              // Additional flags
+       int QRdefaultview;              // How to display the contents
+       long msgnum_pic;                // msgnum of room picture or icon
+};
+
+// Private rooms are always flagged with QR_PRIVATE.  If neither QR_PASSWORDED
+// or QR_GUESSNAME is set, then it is invitation-only.  Passworded rooms are
+// flagged with both QR_PRIVATE and QR_PASSWORDED while guess-name rooms are
+// flagged with both QR_PRIVATE and QR_GUESSNAME.  NEVER set all three flags.
+
+// Floor record.  The floor number is implicit in its location in the file.
+struct floor {
+       unsigned short f_flags;         // flags
+       char f_name[256];               // name of floor
+       int f_ref_count;                // reference count
+       struct ExpirePolicy f_ep;       // default expiration policy
+};
+
+#define F_INUSE                1               // floor is in use
+
+
 #endif // SERVER_H