OMEN -system Offline Message Environment (C)1991 by Omsoft Rev. F Offline Message Environment -system (OMEN) is designed to be used with any Bulletin Board Systems that have the capability to either pack messages into a file and get new messages out of a file, or use an outside program to do so. With OMEN you can minimize the Online-time you spend in the BBS- message boards. This is done by downloading all new messages in a compressed file, reading and writing replies and new messages locally at your own computer and uploading the results next time in an other compressed file. OMEN is not machine or operating system dependent, it can be implemented virtually on any current system. The original idea for offline message system was introduced to me by Ari Laitinen of Arisoft and I have then been developing it into an open structure. The following structure is originally designed by Olli Majander of Omsoft and hereby declared Public Domain. ********************************************************************* OMEN in a BBS - Overview OMEN can be implemented into Bulletin Board Systems that comply with the following rules: 1. Messageboards are numbered from 0 up to max. 255. 2. Boardnames are up to max. 80 characters long. 3. Messages are numbered from 1 up to max. 65535. 4. Usernames are max. 35 characters long. 5. Message subjects are max. 72 characters long. Longer boardnames, usernames and subjects must be truncated to the mentioned lengths. Software compatible with earlier revisions of the OMEN-system may not be fully compatible with these rules. OMEN can be implemented into the code of the BBS-software or be run as a separate program. The BBS-OMEN should pack up to maximum of 1000 messages into a file in near-ASCII-format. The text and headerinformation of each message are pure ASCII, but some control bytes are used to make it easier to tell header and text as well as other messages apart. The messages should be stored into a file called NEWMSGxy.TXT. The x and y stand for ID-characters that are used to make sure that correct packages reach the correct BBS. They are suggested to be aphanumerical characters. It is up to each application to select the ID-characters. Another file that is needed with OMEN is SYSTEMxy.BBS. The x and y are the same as for the previous file. The systemfile should include the name of the BBS, as well as information about all of the messageboards on which the user has rights to read or write messages. Optional files that can be added to the package are: NFILExy.BBS Listing of new files BULLETxy.BBS System bulletin BNAMESxy.BBS Names of the boards in system INFOxy.BBS Additional information for the reader All the files should be compressed with some compressing utility, for instance PKZIP, which would result in OMENxy.ZIP. This will be the file that is sent to the user with whatever protocol the system allows. If the ID-characters for the system are for example R and 7, the corresponding filenames would then be: SYSTEMR7.BBS, NEWMSGR7.TXT, NFILER7.BBS, BULLETR7.BBS, BNAMESR7.BBS, INFOR7.BBS and for the complete package OMENR7.ZIP. BBS-OMEN must be able to receive a file called RETURNxy.ZIP (or other compressed file). Inside it will be files, that contain the messages the user has written offline and possibly other functions as well. The private-bit should only be used on boards that are allowed to contain both public and private messages. The files containing the messages will be described later in this document. A complete structure of the files included in OMENxy-package follows. ********************************************************************* NOTE: String[40] means an Pascal-style ASCII string with space for 41 bytes, where the first byte indicates the actual length of the string to follow. Byte is an 8-bit unsigned character and word is a 16-bit unsigned integer. --------------------------------------------------------------------- SYSTEMxy.BBS : SystemName: String[40]; BoardRights: Array[0..?] of BrdRecord; BrdRecord: BrdNum: Byte; BrdStatus: Byte; /* See below */ Reserved: Byte; BrdName: String[16]; (* BrdStatus: Bit 0: Write rigths Bit 1: SysOp rights Bit 2: Private board Bit 3: Public board Bit 4: NetMail board Bit 5 - 7: Not yet implemented *) --------------------------------------------------------------------- NEWMSGxy.TXT: MsgBase: Array[0..?] of MsgRecord; EOF: Byte = 26; MsgRecord: SOH: Byte = 1; MessageHeader: MsgHdrRecord; STX: Byte = 2; MessageText: MsgTxtRecord; ETX: Byte = 3; MsgHdrRecord: NumSign: Byte = '#'; MsgNum: Messagenumber in ASCII; TwoSpace: " "; /* 2 consecutive ASCII 32's */ BoardNum: BoardNumber in ASCII; Colon: Byte = ':'; Brdname: Name of the board in ASCII; TwoSpace: " "; Date: Creation date of the message; TwoSpace: " "; Time: Creation time of the message; TwoSpace: " "; Chain: Previous and Next message in chain; TwoSpace: " "; Status: Private & Received -status; CrLf: ASCII 13 + ASCII 10; WhoFrom: Writer's name in ASCII; Separator: " => "; /* String to separate names */ WhoTo: Receiver's name in ASCII; CrLf: ASCII 13 + ASCII 10;; Subject: Subject of message in ASCII; MsgTxtRecord: MessageText in ASCII; Messages must be placed in the file so that messages on each board are in sequence. The boards are recommended to follow ascending numerical order but this is not mandatory. The message header should not contain more than 3 lines. Recommended maximum lenght for the name of the board in the header is 30 characters. Longer names may result in the line exceeding 80 characters and this may cause problems with some of the readers. The Date-string should follow the format of dd-mmm-yy, where dd is the date, mmm is 3 character abbreviation of the month (e.g. Jan, Feb...) and yy is the 2 last digits of the year. The Time should have the format hh:mm where hh is the hour in 24-hour format and mm is the minutes. Chain consists of the number of the previous and the next message in reply chain in parenthesis separated by slash. If no previous or next message exist, the number must be replaced by dash. For exapmle a message with a previous message but a reply would have this kind of chain-indicator: (-/2653). Status consists of indicators for the private and received -status of the message. Private message is indicated by an uppercase P and received message by uppercase R in parenthesis. Possible combinations are: (PR), (P), (R) and (). An examplary header follows: <01>#12345 5:Communication Board 12-Aug-92 21:15 (12340/12352) (PR) John Doe => Archibald Leach Subj: What's cooking Cary? With NetMail messages the matrix address of the writer may be added after the name of the receiver as From: (xx:xxx/xxx) separated from the name by a single space. The end of the subject, the STX-byte, the actual text of the message and the ETX-byte should follow each other immediately. The text itself must not contain any other characters below ASCII 32 except TAB, LF and CR (09, 10, 13). --------------------------------------------------------------------- NFILExy.BBS: This file should contain the names, sizes and descriptions of the new files in the system. The file must be pure ASCII. This file is optional. --------------------------------------------------------------------- BULLETxy.BBS: This file contains any bulletins the operator of the system wants the users to read. The file must be pure ASCII. This file is optional. --------------------------------------------------------------------- BNAMESxy.BBS: This file contains the names of each board reprisented in the SYSTEMxy-file. The names are presented with the number of each board followed by a colon followed by the name of the board in ASCII. The names must be presented in the same order as they appear in the SYSTEMxy-file. Example: 1:General 2:Private Mail 3:SysOp Only Each name can be up to 80 characters long. NOTE: Some of the reader-software may not support longer than 16-characters long boardnames. This file is optional and needed only in systems with longer boardnames than 16 characters. --------------------------------------------------------------------- INFOxy.BBS: This file contains additional information for the reader software. The file must be pure ASCII. The overall format of the file is: