This shows you the differences between two versions of the page.
proboard_file_structures [2023/06/20 10:20] – created admin | proboard_file_structures [2023/06/20 10:48] (current) – admin | ||
---|---|---|---|
Line 4: | Line 4: | ||
For information on the structures of the RemoteAccess compatible files, refer | For information on the structures of the RemoteAccess compatible files, refer | ||
to the RemoteAccess structures document. It can be obtained from [[http:// | to the RemoteAccess structures document. It can be obtained from [[http:// | ||
+ | |||
+ | The data-structures are C-structures, | ||
+ | |||
+ | Strings are stored as an array of characters, terminated by a 0. | ||
+ | A date is stored as 3 bytes (day, | ||
+ | A time is stored as 3 bytes (hour, | ||
+ | |||
+ | The ' | ||
+ | bit 30 flag ' | ||
+ | I know this doesn' | ||
+ | this :-). | ||
+ | |||
+ | The combined boards are stored in 125 bytes (1000 bits). One bit per message | ||
+ | area. | ||
+ | |||
+ | | ||
+ | typedef unsigned short word; | ||
+ | typedef unsigned long dword; | ||
+ | typedef unsigned char byte; | ||
+ | typedef unsigned long accessflags; | ||
+ | typedef unsigned char combinedboards[125]; | ||
+ | typedef unsigned char bool; | ||
+ | typedef unsigned char Time[3]; | ||
+ | typedef unsigned char Date[3]; | ||
+ | typedef unsigned char TimeFrame[7][6]; | ||
+ | |||
+ | typedef struct | ||
+ | { | ||
+ | byte periods[7][6]; | ||
+ | } | ||
+ | TimeFrame; | ||
+ | |||
+ | typedef struct | ||
+ | { | ||
+ | word | ||
+ | word | ||
+ | accessflags | ||
+ | accessflags | ||
+ | byte | ||
+ | byte | ||
+ | byte | ||
+ | word | ||
+ | word | ||
+ | TimeFrame | ||
+ | byte | ||
+ | dword minSpeed; | ||
+ | dword maxSpeed; | ||
+ | byte | ||
+ | } | ||
+ | AccessRecord; | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | This file is tied to the files USERS.BBS and USERSXI.BBS. The records are | ||
+ | stored in the same order as the records in USERS.BBS. The name of the user | ||
+ | is duplicated in this file, so it is possible to fix the userfile after using | ||
+ | a third-party userfile packer/ | ||
+ | |||
+ | | ||
+ | struct UsersPbBBS | ||
+ | { | ||
+ | char | ||
+ | char | ||
+ | char | ||
+ | char | ||
+ | char | ||
+ | char | ||
+ | Date | ||
+ | Date | ||
+ | short logLevel; | ||
+ | short tbTimeBalance; | ||
+ | short tbKbBalance; | ||
+ | short tbTimeWithdrawn; | ||
+ | short tbKbWithdrawn; | ||
+ | word | ||
+ | word | ||
+ | word | ||
+ | word | ||
+ | Date | ||
+ | Date | ||
+ | Date | ||
+ | word | ||
+ | accessflags | ||
+ | accessflags | ||
+ | dword uFlags; | ||
+ | combinedboards mailCheckBoards; | ||
+ | dword totalTimeUsed; | ||
+ | word | ||
+ | word | ||
+ | byte | ||
+ | byte | ||
+ | byte | ||
+ | byte | ||
+ | byte | ||
+ | }; | ||
+ | |||
+ | These are the extra user-flags for ' | ||
+ | #define RA_UFLAG_NOIBM | ||
+ | #define RA_UFLAG_NOTOPS | ||
+ | #define RA_UFLAG_AVTPLUS | ||
+ | #define RA_UFLAG_ATTEN | ||
+ | #define RA_UFLAG_NORIP | ||
+ | #define RA_UFLAG_MULTILOGIN | ||
+ | #define RA_UFLAG_FREECHAT | ||
+ | #define RA_UFLAG_LOCALONLY | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | struct CONFIG_PRO | ||
+ | { | ||
+ | char shellmsg[81]; | ||
+ | char sysopname[36]; | ||
+ | char txtpath[61]; | ||
+ | char mnupath[61]; | ||
+ | char msgpath[61]; | ||
+ | char uploadpath[61]; | ||
+ | char editorname[61]; | ||
+ | word newuserlevel; | ||
+ | short | ||
+ | accessflags newuserflags; | ||
+ | short | ||
+ | short | ||
+ | short | ||
+ | short | ||
+ | short | ||
+ | short | ||
+ | short | ||
+ | short | ||
+ | bool allowansi; | ||
+ | bool allowavatar; | ||
+ | short | ||
+ | short | ||
+ | short | ||
+ | unsigned | ||
+ | accessflags crashflags; | ||
+ | word attachlevel; | ||
+ | accessflags attachflags; | ||
+ | short | ||
+ | short | ||
+ | Time page_start; | ||
+ | Time page_end; | ||
+ | short | ||
+ | short | ||
+ | short | ||
+ | short | ||
+ | char originline[61]; | ||
+ | char nodelistdir[61]; | ||
+ | char sysopkeys[10][60]; | ||
+ | Time dl_start; | ||
+ | Time dl_end; | ||
+ | short | ||
+ | char pvtuploadpath[61]; | ||
+ | char quotestring[6]; | ||
+ | bool fastmode; | ||
+ | bool extra_bool_1; | ||
+ | bool killsent; | ||
+ | bool multiline; | ||
+ | bool egamode; | ||
+ | bool showuserinfo; | ||
+ | char pexpath[61]; | ||
+ | bool allowquicklogin; | ||
+ | bool suspendmsgtime; | ||
+ | short | ||
+ | bool pwdmessages; | ||
+ | bool extra_bool_2; | ||
+ | char bbsname[36]; | ||
+ | char pwdchar; | ||
+ | short | ||
+ | short | ||
+ | short | ||
+ | short | ||
+ | short | ||
+ | char systempwd[16]; | ||
+ | bool usesystempwd; | ||
+ | bool askbirthdate; | ||
+ | short | ||
+ | bool binloglocal; | ||
+ | short | ||
+ | bool indexfiles; | ||
+ | bool checkdupes; | ||
+ | bool killdupes; | ||
+ | bool ignore_ext; | ||
+ | char RIPpath[61]; | ||
+ | char iconspath[61]; | ||
+ | char location[36]; | ||
+ | char phone[26]; | ||
+ | char QWKid[9]; | ||
+ | word IObuffersize; | ||
+ | TimeFrame | ||
+ | char defaultLanguage[9]; | ||
+ | bool addUploaderName; | ||
+ | TimeFrame | ||
+ | bool askdataphone; | ||
+ | bool askfaxphone; | ||
+ | bool askaddress; | ||
+ | bool asksex; | ||
+ | bool askdateformat; | ||
+ | bool askstate; | ||
+ | bool askcountry; | ||
+ | short | ||
+ | bool hidePassword; | ||
+ | bool valConfirm; | ||
+ | char extra_char_1[17]; | ||
+ | char extChat[81]; | ||
+ | char virScanCommand[61]; | ||
+ | byte virScanType; | ||
+ | char virScanSemaphore[13]; | ||
+ | byte listColorTag; | ||
+ | byte listColorFileName; | ||
+ | byte listColorSize; | ||
+ | byte listColorDate; | ||
+ | byte listColorCounter; | ||
+ | byte listColorDesc; | ||
+ | byte listColorSeperator; | ||
+ | byte listColorMissing; | ||
+ | bool hideFileCounter; | ||
+ | bool disableRIP; | ||
+ | char extra_char_2[81]; | ||
+ | byte virScanFailedAction; | ||
+ | word virScanFailedArea; | ||
+ | byte promptColor; | ||
+ | bool internalfsed; | ||
+ | char extra[3]; | ||
+ | }; | ||
+ | |||
+ | |||
+ | | ||
+ | | ||
+ | struct TIMELOG_PRO | ||
+ | { | ||
+ | short | ||
+ | Date lastdate; | ||
+ | long hours[24]; | ||
+ | long days[7]; | ||
+ | long weeks[53]; | ||
+ | long totalcalls; | ||
+ | }; | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | struct FILECFG_PRO | ||
+ | { | ||
+ | char name[80]; | ||
+ | char listpath[80]; | ||
+ | char filepath[80]; | ||
+ | word level; | ||
+ | long flags; | ||
+ | char type; 1 = CDROM File listing type | ||
+ | short | ||
+ | short | ||
+ | bool notops; | ||
+ | bool free; Set to 1 -> free area | ||
+ | byte groups[4]; | ||
+ | bool allGroups; | ||
+ | byte minAge; | ||
+ | long flagsNot; | ||
+ | byte dateFormat; | ||
+ | byte extra[2]; | ||
+ | }; | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | struct MESSAGES_PB | ||
+ | { | ||
+ | word areaNum; | ||
+ | word hudsonBase; | ||
+ | char name[81]; | ||
+ | byte msgType; | ||
+ | byte msgKind; | ||
+ | byte msgBaseType; | ||
+ | char path[81]; | ||
+ | byte flags; | ||
+ | word readLevel; | ||
+ | accessflags readFlags; | ||
+ | accessflags readFlagsNot; | ||
+ | word writeLevel; | ||
+ | accessflags writeFlags; | ||
+ | accessflags writeFlagsNot; | ||
+ | word sysopLevel; | ||
+ | accessflags sysopFlags; | ||
+ | accessflags sysopFlagsNot; | ||
+ | char origin[62]; | ||
+ | short | ||
+ | word rcvKillDays; | ||
+ | word msgKillDays; | ||
+ | word maxMsgs; | ||
+ | char sysop[36]; | ||
+ | short | ||
+ | char echoTag[61]; | ||
+ | char qwkTag[13]; | ||
+ | byte groups[4]; | ||
+ | bool allGroups; | ||
+ | byte minAge; | ||
+ | byte extra[112]; | ||
+ | }; | ||
+ | |||
+ | #define MSGTYPE_BOTH | ||
+ | #define MSGTYPE_PVT | ||
+ | #define MSGTYPE_PUBLIC | ||
+ | #define MSGTYPE_TOALL | ||
+ | #define MSGKIND_LOCAL | ||
+ | #define MSGKIND_NET | ||
+ | #define MSGKIND_ECHO | ||
+ | #define MSGKIND_PVTECHO | ||
+ | #define MSGBASE_HUDSON | ||
+ | #define MSGBASE_SQUISH | ||
+ | #define MSGBASE_SDM | ||
+ | #define MSGBASE_JAM | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | struct ONLINE_PRO | ||
+ | { | ||
+ | char name[36]; | ||
+ | char city[16]; | ||
+ | word baud; Baud rate of user | ||
+ | short | ||
+ | char extra[8]; | ||
+ | }; | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | struct TOPS_PB | ||
+ | { | ||
+ | char name[36]; | ||
+ | dword | ||
+ | }; | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | struct PROTOCOL_PRO | ||
+ | { | ||
+ | char name[50]; | ||
+ | char key; | ||
+ | char flags; | ||
+ | char logfile[60]; | ||
+ | char ctlfile[60]; | ||
+ | char dlcom[128]; | ||
+ | char ulcom[128]; | ||
+ | char dlstring[80]; | ||
+ | char ulstring[80]; | ||
+ | char dlkeyword[40]; | ||
+ | char ulkeyword[40]; | ||
+ | short | ||
+ | }; | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | #define PROT_BATCH | ||
+ | #define PROT_ENABLED 2 | ||
+ | #define PROT_BOTH | ||
+ | #define PROT_BIM | ||
+ | #define PROT_LOCAL | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | struct LIMITS_PRO | ||
+ | { | ||
+ | word level; | ||
+ | short | ||
+ | short | ||
+ | short | ||
+ | char id[6]; | ||
+ | word free; Free upload in Kb. | ||
+ | byte factor; | ||
+ | word max_download; | ||
+ | short | ||
+ | short | ||
+ | char extra[5]; | ||
+ | }; | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | struct MODEM_PB | ||
+ | { | ||
+ | long maxBps; | ||
+ | long lockedBps; | ||
+ | dword | ||
+ | short | ||
+ | short | ||
+ | short | ||
+ | short | ||
+ | char msgCon300 | ||
+ | char msgCon1200 | ||
+ | char msgCon1275 | ||
+ | char msgCon2400 | ||
+ | char msgCon4800 | ||
+ | char msgCon7200 | ||
+ | char msgCon9600 | ||
+ | char msgCon12000 | ||
+ | char msgCon14400 | ||
+ | char msgCon16800 | ||
+ | char msgCon19200 | ||
+ | char msgCon21600 | ||
+ | char msgCon24000 | ||
+ | char msgCon26400 | ||
+ | char msgCon28800 | ||
+ | char msgCon38400 | ||
+ | char msgCon57600 | ||
+ | char msgCon64000 | ||
+ | char msgCon115200 | ||
+ | char msgConExternal[80]; | ||
+ | char msgRing | ||
+ | char msgOk | ||
+ | char cmdInit1 | ||
+ | char cmdInit2 | ||
+ | char cmdInit3 | ||
+ | char cmdAnswer | ||
+ | char cmdOffHook | ||
+ | char cmdDown | ||
+ | char cmdAttention | ||
+ | short | ||
+ | char msgCon31200 | ||
+ | char msgCon33600 | ||
+ | char msgCon36000 | ||
+ | char msgConUser1 | ||
+ | long userConBps1; | ||
+ | char msgConUser2 | ||
+ | long userConBps2; | ||
+ | char msgConUser3 | ||
+ | long userConBps3; | ||
+ | char msgConUser4 | ||
+ | long userConBps4; | ||
+ | char msgConUser5 | ||
+ | long userConBps5; | ||
+ | char msgConUser6 | ||
+ | long userConBps6; | ||
+ | byte extra[920]; | ||
+ | }; | ||
+ | |||
+ | #define MODEM_LOCKED | ||
+ | #define MODEM_MANUAL_ANSWER (0x00000002L) | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | struct BINLOG_PB | ||
+ | { | ||
+ | Date date; | ||
+ | Time timeIn; | ||
+ | Time timeOut; | ||
+ | char name[36]; | ||
+ | char city[26]; | ||
+ | char country[26]; | ||
+ | long baud; | ||
+ | word node; | ||
+ | long kbDown; | ||
+ | long kbUp; | ||
+ | word yells; | ||
+ | word level; | ||
+ | dword | ||
+ | char alias[36]; | ||
+ | char extra[45]; | ||
+ | }; | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | struct FILESIDX_PB | ||
+ | { | ||
+ | char filename[13]; | ||
+ | word area; File area number where file is located | ||
+ | }; | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | struct GROUPS_PB | ||
+ | { | ||
+ | char name[80]; | ||
+ | word level; | ||
+ | long flags; | ||
+ | long flagsNot; | ||
+ | byte extra[10]; | ||
+ | }; | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | struct PVTFILES_PB | ||
+ | { | ||
+ | Date date; | ||
+ | char fname [80]; | ||
+ | char to [36]; | ||
+ | char from [36]; | ||
+ | char desc [80]; | ||
+ | dword attr; | ||
+ | byte extra [61]; | ||
+ | }; | ||
+ | |||
+ | #define PVTFILE_KEEP (0x00000001L) | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | #define MENU_RIP 1 menu header attribute | ||
+ | struct MENU_HEADER | ||
+ | { | ||
+ | dword attr; // bit 0 = RIP menu | ||
+ | char prompt[200]; | ||
+ | byte color; | ||
+ | byte highlight; | ||
+ | char RIPname[9]; | ||
+ | byte extra[100]; | ||
+ | }; | ||
+ | |||
+ | #define MENU_SHOWREMOTE 1 menu item attribute | ||
+ | #define MENU_SHOWLOCAL | ||
+ | |||
+ | struct MENU_ITEM | ||
+ | { | ||
+ | dword attr; // Show remote/ | ||
+ | char text[160]; | ||
+ | char data[160]; | ||
+ | byte color; | ||
+ | byte hotKey; | ||
+ | word function; | ||
+ | char password[16]; | ||
+ | AccessRecord access; | ||
+ | byte extra[50]; | ||
+ | }; | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | struct LANG_HEADER | ||
+ | { | ||
+ | char name[41]; | ||
+ | bool avail; | ||
+ | word level; | ||
+ | accessflags flags; | ||
+ | char menuPath[61]; | ||
+ | char txtPath[61]; | ||
+ | char questPath[61]; | ||
+ | char copyright[81]; | ||
+ | byte attrib; | ||
+ | byte extra[500]; | ||
+ | }; | ||
+ | |||
+ | #define LANG_PROMPT | ||
+ | #define LANG_NOCOLOR 2 | ||
+ | |||
+ | struct LANG_PROMPT | ||
+ | { | ||
+ | word len; Length of string (excl. terminating ' | ||
+ | word numHotkeys; | ||
+ | byte color; | ||
+ | byte highlight; | ||
+ | byte promptcolor; | ||
+ | byte flags; | ||
+ | }; | ||
+ | | ||
+ | |||
+ | Each prompt consists of a LANG_PROMPT header, followed by ' | ||
+ | for the prompt (not including the terminating zero), followed by | ||
+ | ' | ||
+ | |||
+ | So a language file has the following structure: | ||
+ | LANG_HEADER | ||
+ | LANG_PROMPT 1 | ||
+ | string 1 | ||
+ | hotkeys 1 | ||
+ | lANG_PROMPT 2 | ||
+ | string 2 | ||
+ | hotkeys 2 | ||
+ | LANG_PROMPT 3 | ||
+ | string 3 | ||
+ | hotkeys 3 | ||
+ | .... | ||
+ | | ||
+ |