// This may look like C code, but it is really -*- C++ -*- // ------------------------------------------------------------------ // The Goldware Library // 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$ // ------------------------------------------------------------------ // AdeptXBBS derived userfile class. // ------------------------------------------------------------------ #ifndef __gusrxbbs_h #define __gusrxbbs_h // ------------------------------------------------------------------ #include #include #include // ------------------------------------------------------------------ #if defined(GOLD_CANPACK) #pragma pack(1) #endif // ------------------------------------------------------------------ // AdeptXBBS structure for "Users" file // The following flags are used for the 'user.attribs' bits. #define U_ANSI 0x00000001 // Ansi Movement #define U_COLOR 0x00000002 // Ansi Color #define U_HIGHASCII 0x00000004 // High Ascii #define U_NOMORE 0x00000008 // No? More? Prompts #define U_NOCLEAR 0x00000010 // Don't Clear Screens #define U_COLD 0x00000020 // No Hot Keys #define U_NOSHOWADDRESS 0x00000040 // Don't show address in user list #define U_NOSHOWPHONE 0x00000080 // Don't show phone numbers in user list #define U_NOSHOWREAL 0x00000100 // Don't show real names in user list #define U_NOKILL 0x00000200 // User cannot be killed/deleted #define U_DELETED 0x00000400 // User marked as deleted #define U_EXPERT 0x00000800 // User set for expert mode #define U_TWIT 0x00001000 // User is a twit! #define U_NEWFILES 0x00002000 // New files search at logon #define U_NEWMSGS 0x00004000 // New message search at logon #define U_DLNEWMSGS 0x00008000 // Auto download mail packets at logon #define U_DLNEWFILELIST 0x00010000 // Auto download new file list at logon #define U_SEENEWS 0x00020000 // Sees new news #define U_ASKDL 0x00040000 // Ask logoff before download #define U_NOVICE 0x00080000 // User set to novice #define U_NOROLL 0x00100000 // no rolling prompts (obsolete) #define U_POINTONLY 0x00200000 // Fidonet point mail only #define U_LOCKEDOUT 0x00400000 // User locked out #define U_AVAILABLE 0x00800000 // Available for multi-node chat #define U_LISTPROTECTED 0x01000000 // Not shown in user list #define U_MISCNEWSOK 0x02000000 // Sees misc. news #define U_LIMITFLIST 0x04000000 // Limit file list to current area #define U_EBCDIC 0x08000000 // EBCDIC <-> ASCII Conversion #define U_VERIFIED 0x10000000 // user call back verified, turn this off, they get verified again.. (if BBS verifies) #define U_ANSITE2 0x20000000 // User supports Ansi-TE2 Special Chars #define U_RIPSCRIPT 0x40000000 // User has RIP Support #define U_AVATAR 0x80000000 // User has Avatar Support // The following flags are used for 'user.attribs2' bits. #define U2_FSE 0x00000001 // User Full Screen Message Editor #define U2_OFF_AFTER_MAIL 0x00000002 // Log off after mail download #define U2_MONITOR_MAIL 0x00000004 // Monitor mail export/packing #define U2_INT_NEW_FILES 0x00000008 // include new files in mail packet #define U2_INC_BULLETS 0x00000010 // include bulletins in mail packet #define U2_INC_WELCOME 0x00000020 // include welcome screen in mail packet #define U2_DEFAULT_QWK 0x00000040 // Default use to QWK mail #define U2_DEFAULT_FIDO 0x00000080 // Default use to Fidonet Point Mail #define U2_DEFAULT_TEXT 0x00000100 // Default to text export #define U2_DEFAULT_BLUE 0x00000200 // Default to Bluewave Mail #define U2_AVTANS 0x00000400 // Can handle both ANSI and Avatar #define U2_8DOT3 0x00000800 // Convert long names to 8.3 names struct XbbsUsers { char name[36]; // Users Name char handle[36]; // Users Handle char address[60]; // Address line 1 char address1[60]; // Address line 2 char address2[60]; // Address line 3 char city[20]; // Users City/County char state[5]; // Users State char zipcode[10]; // Users ZipCode char home_phone[21]; // Users home phone number char data_phone[21]; // Users data phone number char fax_phone[21]; // Users fax phone number char bus_phone[21]; // Users business/office number char interests[78]; // Interest Line char SysOpComment[78]; // Room for Sysops comment uint16_t banktime; // Time in the bank uint16_t computer_type; // Computer type int32_t userid; // User ID int16_t pointid; // Point Mail ID time32_t initial_logon; // Time/Date of initial logon time32_t expires; // Time/Date user expires time32_t last_logon; // Time/Date of last logon time32_t logon_today; // Last time the user logged on today int16_t birthyear; // Birth Year char birthmonth; // Birth Month char birthday; // Birth day char gender; // Gender int32_t credit; // User credit int32_t minlimit; // Minimum limit int32_t group; // Group number the user beint32_ts to int32_t currlastread; // Last read pointer for current area int32_t time32_today; // Number of minutes user used today int32_t time_per_day; // Time limit per day int32_t time_per_call; // Time limit per call int32_t numcalls; // Number of total calls user made to BBS int32_t ulnum; // Total number of uploads int32_t dlnum; // Total number of downloads int32_t ulk; // Total uploads in K-bytes int32_t dlk; // Total downloads in K-bytes int32_t uktoday; // Uploads in K-bytes made today int32_t dktoday; // Download in k-bytes made today int32_t ukperday; // Max k-bytes user can upload a day int32_t dkperday; // Max k-byes a user can download a day int32_t numposts; // Number of messages ever written int32_t security1; // Security level #1 int32_t security2; // Security level #2 int32_t flags1; // Sysop definable 32 flags int32_t flags2; // Sysop definable 32 flags int32_t attribs; // User attributes int32_t attribs2; // User attributes int16_t length; // Screen length int16_t width; // Screen width int16_t lastmsgarea; // Last message area user was in int16_t lastfilearea; // Last file area user was in char lastprotocol; // Last protocol user chose char lastarchiver; // Last archiver user chose int32_t forsysop; // unused char interface_; // obsolete char exp; // unused int16_t leech_percent; // File leech ratio int16_t maxbanktime; // Maximum time user can have in bank int16_t timecredit; // Current time user has credit for int16_t callstoday; // Number of calls user made to BBS today int32_t totalminsever; // Total minutes users has used ever int32_t netmaildebits; // Total spent on NetMail time32_t lastpwchange; // Time/Date of last password change time32_t lastlistednewfile; // Time/Date user last listed new files uint32_t filekcredit; // Amount of file k-byte credit user has char unixid[8]; // Users Unix Specific ID byte _unused[94]; // reserved for future use byte mailtags[128]; // Message areas tagged for off-line mail byte usermsg[128]; // Message areas user can access byte userfile[128]; // File areas user can access uint32_t passwordcrc; // User password CRC uint32_t passwordcrc2; // User password CRC2 uint16_t max_mail_pkt; // Max msgs to pack for off-line mail char reasked; // Has user answered the ReAsk questionairre char reserved[75]; // reserved for future user }; // ------------------------------------------------------------------ #if defined(GOLD_CANPACK) #pragma pack() #endif // ------------------------------------------------------------------ // AdeptXBBS userfile class class XbbsUser : public GUser { public: uint maxindex; int firstread; XbbsUsers* record; XbbsUser(); ~XbbsUser(); int isvalid(); int read(); void recinit(const char* __name); void add(const char* __name); }; // ------------------------------------------------------------------ #endif // ------------------------------------------------------------------