X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fcitadel.h;h=5b6bb0a69fae3a7b1f276d16a7d806f312f494f3;hb=1083c2a818cda51f81c908a801bd5f922f99149e;hp=c5e5fb4f91580904dc0f68225be9e298a0759b95;hpb=57b6e51876779134cc67c8d88d47d6e121d814bd;p=citadel.git diff --git a/citadel/citadel.h b/citadel/citadel.h index c5e5fb4f9..5b6bb0a69 100644 --- a/citadel/citadel.h +++ b/citadel/citadel.h @@ -1,8 +1,8 @@ /* * $Id$ * - * main Citadel header file - * see copyright.txt for copyright information + * Main Citadel header file + * See copyright.txt for copyright information. */ /* system customizations are in sysconfig.h */ @@ -11,15 +11,6 @@ #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. - */ -#ifdef HAVE_LIBICAL -#ifdef HAVE_ICAL_H -#define CITADEL_WITH_CALENDAR_SERVICE 1 -#endif -#endif - #include "sysdep.h" #include #include "sysconfig.h" @@ -32,8 +23,10 @@ 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 6.46" +#define CITADEL PACKAGE_STRING /* * REV_LEVEL is the current version number (multiplied by 100 to avoid having @@ -45,12 +38,19 @@ extern "C" { * usually more strict because you're not really supposed to dump/load and * upgrade at the same time. */ -#define REV_LEVEL 646 /* This version */ +#define REV_LEVEL 739 /* This version */ #define REV_MIN 591 /* Oldest compatible database */ -#define EXPORT_REV_MIN 626 /* Oldest compatible export files */ +#define EXPORT_REV_MIN 737 /* Oldest compatible export files */ +#define LIBCITADEL_MIN 739 /* Minimum required version of libcitadel */ + +#define SERVER_TYPE 0 /* zero for stock Citadel; other developers please + obtain SERVER_TYPE codes for your implementations */ -#define SERVER_TYPE 0 /* zero for stock Citadel; other developers please - obtain SERVER_TYPE codes for your implementations */ +#ifdef LIBCITADEL_VERSION_NUMBER +#if LIBCITADEL_VERSION_NUMBER < LIBCITADEL_MIN +#error libcitadel is too old. Please upgrade it before continuing. +#endif +#endif /* Various length constants */ @@ -68,7 +68,13 @@ extern "C" { /* * Message expiration policy stuff */ +typedef struct ExpirePolicy ExpirePolicy; struct ExpirePolicy { +/* +#include "datadefinitions.h" +#include "dtds/expirepolicy-defs.h" +#include "undef_data.h" +*/ int expire_mode; int expire_value; }; @@ -79,75 +85,18 @@ struct ExpirePolicy { #define EXPIRE_AGE 3 /* Expire messages after n days */ -/* - * Global system configuration. - * - * Developers: please do NOT remove the fields labelled "not in use". We - * can't simply remove them from the struct, because this gets written to - * disk, and if you change it then you'll break all existing systems. - * However, if you'd like to reclaim some of that space for another use, feel - * free to do so, as long as the sizes are kept identical. - */ -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_ctdluid; /* UID under which we run Citadel */ - 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_niu_1; /* (not in use) */ - char c_site_location[32]; /* physical location of server */ - char c_sysadm[26]; /* name of system administrator */ - char c_niu_2[15]; /* (not in use) */ - int c_setup_level; /* what rev level we've setup to */ - int c_maxsessions; /* maximum concurrent sessions */ - char c_ip_addr[20]; /* IP address to listen on */ - 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_niu_4; /* (not in use) */ - char c_baseroom[ROOMNAMELEN]; /* Name of baseroom (Lobby) */ - char c_aideroom[ROOMNAMELEN]; /* Name of aideroom (Aide) */ - int c_purge_hour; /* Hour during which db purges run */ - struct ExpirePolicy c_mbxep; /* Expire policy for mailbox rooms */ - char c_ldap_host[128]; /* Host where LDAP service lives */ - int c_ldap_port; /* Port on host where LDAP lives */ - char c_ldap_base_dn[256]; /* LDAP base DN */ - char c_ldap_bind_dn[256]; /* LDAP bind DN */ - char c_ldap_bind_pw[256]; /* LDAP bind password */ - int c_msa_port; /* SMTP MSA listener port (usu 587) */ - int c_imaps_port; /* IMAPS listener port (usually 993)*/ - int c_pop3s_port; /* POP3S listener port (usually 995)*/ - int c_smtps_port; /* SMTPS listener port (usually 465)*/ -}; - /* * 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. */ +typedef struct march march; 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; @@ -171,34 +120,29 @@ struct march { /* * User records. */ +typedef struct ctdluser ctdluser; struct ctdluser { /* User record */ - int version; /* Cit vers. which created this rec */ - uid_t uid; /* Associate with a unix account? */ - 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) */ - cit_uint8_t axlevel; /* Access level */ - long usernum; /* User number (never recycled) */ - time_t lastcall; /* Last time the user called */ - int USuserpurge; /* Purge time (in days) for user */ - char fullname[64]; /* Name for Citadel messages & mail */ - cit_uint8_t USscreenwidth; /* Screen width (for textmode users)*/ - cit_uint8_t USscreenheight; /* Screen height(for textmode users)*/ -}; - - /* - * 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 */ +#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 */ + unsigned flags; /* See US_ flags below */ + long timescalled; /* Total number of logins */ + long posted; /* Number of messages ever submitted */ + cit_uint8_t axlevel; /* Access level */ + long usernum; /* User number (never recycled) */ + time_t lastcall; /* Date/time of most recent login */ + int USuserpurge; /* Purge time (in days) for user */ + char fullname[64]; /* Display name (primary identifier) */ + cit_uint8_t USscreenwidth; /* Screen width (for textmode users) */ + cit_uint8_t USscreenheight; /* Screen height(for textmode users) */ }; + /* 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. @@ -208,22 +152,28 @@ struct CitControl { /* * Room records. */ +typedef struct ctdlroom ctdlroom; 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 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 */ +/* +#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 @@ -249,7 +199,13 @@ struct ctdlroom { /* * Floor record. The floor number is implicit in its location in the file. */ +typedef struct floor floor; 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 */ @@ -309,23 +265,20 @@ enum { #define IGNETCFG "application/x-citadel-ignet-config" #define IGNETMAP "application/x-citadel-ignet-map" #define FILTERLIST "application/x-citadel-filter-list" +#define SIEVECONFIG "application/x-citadel-sieve-config" -#define TRACE lprintf(CTDL_DEBUG, "Checkpoint: %s, %d\n", __FILE__, __LINE__) +#define TRACE CtdlLogPrintf(CTDL_DEBUG, "Checkpoint: %s, %d\n", __FILE__, __LINE__) #ifndef LONG_MAX #define LONG_MAX 2147483647L #endif - /* - * Views + * Authentication modes */ -#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 AUTHMODE_NATIVE 0 /* native Citadel authentication */ +#define AUTHMODE_HOST 1 /* host integrated */ +#define AUTHMODE_LDAP 2 /* external LDAP authentication */ #ifdef __cplusplus }