/******************************************************** * 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