X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fcitadel.h;h=2608cb9a16fa783577c1d97216c1b7e26d083c64;hb=4eb74b26380dfde31c86c685f0589e0c653aebf0;hp=2bc0bf3fe8211ef992e761294b2087c8bd22a0b9;hpb=2de0a67cfec9bd22738c77f6fb3bdbe3b3be5981;p=citadel.git diff --git a/citadel/citadel.h b/citadel/citadel.h index 2bc0bf3fe..2608cb9a1 100644 --- a/citadel/citadel.h +++ b/citadel/citadel.h @@ -1,23 +1,31 @@ /* * $Id$ * - * main Citadel header file - * see copyright.txt for copyright information + * Main Citadel header file + * See COPYING for copyright information. + * + * Copyright (c) 1987-2009 by the citadel.org team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* system customizations are in sysconfig.h */ #ifndef CITADEL_H #define CITADEL_H - -/* 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 uncomment if using dmalloc */ #include "sysdep.h" #include @@ -31,8 +39,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.41" +#define CITADEL PACKAGE_STRING /* * REV_LEVEL is the current version number (multiplied by 100 to avoid having @@ -44,12 +54,19 @@ extern "C" { * usually more strict because you're not really supposed to dump/load and * upgrade at the same time. */ -#define REV_LEVEL 641 /* This version */ +#define REV_LEVEL 766 /* This version */ #define REV_MIN 591 /* Oldest compatible database */ -#define EXPORT_REV_MIN 626 /* Oldest compatible export files */ +#define EXPORT_REV_MIN 760 /* Oldest compatible export files */ +#define LIBCITADEL_MIN 766 /* 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 */ @@ -67,7 +84,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; }; @@ -78,75 +101,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_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_niu_1; /* (not in use) */ - char c_bbs_city[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; @@ -160,7 +126,7 @@ 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 @@ -170,34 +136,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 BBS-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. @@ -207,22 +168,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 @@ -248,7 +215,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 */ @@ -268,9 +241,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 */ @@ -308,23 +281,21 @@ 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 /* Traditional Citadel BBS 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 (self-contained or "black box") */ +#define AUTHMODE_HOST 1 /* Authenticate against the host OS user database */ +#define AUTHMODE_LDAP 2 /* Authenticate against an LDAP server with RFC 2307 schema */ +#define AUTHMODE_LDAP_AD 3 /* Authenticate against non-standard MS Active Directory LDAP */ #ifdef __cplusplus }