1 //  This may look like C code, but it is really -*- C++ -*-
2 
3 //  ------------------------------------------------------------------
4 //  The Goldware Library
5 //  Copyright (c) 1994 Tobias Burchhardt
6 //  Copyright (C) 1990-1999 Odinn Sorensen
7 //  ------------------------------------------------------------------
8 //  This library is free software; you can redistribute it and/or
9 //  modify it under the terms of the GNU Library General Public
10 //  License as published by the Free Software Foundation; either
11 //  version 2 of the License, or (at your option) any later version.
12 //
13 //  This library is distributed in the hope that it will be useful,
14 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
15 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16 //  Library General Public License for more details.
17 //
18 //  You should have received a copy of the GNU Library General Public
19 //  License along with this program; if not, write to the Free
20 //  Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21 //  MA 02111-1307, USA
22 //  ------------------------------------------------------------------
23 //  $Id: gs_fech6.h,v 1.1.1.1 2000/02/25 10:12:12 asa Exp $
24 //  ------------------------------------------------------------------
25 //  FastEcho 1.42 beta structures
26 //  ------------------------------------------------------------------
27 
28 #ifndef __gs_fech6_h
29 #define __gs_fech6_h
30 
31 
32 //  ------------------------------------------------------------------
33 
34 #include <gdefs.h>
35 
36 
37 //  ------------------------------------------------------------------
38 
39 #if defined(GOLD_CANPACK)
40 #pragma pack(1)
41 #endif
42 
43 
44 //  ------------------------------------------------------------------
45 //  FASTECHO.CFG = <CONFIG>
46 //               + <optional extensions>
47 //               + <CONFIG.NodeCnt * Node>
48 //               + <CONFIG.AreaCnt * Area>
49 
50 #define REVISION        6       // current revision
51 #define MAX_ROUTE       15      // max # of 'vias'
52 
53 //  ------------------------------------------------------------------
54 //  Area.board (1-200 = Hudson)
55 
56 #define NO_BOARD        0x4000u // JAM/Sq/Passthru etc.
57 #define AREA_DELETED    0x8000u // usually never written
58 
59 
60 //  ------------------------------------------------------------------
61 //  Area.flags.storage
62 
63 #define QBBS                    0
64 #define FIDO                    1
65 #define SQUISH                  2
66 #define JAM                     3
67 #define PASSTHRU                7
68 
69 
70 //  ------------------------------------------------------------------
71 //  Area.flags.atype
72 
73 #define AREA_ECHOMAIL           0
74 #define AREA_NETMAIL            1
75 #define AREA_LOCAL              2
76 #define AREA_BADMAILBOARD       3
77 #define AREA_DUPEBOARD          4
78 
79 
80 //  ------------------------------------------------------------------
81 //  Types and other definitions
82 
83 #define _MAXPATH 56
84 
85 typedef struct CONFIGURATION6
86 {
87   word     revision;
88   dword    flags;
89   word     NodeCnt, AreaCnt, unused1;
90   char     NetMPath[_MAXPATH],
91            MsgBase[_MAXPATH],
92            InBound[_MAXPATH],
93            OutBound[_MAXPATH],
94            Unpacker[_MAXPATH],
95            LogFile[_MAXPATH],
96            unused2[448],
97            StatFile[_MAXPATH],
98            SwapPath[_MAXPATH],
99            SemaphorePath[_MAXPATH],
100            BBSConfigPath[_MAXPATH],
101            DBQueuePath[_MAXPATH],
102            unused3[32],
103            RetearTo[40],
104            SecurePath[_MAXPATH],
105            ExtAfter[_MAXPATH-4],
106            ExtBefore[_MAXPATH-4];
107   byte     unused4[480];
108   struct {
109     byte what;
110     char object[31];
111     word conference;
112   }        CC[10];
113   byte     security,
114            loglevel;
115   word     def_days,
116            def_messages;
117   byte     unused5[462];
118   word     autorenum;
119   word     def_recvdays;
120   word     openQQQs;
121   word     compressafter;
122   word     afixmaxmsglen;
123   word     compressfree;
124   char     TempPath[_MAXPATH];
125   byte     graphics,
126            BBSSoftware;
127   char     AreaFixHelp[_MAXPATH];
128   byte     unused6[504];
129   word     AreaFixFlags;
130   byte     QuietLevel,
131            Buffers;
132   byte     FWACnt,                      // # of ForwardAreaFix records,
133            GDCnt;                       // # of Group Default records
134   struct {
135     word flags;
136     word days[2];
137     word msgs[2];
138   }        rescan_def;
139   dword    duperecords;
140   struct {
141     byte inb;
142     byte outb;
143   }        arcext;
144   word     AFixRcptLen;
145   word     AkaCnt;                      // # of Aka records stored */
146   word     maxPKT;
147   byte     sharing,
148            sorting;
149   struct {
150     char name[36];
151     dword resv;
152   } sysops[11];
153   char     AreaFixLog[_MAXPATH];
154   char     TempInBound[_MAXPATH];
155   word     maxPKTmsgs;
156   word     RouteCnt;                    // # of PackRoute records
157   word     maxPACKratio;
158   byte     PackerCnt, UnpackerCnt;      // # of Packers and Unpackers records
159   byte     GroupCnt, OriginCnt;         // # of GroupNames and Origin records
160   word     mailer;
161   char     resv[810];
162   word     AreaRecSize, GrpDefRecSize;  // Size  of  Area  and  GroupDefaults
163                                         // records stored in this file
164   word     MaxAreas, MaxNodes;          // Current max values for this config
165   word     NodeRecSize;                 // Size of each stored Node record
166   dword    offset;                      // This is the offset from the current
167                                         // file-pointer to the 1st Node
168 } CONFIG6;
169 
170 
171 //  ------------------------------------------------------------------
172 
173 typedef struct
174 {
175   char     name[52];
176   word     board;                       // 1-200 Hudson, others reserved/special
177   word     conference;                  // 0 ... CONFIG.MaxAreas-1
178   word     read_sec, write_sec;
179   struct {
180     word aka    : 8;                    // 0 ... CONFIG.AkaCnt
181     word group  : 8;                    // 0 ... CONFIG.GroupCnt
182   }        info;
183   struct {
184     word storage: 4;
185     word atype  : 4;
186     word origin : 5;                    // # of origin line
187     word resv   : 3;
188   }        flags;
189   struct {
190     word autoadded  : 1;
191     word tinyseen   : 1;
192     word cpd        : 1;
193     word passive    : 1;
194     word keepseen   : 1;
195     word mandatory  : 1;
196     word keepsysop  : 1;
197     word killread   : 1;
198     word disablepsv : 1;
199     word keepmails  : 1;
200     word hide       : 1;
201     word nomanual   : 1;
202     word umlaut     : 1;
203     word resv       : 3;
204   }        advflags;
205   word     resv1;
206   dword    seenbys;                     // LSB = Aka0, MSB = Aka31
207   dword    resv2;
208   short    days;
209   short    messages;
210   short    recvdays;
211   char     path[_MAXPATH];
212   char     desc[52];
213 } FeArea6;
214 
215 
216 //  ------------------------------------------------------------------
217 //  Optional Extensions
218 
219 typedef struct {
220   word     type;                        // EH_...
221   dword    offset;                      // length of field excluding header
222 } ExtensionHeader;
223 
224 #define EH_AKAS         0x0007          // CONFIG.AkaCnt * <SysAddress>
225 
226 typedef struct {
227   ftn_addr main;
228   char     domain[28];
229   word     pointnet;
230   dword    flags;                       // unused
231 } SysAddress;
232 
233 #define EH_ORIGINS      0x0008          // CONFIG.OriginCnt * <OriginLines>
234 
235 typedef struct {
236   char     line[62];
237 } OriginLines;
238 
239 
240 //  ------------------------------------------------------------------
241 
242 #if defined(GOLD_CANPACK)
243 #pragma pack()
244 #endif
245 
246 
247 //  ------------------------------------------------------------------
248 
249 #endif
250 
251 //  ------------------------------------------------------------------
252