home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / BBS / PB_122.ZIP / PB_STRUC.122 < prev    next >
Text File  |  1992-08-17  |  16KB  |  348 lines

  1. /*
  2.                      ┌───────────────────────────────┐
  3.                      │ ProBoard v1.22 File Structure │
  4.                      └───────────────────────────────┘
  5.  
  6.  
  7. This document describes the file structures used by ProBoard version 1.22.
  8. For information on the structures of the RemoteAccess compatible files, refer
  9. to the RemoteAccess structures document. It can be obtained from any of the
  10. ProBoard distribution sites.
  11.  
  12. -------------------------------------------------------------------------------
  13.  
  14. The data-structures are C-structures, this means:
  15.  
  16. - Strings are stored as an array of characters, terminated by a 0.
  17. - A date is stored as 3 bytes (day,month,year)
  18. - A time is stored as 3 bytes (hour,min,sec)
  19.  
  20. The 'accessflags' are stored in a long integer, with bit 31 being flag 'A',
  21. bit 30 flag 'B' , ... Bit 5 is flag '1', bit 4 is flag '2', etc...
  22. I know this doesn't sound logical, but we had some good reasons for doing
  23. this <grin>.
  24.  
  25. The combined boards are stored in 25 bytes (200 bits). One bit per message
  26. area.
  27. */
  28.  
  29. typedef unsigned uint;
  30. typedef unsigned long uint;
  31. typedef unsigned char byte;
  32. typedef unsigned long accessflags;
  33. typedef unsigned char combinedboards[25];
  34. typedef unsigned char bool;
  35. typedef unsigned char Time[3];
  36. typedef unsigned char Date[3];
  37.  
  38. /*
  39. ────────────────────────────────────────────────────────────────────────────
  40.  USERSPB.BBS
  41. ────────────────────────────────────────────────────────────────────────────
  42.  
  43. This file is tied to the files USERS.BBS and USERSXI.BBS. The records are
  44. stored in the same order as the records in USERS.BBS. The name of the user
  45. is duplicated in this file, so it is possible to fix the userfile after using
  46. a third-party userfile packer/sorter, which does not know about USERSPB.BBS.
  47.  
  48. */
  49.  
  50. struct
  51.   {
  52.    char     username[36];              /* Name of user                       */
  53.    int      loglevel;                  /* Loglevel (0-3)                     */
  54.    char     country[26];               /* Country/State                      */
  55.    int      tb_timebalance;            /* Timebank time balance              */
  56.    int      tb_kbytebalance;           /* TimeBank Kb balance                */
  57.    int      tb_timewithdrawn;          /* TimeBank time withdrawn today      */
  58.    int      tb_kbytewithdrawn;         /* TimeBank Kb withdrawn today        */
  59.    unsigned expirlevel;                /* Expiration level                   */
  60.    unsigned uflags;                    /* Extra user flags  (see UFLAG_XXXX) */
  61.    char     tb_lastused[3];            /* Date of last access to TimeBank    */
  62.    long     totaltimeused;             /* Total time used ever (minutes)     */
  63.    combinedboards mailcheckboards;     /* Mail areas where to check for mail */
  64.    byte     extra[92];
  65.   };
  66.  
  67. /* These are the extra user-flags for 'uflags': */
  68.  
  69. #define UFLAG_NOIBM   1
  70. #define UFLAG_NOTOPS  2
  71. #define UFLAG_AVTPLUS 4
  72.  
  73. /*
  74. ────────────────────────────────────────────────────────────────────────────
  75.  CONFIG.PRO
  76. ────────────────────────────────────────────────────────────────────────────
  77. */
  78.  
  79. struct
  80.  {
  81.   char shellmsg[81];         /* Message to show when shelling                */
  82.   char sysopname[36];        /* Name of sysop                                */
  83.   char txtpath[61];          /* Path for textfiles                           */
  84.   char mnupath[61];          /* Path for menu-files                          */
  85.   char msgpath[61];          /* Path for message base                        */
  86.   char uploadpath[61];       /* Uploadpath                                   */
  87.   char editorname[61];       /* Name of external editor                      */
  88.   uint newuserlevel;         /* Level for new user                           */
  89.   int newuserloglevel;       /* Loglevel for new user                        */
  90.   accessflags newuserflags;  /* New user flags                               */
  91.   int max_passinput;         /* Maximum attempts for password entry          */
  92.   int min_passlength;        /* Minimum password length                      */
  93.   int inactivity_time;       /* Inactivity time-out limit                    */
  94.   int max_sysop_pages;       /* Maximum times sysop can be paged             */
  95.   int pagebell_length;       /* Length of page-bell (secs)                   */
  96.   int mailcheck;             /* Check for mail at logon?                     */
  97.   int europe;                /* European date format?                        */
  98.   int numnodes;              /* # nodes                                      */
  99.   bool allowansi;            /* Allow ANSI?                                  */
  100.   bool allowavatar;          /* Allow AVATAR?                                */
  101.   int discrete;              /* Hide sysop activity?                         */
  102.   int askphone;              /* Ask for phone number?                        */
  103.   int allowoneword;          /* Allow one-word names                         */
  104.   unsigned crashlevel;       /* Level needed for crashmail                   */
  105.   accessflags crashflags;    /* Flags needed for crashmail                   */
  106.   uint attachlevel;          /* Level needed for file attach                 */
  107.   accessflags attachflags;   /* Flags needed for file attach                 */
  108.   int allowmsgupload;        /* Allow message uploads                        */
  109.   int allowstacking;         /* Allow command stacking                       */
  110.   Time page_start;           /* Paging hours start                           */
  111.   Time page_end;             /* Paging hours end                             */
  112.   int handshaking;           /* I/O Handshaking                              */
  113.   int allowalias;            /* Allow alias for login                        */
  114.   int loglocal;              /* Log local calls                              */
  115.   int doswap;                /* Allow swapping                               */
  116.   char originline[61];       /* Origin line                                  */
  117.   char nodelistdir[61];      /* Nodelist directory                           */
  118.   char sysopkeys[10][60];    /* Sysop hotkeys                                */
  119.   Time dl_start;             /* Download hours start                         */
  120.   Time dl_end;               /* Download hours end                           */
  121.   int uploadspace;           /* Space needed for uploads                     */
  122.   char pvtuploadpath[61];    /* Directory for files uploads                  */
  123.   char quotestring[6];       /* String used for quoting                      */
  124.   bool fastmode;             /* Use fast mode                                */
  125.   bool extra_bool_1;
  126.   bool killsent;             /* Kill netmail after sent                      */
  127.   bool multiline;            /* Use message base sharing?                    */
  128.   bool egamode;              /* Use 43/50 line mode                          */
  129.   bool showuserinfo;         /* Show user info while in EGA mode?            */
  130.   char pexpath[61];          /* Directory for PEX files                      */
  131.   bool allowquicklogin;      /* Allow quick sysop login?                     */
  132.   bool suspendmsgtime;       /* Suspend time when writing msgs               */
  133.   int securityboard;         /* MsgBoard for security messages               */
  134.   bool pwdmessages;          /* Write security-messages?                     */
  135.   bool extra_bool_2;
  136.   char bbsname[36];          /* Name of the BBS                              */
  137.   char pwdchar;              /* Password character                           */
  138.   int  tb_maxtimedeposit;    /* Max time deposit per day (TimeBank)          */
  139.   int  tb_maxkbdeposit;      /* Max Kbytes deposit per day (TimeBank)        */
  140.   int  tb_maxtimewithdrawal; /* Max time withdrawal per day (TimeBank)       */
  141.   int  tb_maxkbwithdrawal;   /* Max Kbytes withdrawal per day (TimeBank)     */
  142.   int  usage_days;           /* Days to keep usage graphs                    */
  143.   char systempwd[16];        /* System password                              */
  144.   bool usesystempwd;         /* Use system password?                         */
  145.   char extra[582];
  146.  };
  147.  
  148.  
  149. /*
  150. ────────────────────────────────────────────────────────────────────────────
  151.  TIMELOG.PRO
  152. ────────────────────────────────────────────────────────────────────────────
  153. */
  154.  
  155. struct
  156.   {
  157.    int numdays;           /* Number of days active                         */
  158.    Date lastdate;         /* Last update                                   */
  159.    long hours[24];        /* # minutes per hour usage                      */
  160.    long days[7];          /* # minutes per day usage                       */
  161.    long weeks[53];        /* # minutes per week usage                      */
  162.    long totalcalls;       /* Total calls to system                         */
  163.   };
  164.  
  165.  
  166. /*
  167. ────────────────────────────────────────────────────────────────────────────
  168.  FILECFG.PRO
  169. ────────────────────────────────────────────────────────────────────────────
  170. */
  171.  
  172. struct
  173.   {
  174.    char name[80];       /* Name of file area                                */
  175.    char listpath[80];   /* Path for file-list                               */
  176.    char filepath[80];   /* Path for files                                   */
  177.    uint level;          /* Level needed for access                          */
  178.    long flags;          /* Flags needed for access                          */
  179.    char type;           /* 1 = CDROM File listing type                      */
  180.    int  maxfiles;       /* Max files per day in this area downloadable      */
  181.    int  maxkb;          /* Max Kbytes per day in this area                  */
  182.    bool notops;         /* Set to 1 -> should not be listed in TOPFILES.A?? */
  183.    char extra[14];      /* Reserved                                         */
  184.   };
  185.  
  186.  
  187. /*
  188. ────────────────────────────────────────────────────────────────────────────
  189.  MSG.PRO
  190. ────────────────────────────────────────────────────────────────────────────
  191. */
  192.  
  193. struct
  194.   {
  195.    char name[31];             /* Name of message areas                       */
  196.    byte msgtype;              /* Type of messages                            */
  197.    byte msgkind;              /* Kind of message area                        */
  198.    byte flags;                /* Alias allowed/forced/prohibited             */
  199.    uint readlevel;            /* Minimum level needed to read msgs           */
  200.    accessflags readflags;     /* flags needed to read msgs                   */
  201.    uint writelevel;           /* Minimum level needed to write msgs          */
  202.    accessflags writeflags;    /* flags needed to write msgs                  */
  203.    uint sysoplevel;           /* Minimum level needed to change msgs         */
  204.    accessflags sysopflags;    /* flags needed to change msgs                 */
  205.    char origin[62];           /* Origin line                                 */
  206.    int aka;                   /* AKA                                         */
  207.    int rcv_kill_days;         /* Kill received after xx days                 */
  208.    int msg_kill_days;         /* Kill after xx days                          */
  209.    int max_msgs;              /* Max # msgs                                  */
  210.    char sysop[36];            /* Area Sysop                                  */
  211.    int  replyboard;           /* Reply area # (0=here)                       */
  212.    byte extra[40];
  213.   };
  214.  
  215. #define MSGTYPE_BOTH     /* Private/Public */
  216. #define MSGTYPE_PVT      /* Private Only   */
  217. #define MSGTYPE_PUBLIC   /* Public Only    */
  218. #define MSGTYPE_TOALL    /* To All         */
  219.  
  220. #define MSGKIND_LOCAL    /* Local          */
  221. #define MSGKIND_NET      /* NetMail        */
  222. #define MSGKIND_ECHO     /* EchoMail       */
  223. #define MSGKIND_PVTECHO  /* Pvt EchoMail   */
  224.  
  225.  
  226. /*
  227. ────────────────────────────────────────────────────────────────────────────
  228.  LASTCALL.PRO
  229. ────────────────────────────────────────────────────────────────────────────
  230.  
  231. First word = number of entries in LASTCALL.PRO
  232.  
  233. */
  234.  
  235. struct
  236.   {
  237.    char name[36];   /* Name of caller           */
  238.    Date date;       /* Date of call             */
  239.    Time ti;         /* Login time               */
  240.    Time to;         /* Logoff time              */
  241.    int node;        /* Node number of call      */
  242.   };
  243.  
  244.  
  245. /*
  246. ────────────────────────────────────────────────────────────────────────────
  247.  ONLINE.PRO
  248. ────────────────────────────────────────────────────────────────────────────
  249. */
  250.  
  251. struct
  252.   {
  253.    char name[36];     /* Name of user online                                 */
  254.    char city[16];     /* City of user online                                 */
  255.    int baud;          /* Baud rate of user                                   */
  256.    int status;        /* 0 -> online , <0 -> not online or unavailable       */
  257.    char extra[8];
  258.   };
  259.  
  260.  
  261.  
  262. /*
  263. ────────────────────────────────────────────────────────────────────────────
  264.  PROTOCOL.PRO
  265. ────────────────────────────────────────────────────────────────────────────
  266. */
  267.  
  268. struct
  269.   {
  270.    char name[50];       /* Name of protocol                                  */
  271.    char key;            /* Hotkey for Protocol                               */
  272.    char flags;          /* Protocol behavior                                 */
  273.    char logfile[60];    /* Logfile from protocol                             */
  274.    char ctlfile[60];    /* Control file (redirection file)                   */
  275.    char dlcom[128];     /* Download command line                             */
  276.    char ulcom[128];     /* Upload command line                               */
  277.    char dlstring[80];   /* String to place in download control file          */
  278.    char ulstring[80];   /* String to place in upload control file            */
  279.    char dlkeyword[40];  /* Download keyword to search for in logfile         */
  280.    char ulkeyword[40];  /* Upload keyword to search for in logfile           */
  281.    int wordnr;          /* File name word nr after keyword (1-..)            */
  282.   };
  283.  
  284.  
  285. /* Flags: */
  286.  
  287. #define PROT_BATCH   1    /* Batch protocol        */
  288. #define PROT_ENABLED 2    /* Enabled               */
  289. #define PROT_BOTH    4    /* Full-duplex protocol  */
  290. #define PROT_BIM     8    /* Bimodem-type ctl-file */
  291.  
  292.  
  293. /*
  294. ────────────────────────────────────────────────────────────────────────────
  295.  LIMITS.PRO
  296. ────────────────────────────────────────────────────────────────────────────
  297. */
  298.  
  299. struct
  300.   {
  301.    uint level;            /* Level                                           */
  302.    int timelimit;         /* # minutes per day                               */
  303.    int daily_klimit;      /* Kbytes per day allowed                          */
  304.    int pre_download;      /* # minutes online before download                */
  305.    char id[6];            /* Usergroup ID                                    */
  306.    uint free;             /* Free upload in Kb.                              */
  307.    byte factor;           /* Percentage upload required                      */
  308.    uint max_download;     /* Max download for this level                     */
  309.    int fallto;            /* Fall to level x when max. reached               */
  310.    int msgfactor;         /* # Kbytes granted per message written            */
  311.    char extra[5];
  312.   };
  313.  
  314. /*
  315. ────────────────────────────────────────────────────────────────────────────
  316.  MODEM.PRO
  317. ────────────────────────────────────────────────────────────────────────────
  318. */
  319.  
  320. struct MODEM_PRO
  321.   {
  322.    unsigned baud;
  323.    int port;
  324.    int quiet;
  325.    int blanktime;
  326.    char initstring[70];
  327.    char busystring[70];
  328.    char initok[40];
  329.    char busyok[40];
  330.    char connect300[40];
  331.    char connect1200[40];
  332.    char connect2400[40];
  333.    char connect4800[40];
  334.    char connect9600[40];
  335.    char connect19200[40];
  336.    char connect38400[40];
  337.    char ring[40];
  338.    char answer[40];
  339.    char connect7200[40];
  340.    char connect12000[40];
  341.    bool forceanswer;
  342.    byte extra1[5];
  343.    int delay;
  344.    char connect14400[40];
  345.    char initstring2[70];
  346.    byte extra2[200];
  347.   };
  348.