scfgdefs.h 25.9 KB
Newer Older
1
/* Synchronet configuration structure (scfg_t) definition */
2
// vi: tabstop=4
3
4
5
6
7
8
9

/* $Id$ */

/****************************************************************************
 * @format.tab-size 4		(Plain Text/Source Code File Header)			*
 * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
 *																			*
rswindell's avatar
rswindell committed
10
 * Copyright Rob Swindell - http://www.synchro.net/copyright.html			*
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 *																			*
 * This program is free software; you can redistribute it and/or			*
 * modify it under the terms of the GNU General Public License				*
 * as published by the Free Software Foundation; either version 2			*
 * of the License, or (at your option) any later version.					*
 * See the GNU General Public License for more details: gpl.txt or			*
 * http://www.fsf.org/copyleft/gpl.html										*
 *																			*
 * Anonymous FTP access to the most recent released source is available at	*
 * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net	*
 *																			*
 * Anonymous CVS access to the development source and modification history	*
 * is available at cvs.synchro.net:/cvsroot/sbbs, example:					*
 * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login			*
 *     (just hit return, no password is necessary)							*
 * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src		*
 *																			*
 * For Synchronet coding style and modification guidelines, see				*
 * http://www.synchro.net/source.html										*
 *																			*
 * You are encouraged to submit any modifications (preferably in Unix diff	*
 * format) via e-mail to mods@synchro.net									*
 *																			*
 * Note: If this box doesn't appear square, then you need to fix your tabs.	*
 ****************************************************************************/

#include "sbbsdefs.h"

#ifndef _SCFGDEFS_H_
#define _SCFGDEFS_H_

42
43
44
typedef struct {							/* Message sub board info */
	char		code[LEN_EXTCODE+1];		/* Internal code (with optional lib prefix) */
	char		code_suffix[LEN_CODE+1];	/* Eight character code suffix */
45
46
	char		lname[LEN_SLNAME+1],		/* Long name - used for listing */
				sname[LEN_SSNAME+1],		/* Short name - used for prompts */
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
				arstr[LEN_ARSTR+1],			/* Access requirements */
				read_arstr[LEN_ARSTR+1],	/* Read requirements */
				post_arstr[LEN_ARSTR+1],	/* Post requirements */
				op_arstr[LEN_ARSTR+1], 		/* Operator requirements */
				mod_arstr[LEN_ARSTR+1],		/* Moderated user requirements */
				qwkname[11],				/* QWK name - only 10 chars */
				data_dir[LEN_DIR+1],		/* Data file directory */
				origline[51],				/* Optional EchoMail origin line */
				post_sem[LEN_DIR+1],		/* Semaphore file for this sub */
				tagline[81],				/* Optional QWK net tag line */
				newsgroup[LEN_DIR+1];		/* Newsgroup name */
	uchar		*ar,
				*read_ar,
				*post_ar,
				*op_ar,
				*mod_ar;
deuce's avatar
64-bit    
deuce committed
63
	uint16_t	grp,						/* Which group this sub belongs to */
64
65
				ptridx, 					/* Index into pointer file */
				qwkconf,					/* QWK conference number */
66
67
				maxage, 					/* Max age of messages (in days) */
				subnum;						/* ephemeral index of this sub in cfg.sub[] */
deuce's avatar
64-bit    
deuce committed
68
	uint32_t	misc,						/* Miscellaneous flags */
69
70
				maxmsgs,					/* Max number of messages allowed */
				maxcrcs;					/* Max number of CRCs to keep */
71
	int32_t		pmode;						/* printfile()/putmsg() mode flags */
72
	int32_t		n_pmode;					/* set of negated pmode flags */
73
	faddr_t		faddr;						/* FidoNet address */
74
75
76

} sub_t;

77
typedef struct {							/* Message group info */
78
79
	char		lname[LEN_GLNAME+1],		/* Long name */
				sname[LEN_GSNAME+1],		/* Short name */
80
81
82
				arstr[LEN_ARSTR+1],			/* Access requirements */
				code_prefix[LEN_CODE+1];	/* Prefix for internal code */
	uchar		*ar;
83
	enum area_sort sort;
84
85
86

} grp_t;

87
88
89
typedef struct {							/* Transfer Directory Info */
	char		code[LEN_EXTCODE+1];		/* Internal code (with optional lib prefix) */
	char		code_suffix[LEN_CODE+1];	/* Eight character code suffix */
90
91
	char		lname[LEN_SLNAME+1],		/* Long name - used for listing */
				sname[LEN_SSNAME+1],		/* Short name - used for prompts */
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
				arstr[LEN_ARSTR+1],			/* Access Requirements */
				ul_arstr[LEN_ARSTR+1], 		/* Upload Requirements */
				dl_arstr[LEN_ARSTR+1], 		/* Download Requirements */
				ex_arstr[LEN_ARSTR+1], 		/* Exemption Requirements (credits) */
				op_arstr[LEN_ARSTR+1], 		/* Operator Requirements */
				path[LEN_DIR+1],			/* Path to directory for files */
				exts[41],   		        /* Extensions allowed */
				upload_sem[LEN_DIR+1],		/* Upload semaphore file */
				data_dir[LEN_DIR+1];		/* Directory where data is stored */
	uchar		*ar,
				*ul_ar,
				*dl_ar,
				*ex_ar,
				*op_ar,
				seqdev, 					/* Sequential access device number */
				sort;						/* Sort type */
deuce's avatar
64-bit    
deuce committed
108
	uint16_t	maxfiles,					/* Max number of files allowed */
109
110
111
				maxage, 					/* Max age of files (in days) */
				up_pct, 					/* Percentage of credits on uloads */
				dn_pct, 					/* Percentage of credits on dloads */
112
113
				lib,						/* Which library this dir is in */
				dirnum;						/* ephemeral index of this dir in cfg.dir[] */
deuce's avatar
64-bit    
deuce committed
114
	uint32_t	misc;						/* Miscellaneous bits */
115
116
117

} dir_t;

118
typedef struct {							/* Transfer Library Information */
119
120
	char		lname[LEN_GLNAME+1],		/* Long Name - used for listings */
				sname[LEN_GSNAME+1],		/* Short Name - used for prompts */
121
122
123
124
				arstr[LEN_ARSTR+1],			/* Access Requirements */
				code_prefix[LEN_CODE+1],	/* Prefix for internal code */
				parent_path[48];			/* Parent for dir paths */
	uchar		*ar;
rswindell's avatar
rswindell committed
125
	uint32_t	offline_dir;				/* Offline file directory */
126
127
	uint32_t	misc;						/* Miscellaneous bits */
	enum area_sort sort;
128
129
130

} lib_t;

131
132
133
134
135
typedef struct {							/* Gfile Section Information */
	char		code[LEN_CODE+1];			/* Eight character code */
	char		name[41],					/* Name of section */
				arstr[LEN_ARSTR+1];			/* Access requirements */
	uchar		*ar;
136
137
138

} txtsec_t;

139
140
141
142
143
typedef struct {							/* External Section Information */
	char		code[LEN_CODE+1];			/* Eight character code	*/
	char		name[41],					/* Name of section */
				arstr[LEN_ARSTR+1];			/* Access requirements */
	uchar		*ar;
144
145
146

} xtrnsec_t;

147
148
typedef struct {							/* Swappable executable */
	char		cmd[LEN_CMD+1]; 			/* Program name */
149
150
151

} swap_t;

152
153
typedef struct {							/* OS/2 executable */
	char		name[13];					/* Program name */
deuce's avatar
64-bit    
deuce committed
154
	uint32_t	misc;						/* See OS2PGM_* */
155
156
157

} natvpgm_t;

158
159
160
161
162
163
164
165
166
167
168
169
170
171
typedef struct {							/* External Program Information */
	char		code[LEN_CODE+1];			/* Internal code for program */
	char		name[41],					/* Name of External */
				arstr[LEN_ARSTR+1],			/* Access Requirements */
				run_arstr[LEN_ARSTR+1],		/* Run Requirements */
				cmd[LEN_CMD+1], 			/* Command line */
				clean[LEN_CMD+1],			/* Clean-up command line */
				path[LEN_DIR+1];			/* Start-up path */
	uchar		*ar,
				*run_ar;
	uchar		type,						/* What type of external program */
				event,                      /* Execute upon what event */
				textra, 					/* Extra time while in this program */
				maxtime;					/* Maximum time allowed in this door */
deuce's avatar
64-bit    
deuce committed
172
173
	uint16_t	sec;						/* Section this program belongs to */
	uint32_t	cost,						/* Cost to run in credits */
174
				misc;						/* Misc. bits - ANSI, DOS I/O etc. */
175
176
177

} xtrn_t;

178
179
180
181
typedef struct {							/* External Page program info */
	char		cmd[LEN_CMD+1], 			/* Command line */
				arstr[LEN_ARSTR+1];			/* ARS for this chat page */
	uchar		*ar;
deuce's avatar
64-bit    
deuce committed
182
	uint32_t	misc;						/* Intercept I/O */
183
184
185
186

} page_t;


187
188
typedef struct {							/* Chat action set */
	char		name[26];					/* Name of set */
189
190
191

} actset_t;

192
193
194
typedef struct {							/* Chat action info */
	char		cmd[LEN_CHATACTCMD+1],		/* Command word */
				out[LEN_CHATACTOUT+1];		/* Output */
deuce's avatar
64-bit    
deuce committed
195
	uint16_t	actset; 					/* Set this action belongs to */
196
197
198

} chatact_t;

199
200
201
202
203
typedef struct {							/* Gurus */
	char		code[LEN_CODE+1];
	char		name[26],
				arstr[LEN_ARSTR+1];
	uchar		*ar;
204
205
206

} guru_t;

207
208
209
210
211
typedef struct {							/* Chat Channel Information */
	char		code[LEN_CODE+1];
	char		name[26];					/* Channel description */
	char		arstr[LEN_ARSTR+1];			/* Access requirements */
	uchar		*ar;
deuce's avatar
64-bit    
deuce committed
212
	uint16_t	actset, 					/* Set of actions used in this chan */
213
				guru;						/* Guru file number */
deuce's avatar
64-bit    
deuce committed
214
	uint32_t	cost,						/* Cost to join */
215
				misc;						/* Misc. bits CHAN_* definitions */
216
217
218

} chan_t;

219
typedef struct {							/* Modem Result codes info */
deuce's avatar
64-bit    
deuce committed
220
	uint16_t	code,						/* Numeric Result Code */
221
222
223
				cps,    		            /* Average Transfer CPS */
				rate;   		            /* DCE Rate (Modem to Modem) */
	char		str[LEN_MODEM+1];   		/* String to use for description */
224
225
226

} mdm_result_t;

227
228
229
230
231
232
233
234
235
236
237
typedef struct {							/* Transfer Protocol information */
	char		mnemonic;					/* Letter to select this protocol */
	char		name[26],					/* Name of protocol */
				arstr[LEN_ARSTR+1],			/* ARS */
				ulcmd[LEN_CMD+1],			/* Upload command line */
				dlcmd[LEN_CMD+1],			/* Download command line */
				batulcmd[LEN_CMD+1],		/* Batch upload command line */
				batdlcmd[LEN_CMD+1],		/* Batch download command line */
				blindcmd[LEN_CMD+1],		/* Blind upload command line */
				bicmd[LEN_CMD+1];			/* Bidirectional command line */
	uchar		*ar;
deuce's avatar
64-bit    
deuce committed
238
	uint32_t	misc;						/* Miscellaneous bits */
239
240
241

} prot_t;

242
243
244
245
246
typedef struct {	                        /* Extractable file types */
	char		ext[4]; 					/* Extension */
	char		arstr[LEN_ARSTR+1],			/* Access Requirements */
				cmd[LEN_CMD+1]; 			/* Command line */
	uchar		*ar;
247
248
249

} fextr_t;

250
251
252
253
254
typedef struct {							/* Compressable file types */
	char		ext[4]; 					/* Extension */
	char		arstr[LEN_ARSTR+1],			/* Access Requirements */
				cmd[LEN_CMD+1]; 			/* Command line */
	uchar		*ar;
255
256
257

} fcomp_t;

258
259
260
261
262
typedef struct {							/* Viewable file types */
	char		ext[4]; 					/* Extension */
	char		arstr[LEN_ARSTR+1],			/* Access Requirements */
				cmd[LEN_CMD+1]; 			/* Command line */
	uchar		*ar;
263
264
265

} fview_t;

266
267
268
269
270
271
typedef struct {							/* Testable file types */
	char		ext[4]; 					/* Extension */
	char		arstr[LEN_ARSTR+1],			/* Access requirement */
				cmd[LEN_CMD+1], 			/* Command line */
				workstr[41];				/* String to display while working */
	uchar		*ar;
272
273
274

} ftest_t;

275
276
277
278
279
280
typedef struct {							/* Download events */
	char		ext[4];
	char		arstr[LEN_ARSTR+1],			/* Access requirement */
				cmd[LEN_CMD+1], 			/* Command line */
				workstr[41];				/* String to display while working */
	uchar		*ar;
281
282
283

} dlevent_t;

284
285
286
287
288
289
290
enum xedit_soft_cr {						// What to do with so-called "Soft CRs"
	XEDIT_SOFT_CR_UNDEFINED,
	XEDIT_SOFT_CR_EXPAND,
	XEDIT_SOFT_CR_STRIP,
	XEDIT_SOFT_CR_RETAIN
};								

291
292
293
294
295
296
297
typedef struct {							/* External Editors */
	char		code[LEN_CODE+1],
				name[41],					/* Name (description) */
				arstr[LEN_ARSTR+1],			/* Access Requirement */
				lcmd[LEN_CMD+1],			/* Local command line */
				rcmd[LEN_CMD+1];			/* Remote command line */
	uchar		*ar;
deuce's avatar
64-bit    
deuce committed
298
	uint32_t	misc;						/* Misc. bits */
299
	uchar		type;						/* Drop file type */
300
	uint16_t	quotewrap_cols;				/* When word-wrapping quoted text, use this width (if non-zero */
301
	enum xedit_soft_cr soft_cr;				// What to do with so-called "Soft CRs"
302
303
304
305

} xedit_t;


306
307
308
309
310
311
312
313
314
315
316
317
typedef struct {							/* Generic Timed Event */
	char			code[LEN_CODE+1],		/* Internal code */
					days,					/* Week days to run event */
					dir[LEN_DIR+1], 		/* Start-up directory */
					cmd[LEN_CMD+1]; 		/* Command line */
	uint16_t		node,					/* Node to execute event */
					time,					/* Time to run event */
					freq;					/* Frequency to run event */
	uint32_t		misc,					/* Misc bits */
					mdays;					/* Days of month (if non-zero) to run event */
	uint16_t		months;					/* Months (if non-zero) to run event */
	time32_t		last;					/* Last time event ran */
318
319
320

} event_t;

321
322
323
324
325
326
327
typedef struct {							/* QWK Network Hub */
	char		id[LEN_QWKID+1],			/* System ID of Hub */
				*mode,						/* Mode for Ctrl-A codes for ea. sub */
				days,						/* Days to call-out on */
				call[LEN_CMD+1],			/* Call-out command line to execute */
				pack[LEN_CMD+1],			/* Packing command line */
				unpack[LEN_CMD+1];			/* Unpacking command line */
deuce's avatar
64-bit    
deuce committed
328
	uint16_t	time,						/* Time to call-out */
329
330
331
332
				node,						/* Node to do the call-out */
				freq,						/* Frequency of call-outs */
				subs,						/* Number Sub-boards carried */
				*conf;						/* Conference number of ea. */
333
	sub_t**		sub;
deuce's avatar
deuce committed
334
	time32_t	last;						/* Last network attempt */
335
	uint32_t	misc;						/* QHUB_* flags */
336
337
338

} qhub_t;

339
340
341
342
typedef struct {							/* PCRelay/PostLink Hub */
	char		days,						/* Days to call-out on */
				name[11],					/* Site Name of Hub */
				call[LEN_CMD+1];			/* Call-out command line to execute */
deuce's avatar
64-bit    
deuce committed
343
	uint16_t	time,						/* Time to call-out */
344
345
				node,						/* Node to do the call-out */
				freq;						/* Frequency of call-outs */
deuce's avatar
deuce committed
346
	time32_t	last;						/* Last network attempt */
347
348
349
350

} phub_t;


351
352
353
354
355
typedef struct {							/* Command Shells */
	char		code[LEN_CODE+1];
	char		name[41],					/* Name (description) */
				arstr[LEN_ARSTR+1];			/* Access Requirement */
	uchar		*ar;
deuce's avatar
64-bit    
deuce committed
356
	uint32_t	misc;
357
358
359

} shell_t;

360
typedef struct {
361
362
	uchar		key;
	char		cmd[LEN_CMD+1];
363
364
} hotkey_t;

365
366
typedef struct 
{
367
368
	DWORD			size;				/* sizeof(scfg_t) */
	BOOL			prepped;			/* TRUE if prep_cfg() has been used */
369

370
	grp_t			**grp;				/* Each message group */
deuce's avatar
64-bit    
deuce committed
371
	uint16_t		total_grps; 		/* Total number of groups */
372
	sub_t			**sub;				/* Each message sub */
deuce's avatar
64-bit    
deuce committed
373
	uint16_t		total_subs; 		/* Total number of subs */
374
	lib_t			**lib;				/* Each library */
deuce's avatar
64-bit    
deuce committed
375
	uint16_t		total_libs; 		/* Total number of libraries */
376
	dir_t			**dir;				/* Each message directory */
deuce's avatar
64-bit    
deuce committed
377
	uint16_t		total_dirs; 		/* Total number of directories */
378
	txtsec_t 		**txtsec;			/* Each text section */
deuce's avatar
64-bit    
deuce committed
379
	uint16_t		total_txtsecs;		/* Total number of text sections */
380
	xtrnsec_t		**xtrnsec;			/* Each external section */
deuce's avatar
64-bit    
deuce committed
381
	uint16_t		total_xtrnsecs; 	/* Total number of external sections */
382
	xtrn_t			**xtrn; 			/* Each external program */
deuce's avatar
64-bit    
deuce committed
383
	uint16_t		total_xtrns;		/* Total number of externals */
384
	mdm_result_t	*mdm_result;		/* Each Modem Result Code */
deuce's avatar
64-bit    
deuce committed
385
	uint16_t		mdm_results;		/* Total number of Modem Results */
386
	prot_t			**prot; 			/* Each Transfer Protocol */
deuce's avatar
64-bit    
deuce committed
387
	uint16_t		total_prots;		/* Total Transfer Protocols */
388
	fextr_t			**fextr;			/* Each extractable file type */
deuce's avatar
64-bit    
deuce committed
389
	uint16_t		total_fextrs;		/* Total extractable file types */
390
	fcomp_t			**fcomp;			/* Each compressable file type */
deuce's avatar
64-bit    
deuce committed
391
	uint16_t		total_fcomps;		/* Total */
392
	fview_t			**fview;			/* Each veiwable file type */
deuce's avatar
64-bit    
deuce committed
393
	uint16_t		total_fviews;		/* Total viewable file types */
394
	ftest_t			**ftest;			/* Each testable file type */
deuce's avatar
64-bit    
deuce committed
395
	uint16_t		total_ftests;		/* Total testable file types */
396
	xedit_t			**xedit;			/* Each external editor */
deuce's avatar
64-bit    
deuce committed
397
	uint16_t		total_xedits;		/* Total external editors */
398
	qhub_t			**qhub; 			/* QWK network hubs */
deuce's avatar
64-bit    
deuce committed
399
	uint16_t		total_qhubs;		/* Total qwk network hubs */
400
	phub_t			**phub; 			/* PostLink/PCRelay network hubs */
deuce's avatar
64-bit    
deuce committed
401
	uint16_t		total_phubs;		/* Total PostLink/PCRelay hubs */
402
	chan_t			**chan; 			/* Each chat channel */
deuce's avatar
64-bit    
deuce committed
403
	uint16_t		total_chans;		/* Total number of chat channels */
404
405
406
	chatact_t		**chatact;			/* Chat action commands */
	uint16_t		total_chatacts;     /* Total number of action commands */
	actset_t 		**actset;			/* Name of action set */
deuce's avatar
64-bit    
deuce committed
407
	uint16_t		total_actsets;		/* Total number of action sets */
408
	page_t			**page; 			/* External chat page */
deuce's avatar
64-bit    
deuce committed
409
	uint16_t		total_pages;		/* Total number of external pages */
410
	event_t			**event;			/* Timed events */
deuce's avatar
64-bit    
deuce committed
411
	uint16_t		total_events;		/* Total number of timed events */
412
	dlevent_t		**dlevent;			/* Download events */
deuce's avatar
64-bit    
deuce committed
413
	uint16_t		total_dlevents; 	/* Total download events */
414
	faddr_t			*faddr; 			/* FidoNet addresses */
deuce's avatar
64-bit    
deuce committed
415
	uint16_t		total_faddrs;		/* Total number of fido addresses */
416
	swap_t			**swap; 			/* Swapping externals */
deuce's avatar
64-bit    
deuce committed
417
	uint16_t		total_swaps;		/* Total number of non-swap xtrns */
418
	natvpgm_t 		**natvpgm;			/* Native (32-bit) Programs */
deuce's avatar
64-bit    
deuce committed
419
	uint16_t		total_natvpgms; 	/* Total number of native pgms */
420
	guru_t			**guru; 			/* Gurus */
deuce's avatar
64-bit    
deuce committed
421
	uint16_t		total_gurus;		/* Total number of guru files */
422
	shell_t			**shell;			/* Command shells */
deuce's avatar
64-bit    
deuce committed
423
	uint16_t		total_shells;		/* Total number of command shells */
424
	hotkey_t		**hotkey;			/* Global hot keys */
deuce's avatar
64-bit    
deuce committed
425
	uint16_t		total_hotkeys;		/* Total number of global hot keys */
426

427
										/* COM port registers: */
deuce's avatar
64-bit    
deuce committed
428
	uint16_t		com_base,			/* COM base address */
429
					com_irq;			/* irq line number	   */
deuce's avatar
64-bit    
deuce committed
430
	uint32_t		com_rate;			/* DTE rate in bps	   */
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
	char  			com_port;			/* Number of COM port  */

										/* Modem command strings */
	char 			mdm_init[64],		/* Initialization */
					mdm_spec[64],		/* Special Initialization */
					mdm_term[64],		/* Terminal Initialization String */
					mdm_dial[64],		/* Dial */
					mdm_offh[64],		/* Off hook */
					mdm_answ[64],		/* Answer */
					mdm_hang[64];		/* Hang-up */
	uint32_t		mdm_misc;			/* Misc bits used for flags */
	uint16_t		mdm_reinit; 		/* Modem reinitialization minute count */
	uint16_t		mdm_ansdelay;		/* Modem seconds to delay after answer */
	uchar			mdm_rings;			/* Rings to wait till answer */

	int32_t 		sys_misc;			/* System Misc Settings */
	char 			sys_pass[41];		/* System Pass Word */
	char 			sys_name[41];		/* System Name */
	char 			sys_id[LEN_QWKID+1];/* System ID for QWK Packets */
	char 			sys_psname[13]; 	/* PostLink and PCRelay Site Name */
	uint32_t		sys_psnum;			/* PostLink and PCRelay Site Number */
	char 			sys_inetaddr[128];	/* System's internet address */
	char 			sys_location[41];	/* System Location */
	int16_t			sys_timezone;		/* Time Zone of BBS */
	char 			sys_daily[LEN_CMD+1];	   /* Daily event */
	char 			sys_logon[LEN_CMD+1];	   /* Logon event */
	char 			sys_logout[LEN_CMD+1];	   /* Logoff event */
	uint16_t		sys_pwdays; 		/* Max days between password change */
	uint16_t		sys_deldays;		/* Days to keep deleted users */
	uint16_t		sys_autodel;		/* Autodeletion after x days inactive */
	uint16_t		sys_nodes;			/* Number of nodes on system */
	char			sys_op[41];         /* Name of system operator */
	char			sys_guru[41];       /* Name of system guru */
	uchar			sys_exp_warn;		/* Days left till expire to notify */
	char 			sys_def_stat;		/* Default status line */
	char 			sys_phonefmt[LEN_PHONE+1];	/* format of phone numbers */
	uint16_t		sys_lastnode;		/* Last displayable node number */
	uint16_t		sys_autonode;		/* First node number for autonode */
	char			sys_chat_arstr[LEN_ARSTR+1];	/* chat override */
	uchar *			sys_chat_ar;

	int32_t			msg_misc;			/* Global Message-Related Settings (upper 16-bits default to on) */
	int32_t 		file_misc;			/* File Misc Settings */
	int32_t			xtrn_misc;			/* External Programs Misc Settings */

	char			node_comspec[LEN_CMD+1];	/* DOS COMMAND.COM to use */
	char			node_editor[LEN_CMD+1]; /* Local text editor command line to use */
	char			node_viewer[LEN_CMD+1]; /* Local text viewer command line */
	char			node_daily[LEN_CMD+1];	/* Name of node's daily event */
	uchar			node_scrnlen;		/* Length of screen (rows) */
	uchar			node_scrnblank; 	/* Min of inactivity for blank screen */
	uint32_t		node_misc;			/* Misc bits for node setup */
	uint16_t		node_valuser;		/* User validation mail goes to */
	uint16_t		node_ivt;			/* Time-slice APIs */
	uchar			node_swap;			/* Swap types allowed */
	char			node_swapdir[LEN_DIR+1];	/* Swap directory */
	uint16_t		node_minbps;		/* Minimum connect rate of this node */
	uint16_t		node_num;			/* Local node number of this node */
	char			node_phone[13], 	/* Phone number of this node */
490
					node_name[41];     	/* Name of this node */
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
	char			node_arstr[LEN_ARSTR+1]; /* Node minimum requirements */
	uchar			*node_ar;
	uint32_t		node_cost;			/* Node cost to call - in credits */
	uchar			node_dollars_per_call;	/* Billing Node Dollars Per Call */
	uint16_t		node_sem_check; 	/* Seconds between semaphore checks */
	uint16_t		node_stat_check;	/* Seconds between statistic checks */

	char			new_install;		/* This is a brand new installation */
	char			new_pass[41];		/* New User Password */
	char			new_magic[21];		/* New User Magic Word */
	char			new_sif[LEN_SIFNAME+1]; 		/* New User SIF Questionaire */
	char			new_sof[LEN_SIFNAME+1]; 		/* New User SIF Questionaire output SIF */
	char			new_level;			/* New User Main Level */
	uint32_t		new_flags1; 		/* New User Main Flags from set #1*/
	uint32_t		new_flags2; 		/* New User Main Flags from set #2*/
	uint32_t		new_flags3; 		/* New User Main Flags from set #3*/
	uint32_t		new_flags4; 		/* New User Main Flags from set #4*/
	uint32_t		new_exempt;			/* New User Exemptions */
	uint32_t		new_rest;			/* New User Restrictions */
	uint32_t		new_cdt;			/* New User Credits */
	uint32_t		new_min;			/* New User Minutes */
	char			new_xedit[LEN_CODE+1];		/* New User Default Editor */
	uint16_t		new_shell;			/* New User Default Command Set */
	uint32_t		new_misc;			/* New User Miscellaneous Defaults */
	uint16_t		new_expire; 		/* Expiration days for new user */
	uchar			new_prot;			/* New User Default Download Protocol */
rswindell's avatar
rswindell committed
517
	uint16_t		new_msgscan_init;	/* Uew User new-scan pointers initialized to msgs this old (in days) */
518
	uint16_t		guest_msgscan_init;	/* Guest new-scan pointers initialized to msgs this old (in days) */
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
	char 			val_level[10];		/* Validation User Main Level */
	uint32_t		val_flags1[10]; 	/* Validation User Flags from set #1*/
	uint32_t		val_flags2[10]; 	/* Validation User Flags from set #2*/
	uint32_t		val_flags3[10]; 	/* Validation User Flags from set #3*/
	uint32_t		val_flags4[10]; 	/* Validation User Flags from set #4*/
	uint32_t		val_exempt[10]; 	/* Validation User Exemption Flags */
	uint32_t		val_rest[10];		/* Validation User Restriction Flags */
	uint32_t		val_cdt[10];		/* Validation User Additional Credits */
	uint16_t		val_expire[10]; 	/* Validation User Extend Expire #days */
	uchar			level_expireto[100];
	uint16_t		level_timepercall[100], /* Security level settings */
					level_timeperday[100],
					level_callsperday[100],
					level_linespermsg[100],
					level_postsperday[100],
					level_emailperday[100];
	int32_t			level_freecdtperday[100];
	int32_t			level_misc[100];
	char 			expired_level;	/* Expired user's ML */
	uint32_t		expired_flags1; /* Flags from set #1 to remove when expired */
	uint32_t		expired_flags2; /* Flags from set #2 to remove when expired */
	uint32_t		expired_flags3; /* Flags from set #3 to remove when expired */
	uint32_t		expired_flags4; /* Flags from set #4 to remove when expired */
	uint32_t		expired_exempt; /* Exemptions to remove when expired */
	uint32_t		expired_rest;	/* Restrictions to add when expired */
	uint16_t		min_dspace; 	/* Minimum amount of free space for uploads (in kilobytes) */
	uint16_t		max_batup;		/* Max number of files in upload queue */
	uint16_t		max_batdn;		/* Max number of files in download queue */
	uint16_t		max_userxfer;	/* Max dest. users of user to user xfer */
	uint32_t		max_minutes;	/* Maximum minutes a user can have */
	uint32_t		max_qwkmsgs;	/* Maximum messages per QWK packet */
550
	uint16_t		max_qwkmsgage;	/* Maximum age (in days) of QWK messages to be imported */
551
	uint16_t		max_spamage;	/* Maximum age (in days) of SPAM-tagged messages */
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
	char			preqwk_arstr[LEN_ARSTR+1]; /* pre pack QWK */
	uchar*			preqwk_ar;
	uint16_t		cdt_min_value;	/* Minutes per 100k credits */
	uint32_t		cdt_per_dollar; /* Credits per dollar */
	uint16_t		cdt_up_pct; 	/* Pct of credits credited on uploads */
	uint16_t		cdt_dn_pct; 	/* Pct of credits credited per download */
	char		 	node_dir[LEN_DIR+1];
	char		 	ctrl_dir[LEN_DIR+1];
	char			data_dir[LEN_DIR+1];
	char			text_dir[LEN_DIR+1];
	char			exec_dir[LEN_DIR+1];
	char			temp_dir[LEN_DIR+1];
	char			mods_dir[LEN_DIR+1];
	char			logs_dir[LEN_DIR+1];
	char			node_path[MAX_NODES][LEN_DIR+1]; /* paths to all node dirs */
rswindell's avatar
rswindell committed
567
568
569
	uint			sysop_dir;			/* Destination for uploads to sysop */
	uint			user_dir;			/* Directory for user to user xfers */
	uint			upload_dir; 		/* Directory where all uploads go */
570
571
572
573
574
575
576
577
578
579
580
581
	char **			altpath;			/* Alternate paths for files */
	uint16_t		altpaths;			/* Total number of alternate paths */
	uint16_t		leech_pct;			/* Leech detection percentage */
	uint16_t		leech_sec;			/* Minimum seconds before possible leech */
	uint32_t		netmail_cost;		/* Cost in credits to send netmail */
	char 			netmail_dir[LEN_DIR+1];    /* Directory to store netmail */
	uint16_t		netmail_misc;		/* Miscellaneous bits regarding netmail */
	uint32_t		inetmail_misc;		/* Miscellaneous bits regarding inetmail */
	uint32_t		inetmail_cost;		/* Cost in credits to send Internet mail */
	char			smtpmail_sem[LEN_DIR+1];	/* Inbound Internet Mail semaphore file */
	char			inetmail_sem[LEN_DIR+1];	/* Outbound Internet Mail semaphore file */
	char			echomail_dir[LEN_DIR+1];	/* Directory to store echomail in */
582
	char 			fidofile_dir[LEN_DIR+1];	/* Directory where inbound files go (deprecated and not used) */
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
	char			netmail_sem[LEN_DIR+1];		/* FidoNet NetMail semaphore */
	char 			echomail_sem[LEN_DIR+1];	/* FidoNet EchoMail semaphore  */
	char		 	origline[51];		/* Default EchoMail origin line */
	char			qnet_tagline[128];	/* Default QWK Network tagline */
	int32_t 		uq; 					/* User Questions */
	uint32_t		mail_maxcrcs;			/* Dupe checking in e-mail */
	uint16_t		mail_maxage;			/* Maximum age of e-mail */
	faddr_t			dflt_faddr; 			/* Default FidoNet address */
	char			logon_mod[LEN_MODNAME+1];			/* Logon module */
	char			logoff_mod[LEN_MODNAME+1];			/* Logoff module */
	char			newuser_mod[LEN_MODNAME+1]; 		/* New User Module */
	char			login_mod[LEN_MODNAME+1];			/* Login module */
	char			logout_mod[LEN_MODNAME+1];			/* Logout module */
	char			sync_mod[LEN_MODNAME+1];			/* Synchronization module */
	char			expire_mod[LEN_MODNAME+1];			/* User expiration module */
598
	char			textsec_mod[LEN_MODNAME+1];			/* Text section module */
599
600
601
	char			readmail_mod[LEN_CMD+1];	/* Reading mail module */
	char			scanposts_mod[LEN_CMD+1];	/* Scanning posts (in a single sub) module */
	char			scansubs_mod[LEN_CMD+1];	/* Scanning sub-boards module */
602
	char			listmsgs_mod[LEN_CMD+1];	/* Listing messages module */
603
	char			scfg_cmd[LEN_CMD+1];	/* SCFG command line - unused! */
604
605
606
607
	uchar			smb_retry_time; 		/* Seconds to retry on SMBs */
	uint16_t		sec_warn;				/* Seconds before inactivity warning */
	uint16_t		sec_hangup; 			/* Seconds before inactivity hang-up */

rswindell's avatar
rswindell committed
608
	uint* 			color;					/* Different colors for the BBS */
609
610
611
612
613
614
615
616
	uint32_t		total_colors;
	uint32_t		ctrlkey_passthru;		/* Bits represent control keys NOT handled by inkey() */

	char			wfc_cmd[10][LEN_CMD+1];    /* 0-9 WFC DOS commands */
	char			wfc_scmd[12][LEN_CMD+1];   /* F1-F12 WFC shrinking DOS commands */

	uint16_t		user_backup_level;
	uint16_t		mail_backup_level;
617
	char**			text;
618

619
	// Run-time state information (not configuration)
620
621
	int				tls_certificate;

622
623
} scfg_t;

624
#endif /* Don't add anything after this line */