You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
smartcardauth/include/inn/innconf.h

212 lines
11 KiB

/* $Id: innconf.h 7751 2008-04-06 14:35:40Z iulius $
**
** inn.conf parser interface.
**
** The interface to reading inn.conf configuration files and managing the
** resulting innconf struct.
*/
#ifndef INN_INNCONF_H
#define INN_INNCONF_H 1
#include <inn/defines.h>
#include <stdio.h>
/*
** This structure is organized in the same order as the variables contained
** in it are mentioned in the inn.conf documentation, and broken down into
** the same sections. Note that due to the implementation, only three types
** of variables are permissible here: char *, bool, and long.
*/
struct innconf {
/* General Settings */
char *domain; /* Default domain of local host */
char *innflags; /* Flags to pass to innd on startup */
char *mailcmd; /* Command to send report/control type mail */
char *mta; /* MTA for mailing to moderators, innmail */
char *pathhost; /* Entry for the Path line */
char *server; /* Default server to connect to */
/* Feed Configuration */
long artcutoff; /* Max accepted article age */
char *bindaddress; /* Which interface IP to bind to */
char *bindaddress6; /* Which interface IPv6 to bind to */
bool dontrejectfiltered; /* Don't reject filtered article? */
long hiscachesize; /* Size of the history cache in kB */
bool ignorenewsgroups; /* Propagate cmsgs by affected group? */
bool immediatecancel; /* Immediately cancel timecaf messages? */
long linecountfuzz; /* Check linecount and reject if off by more */
long maxartsize; /* Reject articles bigger than this */
long maxconnections; /* Max number of incoming NNTP connections */
char *pathalias; /* Prepended Host for the Path line */
char *pathcluster; /* Appended Host for the Path line */
bool pgpverify; /* Verify control messages with pgpverify? */
long port; /* Which port innd should listen on */
bool refusecybercancels; /* Reject message IDs with "<cancel."? */
bool remembertrash; /* Put unwanted article IDs into history */
char *sourceaddress; /* Source IP for outgoing NNTP connections */
char *sourceaddress6; /* Source IPv6 for outgoing NNTP connections */
bool verifycancels; /* Verify cancels against article author */
bool wanttrash; /* Put unwanted articles in junk */
long wipcheck; /* How long to defer other copies of article */
long wipexpire; /* How long to keep pending article record */
/* History settings */
char *hismethod; /* Which history method to use */
/* Article Storage */
long cnfscheckfudgesize; /* Additional CNFS integrity checking */
bool enableoverview; /* Store overview info for articles? */
bool groupbaseexpiry; /* Do expiry by newsgroup? */
bool mergetogroups; /* Refile articles from to.* into to */
bool nfswriter; /* Use NFS writer functionality */
long overcachesize; /* fd size cache for tradindexed */
char *ovgrouppat; /* Newsgroups to store overview for */
char *ovmethod; /* Which overview method to use */
bool storeonxref; /* SMstore use Xref to detemine class? */
bool useoverchan; /* overchan write the overview, not innd? */
bool wireformat; /* Store tradspool artilces in wire format? */
bool xrefslave; /* Act as a slave of another server? */
/* Reading */
bool allownewnews; /* Allow use of the NEWNEWS command */
bool articlemmap; /* Use mmap to read articles? */
long clienttimeout; /* How long nnrpd can be inactive */
long initialtimeout; /* How long nnrpd waits for first command */
long msgidcachesize; /* Number of entries in the message ID cache */
bool nfsreader; /* Use NFS reader functionality */
long nfsreaderdelay; /* Delay applied to article arrival */
bool nnrpdcheckart; /* Check article existence before returning? */
char *nnrpdflags; /* Arguments to pass when spawning nnrpd */
long nnrpdloadlimit; /* Maximum getloadvg() we allow */
bool noreader; /* Refuse to fork nnrpd for readers? */
bool readerswhenstopped; /* Allow nnrpd when server is paused */
bool readertrack; /* Use the reader tracking system? */
bool tradindexedmmap; /* Whether to mmap for tradindexed */
/* Reading -- Keyword Support */
bool keywords; /* Generate keywords in overview? */
long keyartlimit; /* Max article size for keyword generation */
long keylimit; /* Max allocated space for keywords */
long keymaxwords; /* Max count of interesting works */
/* Posting */
bool addnntppostingdate; /* Add NNTP-Posting-Date: to posts */
bool addnntppostinghost; /* Add NNTP-Posting-Host: to posts */
bool checkincludedtext; /* Reject if too much included text */
char *complaints; /* Address for X-Complaints-To: */
char *fromhost; /* Host for the From: line */
long localmaxartsize; /* Max article size of local postings */
char *moderatormailer; /* Default host to mail moderated articles */
bool nnrpdauthsender; /* Add authenticated Sender: header? */
char *nnrpdposthost; /* Host postings should be forwarded to */
long nnrpdpostport; /* Port postings should be forwarded to */
char *organization; /* Data for the Organization: header */
bool spoolfirst; /* Spool all posted articles? */
bool strippostcc; /* Strip To:, Cc: and Bcc: from posts */
/* Posting -- Exponential Backoff */
bool backoffauth; /* Backoff by user, not IP address */
char *backoffdb; /* Directory for backoff databases */
long backoffk; /* Multiple for the sleep time */
long backoffpostfast; /* Upper time limit for fast posting */
long backoffpostslow; /* Lower time limit for slow posting */
long backofftrigger; /* Number of postings before triggered */
/* Monitoring */
bool doinnwatch; /* Start innwatch from rc.news? */
long innwatchbatchspace; /* Minimum free space in pathoutgoing */
long innwatchlibspace; /* Minimum free space in pathdb */
long innwatchloload; /* Load times 100 at which to restart */
long innwatchhiload; /* Load times 100 at which to throttle */
long innwatchpauseload; /* Load times 100 at which to pause */
long innwatchsleeptime; /* Seconds to wait between checks */
long innwatchspoolnodes; /* Minimum free inodes in patharticles */
long innwatchspoolspace; /* Minimum free space in patharticles */
/* Logging */
bool docnfsstat; /* Run cnfsstat in the background? */
bool logartsize; /* Log article sizes? */
bool logcancelcomm; /* Log ctlinnd cancel commands to syslog? */
long logcycles; /* How many old logs scanlogs should keep */
bool logipaddr; /* Log by host IP address? */
bool logsitename; /* Log outgoing site names? */
bool nnrpdoverstats; /* Log overview statistics? */
long nntpactsync; /* Checkpoint log after this many articles */
bool nntplinklog; /* Put storage token into the log? */
long status; /* Status file update interval */
long timer; /* Performance monitoring interval */
char *stathist; /* Filename for history profiler outputs */
/* System Tuning */
long badiocount; /* Failure count before dropping channel */
long blockbackoff; /* Multiplier for sleep in EAGAIN writes */
long chaninacttime; /* Wait before noticing inactive channels */
long chanretrytime; /* How long before channel restarts */
long icdsynccount; /* Articles between active & history updates */
long keepmmappedthreshold; /* Threshold for keeping mmap in buffindexed */
long maxforks; /* Give up after this many fork failure */
long nicekids; /* Child processes get niced to this */
long nicenewnews; /* If NEWNEWS command is used, nice to this */
long nicennrpd; /* nnrpd is niced to this */
long pauseretrytime; /* Seconds before seeing if pause is ended */
long peertimeout; /* How long peers can be inactive */
long rlimitnofile; /* File descriptor limit to set */
long maxcmdreadsize; /* max NNTP command read size used by innd */
long datamovethreshold; /* threshold no to extend buffer for ever */
/* Paths */
char *patharchive; /* Archived news. */
char *patharticles; /* Articles. */
char *pathbin; /* News binaries. */
char *pathcontrol; /* Path to control message handlers */
char *pathdb; /* News database files */
char *pathetc; /* News configuration files */
char *pathfilter; /* Filtering code */
char *pathhttp; /* HTML files */
char *pathincoming; /* Incoming spooled news */
char *pathlog; /* Log files */
char *pathnews; /* Home directory for news user */
char *pathoutgoing; /* Outgoing news batch files */
char *pathoverview; /* Overview infomation */
char *pathrun; /* Runtime state and sockets */
char *pathspool; /* Root of news spool hierarchy */
char *pathtmp; /* Temporary files for the news system */
};
/* The global innconf variable used in programs. */
extern struct innconf *innconf;
/* Used to request various types of quoting when printing out values. */
enum innconf_quoting {
INNCONF_QUOTE_NONE,
INNCONF_QUOTE_SHELL,
INNCONF_QUOTE_PERL,
INNCONF_QUOTE_TCL
};
BEGIN_DECLS
/* Parse the given file into innconf, using the default path if NULL. */
bool innconf_read(const char *path);
/* Free an innconf struct and all allocated memory for it. */
void innconf_free(struct innconf *);
/* Print a single value with appropriate quoting, return whether found. */
bool innconf_print_value(FILE *, const char *key, enum innconf_quoting);
/* Dump the entire configuration with appropriate quoting. */
void innconf_dump(FILE *, enum innconf_quoting);
/* Compare two instances of an innconf struct, for testing. */
bool innconf_compare(struct innconf *, struct innconf *);
/* Check the validity of an inn.conf file. Does innconf_read plus checking
for any unknown parameters that are set. */
bool innconf_check(const char *path);
END_DECLS
#endif /* INN_INNCONF_H */