/********************************************************
* File: cfg.h
* Created at Sun Jan 28 22:10:29 MSK 2001 by raorn // raorn@binec.ru
*
* $Id: cfg.h,v 1.12 2002/02/11 13:25:30 raorn Exp $
*******************************************************/
#ifndef CONFIG_H
#define CONFIG_H
#define READCONFIG_NOT_FOUND 1
#define READCONFIG_INVALID 2
#define READCONFIG_NO_MEM 3
#define CFG_CHECKSEENBY (1L<<0)
#define CFG_CHECKPKTDEST (1L<<1)
#define CFG_ALLOWNULLPASSWORDS (1L<<2)
#define CFG_STRIPRE (1L<<3)
#define CFG_FORCEINTL (1L<<4)
#define CFG_KEEPAREAFIX (1L<<5)
#define CFG_KEEPRECEIPT (1L<<6)
#define CFG_AREAFIXREMOVE (1L<<7)
#define CFG_WEEKDAYNAMING (1L<<8)
#define CFG_ADDTID (1L<<9)
#define CFG_ALLOWRESCAN (1L<<10)
#define CFG_FORWARDPASSTHRU (1L<<11)
#define CFG_REMOVEWHENFEED (1L<<12)
#define CFG_INCLUDEFORWARD (1L<<13)
#define CFG_NOMAXOUTBOUNDZONE (1L<<14)
#define CFG_ALLOWKILLSENT (1L<<15)
#define CFG_USEASO (1L<<16)
#define CFG_LOCKBYLINK (1L<<17)
#define CFG_CCONSCAN (1L<<18)
#define CFG_MSG_HIGHWATER (1L<<1)
#ifdef MSGBASE_JAM
#define CFG_JAM_HIGHWATER (1L<<0)
#define CFG_JAM_HARDDELETE (1L<<1)
#endif
#define AREA_UNCONFIRMED 1
#define AREA_MANDATORY 2
#define AREA_DEFREADONLY 4
#define AREA_IGNOREDUPES 8
#define AREA_IGNORESEENBY 16
#define AREA_IMPORTSEENBY 32
#define AREATYPE_NETMAIL 1
#define AREATYPE_ECHOMAIL 2
#define AREATYPE_DEFAULT 3
#define AREATYPE_BAD 4
#define AREATYPE_LOCAL 5
#define AREATYPE_DELETED 6
struct Area {
struct Area *Next;
bool changed;
struct Aka *Aka;
uchar Flags;
uchar AreaType;
uchar Tagname[80];
uchar Description[80];
struct Messagebase *Messagebase;
uchar Path[200];
uchar Group;
ulong Expires;
ulong Removed;
struct jbList TossNodes;
struct jbList BannedNodes;
/* Maint */
ulong KeepNum, KeepDays;
/* Stats */
ulong Texts;
ulong NewTexts;
ulong Dupes;
ulong NewDupes;
ushort Last8Days[8];
time_t FirstTime;
time_t LastTime;
};
struct Aka {
struct Aka *Next;
struct Node4D Node;
uchar Domain[20];
struct jbList AddList;
struct jbList RemList;
};
#define TOSSNODE_READONLY 1
#define TOSSNODE_WRITEONLY 2
#define TOSSNODE_FEED 4
struct TossNode {
struct TossNode *Next;
struct ConfigNode *ConfigNode;
ushort Flags;
};
struct ImportNode {
struct ImportNode *Next;
struct Node4D Node;
};
struct BannedNode {
struct BannedNode *Next;
struct ConfigNode *ConfigNode;
};
#define NODE_AUTOADD 1
#define NODE_PASSIVE 2
#define NODE_TINYSEENBY 4
#define NODE_NOSEENBY 8
#define NODE_FORWARDREQ 16
#define NODE_NOTIFY 32
#define NODE_SENDAREAFIX 64
#define NODE_SENDTEXT 128
struct RemoteAFCommand {
struct RemoteAFCommand *Next;
uchar Command[80];
};
struct ConfigNode {
struct ConfigNode *Next;
bool changed;
struct Node4D Node;
struct Aka *Aka;
uchar PacketPW[9];
struct Packer *Packer;
bool IsInSeenBy;
uchar AreafixPW[40];
uchar Groups[30];
uchar ReadOnlyGroups[30];
uchar AddGroups[30];
uchar DefaultGroup;
ulong Flags;
uchar SysopName[36];
uchar EchomailPri;
uchar RemoteAFName[36];
uchar RemoteAFPw[72];
struct jbList RemoteAFList;
uchar LastArcName[12];
/* Stats */
ulong GotNetmails;
ulong GotNetmailBytes;
ulong SentNetmails;
ulong SentNetmailBytes;
ulong GotEchomails;
ulong GotEchomailBytes;
ulong SentEchomails;
ulong SentEchomailBytes;
ulong Dupes;
time_t FirstTime;
};
struct Packer {
struct Packer *Next;
uchar Name[10];
uchar Packer[80];
uchar Unpacker[80];
uchar Recog[80];
};
struct AddNode {
struct AddNode *Next;
struct Node4D Node;
};
struct RemNode {
struct RemNode *Next;
struct Node2DPat NodePat;
};
#define PKTS_ECHOMAIL 0
#define PKTS_HOLD 1
#define PKTS_NORMAL 2
#define PKTS_DIRECT 3
#define PKTS_CRASH 4
#define CC_TO 1
#define CC_FROM 2
#define CC_SUBJ 3
struct Carbon {
struct Carbon *Next;
ushort CCType;
uchar Pattern[200];
uchar FromArea[200];
uchar ToArea[80];
};
struct AreaFixName {
struct AreaFixName *Next;
uchar Name[36];
};
#define AREALIST_DESC 1
#define AREALIST_FORWARD 2
struct Arealist {
struct Arealist *Next;
struct ConfigNode *Node;
uchar AreaFile[80];
ushort Flags;
uchar Group;
};
#define DUPE_IGNORE 0
#define DUPE_BAD 1
#define DUPE_KILL 2
struct Config {
bool changed;
uchar filename[100];
uchar areafile[100];
uchar cfg_Sysop[36];
uchar cfg_Inbound[100];
uchar cfg_ProtInbound[100];
uchar cfg_TempInbound[100];
uchar cfg_LocalInbound[100];
uchar cfg_Outbound[100];
uchar cfg_PacketCreate[100];
uchar cfg_PacketDir[100];
uchar cfg_LogFile[100];
uchar cfg_StatsFile[100];
uchar cfg_DupeFile[100];
uchar cfg_AfterUnpack[80];
uchar cfg_BeforePack[80];
ulong cfg_LogLevel;
ulong cfg_DupeSize;
ulong cfg_MaxPktSize;
ulong cfg_MaxBundleSize;
uchar cfg_AreaFixHelp[100];
ulong cfg_AreaFixMaxLines;
uchar cfg_GroupNames[30][80];
ulong cfg_Flags;
ushort cfg_DupeMode;
ulong cfg_DefaultZone;
ulong cfg_FwdTimeout;
ulong cfg_RemoveTimeout;
mode_t cfg_MsgbaseUmask;
struct Area Netmail;
struct jbList AkaList;
struct jbList AreaList;
struct jbList CNodeList;
struct jbList PackerList;
struct jbList CarbonList;
struct jbList AreaFixList;
struct jbList ArealistList;
ulong cfg_msg_Flags;
#ifdef MSGBASE_JAM
uchar cfg_jam_FlagsDir[100];
ulong cfg_jam_MaxOpen;
ulong cfg_jam_Flags;
#endif
};
bool ReadConfig(uchar * filename, struct Config *cfg, short *seconderr, ulong * cfgline, uchar * cfgerr, size_t errlen);
bool ReadAreas(uchar * filename, struct Config * cfg, short *seconderr, ulong * cfgline, uchar * cfgerr, size_t errlen);
bool UpdateConfig(struct Config *cfg, uchar * cfgerr, size_t errlen);
bool UpdateAreas(struct Config *cfg, uchar * cfgerr, size_t errlen);
void InitConfig(struct Config *cfg);
void FreeConfig(struct Config *cfg);
bool CheckConfig(struct Config *cfg, uchar * cfgerr, size_t errlen);
#endif
syntax highlighted by Code2HTML, v. 0.9.1