X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fcitadel.h;h=92c24fc6c8132ae66fb736226a4a1e02f3382cf5;hb=b2971ed49d2cfe5128190ec1d5d8c0fa239f0004;hp=ee5bfb174175caf77882f89d889598c47171f594;hpb=419f3a51603752bcc088b735389d2faff342402e;p=citadel.git diff --git a/citadel/citadel.h b/citadel/citadel.h index ee5bfb174..92c24fc6c 100644 --- a/citadel/citadel.h +++ b/citadel/citadel.h @@ -1,14 +1,15 @@ /* * $Id$ * - * main Citadel/UX header file - * see copyright.txt for copyright information + * Main Citadel header file + * See copyright.txt for copyright information. */ /* system customizations are in sysconfig.h */ #ifndef CITADEL_H #define CITADEL_H +/* #include uncomment if using dmalloc */ /* Build Citadel with the calendar service only if the header *and* * library for libical are both present. @@ -31,41 +32,50 @@ extern "C" { /* * Text description of this software + * (We used to define this ourselves, but why bother when + * the GNU build tools do it for us?) */ -#define CITADEL "Citadel/UX 6.06" +#define CITADEL PACKAGE_STRING /* * 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. + * program is run again to bring things up to date. EXPORT_REV_MIN is the + * oldest version of Citadel whose export files we can read. The latter is + * usually more strict because you're not really supposed to dump/load and + * upgrade at the same time. */ -#define REV_LEVEL 606 /* This version */ -#define REV_MIN 591 /* Oldest compatible version */ +#define REV_LEVEL 711 /* This version */ +#define REV_MIN 591 /* Oldest compatible database */ +#define EXPORT_REV_MIN 706 /* Oldest compatible export files */ -#define SERVER_TYPE 0 /* zero for stock Citadel/UX; other developers please +#define SERVER_TYPE 0 /* zero for stock Citadel; other developers please obtain SERVER_TYPE codes for your implementations */ -#define NEW_CONFIG - /* Various length constants */ -#define UGLISTLEN 100 /* you get a ungoto list of this size */ -#define ROOMNAMELEN 128 /* The size of a roomname string */ -#define NONCE_SIZE 128 /* Added by to allow for APOP auth - * it is BIG becuase there is a hostname - * in the nonce, as per the APOP RFC. - */ +#define UGLISTLEN 100 /* you get a ungoto list of this size */ +#define ROOMNAMELEN 128 /* The size of a roomname string */ +#define NONCE_SIZE 128 /* Added by to allow for APOP auth + * it is BIG becuase there is a hostname + * in the nonce, as per the APOP RFC. + */ -#define USERNAME_SIZE 64 /* The size of a username string */ -#define MAX_EDITORS 5 /* # of external editors supported */ - /* MUST be at least 1 */ +#define USERNAME_SIZE 64 /* The size of a username string */ +#define MAX_EDITORS 5 /* # of external editors supported */ + /* MUST be at least 1 */ /* * Message expiration policy stuff */ struct ExpirePolicy { +/* +#include "datadefinitions.h" +#include "dtds/expirepolicy-defs.h" +#include "undef_data.h" +*/ int expire_mode; int expire_value; }; @@ -76,53 +86,17 @@ struct ExpirePolicy { #define EXPIRE_AGE 3 /* Expire messages after n days */ -/* - * Global system configuration +/* + * This struct stores a list of rooms with new messages which the client + * fetches from the server. This allows the client to "march" through + * relevant rooms without having to ask the server each time where to go next. */ -struct config { - 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 */ - 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 */ - char c_regiscall; /* call number to register on */ - char c_twitdetect; /* twit detect flag */ - char c_twitroom[ROOMNAMELEN]; /* twit detect msg move to room */ - char c_moreprompt[80]; /* paginator prompt */ - char c_restrict; /* restrict Internet mail flag */ - long c_msgbase; /* size of message base (obsolete) */ - char c_bbs_city[32]; /* physical location of server */ - char c_sysadm[26]; /* name of system administrator */ - char c_bucket_dir[15]; /* bit bucket for files... */ - int c_setup_level; /* what rev level we've setup to */ - int c_maxsessions; /* maximum concurrent sessions */ - char c_net_password[20]; /* system net password (obsolete) */ - int c_port_number; /* Cit listener port (usually 504) */ - int c_ipgm_secret; /* Internal program authentication */ - struct ExpirePolicy c_ep; /* System default msg expire policy */ - int c_userpurge; /* System default user purge (days) */ - 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_rfc822_strict_from; /* 1 = don't correct From: forgeries*/ - int c_aide_zap; /* Are Aides allowed to zap rooms? */ - int c_imap_port; /* IMAP listener port (usually 143) */ - time_t c_net_freq; /* how often to run the networker */ - char c_disable_newu; /* disable NEWU command */ - char c_aide_mailboxes; /* give Aides access to mailboxes */ - char c_baseroom[ROOMNAMELEN]; /* Name of baseroom (Lobby) */ - char c_aideroom[ROOMNAMELEN]; /* Name of aideroom (Aide) */ -}; - struct march { +/* +#include "datadefinitions.h" +#include "dtds/march-defs.h" +#include "undef_data.h" +*/ struct march *next; char march_name[ROOMNAMELEN]; unsigned int march_flags; @@ -136,19 +110,25 @@ struct march { #define FQDN config.c_fqdn #define HUMANNODE config.c_humannode #define PHONENUM config.c_phonenum -#define BBSUID config.c_bbsuid +#define CTDLUID config.c_ctdluid #define CREATAIDE config.c_creataide #define REGISCALL config.c_regiscall #define TWITDETECT config.c_twitdetect #define TWITROOM config.c_twitroom #define RESTRICT_INTERNET config.c_restrict -/* Defines the actual user record */ - -struct usersupp { /* User record */ +/* + * User records. + */ +struct ctdluser { /* User record */ +/* +#include "datadefinitions.h" +#include "dtds/user-defs.h" +#include "undef_data.h" +*/ int version; /* Cit vers. which created this rec */ uid_t uid; /* Associate with a unix account? */ - char password[32]; /* password (for BBS-only users) */ + char password[32]; /* password (for Citadel-only users)*/ unsigned flags; /* See US_ flags below */ long timescalled; /* Total number of logins */ long posted; /* Number of messages posted (ever) */ @@ -162,17 +142,6 @@ struct usersupp { /* User record */ }; -/* - * 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 */ -}; - /* Bits which may appear in CitControl.MMflags. Note that these don't * necessarily pertain to the message base -- it's just a good place to * store any global flags. @@ -180,24 +149,29 @@ struct CitControl { #define MM_VALID 4 /* New users need validating */ /* - * Room records + * Room records. */ -struct quickroom { - 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 QRinfo; /* Info file update relative to msgs*/ - 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 */ +struct ctdlroom { +/* +#include "datadefinitions.h" +#include "dtds/room-defs.h" +#include "undef_data.h" +*/ + 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 QRinfo; /* Info file update relative to msgs*/ + 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 */ }; /* Private rooms are always flagged with QR_PRIVATE. If neither QR_PASSWORDED @@ -207,19 +181,8 @@ struct quickroom { */ /* - * Events which might show up in the Citadel Log + * Miscellaneous */ -#define CL_CONNECT 8 /* Connect to server */ -#define CL_LOGIN 16 /* CLfullname logged in */ -#define CL_NEWUSER 32 /* CLfullname is a new user */ -#define CL_BADPW 64 /* Bad attempt at CLfullname's pw */ -#define CL_TERMINATE 128 /* Logout - proper termination */ -#define CL_DROPCARR 256 /* Logout - dropped carrier */ -#define CL_SLEEPING 512 /* Logout - sleeping */ -#define CL_PWCHANGE 1024 /* CLfullname changed passwords */ - -/* Miscellaneous */ - #define MES_NORMAL 65 /* Normal message */ #define MES_ANONONLY 66 /* "****" header */ #define MES_ANONOPT 67 /* "Anonymous" header */ @@ -235,11 +198,16 @@ struct quickroom { * Floor record. The floor number is implicit in its location in the file. */ struct floor { +/* +#include "datadefinitions.h" +#include "dtds/floor-defs.h" +#include "undef_data.h" +*/ 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 */ @@ -254,9 +222,9 @@ struct floor { #define READ_HEADER 2 #define READ_MSGBODY 3 -/* commands we can send to the sttybbs() routine */ -#define SB_NO_INTR 0 /* set to bbs mode, i/q disabled */ -#define SB_YES_INTR 1 /* set to bbs mode, i/q enabled */ +/* commands we can send to the stty_ctdl() routine */ +#define SB_NO_INTR 0 /* set to Citadel client mode, i/q disabled */ +#define SB_YES_INTR 1 /* set to Citadel client mode, i/q enabled */ #define SB_SAVE 2 /* save settings */ #define SB_RESTORE 3 /* restore settings */ #define SB_LAST 4 /* redo the last command sent */ @@ -294,9 +262,9 @@ enum { #define IGNETCFG "application/x-citadel-ignet-config" #define IGNETMAP "application/x-citadel-ignet-map" #define FILTERLIST "application/x-citadel-filter-list" -#define SPAMSTRINGS "application/x-citadel-spam-strings" +#define SIEVECONFIG "application/x-citadel-sieve-config" -#define TRACE lprintf(9, "Checkpoint: %s, %d\n", __FILE__, __LINE__) +#define TRACE lprintf(CTDL_DEBUG, "Checkpoint: %s, %d\n", __FILE__, __LINE__) #ifndef LONG_MAX #define LONG_MAX 2147483647L @@ -306,22 +274,18 @@ enum { /* * Views */ -#define VIEW_BBS 0 /* Traditional Citadel BBS view */ +#define VIEW_BBS 0 /* Bulletin board view */ #define VIEW_MAILBOX 1 /* Mailbox summary */ #define VIEW_ADDRESSBOOK 2 /* Address book view */ +#define VIEW_CALENDAR 3 /* Calendar view */ +#define VIEW_TASKS 4 /* Tasks view */ +#define VIEW_NOTES 5 /* Notes view */ +#define VIEW_WIKI 6 /* Wiki view */ +#define VIEW_CALBRIEF 7 /* Brief Calendar view */ +#define VIEW_SIEVE 8 /* Sieve manage rules store */ #ifdef __cplusplus } #endif -#ifdef tmpnam -#undef tmpnam -#endif -#define tmpnam(x) CtdlTempFileName(__FILE__, __LINE__) - -#ifdef tmpfile -#undef tmpfile -#endif -#define tmpfile() CtdlTempFile() - #endif /* CITADEL_H */