-// 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
+ 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