home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Professional
/
OS2PRO194.ISO
/
os2
/
com
/
bbs
/
lora
/
lora234s.exe
/
LORA.H
< prev
next >
Wrap
C/C++ Source or Header
|
1993-10-17
|
43KB
|
898 lines
/*
LoraBBS (DOS / OS2) Ver. 2.33
Copyright (c) 1989, 1990, 1991, 1992, 1993 by Marco Maccaferri.
All rights reserved.
Structure definitions for release
You may use those structures at your own risk. The author cannot guarantee
that this structures are maintained in all future versions of the program.
You can freely (and you are encouraged on that) distribute this file
without limitations.
You can contact the autor at one of the following address:
Marco Maccaferri
BBS: 39-51-6331730 (2:332/402)
*/
typedef unsigned short bit;
typedef unsigned short word;
typedef unsigned char byte;
typedef long dword;
struct _stamp
{
unsigned short date; /* (year - 1980) * 512 + month * 32 + day */
unsigned short time; /* hour * 2048 + minute * 32 + second/2 */
};
struct _lastread
{
word area; /* Message area number */
short msg_num; /* Last message read */
};
#define MAXLREAD 50
#define MAXDLREAD 20
#define MAXFLAGS 4
#define MAXCOUNTER 10
struct _usridx /* Structure for the USERS.IDX file */
{
long id; /* User-ID is the 32 bit CRC of the user's name */
};
struct _usr /* Structure for the USERS.BBS file */
{
char name[36]; /* User's name */
char handle[36]; /* User's handle */
char city[26]; /* User's city */
struct _lastread lastread[MAXLREAD]; /* Last messages read for the last
MAXLREAD message areas (used for
QWK selections) */
struct _lastread lastread2[MAXDLREAD]; /* Last messages read for the last
MAXDLREAD message areas */
char pwd[16]; /* User's password (crypted) (*) */
dword times; /* Times the user has called the system */
word nulls; /* Number of nulls (0) sent after a CR/LF */
word msg; /* User's last message area visited */
bit avatar :1; /* 1=Avatar color/graphics enabled */
bit color :1; /* 1=Color codes will be sent */
bit scanmail :1; /* 1=Check for mail at logon */
bit use_lore :1; /* 0=Use the Ansi full screen editor */
bit more :1; /* 1=Pause at the end of each page */
bit ansi :1; /* 1=Ansi color/graphics enabled */
bit kludge :1; /* 1=Display the ^a kludge lines */
bit formfeed :1; /* 1=Screen clearing codes will be sent */
bit hotkey :1; /* 1=Hot keyed menus */
bit tabs :1; /* 0=tabs (9) are converted to spaces */
bit full_read :1; /* 1=Full screen message wiewer */
bit badpwd :1; /* 1=Bad password for the last call */
bit usrhidden :1; /* 1=The user is hidden from the users list */
bit nokill :1; /* 1=Don't kill this user */
bit ibmset :1; /* 1=Character > 127 will be sent */
bit deleted :1; /* 1=User is deleted from the list */
byte language; /* User's language number */
byte priv; /* User's privilege level */
long flags; /* Flags settings */
char ldate[20]; /* User's last call date */
short time; /* Time the user has spent on-line today */
dword upld; /* User's total kbytes uploaded */
dword dnld; /* User's total kbytes downloaded */
word dnldl; /* Users' kbytes downloaded today */
word n_upld; /* Number of files uploaded */
word n_dnld; /* Number of files downloaded */
word files; /* User's last file area visited */
word credit; /* Netmail credit */
word dbase; /* <reserved> (**) */
char signature[58]; /* User's personal signature */
char voicephone[20]; /* User's voice telephone number */
char dataphone[20]; /* User's data telephone number */
char birthdate[10]; /* User's date of birth */
char expiredate[10]; /* Expiration date */
char firstdate[20]; /* User's first call date and time */
char lastpwdchange[10];/* User's last password change date */
long ptrquestion; /* Pointer to the answer questionaire file */
byte len; /* User's screen length */
byte width; /* User's screen width */
long id; /* This is the 32 bit CRC of the user's name */
short msgposted; /* Number of messages posted */
char comment[80]; /* Comment for advanced user editors */
byte help; /* <reserved> (**) */
word baud_rate; /* Last call connection speed */
byte counter[MAXCOUNTER]; /* General pourpouse counters */
word chat_minutes; /* Minutes used today to chat with Sysop */
bit xfer_prior:1; /* 1=No download limits */
bit quiet :1; /* <reserved> (**) */
bit nerd :1; /* 1=Yell don't bell for this user */
bit donotdisturb:1; /* <reserved> (**) */
bit robbed :1; /* <reserved> (**) */
bit novote :1; /* <reserved> (**) */
char protocol; /* User's default file trasnfer protocol */
char archiver; /* User's default compressor */
struct _ovr_class_rec {
short max_time; /* Minutes per day */
short max_call; /* Minutes per call */
short max_dl; /* Download limit */
word ratio; /* Download/Upload ratio */
word min_baud; /* Minimum logon baud */
word min_file_baud; /* Minimum download bad */
word start_ratio; /* Start ratio */
} ovr_class;
short msg_sig; /* Default message group */
word account; /* Account for time bank */
word f_account; /* Account for file bank */
short votes; /* Holds votes received */
short file_sig; /* Default file group */
char extradata[290]; /* Reserved for future use */
/* Total=1024 bytes */
};
#define SIZEOF_MSGAREA 512
#define SIZEOF_FILEAREA 640
struct _sys /* Structure for the internal system records.
The files SYSMSG.DAT and SYSFILE.DAT
are composed by the respective portions of this
structure */
{
/* Begin of the SYSMSG.DAT file --------------------------------------- */
char msg_name[70]; /* Message area name */
short msg_num; /* Message area number */
char msg_path[40]; /* Message area path */
char origin[56]; /* Echomail origin line */
bit echomail :1; /* 1=Echomail area */
bit netmail :1; /* 1=Netmail area */
bit public :1; /* 1=Public message allowed */
bit private :1; /* 1=Private message allowed */
bit anon_ok :1; /* 1=Use the user's handle in the from field */
bit no_matrix :1; /* <reserved> (**) */
bit squish :1; /* Squish<tm> message area */
bit kill_unlisted :1; /* <reserved> (**) */
word msg_sig; /* Message area's group */
char echotag[32]; /* Echotag name */
word pip_board; /* Pip-base board number */
byte quick_board; /* QuickBBS board number */
byte msg_priv; /* Minimum level to access this area */
long msg_flags; /* Flags settings */
byte write_priv; /* Minimum level to write messages */
long write_flags; /* Flags settings */
byte use_alias; /* Use alias # with this area */
short max_msgs; /* Maximum number of messages in this area */
short max_age; /* Max age of messages (days) */
short age_rcvd; /* Max age of received messages (days) */
char forward1[80]; /* Forward node list 1/3 */
char forward2[80]; /* Forward node list 2/3 */
char forward3[80]; /* Forward node list 3/3 */
bit msg_restricted :1; /* Access restricted to message area's group */
bit passthrough :1; /* Pass-through area */
byte areafix; /* Areafix access level for that area */
char qwk_name[14]; /* Short name used by the QWK mail packer */
char filler1[32];
/* End of the SYSMSG.DAT file ----------------------------------------- */
/* Begin of the SYSFILE.DAT file -------------------------------------- */
char file_name[70]; /* File area name */
short file_num; /* File area number */
char uppath[40]; /* Upload path */
char filepath[40]; /* Download path */
char filelist[50]; /* CD-ROM list file name */
bit freearea :1; /* Free download limit */
bit norm_req :1; /* <reserved> (**) */
bit know_req :1; /* <reserved> (**) */
bit prot_req :1; /* <reserved> (**) */
bit nonews :1; /* <reserved> (**) */
bit no_global_search :1; /* 1=Exclude from global searches */
bit no_filedate :1; /* <reserved> (**) */
bit file_restricted :1; /* Access restricted to file area's group */
word file_sig; /* <reserved> (**) */
byte file_priv; /* Minimum level to access this area */
long file_flags; /* Flags settings */
byte download_priv; /* Minimum level to download files */
long download_flags; /* Flags settings */
byte upload_priv; /* Minimum level to upload files */
long upload_flags; /* Flags settings */
byte list_priv; /* Minimum level to see the file titles */
long list_flags; /* Flags settings */
char filler2[10];
char short_name[13]; /* Area's short name */
char filler3[8];
char tic_tag[32]; /* TIC processor area's tag name */
char tic_forward1[80]; /* Forward node list (1/3) */
char tic_forward2[80]; /* Forward node list (2/3) */
char tic_forward3[80]; /* Forward node list (3/3) */
byte tic_level; /* TIC area's level */
long tic_flags; /* TIC area's flags */
char filler4[107];
/* End of the SYSFILE.DAT file ---------------------------------------- */
};
struct _sys_idx /* Structure for the SYSMSG.IDX, SYSFILE.IDX files */
{
byte priv; /* Area's privilege level */
byte flags[MAXFLAGS]; /* Flags settings */
char key[13]; /* Area's name */
word area; /* Area absolute number */
word sig; /* Area group number */
};
/* Privilege levels definitions */
#define TWIT 0x10
#define DISGRACE 0x20
#define LIMITED 0x30
#define NORMAL 0x40
#define WORTHY 0x50
#define PRIVIL 0x60
#define FAVORED 0x70
#define EXTRA 0x80
#define CLERK 0x90
#define ASSTSYSOP 0xA0
#define SYSOP 0xB0
#define HIDDEN 0xC0
struct _daystat { /* Record for statistics used in SYSINFO.DAT */
long timestamp; /* Time-stamp check */
long incalls; /* Number of inbound calls */
long outcalls; /* Number of outbound calls */
long humancalls; /* Number of inbound human calls */
long filesent; /* Number of files sent */
long bytesent; /* Number of bytes sent */
long filerequest; /* Number of file requests received */
long filereceived; /* Number of files received */
long bytereceived; /* Number of bytes received */
long completed; /* Number of completed calls */
long failed; /* Number of failed calls (including cost) */
long cost; /* Number of cost failed calls */
long emailreceived; /* Number of netmail messages received */
long emailsent; /* Number of netmail messages sent */
long echoreceived; /* Number of echomail messages received */
long echosent; /* Number of echomail messages sent */
long dupes; /* Number of dupe echomail messages received */
long bad; /* Number of bad echomail messages received */
long exectime; /* Seconds of system activity */
long idletime; /* Seconds of idle time */
long interaction; /* Seconds of operator's interaction */
long echoscan; /* Seconds spent during echomail processing */
long inconnects; /* Seconds spent on inbound calls */
long outconnects; /* Seconds spent on outbound calls */
long humanconnects; /* Seconds spent on human calls */
};
struct _sysinfo /* Structure for the SYSINFO.DAT file */
{
long stamp_up; /* <reserved> (**) */
long stamp_down; /* <reserved> (**) */
long quote_position; /* Last position in the quote file */
unsigned long total_calls; /* Total system calls */
char pwd[40]; /* Keyboard password (crypted) (*) */
struct _daystat today; /* Dayly system statistics */
struct _daystat yesterday; /* Dayly system statistics (yesteday) */
struct _daystat week; /* Weekly system statistics */
struct _daystat month; /* Monthly system statistics */
struct _daystat year; /* Yearly system statistics */
};
#define BROWSING 1
#define UPLDNLD 2
#define READWRITE 3
#define DOOR 4
#define CHATTING 5
#define QUESTIONAIRE 6
struct _useron /* Structure for the USERON.BBS file */
{
char name[36]; /* User's name */
short line; /* Task number currently on */
word baud; /* Baud rate */
char city[26]; /* User's city */
bit donotdisturb: 1; /* Do not disturb flag */
bit priv_chat : 1; /* <reserved> (**) */
short status; /* User's status */
short cb_channel; /* CB Chat System channel */
};
struct _lastcall /* Structure for the LASTCALL.BBS file */
{
short line; /* Task number */
char name[36]; /* User's name */
char city[26]; /* User's city */
word baud; /* Baud rate */
long times; /* Times the user has called the system */
char logon[6]; /* Logon time HH:MM */
char logoff[6]; /* Logoff time HH:MM */
long timestamp; /* Logout time-stamp (binary format) */
};
struct _menu_header /* Header of the *.MNU files
Menus are structured as follow:
<_menu_header>
<_cmd> \
...... |- _menu_header.n_elem
<_cmd> /
<_menu_header>
<_cmd> \
...... |- _menu_header.n_elem
<_cmd> /
..............
*/
{
char name[14]; /* Menu' name */
short n_elem; /* Number of struct _cmd records for this menu */
};
struct _cmd /* Structure for the *.MNU files */
{
char name[80]; /* User's display */
byte priv; /* Minimum level for this command */
byte flags[MAXFLAGS]; /* Minimum flags setting */
short flag_type; /* Type of command */
bit automatic: 1; /* Automatic execution */
bit dummy: 1; /* <reserved> (**) */
bit first_time:1; /* Executed only the first time the menu' is read */
byte color; /* Normal background and foreground colors */
byte first_color; /* Hilight background and foreground colors */
byte hotkey; /* Key that activate the command */
char argument[50]; /* Optional argument list */
};
struct _mail /* Structure for the MSGTOIDX.DAT file */
{
long to; /* Recipient's name 32-bit CRC */
word area; /* Message area number */
word msg_num; /* Message number */
};
struct _lorainfo /* Structure for the LORAINFO.Txx file.
xx=Task number in two digit hex number */
{
struct _usr usr; /* The complete user record */
word baud; /* The current baud rate */
short port; /* The current comm port number */
short time; /* Minutes remaining for this call */
char log[40]; /* Log file name */
char system[80]; /* System name */
char sysop[36]; /* Sysop's name */
word task; /* Current task number */
word max_baud; /* Maximum modem baud rate */
long posuser; /* User's position in the user file */
word yelling; /* Number of times the user has requested
for a chat */
word downloadlimit; /* User's download limit */
short max_time; /* User's maximum on line time in 24h */
short max_call; /* User's maximum on line time for call */
word ratio; /* Download/upload ratio limit (0=No limit) */
word min_baud; /* Minimum baud rate for user's level */
word min_file_baud; /* Minimum baud rate for file transfers */
bit wants_chat :1; /* 1=The user has request a chat */
bit mnp_connect :1; /* 1=MNP connection */
bit keylock :1; /* 1=The keyboard is locked */
char logindate[20]; /* User's login date */
char password[40]; /* Keyboard password (crypted) (*) */
unsigned long total_calls; /* Total system calls */
word start_ratio; /* User's ratio start value */
char from[36]; /* From field of new messages */
char to[36]; /* To field of new messages */
char subj[72]; /* Subject field of new messages */
char msgdate[20]; /* Date field of new messages */
word attrib; /* Attribute field of new messages */
};
struct _bbslist /* Structure for the BBSLIST.BBS file */
{
char bbs_name[40]; /* System's name */
char sysop_name[36]; /* Sysop's name */
char number[20]; /* Telephone number */
word baud; /* Maximum baud rate */
char open_times[12]; /* Open hours */
char net[16]; /* Network address */
char bbs_soft[16]; /* Software used */
char other[60]; /* Other informations */
char extra_space[100]; /* Reserved for future use */
};
#define CONFIG_VERSION 2
#define MAXNL 10
#define MAXPACKER 10
#define MAX_ALIAS 20
#define MAX_LANG 20
#define DAY_SUNDAY 0x01
#define DAY_MONDAY 0x02
#define DAY_TUESDAY 0x04
#define DAY_WEDNESDAY 0x08
#define DAY_THURSDAY 0x10
#define DAY_FRIDAY 0x20
#define DAY_SATURDAY 0x40
#define DAY_UNUSED 0x80
struct _alias
{
short zone; /* Zone number */
short net; /* Net number */
short node; /* Node number */
short point; /* Point number */
word fakenet; /* Fake net number */
char *domain; /* <reserved> (**) */
};
struct class_rec
{
short priv; /* Access level */
short max_time; /* Dayly time limit */
short max_call; /* Per call time limit */
short max_dl; /* Default download limit */
short dl_300; /* Speed specific download limit */
short dl_1200; /* Speed specific download limit */
short dl_2400; /* Speed specific download limit */
short dl_9600; /* Speed specific download limit */
word ratio; /* Download/Upload ratio */
word min_baud; /* Minimum login speed */
word min_file_baud; /* Minimum file transfer speed */
word start_ratio; /* Start ratio after some downloads */
};
struct _configuration /* Structure for the CONFIG.DAT file */
{
short version; /* Configuration file version */
char sys_path[40]; /* System directory */
char log_name[40]; /* Log file name */
char log_style; /* Type of log: 0=Verbose, 1=Short */
char sched_name[40]; /* Scheduler file name */
char user_file[40]; /* User's file base name (w/o extension) */
char norm_filepath[40]; /* Unknow nodes inbound */
char know_filepath[40]; /* Know nodes inbound */
char prot_filepath[40]; /* Protected nodes inbound */
char outbound[40]; /* Outbound base directory */
char netmail_dir[40]; /* Netmail directory */
char bad_msgs[40]; /* Bad messages directory */
char dupes[40]; /* Dupe messages directory */
char quick_msgpath[40]; /* QuickBBS (Hudson) message base path */
char pip_msgpath[40]; /* Pip-base path */
char ipc_path[40]; /* Temporary files storage */
char net_info[40]; /* Nodelist directory */
char glob_text_path[40]; /* Text files path */
char menu_path[40]; /* Menu/Languages path */
char flag_dir[40]; /* Activity flags directory */
long keycode; /* Registration key code (<2.33) */
char about[40]; /* 'ABOUT' file to send */
char files[40]; /* 'FILES' file to send */
short norm_max_kbytes; /* Unknow nodes f/req. kbytes limit */
short prot_max_kbytes; /* Protected nodes f/req. kbytes limit */
short know_max_kbytes; /* Know nodes f/req. kbytes limit */
short norm_max_requests; /* Unknow nodes f/req. files limit */
short prot_max_requests; /* Protected nodes f/req. files limit */
short know_max_requests; /* Know nodes f/req. files limit */
char def_pack; /* Default packer */
char enterbbs[70]; /* 'Press ESC to enter the BBS' */
char banner[70]; /* Initial mailer banner */
char mail_only[70]; /* Mail only banner */
short com_port; /* Serial port (0-based) */
short speed; /* Modem initial speed */
char modem_busy[20]; /* Modem busy command */
char dial[20]; /* Modem default dial command */
char init[40]; /* Modem initialization command */
char term_init[40]; /* Terminal mode initialization command */
char answer[20]; /* Answer command */
struct _altern_dial { /* Alternative dialing commands */
char prefix[20]; /* Prefix command */
char suffix[20]; /* Suffix command */
} altdial[10];
bit lock_baud :1; /* 1=Lock serial port to speed baud */
bit ansilogon :2; /* 0=No ansi at logon, 1=Detect, 2=Ask, 3=Yes */
bit birthdate :1; /* 1=Ask for birthdate */
bit voicephone :1; /* 1=Ask for voice phone */
bit dataphone :1; /* 1=Ask for data phone */
bit emsi :1; /* 1=EMSI sessions enabled */
bit ibmset :1; /* 1=Ask for IBM set display */
bit wazoo :1; /* 1=WAZOO sessions enabled */
bit msgtrack :1; /* <reserved> (**) */
bit keeptransit :1; /* 1=Keep in-transit netmail */
bit hslink :1; /* 1=HS-Link enabled */
bit puma :1; /* 1=Puma enabled */
bit secure :1; /* 1=Check import messages */
bit janus :1; /* 1=Janus protocol enabled */
bit terminal :1; /* 1=Null modem connections */
bit mono_attr :1; /* 1=Use monochrome attributes */
bit no_direct :1; /* 1=Use BIOS screen writes */
bit snooping :1; /* 1=Snoop user on-line */
bit snow_check :1; /* 1=CGA snow check */
bit unpack_norm :1; /* <reserved> (**) */
bit unpack_know :1; /* <reserved> (**) */
bit unpack_prot :1; /* <reserved> (**) */
short blank_timer; /* Screen blanker timeout in minutes */
struct _language { /* Languages available for the users */
char txt_path[30]; /* Text files directory */
char descr[24]; /* Description */
char basename[10]; /* Base file name */
} language[MAX_LANG];
char sysop[36]; /* Sysop name */
char system_name[50]; /* System name */
char location[50]; /* System's location */
char phone[32]; /* System's phone number */
char flags[50]; /* System's flags */
struct _alias alias[MAX_ALIAS]; /* Network addresses */
char newareas_create[50]; /* Nodes that can create new areas */
char newareas_link[50]; /* Nodes that are linked to new areas */
short line_offset; /* Task number */
short min_calls; /* <reserved> (**) */
short vote_limit; /* <reserved> (**) */
short target_up; /* <reserved> (**) */
short target_down; /* <reserved> (**) */
byte vote_priv; /* <reserved> (**) */
byte max_readpriv; /* <reserved> (**) */
word speed_graphics; /* Speed for ANSI/Avatar graphics */
byte aftercaller_exit; /* After caller exit errorlevel */
byte aftermail_exit; /* After mail exit errorlevel */
short max_connects; /* <reserved> (**) */
short max_noconnects; /* <reserved> (**) */
byte logon_level; /* New users level */
long logon_flags; /* New users flags */
char areachange_key[4]; /* Hotkeys for the change area command */
char dateformat[20]; /* Format of the date fields */
char timeformat[20]; /* Format fo the time fields */
char external_editor[50]; /* External BBS message editor */
struct class_rec class[12]; /* Access level definitions */
char local_editor[50]; /* Local message editor */
char QWKDir[40]; /* QWK mail packer work directory */
char BBSid[10]; /* QWK board name */
word qwk_maxmsgs; /* Maximum number of messages for QWK packets */
char galileo[30]; /* Clocksynch phone number */
char norm_okfile[40]; /* Unknow request list */
char know_okfile[40]; /* Know request list */
char prot_okfile[40]; /* Protected request list */
char reg_name[36]; /* <reserved> (**) */
long betakey; /* <unused> */
struct _packers { /* Mail packers */
char id[10]; /* Short name */
char packcmd[30]; /* Pack commands */
char unpackcmd[30]; /* unpack commands */
} packers[10];
struct _nl { /* Nodelist database */
char list_name[14]; /* Nodelist base name */
char diff_name[14]; /* Nodediff base name */
char arc_name[14]; /* <reserved> (**) */
} nl[10];
bit ansigraphics :2; /* 0=No Ansi, 1=Yes, 2=Ask */
bit avatargraphics :2; /* 0=No Avatar, 1=Yes, 2=Ask */
bit hotkeys :2; /* 0=No hotkeyed menu, 1=Yes, 2=Ask */
bit screenclears :2; /* 0=No screen clears, 1=Yes, 2=Ask */
bit newfilescheck :2; /* 0=No new files check, 1=Yes, 2=Ask */
bit moreprompt :2; /* 0=No more prompt, 1=Yes, 2=Ask */
bit mailcheck :2; /* 0=No mail check, 1=Yes, 2=Ask */
bit fullscrnedit :2; /* 0=No full screen editor, 1=Yes, 2=Ask */
bit autozmodem :1; /* Terminal mode auto zmodem download */
bit avatar :1; /* Terminal mode Avatar emulation */
bit ask_protocol :1; /* 1=Ask default protocol */
bit ask_packer :1; /* 1=Ask default packer */
short rookie_calls; /* Number of calls for new users to be a rookie */
char pre_import[40]; /* Pre import batch */
char after_import[40]; /* After import batch */
char pre_export[40]; /* Pre export batch */
char after_export[40]; /* After export batch */
byte emulation; /* <reserved> (**) */
char dl_path[40]; /* Terminal emulator download path */
char ul_path[40]; /* terminal emulator upload path */
bit manual_answer :1; /* Manually answers phone */
bit limited_hours :1; /* Answer only at certain hours */
bit solar :1; /* <reserved> (**) */
bit areafix :1; /* 1=Use internal areafix */
bit doflagfile :1; /* 1=Log semaphores creation/deletion */
bit multitask :1; /* 1=Multitasking environment */
bit ask_alias :1; /* 1=Ask for an alias name */
bit random_birth :1; /* 1=Random birthdate check */
short start_time; /* Answer start time in minutes */
short end_time; /* Answer end time in minutes */
char boxpath[40]; /* User's filebox base directory */
char dial_suffix[20]; /* Dialing suffix command */
char galileo_dial[40]; /* Clocksynch dialing command */
char galileo_suffix[40]; /* Clocksynch dialing suffix command */
char galileo_init[40]; /* Clocksynch initialization command */
char areafix_help[40]; /* Areafix's help file name */
char alert_nodes[50]; /* Nodes that receives a copy of all areafix response messages */
char automaint[40]; /* Batch to execute once a day */
byte min_login_level; /* Minimum login level */
long min_login_flags; /* Minimul login flags */
byte min_login_age; /* Minimul login age */
char resync_nodes[50]; /* Nodes to resynch the clock with */
char bbs_batch[40]; /* External BBS batch file */
byte altx_errorlevel; /* ALT-X command errorlevel */
char fax_response[20]; /* FAX response */
byte fax_errorlevel; /* Fax exit errorlevel */
char dl_counter_limits[4]; /* Download counter delimiters */
char areas_bbs[40]; /* AREAS.BBS path and file name */
byte afx_remote_maint; /* Areafix level for %FROM command */
byte afx_change_tag; /* Areafix level for #<old>:<new> command */
bit allow_rescan :1; /* 1=Allow rescan of new areas */
bit check_city :1; /* 1=Check user's city at logon */
bit check_echo_zone :1; /* 1=Check zones in areafix's requests */
bit save_my_mail :1; /* 1=Save mail directed to the Sysop */
bit mail_method :2; /* 0=Separate netmail, 1=Net & echomail */
/* in the same packet */
bit replace_tear :2; /* 0=No, 1=Link unlimited, 2=Link */
/* limited to 35 char, 3=Always */
char my_mail[40]; /* Path to Sysop's mail */
bit stripdash :1; /* 1=Strip dashes from phone numbers */
bit use_iemsi :1; /* 1=Allows IEMSI logins */
bit newmail_flash :1; /* 1=Flashing MAIL active */
bit mymail_flash :1; /* 1=Flashing PERSONAL active */
bit keep_empty :1; /* 1=Do not import empty netmail */
bit show_missing :1; /* 1=Show missing files in file listings */
bit random_redial :1; /* 1=Redial numbers at random time */
char override_pwd[20]; /* Mail only override password */
char pre_pack[40]; /* Pre-PACK DOS command */
char after_pack[40]; /* After-PACK DOS command */
byte modem_timeout; /* Modem answer timeout (seconds) */
byte login_timeout; /* User's login timeout (minutes) */
byte inactivity_timeout; /* User's inactivity timeout (seconds) */
struct _altern_prefix {
char flag[6]; /* Nodelist flag (HST,V32B,etc.) */
char prefix[20]; /* Dialing prefix */
} prefixdial[10];
char iemsi_handle[36]; /* IEMSI: User's handle name */
char iemsi_pwd[20]; /* IEMSI: Password */
short iemsi_infotime; /* IEMSI: Seconds to display server */
/* informations */
bit iemsi_on :1; /* IEMSI: 1=Active, 0=Ignore */
bit iemsi_hotkeys :1; /* IEMSI: 1=Use hot-keyed menu */
bit iemsi_quiet :1; /* IEMSI: 1=Do not disturb */
bit iemsi_pausing :1; /* IEMSI: 1=Pause at end of screen */
bit iemsi_editor :1; /* IEMSI: 1=Use full screen editor */
bit iemsi_news :1; /* IEMSI: 1=Display news bulletins */
bit iemsi_newmail :1; /* IEMSI: 1=Check for new mail */
bit iemsi_newfiles :1; /* IEMSI: 1=Check for new files */
bit iemsi_screenclr :1; /* IEMSI: 1=Send clearing screen codes */
bit prot_xmodem :1; /* 1=Internal XMODEM active */
bit prot_1kxmodem :1; /* 1=Internal 1K-XMODEM active */
bit prot_zmodem :1; /* 1=Internal ZMODEM active */
bit prot_sealink :1; /* 1=Internal SEALINK active */
char newkey_code[30]; /* Registration key code (>=2.33) */
char tearline[36]; /* Custom tear line */
char uucp_gatename[20]; /* UUCP gateway name */
short uucp_zone; /* UUCP gateway zone */
short uucp_net; /* UUCP gateway net */
short uucp_node; /* UUCP gateway node */
byte carrier_mask; /* Carrier detect bit mask */
byte dcd_timeout; /* Timeout after drop DCD before hangup */
struct {
char display[20]; /* User's display packer name */
int offset; /* Offset of the signature id */
char ident[20]; /* Packer's signature id */
} packid[10];
char quote_string[5]; /* String to put in front of quoted lines */
char quote_header[50]; /* Quote text file header */
char tic_help[40]; /* Help file name for TIC processor */
char tic_alert_nodes[50]; /* Nodes that receives a copy of all TIC response messages */
char tic_newareas_create[50]; /* Nodes that can create new TIC areas */
char tic_newareas_link[50]; /* Nodes that are linked to new TIC areas */
byte tic_remote_maint; /* TIC level for %FROM command */
byte tic_change_tag; /* TIC level for #<old>:<new> command */
int uucp_point; /* UUCP gateway point */
byte filler[963]; /* Filler to 8192 bytes */
};
typedef struct _nodeinfo /* Struct for the NODES.DAT file */
{
short zone; /* Zone number */
short net; /* Net number */
short node; /* Node number */
short point; /* Point number */
short afx_level; /* Areafix level */
char pw_session[20]; /* Session password */
char pw_areafix[20]; /* Areafix password */
char pw_tic[20]; /* <reserved> (**) */
char pw_packet[9]; /* Packet password */
short modem_type; /* >0=Use alternate dialing string */
char phone[30]; /* Override phone number */
short packer; /* Packer type */
char sysop_name[36]; /* Sysop name */
char System[36]; /* System name */
bit remap4d :1; /* Remap to point */
bit can_do_22pkt :1; /* <reserved> (**) */
bit wazoo :1; /* WAZOO sessions enabled */
bit emsi :1; /* EMSI sessions enabled */
bit janus :1; /* Janus protocol enabled */
bit pkt_create :2; /* <reserved> (**) */
char aka; /* >0 Aka number to use when sending mail to this node */
short tic_level; /* TIC level */
long afx_flags; /* Areafix flags */
long tic_flags; /* TIC flags */
char tic_aka; /* >0 Aka number to use when sending TIC files */
char filler[58];
} NODEINFO;
typedef struct _idx_header /* Header for the NODES.IDX file
The records are structured as follow:
<_idx_header>
<_idx_entry> \
...... |- _idx_header.entry
<_idx_entry> /
<_idx_header>
<_idx_entry> \
...... |- _idx_header.entry
<_idx_entry> /
..............
Each _idx_entry marks the beginning of a
net. When the application founds the net, it
must scan the nodelist file from that position
to found the node's entry.
*/
{
char name[14]; /* Name of the St. Louis nodelist file */
long entry; /* Number of _idx_entry that follows */
} NODEHEADER;
typedef struct _idx_entry /* Index record for the NODE.IDX file */
{
short zone; /* Zone number */
short net; /* Net number */
short node; /* Node number (!= 0 only if related to a
point list */
long offset; /* Offset inside the nodelist file at which the
net zone:net begins */
} NODEINDEX;
#define MAXCOST 20
typedef struct _translation /* Structure for the COST.DAT file */
{
char location[30]; /* Location's name */
char search[20]; /* International phone prefix */
char traslate[60]; /* Local phone prefix for that country */
struct _cost { /* Cost table */
short days; /* Days to apply */
short start; /* Starting time in minutes */
short stop; /* Ending time in minutes */
short cost_first; /* First segment cost */
short time_first; /* First segment length in seconds */
short cost; /* Extra segments cost */
short time; /* Extra segments length in seconds */
bit crash :1; /* <reserved> */
bit direct :1; /* <reserved> */
bit normal :1; /* <reserved> */
} cost[MAXCOST];
} ACCOUNT;
#define MAXDUPES 1000
typedef struct _dupecheck /* Structure for the DUPES.DAT file */
{
char areatag[48]; /* Area's echomail tag */
short dupe_pos; /* Position of the last record writtin in dupes[] */
short max_dupes; /* <unused> */
long area_pos; /* Area record position inside DUPES.DAT file */
long dupes[MAXDUPES]; /* Dupes array. Each record is a 32bit CRC */
} DUPERECORD;
typedef struct _dupeindex /* Structure for the DUPES.IDX file */
{
char areatag[48]; /* Area's echomail tag */
long area_pos; /* Area record position inside DUPES.DAT file */
} DUPEINDEXRECORD;
typedef struct _protocol /* Structure for the PROTOCOL.DAT file */
{
char name[30]; /* Protocol name (user's display) */
char hotkey; /* Command key */
bit active :1; /* 1=Protocol is available */
bit batch :1; /* 1=The protocol doesn't require the file
name from the user during uploads */
bit disable_fossil :1; /* 1=Disable the fossil before calling the
protocol */
bit change_to_dl :1; /* 1=Change to the upload directory before
calling the protocol */
char dl_command[80]; /* Download command */
char ul_command[80]; /* Upload command */
char log_name[40]; /* Log name (DSZ format) */
char ctl_name[40]; /* Control file name */
char dl_ctl_string[40]; /* Download control string */
char ul_ctl_string[40]; /* Upload control string */
char dl_keyword[20]; /* Download keyword */
char ul_keyword[20]; /* Upload keyword */
short filename; /* Filename word position */
short size; /* Size word position */
short cps; /* CPS word position */
} PROTOCOL;
/*
(*) All the passwords are crypted with a proprietary algorithm for
system safety. Only known third party authors can request to the
autor the functions to perform the decryption/encryption.
(**) Reserved fields are fields that aren't used as for now or are bytes
reserved for future enhancements.
*/