-/* citadel.h
+/*
+ * $Id$
+ *
* main Citadel/UX header file
* see copyright.txt for copyright information
- * $Id$
*/
/* system customizations are in sysconfig.h */
+
+#ifndef CITADEL_H
+#define CITADEL_H
+
#include "sysdep.h"
#include "sysconfig.h"
#include "ipcdef.h"
-#define CITADEL "Citadel/UX 5.53"
-#define REV_LEVEL 553
+
+#define CITADEL "Citadel/UX 5.80" /* Text description of this software */
+
+/*
+ * REV_LEVEL is the current version number (multiplied by 100 to avoid having
+ * to fiddle with the decimal). REV_MIN is the oldest version of Citadel
+ * whose data files are compatible with the current version. If the data files
+ * are older than REV_MIN, none of the programs will work until the setup
+ * program is run again to bring things up to date.
+ */
+#define REV_LEVEL 580 /* This version */
+#define REV_MIN 570 /* Oldest compatible version */
+
#define SERVER_TYPE 0 /* zero for stock Citadel/UX; other developers please
obtain SERVER_TYPE codes for your implementations */
#define tolower(x) ( ((x>='A')&&(x<='Z')) ? (x+'a'-'A') : x )
#define NEW_CONFIG
-#define strucmp(lstr,rstr) struncmp(lstr,rstr,32767)
-
/*
* The only typedef we do is an 8-bit unsigned, for screen dimensions.
* All other defs are done using standard C types. The code assumes that
*/
typedef unsigned char CIT_UBYTE;
-#define ROOMNAMELEN 128
+/* Various length constants */
+
+#define ROOMNAMELEN 128 /* The size of the roomname structure */
+#define NONCE_SIZE 128 /* Added by <bc> to allow for APOP auth
+ * it is BIG becuase there is a hostname
+ * in the nonce, as per the APOP RFC.
+ */
+
+#define USERNAME_SIZE 32 /* The size of a username string */
/*
* Message expiration policy stuff
/*
- * System configuration
+ * Global system configuration
*/
struct config {
- char c_nodename[16]; /* UUCP and Citadel nodename */
+ char c_nodename[16]; /* Unqualified "short" nodename */
char c_fqdn[64]; /* Fully Qualified Domain Name */
char c_humannode[21]; /* Long name of system */
char c_phonenum[16]; /* Dialup number of system */
- int c_bbsuid; /* UID of the bbs-only user */
+ uid_t c_bbsuid; /* UID of the bbs-only user */
char c_creataide; /* room creator = room aide flag */
int c_sleeping; /* watchdog timer setting */
char c_initax; /* initial access level */
int c_roompurge; /* System default room purge (days) */
char c_logpages[ROOMNAMELEN]; /* Room to log pages to (or not) */
char c_createax; /* Axlevel required to create rooms */
- };
+ long c_maxmsglen; /* Maximum message length */
+ int c_min_workers; /* Lower limit on number of threads */
+ int c_max_workers; /* Upper limit on number of threads */
+ int c_pop3_port; /* POP3 listener port (usually 110) */
+ int c_smtp_port; /* SMTP listener port (usually 25) */
+ int c_default_filter; /* Default moderation filter level */
+ int c_aide_zap; /* Are Aides allowed to zap rooms? */
+ int c_imap_port; /* IMAP listener port (usually 143) */
+};
#define NODENAME config.c_nodename
#define FQDN config.c_fqdn
#define RESTRICT_INTERNET config.c_restrict
/* Defines the actual user record */
+
struct usersupp { /* User record */
- int USuid; /* userid (==BBSUID for bbs only) */
- char password[20]; /* password (for BBS-only users) */
+ int version; /* Cit vers. which created this rec */
+ uid_t uid; /* Associate with a unix account? */
+ char password[32]; /* password (for BBS-only users) */
unsigned flags; /* See US_ flags below */
- int timescalled; /* Total number of logins */
- int posted; /* Number of messages posted (ever) */
- char fullname[26]; /* Name for Citadel messages & mail */
- char axlevel; /* Access level */
- CIT_UBYTE USscreenwidth; /* Screen width (for textmode users)*/
- CIT_UBYTE USscreenheight; /* Screen height(for textmode users)*/
+ long timescalled; /* Total number of logins */
+ long posted; /* Number of messages posted (ever) */
+ CIT_UBYTE axlevel; /* Access level */
long usernum; /* User number (never recycled) */
time_t lastcall; /* Last time the user called */
- char USname[30]; /* Real name (i.e. not a handle) */
- char USaddr[25]; /* Street address */
- char UScity[15]; /* Municipality */
- char USstate[3]; /* State or province */
- char USzip[10]; /* ZIP code */
- char USphone[11]; /* Voice telephone number */
- char USemail[32]; /* E-mail address (elsewhere) */
int USuserpurge; /* Purge time (in days) for user */
+ char fullname[64]; /* Name for Citadel messages & mail */
+ CIT_UBYTE USscreenwidth; /* Screen width (for textmode users)*/
+ CIT_UBYTE USscreenheight; /* Screen height(for textmode users)*/
+ char moderation_filter; /* Moderation filter level */
};
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 */
};
/* Bits which may appear in CitControl.MMflags. Note that these don't
};
-/* 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
+/* 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. DO NOT set all three flags.
- *
- ****************************************************************************/
+ * flagged with both QR_PRIVATE and QR_GUESSNAME. NEVER set all three flags.
+ */
/*
* Events which might show up in the Citadel Log
#define MES_ANON 66 /* "****" header */
#define MES_AN2 67 /* "Anonymous" header */
-#define M_ERROR (-1) /* Can't send message due to bad address */
-#define M_LOCAL 0 /* Local message, do no network processing */
-#define M_INTERNET 1 /* Convert msg and send as Internet mail */
-#define M_BINARY 2 /* Process recipient and send via C/UX net */
+#define MES_ERROR (-1) /* Can't send message due to bad address */
+#define MES_LOCAL 0 /* Local message, do no network processing */
+#define MES_INTERNET 1 /* Convert msg and send as Internet mail */
+#define MES_BINARY 2 /* Process recipient and send via Cit net */
/****************************************************************************/
-struct recentmsg {
- char RMnodename[10];
- long RMnum; /* Number or time of message */
- };
-
-
-/****************************************************************************
- *
+/*
* Floor record. The floor number is implicit in its location in the file.
*/
struct floor {
/* keepalives */
#define KA_NO 0 /* no keepalives */
#define KA_YES 1 /* full keepalives */
-#define KA_CHAT 2 /* half keepalives (for chat mode) */
/* for <;G>oto and <;S>kip commands */
#define GF_GOTO 0 /* <;G>oto floor mode */
#define GF_SKIP 1 /* <;S>kip floor mode */
#define GF_ZAP 2 /* <;Z>ap floor mode */
-
-#define BASEROOM "Lobby"
-#define MAILROOM "Mail"
-#define AIDEROOM "Aide"
-
-
/*
- * This structure is used to hold all of the fields of a message
- * during conversion, processing, or whatever.
+ * MIME types used in Citadel for configuration stuff
*/
-struct minfo {
- char A[512];
- char B[512];
- char C[512];
- char D[512];
- char E[512];
- char G[512];
- char H[512];
- long I;
- char N[512];
- char O[512];
- char P[512];
- char R[512];
- char S[512];
- long T;
- char U[512];
- char nexthop[512];
- };
+#define SPOOLMIME "application/x-citadel-delivery-list"
+#define INTERNETCFG "application/x-citadel-internet-config"
+#define IGNETCFG "application/x-citadel-ignet-config"
+
+#define TRACE lprintf(9, "Checkpoint: %s, %d\n", __FILE__, __LINE__)
+
+#ifndef LONG_MAX
+#define LONG_MAX 2147483647L
+#endif
+#endif /* CITADEL_H */