// This may look like C code, but it is really -*- C++ -*- // ------------------------------------------------------------------ // The Goldware Library // Copyright (C) 1989-1990 Joaquim H. Homrighausen // Copyright (C) 1990-1999 Odinn Sorensen // ------------------------------------------------------------------ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this program; if not, write to the Free // Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, // MA 02111-1307, USA // ------------------------------------------------------------------ // $Id$ // ------------------------------------------------------------------ // Definitions for FrontDoor 1.99c and above // ------------------------------------------------------------------ #ifndef __gs_fd_h #define __gs_fd_h // ------------------------------------------------------------------ #include // ------------------------------------------------------------------ #if defined(GOLD_CANPACK) #pragma pack(1) #endif // ------------------------------------------------------------------ // Actually only size of the following structure used typedef struct { // The logfile char log[71]; word loglevel; // See --- Loglevels // Number manipulation char prefix[31]; // Always added char hidden[10][31]; // Strip these if they are in # char postfix[31]; // Always appended // Miscellaneous flags long flags; // See --- Miscellaneous flags long flags_reserved; // Reserved flags word audio; // See --- Audio flags byte synchtimer; // Number of seconds for sync // Errorlevels byte crashexit; // Mail exit byte bbs300; byte bbs1200; byte bbs1275; byte bbs2400; byte bbs4800; byte bbs9600; byte bbs19200; byte bbs38400; // Modem word modembaud; // 30=300, 24=2400, etc. byte modemport; // 1-255 (COM1=1, COM2=2, etc.) byte modemdelay; // 1/10 seconds delay / line sent // Messages char b300msg[16]; char b1200msg[16]; char b1275msg[16]; char b2400msg[16]; char b4800msg[16]; char b9600msg[16]; char b19200msg[16]; char b38400msg[16]; char errormsg[16]; char busymsg[16]; char carriermsg[16]; char okmsg[16]; char ringmsg[16]; char nodialmsg[16]; char noanswmsg[16]; char voicemsg[16]; // Commands char escapestr[11]; char offhookstr[11]; char reconnectstr[11]; char init1[50]; char init2[50]; char init3[50]; char resetstr[50]; char downstr[50]; char hangupstr[11]; char dialstr[11]; // Manual answer stuff char modemanswer[11]; byte answerdelay; // Limited answer start and end times byte begin_hour; byte begin_minute; byte end_hour; byte end_minute; // Calling control byte retrybusy; byte retryresend; byte retrydelay; // File request control char reqlist[71]; // List to scan for reqable dirs char reqalias[71]; // Magic filenames char reqmessage[71]; // Appended to FAILED REQUEST message byte reqtype; // Bit field byte reqmaxfiles; // Max number of files to send on 1 req word reqmaxtime; // Maximum number of minutes for req word reqmaxsize; // Maximum size (in KB) for req word reqminbaud; // Minimum baudrate for req byte reqstarthr; // Start time for file requests, can be byte reqstartmin; // combined with the reqdays field. byte reqendhr; byte reqendmin; byte reqdays; // File to send when human callers are let thru char bbsname[11]; char beforebbsbanner[71]; // Function keys from mailer menu struct { char cmd[61]; char title[26]; byte behavior; } key[24]; // Mailer colors byte color[11]; // Number of days to keep entries in history files byte keep_history; // FDServer password, if none given, server is INactive char slavepwd[21]; // File displayed to users when system is in event for no callers char ineventfile[71]; // File displayed when human callers are seen on mail-only system char mailonlyfile[71]; // External programs to run on certain "wake-up" strings struct { char wakeupstr[40]; byte errorlevel; } externmail[10]; // RESERVED FIELD // Limited audio start and end times. If the below four bytes // are all zero (0), audio is enabled all the time byte audio_begin_hour; byte audio_begin_minute; byte audio_end_hour; byte audio_end_minute; // Minimum cost for system to possibly end up in undialable list word min_undial_cost; char RESERVERAT[1018]; } FD_Mailer; // ------------------------------------------------------------------ // Netmail folder behavior #define RESTRICTED 0x00000001L #define EXPORTOK 0x00000004L #define USEXLATTABLES 0x00000008L #define EDREADONLY 0x00000020L #define MSGPRIVATE 0x0001 #define MSGCRASH 0x0002 #define MSGREAD 0x0004 #define MSGSENT 0x0008 #define MSGFILE 0x0010 #define MSGTRANSIT 0x0020 #define MSGORPHAN 0x0040 #define MSGKILL 0x0080 #define MSGLOCAL 0x0100 #define MSGHOLD 0x0200 #define MSGUNUSED 0x0400 #define MSGFREQ 0x0800 #define MSGRRREQ 0x1000 #define MSGISRR 0x2000 #define MSGAREQ 0x4000 #define MSGFUPDREQ 0x8000 typedef struct { // Macro keys char macrokey[24][61]; // Margin, default==60 byte margin; // Default message status word msgbits; // Miscellaneous settings long flags; // Origin lines char origin[20][61]; // Editor colors byte color[15]; // Netmail folder flags long netfolderflags; // Translation tables IN/OUT byte translate_in[256]; byte translate_out[256]; // Where RemoteAccess/QuickBBS message base files are char qbase[71]; // RESERVED char RESERVERAT[1024]; } FD_Editor; // ------------------------------------------------------------------ typedef struct { char systempath[71]; char mailpath[71]; char swap_path[71]; char RESERVED_path_1[71]; char RESERVED_path_2[71]; char infilepath[71]; char packetpath[71]; char nodelistpath[71]; word countrycode; ftn_addr aka[11]; // Timeout value for screen blanker in SECONDS (0-255) long flags; byte blackout_time; // User record struct { char name[37]; long pwdcrc; // Crc-32 of user password, -1L No pwd dword flags; } user[10]; char RESERVED[1024]; } FD_Shared; // ------------------------------------------------------------------ // Constant long bit values #define FOLDER_RESTRICT 0x00000001L // Restricted folder #define FOLDER_ECHOINFO 0x00000002L // Add Origin: information #define FOLDER_EXPORTOK 0x00000004L // OK for user to export from folder #define FOLDER_USEXLAT 0x00000008L // Use translation tables #define FOLDER_PRIVATE 0x00000010L // Add Private message status #define FOLDER_READONLY 0x00000020L // Folder is read-only #define FOLDER_FORCEHARDCR 0x00000040L // Force hard CRs at linebreak (C) #define FOLDER_JAM 0x01000000L // JAM Message Base folder #define FOLDER_NOCHECK 0x02000000L // Exclude from new mail check (C) #define FOLDER_NETMAIL 0x08000000L // Netmail-type folder (C) #define FOLDER_HMB 0x10000000L // Hudson Message Base folder #define FOLDER_DELETED 0x20000000L // Never written to disk #define FOLDER_LOCAL 0x40000000L // Local-type folder #define FOLDER_ECHOMAIL 0x80000000L // Conference-type folder // User access mask #define FOLDER_USER_1 0x00000001L #define FOLDER_USER_2 0x00000002L #define FOLDER_USER_3 0x00000004L #define FOLDER_USER_4 0x00000008L #define FOLDER_USER_5 0x00000010L #define FOLDER_USER_6 0x00000020L #define FOLDER_USER_7 0x00000040L #define FOLDER_USER_8 0x00000080L #define FOLDER_USER_9 0x00000100L #define FOLDER_USER_10 0x00000200L typedef struct { char path[65], // Path if "board==0", otherwise emtpy title[41]; // Title to appear on screen byte origin; // Default origin line, 0-19 long behave; // Behavior, see above long pwdcrc; // CRC32 of password or -1L if unprotected long userok; // Users with initial access byte useaka; // AKA to use, 0==primary word board; // QuickBBS/RemoteAccess board number } FD_Folder, *FOLDERPTR; // ------------------------------------------------------------------ #if defined(GOLD_CANPACK) #pragma pack() #endif // ------------------------------------------------------------------ #endif // ------------------------------------------------------------------