Preliminary classification of inn.conf parameters
Russ Allbery
rra at stanford.edu
Wed Feb 6 03:13:11 UTC 2002
Towards the end of eventually splitting the inn.conf parameters into a
more manageable set, here's my initial breakdown and classification of
what currently can go into inn.conf:
/* $Id$
**
** Manage the global innconf struct.
*/
#include "config.h"
#include "clibrary.h"
enum type {
TYPE_BOOLEAN,
TYPE_NUMBER,
TYPE_STRING
};
struct config {
const char *name;
void *location;
enum type type;
struct {
bool boolean;
long integer;
const char *string;
} default;
}
#define K(name) (#name), (&innconf->name)
#define BOOL(def) TYPE_BOOLEAN, { (def), 0, NULL }
#define NUMBER(def) TYPE_NUMBER, { 0, (def), NULL }
#define STRING(def) TYPE_STRING, { 0, 0, (def) }
const struct config config_table[] = {
{ K(domain), STRING (NULL) },
{ K(enableoverview), BOOL (true) },
{ K(fromhost), STRING (NULL) },
{ K(groupbaseexpiry), BOOL (true) },
{ K(innflags), STRING (NULL) },
{ K(mailcmd), STRING ("innmail") },
{ K(maxforks), NUMBER (10) },
{ K(mta), STRING (NULL) },
{ K(nicekids), NUMBER (4) },
{ K(ovmethod), STRING (NULL) },
{ K(pathhost), STRING (NULL) },
{ K(rlimitnofile), NUMBER (256) },
{ K(server), STRING (NULL) },
{ K(sourceaddress), STRING (NULL) },
{ K(timer), NUMBER (0) },
{ K(patharchive), STRING (NULL) },
{ K(patharticles), STRING (NULL) },
{ K(pathbin), STRING (NULL) },
{ K(pathcontrol), STRING (NULL) },
{ K(pathdb), STRING (NULL) },
{ K(pathetc), STRING (NULL) },
{ K(pathfilter), STRING (NULL) },
{ K(pathhttp), STRING (NULL) },
{ K(pathincoming), STRING (NULL) },
{ K(pathlog), STRING (NULL) },
{ K(pathnews), STRING (NULL) },
{ K(pathoutgoing), STRING (NULL) },
{ K(pathoverview), STRING (NULL) },
{ K(pathrun), STRING (NULL) },
{ K(pathspool), STRING (NULL) },
{ K(pathtmp), STRING (NULL) },
/* The following settings are specific to innd. */
{ K(artcutoff), NUMBER (10) },
{ K(badiocount), NUMBER (5) },
{ K(bindaddress), STRING (NULL) },
{ K(blockbackoff), NUMBER (120) },
{ K(chaninacttime), NUMBER (600) },
{ K(chanretrytime), NUMBER (300) },
{ K(datamovethreshold), NUMBER (8192) },
{ K(dontrejectfiltered), BOOL (false) },
{ K(hiscachesize), NUMBER (0) },
{ K(icdsynccount), NUMBER (10) },
{ K(ignorenewsgroups), BOOL (false) },
{ K(linecountfuzz), NUMBER (0) },
{ K(logartsize), BOOL (true) },
{ K(logcancelcomm), BOOL (false) },
{ K(logipaddr), BOOL (true) },
{ K(logsitename), BOOL (true) },
{ K(maxartsize), NUMBER (1000000) },
{ K(maxconnections), NUMBER (50) },
{ K(mergetogroups), BOOL (false) },
{ K(nntpactsync), NUMBER (200) },
{ K(nntplinklog), BOOL (false) },
{ K(noreader), BOOL (false) },
{ K(pathalias), STRING (NULL) },
{ K(pauseretrytime), NUMBER (300) },
{ K(peertimeout), NUMBER (3600) },
{ K(pgpverify), BOOL (false) },
{ K(port), NUMBER (119) },
{ K(readerswhenstopped), BOOL (false) },
{ K(refusecybercancels), BOOL (false) },
{ K(remembertrash), BOOL (true) },
{ K(stathist), STRING (NULL) },
{ K(status), NUMBER (0) },
{ K(verifycancels), BOOL (false) },
{ K(wanttrash), BOOL (false) },
{ K(wipcheck), NUMBER (5) },
{ K(wipexpire), NUMBER (10) },
{ K(xrefslave), BOOL (false) },
/* The following settings are specific to nnrpd. */
{ K(addnntppostingdate), BOOL (true) },
{ K(addnntppostinghost), BOOL (true) },
{ K(allownewnews), BOOL (true) },
{ K(backoffauth), BOOL (false) },
{ K(backoffdb), STRING (NULL) },
{ K(backoffk), NUMBER (1) },
{ K(backoffpostfast), NUMBER (0) },
{ K(backoffpostslow), NUMBER (1) },
{ K(backofftrigger), NUMBER (10000) },
{ K(checkincludedtext), BOOL (false) },
{ K(clienttimeout), NUMBER (600) },
{ K(complaints), STRING (NULL) },
{ K(keyartlimit), NUMBER (100000) },
{ K(keylimit), NUMBER (512) },
{ K(keymaxwords), NUMBER (250) },
{ K(keywords), BOOL (false) },
{ K(localmaxartsize), NUMBER (1000000) },
{ K(maxcmdreadsize), NUMBER (BUFSIZ) },
{ K(moderatormailer), STRING (NULL) },
{ K(nicenewnews), NUMBER (0) },
{ K(nicennrpd), NUMBER (0) },
{ K(nnrpdauthsender), BOOL (false) },
{ K(nnrpdoverstats), BOOL (false) },
{ K(nnrpperlauth), BOOL (false) },
{ K(nnrppythonauth), BOOL (false) },
{ K(organization), STRING (NULL) },
{ K(readertrack), BOOL (false) },
{ K(spoolfirst), BOOL (false) },
{ K(strippostcc), BOOL (false) },
/* The following settings are used by nnrpd and rnews. */
{ K(nnrpdposthost), STRING (NULL) },
{ K(nnrpdpostport), NUMBER (119) },
/* The following settings are specific to the storage subsystem. */
{ K(articlemmap), BOOL (false) },
{ K(cnfscheckfudgesize), NUMBER (0) },
{ K(docnfsstat), BOOL (false) },
{ K(immediatecancel), BOOL (false) },
{ K(keepmmapedthreshold), NUMBER (1024) },
{ K(nnrpdcheckart), BOOL (true) },
{ K(overcachesize), NUMBER (15) },
{ K(ovgrouppat), STRING (NULL) },
{ K(storeonxref), BOOL (false) },
{ K(useoverchan), BOOL (false) },
{ K(wireformat), BOOL (false) },
/* The following settings are specific to innwatch. */
{ K(doinnwatch), BOOL (true) },
{ K(innwatchbatchspace), NUMBER (800) },
{ K(innwatchlibspace), NUMBER (25000) },
{ K(innwatchloload), NUMBER (1000) },
{ K(innwatchhiload), NUMBER (2000) },
{ K(innwatchpauseload), NUMBER (1500) },
{ K(innwatchsleeptime), NUMBER (600) },
{ K(innwatchspoolnodes), NUMBER (200) },
{ K(innwatchspoolspace), NUMBER (8000) },
/* The following settings are specific to scanlogs. */
{ K(logcycles), NUMBER (3) },
};
/* Special notes:
checkincludedtext and localmaxartisize are used by both nnrpd and inews,
but inews should probably just let nnrpd do that checking.
organization is used by both nnrpd and inews. Perhaps inews should just
let nnrpd set it.
mergetogroups is currently used by nnrpd for permission checking on
posting. I think the check should always be performed based on the
newsgroup to which the user is actually posting, and nnrpd should let
innd do the merging.
useoverchan is only used in innd and overchan. It should probably be
something the storage system knows. Ideally, the storage system would
handle overchan itself, but that would require a lot of infrastructure;
in the interim, it could be something that programs could ask the
overview subsystem about.
doinnwatch and docnfsstat are used by rc.news currently, but really
should be grouped with the appropriate subsystem.
newsrequeue also uses nntplinklog, but the parameter should go away
completely anyway.
timer is currently used in various places, but it may be best to replace
it with individual settings for innd and innfeed, and any other code that
wants to use it.
maxforks is used by rnews and nnrpd. I'm not sure this is that useful of
a setting to have.
*/
--
Russ Allbery (rra at stanford.edu) <http://www.eyrie.org/~eagle/>
More information about the inn-workers
mailing list