X-Git-Url: https://git.distorted.org.uk/~mdw/ezmlm/blobdiff_plain/5b62e993b0af39700031c2875d7f6654e6a02850..f8beb284087c279acfb30506f5bb32baa4949b44:/idx.h diff --git a/idx.h b/idx.h new file mode 100644 index 0000000..59f7867 --- /dev/null +++ b/idx.h @@ -0,0 +1,354 @@ +/*$Id: idx.h,v 1.57 1999/11/29 04:54:01 lindberg Exp $*/ +/*$Name: ezmlm-idx-040 $*/ +#ifndef IDX_H +#define IDX_H + +/* Version of this release */ +#define EZIDX_VERSION "ezmlm-idx-0.40\n" + +/* Range for '-thread' to protect large archives. A '-thread' search */ +/* will start at most THREAD_BEFORE messages before the action argument */ +/* and go to at most THREAD_AFTER messages after the action argument. */ +#define THREAD_BEFORE 2000 +#define THREAD_AFTER 2000 + +/* Maximum number of messages returned by get */ +/* You also have to update /text/bottom in ezmlmrc if you change this */ +#define MAXGET 100 + +/* Number of messages before latest digest to return for list-get.99999_x */ +/* This is still subject to the MAXGET restriction */ +#define HISTGET 30 + +/* Maximum subject index entries returned by index */ +/* Must be multiple of 100 */ +/* You also have to update /text/bottom in ezmlmrc if you change this */ +#define MAXINDEX 2000 + +/* Max dir/text file size allowed by -edit */ +#define MAXEDIT 10240 + +/* Timeout in seconds before a bounce warning is sent. Default is */ +/* 1000000, i.e. 11.57 days. Setting it lower reduces the number of */ +/* messages in the bouce dir, but makes it more likely that an address */ +/* is unsubscribed due to a temporary error. This compile-time default */ +/* should rarely need changing, as it can be overridden with the ezmlm-warn */ +/* -t switch */ +#define BOUNCE_TIMEOUT 1000000L + +/* ezmlm-limit defaults. Convert to moderation or defer if more than */ +/* LIMMSG messages arrive within LIMSECS */ +#define LIMMSG 30L +#define LIMSECS 3600L + +/* Command names and alternative command names */ +/* all alternates must be defined! */ +/* The language-specific blocks need to undefine and redefine commands */ + +#define ALT_LIST "list" +#define ALT_LISTN "listn" +#define ALT_EDIT "edit" +#define ALT_FAQ "faq" +#define ALT_GET "get" +#define ALT_HELP "help" +#define ALT_INDEX "index" +#define ALT_INFO "info" +#define ALT_LOG "log" +#define ALT_REQUEST "request" +#define ALT_SUBSCRIBE "subscribe" +#define ALT_THREAD "thread" +#define ALT_UNSUBSCRIBE "unsubscribe" +#define ALT_QUERY "query" + +/* to get alternative command names, you need to undefine and redefine */ +/* them. Do this within a language block and send it to the author for */ +/* inclusing in future versions. If it's here already, just uncomment the */ +/* define for the appropriate language. */ +/* #define LANG_FR 1 */ + +/* French Version */ +#ifdef LANG_FR +#undef ALT_SUBSCRIBE +#define ALT_SUBSCRIBE "-inscription" +#undef ALT_UNSUBSCRIBE +#define ALT_UNSUBSCRIBE "-desinscription" +#endif +/* end French Version */ + +/* Text that is used in the outgoing messages (there is some other text, but */ +/* it needs to stay constant in order to comply with rfc1153 */ + +/* Topics (messages nnn through mmm):\n */ +#define TXT_TOP_TOPICS "Topics" +#define TXT_TOP_MESSAGES " (messages " +#define TXT_TOP_THROUGH " through " +#define TXT_TOP_LAST "):\n" + +/* in digest */ +#define TXT_ADMINISTRIVIA "\nAdministrivia:\n\n" +#define TXT_SUPPRESSED "\n\n\n" + +/* for the message author line: 000 by */ +/* keep this short! */ +#define TXT_BY " by: " + +/* Since this is now run-time configurable, we'll go with the lowest */ +/* common denominator (per rfc2046). -> ISO-8859-1 if you don't like that */ +#define TXT_DEF_CHARSET "us-ascii" + +/* should start with 20 'a' [in place of hash] */ +#define TXT_NOINDEX "aaaaaaaaaaaaaaaaaaaa <- subject index not available for message(s) ->\n" + +/* When copy of the message is suppressed (is this really used?)*/ +#define TXT_SUPPRESSED "\n\n\n" + +/* Subject: MODERATE for inlocal@inhost */ +#define TXT_MODERATE "MODERATE for " + +/* Subject: Returned post for inlocal@inhost */ +/* (used both for rejected and timed-out posts) */ +#define TXT_RETURNED_POST "Returned post for " + +/* Subject: CONFIRM subscribe to | unsubscribe from */ +#define TXT_USRCONFIRM "confirm " +#define TXT_MODCONFIRM "CONFIRM " +#define TXT_SUBSCRIBE_TO "subscribe to " +#define TXT_UNSUBSCRIBE_FROM "unsubscribe from " + +/* Subject: WELCOME to */ +#define TXT_WELCOME "Subject: WELCOME to " + +/* Subject: GOODBYE from */ +#define TXT_GOODBYE "Subject: GOODBYE from " + +/* Subject: ezmlm response\n */ +#define TXT_EZMLM_RESPONSE "Subject: ezmlm response\n" + +/* Subject: majordomo results\n\n [where "majordomo" is outlocal] */ +#define TXT_RESULTS " results\n\n" + +/* Subject: Edit file xxx for list@host */ +#define TXT_EDIT_RESPONSE "Subject: EDIT " +#define TXT_EDIT_FOR " for " + +/* Subject: Editable text files\n */ +#define TXT_EDIT_LIST "Subject: List of editable text files\n" + +/* markers for ezmlm-manage text file edit */ +/* MUST start with '%' */ +#define TXT_EDIT_START "%%% START OF TEXT FILE" +#define TXT_EDIT_END "%%% END OF TEXT FILE" + +#define TXT_EDIT_SUCCESS "Subject: Success editing " + +/* Text for '-list' command */ +#define TXT_LISTMEMBERS "\nSubscribers to this list are:\n\n" + +/* Output formats - letter used to override default */ +#define FORMATS "mrvnx" +#define MIME 'm' +#define RFC1153 'r' +/* ---------------- virgin = MIME without header processing */ +#define VIRGIN 'v' +/* NATIVE 'n' = VIRGIN without threading */ +#define NATIVE 'n' +/* MIXED => multipart/mixed MIME instead of multipart/digest. Needed to bypass*/ +/* pine bug when content-transfer-encoding is used (pine fails to show the */ +/* initial encoded text/plain part of mulpart/digest, but not of ../mixed) */ +#define MIXED 'x' +/* default output format. */ +#define DEFAULT_FORMAT MIME + +/* Use MIME enclosure for message to moderate by default (1) or not (0) */ +/* ezmlm-store switches -m/-M override */ +#define MOD_MIME 1 + +/* Used to add "filname=listname.msgno" to digest part content-type line. + This confuses the heck out of Outlook Express 5.0. To circumvent this + bug the addition has been removed. Uncomment the next line to get it + anyway. */ +/* #define DIGEST_PART_FILENAME */ + +/* Mode of messages in archive. For ezmlm-0.53 this is 0744, but for */ +/* "secret" lists it may make more sense to make it 0700. */ +#define MODE_ARCHIVE 0744 + +/* ezmlm-get actions (ACTION_GET also for -get in ezmlm-manage) */ +#define ACTION_GET "get" +#define ACTION_INDEX "index" +#define ACTION_THREAD "thread" + +/* ezmlm-request actions */ +#define ACTION_REQUEST "request" + +/* actions for post acceptance/rejection */ +#define ACTION_ACCEPT "accept-" +#define ACTION_REJECT "reject-" + +/* ezmlm-manage actions */ +#define ACTION_LIST "list" +#define ACTION_LISTN "listn" +#define ACTION_HELP "help" +#define ACTION_INFO "info" +#define ACTION_FAQ "faq" +#define ACTION_LOG "log" +#define ACTION_SUBSCRIBE "subscribe" +#define ACTION_UNSUBSCRIBE "unsubscribe" +#define ACTION_QUERY "query" +#define ACTION_EDIT "edit" +/* if you change this, you MUST ADJUST LENGTH_ED as well! */ +#define ACTION_ED "ed." +#define LENGTH_ED 3 + +/* ACTION_XC has to be a string "-xc." where x is any letter. All commands */ +/* should have different letters. They no longer have to match the first */ +/* letter of subscribe/unsubscribe. */ +/* The third char of ACTION_SC/TC/UV/VC has to be 'c' */ + +/* user subscription confirm */ +#define ACTION_SC "sc." +/* moderator subscription confirm */ +#define ACTION_TC "tc." +/* user unsubscribe confirm */ +#define ACTION_UC "uc." +/* moderator unsubscribe confirm */ +#define ACTION_VC "vc." + +/* name addition for digest, i.e. list-"digest" Don't change! */ +#define ACTION_DIGEST "digest" + +/* name addition for dir/extra db, i.e. list-"allow" */ +#define ACTION_ALLOW "allow" +/* name addition for dir/blacklist db, i.e. list-"deny" */ +#define ACTION_DENY "deny" + +/* defaults for message time out in moderation queue. If modsub is 0 */ +/* or empty, DELAY_DEFAULT is used. If it is set, it is made to be */ +/* within DELAY_MIN .. DELAY_MAX. All in hours. */ +#define DELAY_MIN 24 +#define DELAY_DEFAULT 120 +#define DELAY_MAX 240 + +/* Mode of messages in moderation queue. The owner mode is |'d with 7.*/ +/* The group/world mode can be set to anything, but it really doesn't */ +/* make sense to make these messages visible to anyone else. */ +#define MODE_MOD_MSG 0700 + +/* name and location of system-wide customized ezmlmrc. This is where */ +/* ezmlm-make looks first (unless the -c switch is specified) before */ +/* falling back to the (usually unchanged) version in the ezmlm bin */ +/* directory. */ +#define TXT_ETC_EZMLMRC "/etc/ezmlm/ezmlmrc" + +/* same name added to auto_bin. Note leading slash! */ +#define TXT_EZMLMRC "/ezmlmrc" + +/* same in dot dir for local config (-c) */ +#define TXT_DOTEZMLMRC ".ezmlmrc" + +/* name of config file for ezmlm-cron */ +#define TXT_EZCRONRC "ezcronrc" + +/* default timestamp for ezmlm-limit */ +#define TXT_LOOPNUM "loopnum" + +/* ezmlm-cgi config file for normal SUID root install */ +#define EZ_CGIRC "/etc/ezmlm/ezcgirc" + +/* ezmlm-cgi config file for local install we expect to find the file in PWD */ +#define EZ_CGIRC_LOC ".ezcgirc" + +/* default charset for ezmlm-cgi [config file overrides per list] */ +#define EZ_CHARSET "iso-8859-1" + +/*------------ Specific to SQL version ------------------------------*/ +/* cookie tag for SQL version of sublisting */ +/* NOTE: Need to include terminal space! */ +#define TXT_TAG "X-Ezauth: " + +/* max no of bounces that ezmlm-receipt stores */ +#define MAX_MAIN_BOUNCES 50 + +/* Length of domain field for SQL version. It does only the text after */ +/* the last '.' in the address, so there is no reason to set it to */ +/* anything other than '3'. We truncate it rather than relying on the */ +/* SQL Server since we can't be sure that the SQL Server doesn't have */ +/* buffer overrun holes and the address is user-controlled */ +#define DOMAIN_LENGTH 3 + +/* programs used for outgoing mail. Normally, qmail-queue is used. Replace */ +/* with qmail-qmqpc to use only qmqp for outgoing mail. QMQPC is for */ +/* large lists when DIR/qmqpservers is present. Only posts and digests will */ +/* use QMQP. If the normal qmail-qmqpc is used the contents of */ +/* DIR/qmqpcservers are ignored. With a patch, qmail-qmqpc will use the */ +/* servers on it's command line. In this case, the IP addresses listed one */ +/* per line in DIR/qmqpservers will be tried until a working one is found. */ +/* the option is mainly to allow large list clusters on a single host to use */ +/* different QMQPC hosts as exploders.*/ +#define PROG_QMAIL_QUEUE "bin/qmail-queue" +#define PROG_QMAIL_QMQPC "bin/qmail-qmqpc" + +/*---------- Things below this line are not configurable -----------*/ +/* file in DIR that has the qmqpc servers (if any) */ +#define QMQPSERVERS "qmqpservers" +/* database types */ +#define FLD_DIGEST 1 +#define FLD_ALLOW 2 +#define FLD_DENY 3 +/* Action types */ +#define AC_NONE 0 +#define AC_GET 1 +#define AC_DIGEST 2 +#define AC_THREAD 3 +#define AC_INDEX 4 +#define AC_LIST 5 +#define AC_HELP 6 +#define AC_EDIT 7 +#define AC_DENY 8 +#define AC_LOG 9 +#define AC_SUBSCRIBE 10 +#define AC_UNSUBSCRIBE 11 +#define AC_SC 12 +#define AC_LISTN 13 + +typedef struct msgentry { /* one per message in range */ + unsigned long subnum; /* subject number */ + unsigned long authnum; /* message author number */ + unsigned int date; /* yyyymm as number */ +} msgentry; + +typedef struct subentry { /* one per unique subject in message range */ + void *higher; + void *lower; + char *sub; /* string with terminating '\0' */ + /* when building, higher/lower=0 marks end */ + /* of branch. When printing, start at the */ + /* beginning of the table and go up until */ + /* sub = 0. */ + unsigned int sublen; + unsigned long firstmsg; /* the first message with this subject*/ + unsigned long lastmsg; /* the last message with this subject*/ + unsigned char msginthread; /* number of messages seen in this thread */ +} subentry; + +typedef struct authentry { /* one per unique author in message range */ + void *higher; + void *lower; + char *auth; /* string with terminating '\0' */ + /* when building, higher/lower=0 marks end */ + /* of branch. When printing, start at the */ + /* beginning of the table and go up until */ + /* auth = 0. */ + unsigned long authlen; + unsigned long firstmsg; /* the first message with this author */ + /* lastmsg not very useful as author are less */ + /* clustered than threads */ +} authentry; + +typedef struct dateentry { /* date yyyymm and 1st message of that date */ + unsigned int date; + unsigned int msg; +} dateentry; + +#endif +