*/
/* #define DEBUG_MEMORY_LEAKS */
-/*
- * New format for a message in memory
- */
#ifndef SERVER_H
#define SERVER_H
#ifdef __GNUC__
-#define INLINE inline
+#define INLINE __inline__
#else
#define INLINE
#endif
#include <openssl/ssl.h>
#endif
-#define CTDLMESSAGE_MAGIC 0x159d
+/*
+ * New format for a message in memory
+ */
struct CtdlMessage {
- int cm_magic; /* Self-check */
+ int cm_magic; /* Self-check (NOT SAVED TO DISK) */
char cm_anon_type; /* Anonymous or author-visible */
char cm_format_type; /* Format type */
char *cm_fields[256]; /* Data fields */
unsigned int cm_flags; /* How to handle (NOT SAVED TO DISK) */
};
+#define CTDLMESSAGE_MAGIC 0x159d
#define CM_SKIP_HOOKS 0x01 /* Don't run server-side handlers */
};
/*
- * Static user data symbol types
+ * Static user data symbol types. Server extensions can ask for dynamic
+ * extensions to per-session data, but the symbol ID has to be listed here.
*/
enum {
SYM_DESIRED_SECTION, /* Used by the MIME parser */
SYM_MA_INFO, /* Handles multipart/alternative */
SYM_REPL, /* Used for replication checking */
+ SYM_CIT_ICAL, /* Used by the calendar service */
+ SYM_IMAP, /* Used by the IMAP service */
+ SYM_POP3, /* Used by the POP3 service */
+ SYM_SMTP, /* Used by the SMTP service */
+ SYM_SMTP_RECPS,
+ SYM_SMTP_ROOMS,
+ SYM_VCARD, /* vCard handling requires this */
SYM_MAX
};
struct CitContext {
struct CitContext *next; /* Link to next session in the list */
- struct usersupp usersupp; /* Database record buffers */
- struct quickroom quickroom;
+ struct ctdluser user; /* Database record buffers */
+ struct ctdlroom room;
int state; /* thread state (see CON_ values below) */
int kill_me; /* Set to nonzero to flag for termination */
int cs_clientver; /* client version number */
char cs_clientname[32]; /* name of client software */
char cs_host[64]; /* host logged in from */
+ char cs_addr[64]; /* address logged in from */
/* The Internet type of thing */
char cs_inet_email[SIZ];/* Return address of outbound Internet mail */
int redirect_ssl;
#endif
+ int buffering;
+ char *output_buffer; /* hold output for one big dump */
+ int buffer_len;
+
/* A linked list of all express messages sent to us. */
struct ExpressMessage *FirstExpressMessage;
int disable_exp; /* Set to 1 to disable incoming pages */
#define CS_POSTING 4 /* Posting */
struct CitContext *MyContext(void);
-#define CC ((struct CitContext *)MyContext())
+#define CC MyContext()
extern struct CitContext *ContextList;
extern int ScheduledShutdown;
* Various things we need to lock and unlock
*/
enum {
- S_USERSUPP,
- S_QUICKROOM,
+ S_USERS,
+ S_ROOMS,
S_SESSION_TABLE,
S_FLOORTAB,
S_CHATQUEUE,
S_NTTLIST,
S_DIRECTORY,
S_NETCONFIGS,
+ S_PUBLIC_CLIENTS,
+ S_LDAP,
+ S_FLOORCACHE,
MAX_SEMAPHORES
};
*/
enum {
CDB_MSGMAIN, /* message base */
- CDB_USERSUPP, /* user file */
- CDB_QUICKROOM, /* room index */
+ CDB_USERS, /* user file */
+ CDB_ROOMS, /* room index */
CDB_FLOORTAB, /* floor index */
CDB_MSGLISTS, /* room message lists */
CDB_VISIT, /* user/room relationships */
*/
struct UserFunctionHook {
struct UserFunctionHook *next;
- void (*h_function_pointer) (char *username, long usernum);
+ void (*h_function_pointer) (struct ctdluser *usbuf);
int eventtype;
};
extern struct UserFunctionHook *UserHookTable;
#define EVT_PURGEUSER 100 /* Deleting a user */
-#define EVT_OUTPUTMSG 101 /* Outputting a message */
+#define EVT_NEWUSER 102 /* Creating a user */
/*
* MessageFunctionHook extensions are used for hooks which implement handlers
long v_lastseen;
unsigned int v_flags;
char v_seen[SIZ];
+ char v_answered[SIZ];
int v_view;
};
#define V_LOCKOUT 2 /* User is locked out of this room */
#define V_ACCESS 4 /* Access is granted to this room */
-#define UA_KNOWN 2
-#define UA_GOTOALLOWED 4
-#define UA_HASNEWMSGS 8
-#define UA_ZAPPED 16
-
/* Supplementary data for a message on disk
* (These are kept separately from the message itself because they are
/* ********** Important fields */
/* *************** Semi-important fields */
/* * Message text (MUST be last) */
-#define FORDER "IPTAFONHRDBCEGJKLQSUVWXYZM"
+#define FORDER "IPTAFONHRDBCEGJKLQSVWXYZUM"
#endif /* SERVER_H */