UBBS - The UALR Bulletin Board System 06-Nov-1988 Dale Miller - University of Arkansas at Little Rock DOMILLER@UALR.BITNET This directory contains all of the files necessary to implement UBBS, a full-featured public computerized bulletin board system. UBBS has message files, uploads, downloads, private messages, help files, bulletins, conferencing, and most importantly, multiple concurrent access. UBBS is written in FORTRAN and all source code is included. The files supplied to run UBBS are: AAAREADME.TXT - This file ABBREV.STD - Miscellaneous message tidbits ARKLUG.COM - Login file for second bulletin board BBS.COM - A command file to execute UBBS BBS.FOR - The main source program for UBBS BBSCB.FOR - UBBS-specific version of CB. Requires CB manager. BBSDOWN.COM - Set the logical to disallow UBBS logins BBS_INC.FOR - An include file for the source BUILD.COM - ** Command file to build UBBS ** CHECK_MODEMS.FOR - Routine to limit UBBS usage to certain ports COMINT.MAR - Macro routine to do a COBOL-type numeric-edited move. DISTLOGIN.COM - Another sample LOGIN.COM (somewhat more generic) KERMIT_INC.FOR - Include file for Kermit modules LOGIN.COM - Sample LOGIN.COM for captive account QUADMATH.MAR - Macro subroutines used in UBBS. SYSOP.FOR - Performs system operator duties UBBS_SUBS.FOR - Subroutines for UBBS Data files included with UBBS are in the directory [.data], and include: BADPASS.TXT - Message to display for failed password BULLETIN.nnn - Sample bulletins BULLETIN.MNU - Bulletin menu HELPLIB.HLP - Help library MESSAGE.SECTIONS - List of message sections SIGNOFF.TXT - Message to display at logoff WELCOME.TXT - Sample welcome file WORDWRAP.EDT - EDT init file to turn on word wrap. Files to upgrade earlier versions of UBBS to the current format are also included. These are: CONVERT_FILES.FOR - Convert the FILES.DAT to FILES.IDX. CRLF.FOR - Add end of line and clear screen sequences to userlog. CVTV6.FOR - Convert files to version 6. FIXMESS.FOR - Add expiration dates to messages. REFORMAT_UPLOADS.FOR - Changes format of uploads for UBBS Rev. 4.7 or later. If you are currently running UBBS, check these to see if you need to run them. There is also a directory of UBBS-related utilities which contains: ADD_FILES.FOR - Rather esoteric utility to modify large number of file descriptions. ASSIGN.COM - Make assignments necessary to run UBBS COMPILE.COM - Procedure to compile all modules of UBBS INIT_IDX.FOR - Sets up the file sections. INIT_MESS.FOR - Program to initialize message data base INIT_USERLOG.FOR - Program to initialize the userlog DAILY_RESTORE.COM - Command procedure to restore requested files. INSTBBS.COM - Procedure to install UBBS with necessary privs. L.COM - Procedure to link UBBS and SYSOP LT.COM - Procedure to link UBBS and SYSOP with /TRACE SYSOP.HOWTO - Documentation for file SYSOPs VMSARC.FOR - A VMS program to de-ARC files from PCs. BUILD.COM will create all files necessary to create and run UBBS. There are, however several things a budding SYSOP must know. UBBS is set up to require user verification. This verification is applicable to all functions not authorized by the logical name UBBS_FLAGS. This logical is bit mapped with the following values: approved_mail_read = 01 - Allow users to read mail approved_mail_send = 02 - Allow users to send mail approved_cb = 04 - Allow use of CB simulator approved_file_down = 08 - Allow file downlaoding approved_file_up = 16 - Allow file uploading For instance, the defination "$ define ubbs_flags 25" would allow unapproved users all fucntions except leaving messages and using the CB simulator. A verified user may execute all functions. Verification is taken care of via the UPUSER function of SYSOP (described below). Users are requested to use the (P)rivate message to operator function to request access. This function sends VAXmail to the user defined by the logical UBBS_SYSOP_MAIL e.g. "$ DEFINE UBBS_SYSOP_MAIL DOMILLER" All UBBS file accesses are referenced by means of 2 logical names: UBBS_DATA - Location of all data files needed to run UBBS UBBS_FILES - Location of upload and download file sections All utilities necessary for day to day operation are included in SYSOP.FOR. They are accessed by answering the "Choice" question with a 1 or 2 character key for the following programs: A - Aging AF - Archive files C - Compress message file CA - Compress m.f. eliminating ALL read messages CF - Check files CI - Check indices F - Fixcounts UB - Update bulletin number & date UF - Update files UL - User list US - Update sysops on file sections UU - Update userlog The individual programs are described below. AGING - This is a program to allow you to delete users that have not logged on for a specified period of time. You will be prompted for a date. This is in standard VMS format. You will then be asked whether to delete approved and/or un-approved users before this date. If a "NO" response is entered, the users will be listed, but not deleted. ARCHIVE_FILES - Delete and set the ARCHIVED bit on files which have not been downloaded since a user-supplied date. CHECK_FILES - This program runs through all files in the download areas and makes sure they appear in the index. If they are not in the index, they are deleted. CHECK_INDEX - Reverse of CHECK_FILES. Allows files to be deleted or added to the index. COMPRESS_MESS - This is a program that compresses the message data base. as messages are logically deleted, they are merely marked for deletion. This program actually recovers the space. statistics are given on space gained. It is a good idea to have this set up in a batch job to run semi-occasionally. I have found 03:00 each morning to be a good time. COMPRESS_ALL - This is similar to COMPRESS but eliminates ALL read messages whether private or public. FIXCOUNTS - This program is written to fix the count of unread messages announced at logon. This can under certain conditions become corrupted (like VMS mail) and so this program will fix the counts like they should be. USER LIST - This will give a formatted list of the user names, addresses, authorization level, and phone number. UPDATE BULL. - This will update the last bulletin counter. You are prompted for the last bulletin you have entered and the last date. UPDATE FILES - This is a program to interactively update the FILES.IDX files for downloading. Instructions follow. UPDATE SYSOPS - Allows naming of up to 3 persons per section as "file sysops" who then have all privileges for that file section. UPDATE USERL. - This program updates the user log. You may delete or modify user info. The following programs are included for setting up a new installation of UBBS. INIT_MESS - This program initializes the message file. It should only be run if you want to clear the message file and start over. INIT_USERLOG - This program initialized the user log. It should only be used to remove all users from the user log. INIT_IDX - This program creates an empty index of downloads available. ******************************************************************************* Details of UBBS The messages are stored in two files. MESSAGE.HED is a file of message headers, 1 per message + 1. INIT_MESS.FOR is set up for 1000 headers (999 messages). This will expand as needed. The MESSAGE.DAT file is the actual message content. There is 1 record per message line. INIT_MESS will set this file up for 5000 records. This file will also expand as needed. If the message files get full, space will be added. Whenever an error is detected on the message files, a message is sent via VAXmail to the username defined by the logical UBBS_MAIL_SYSOP. The COMPRESS_MESS program will delete all messages that are logically deleted, expired messages, and private mail which has already been read. This will have to be run periodically depending on your usage. At UALR, we have it set up to run each night. The user log is an indexed file USERLOG.DAT containing a header record and 1 record for each user. User names are upper case only for ease of comparison. The ULIST program will give a brief listing of the userlog information. The UPUSER will give a list of user information and allow you to change it. To use this program, answer UU to SYSOP. You will be asked whether to check city names, or process all users. Using the "City" response will allow you to find all users whose home city is not in CITIES.DAT (initially empty). Selecting all users is exactly that. you will then be asked for a key to start. Pressing return at this point allows starting at the beginning. For each user name, UPUSER will pause and allow you to enter a 1 or 2 character code. These are: A - Approves the user. (see U) B - Starts over at the beginning of the userlog C - Allows you to change the City field CN- Allows you to change the Company name field CO- Allows you to change the type of computer D - Deletes the record DN- Allows you to change the DECUS number field E - Exits the program P - Allows you to change the password PN- Allows you to change the phone number field S - Allows you to change the state field U - Unapproves the user (see A) W - Writes the modified record Z - Zeros the time-used-today field. anything else proceeds to the next record. The bulletin system is rather simplistic. You just create a file, using your favorite editor, called BULLETIN.MNU. A sample file is included. This is the file displayed when The bulletin option is selected. Individual bulletins are numbered, beginning with 1 and named BULLETIN.nnn where nnn is the 3-digit bulletin number. BULLETIN.001 is supplied as a sample. When adding a new bulletin, the UPBULL program will change the displays for highest bulletin number and latest bulletin date. It's not fancy, but it works. There is one main menu option which does not appear on the menu. The Q option sets a special flag. If an authorized user enters Q, it will allow them to read and/or delete all messages. This includes private and logically deleted messages. This feature could be considered an invasion of privacy. To allow a person to use this feature, the person's name must be defined by a logical name UBBS_SYSOP_n where n is 1 to 9. The logicals must begin with 1 and be in sequence. e.g. $ define ubbs_sysop_1 "DALE MILLER" $ define ubbs_sysop_2 "MICHAEL SMITH" Uploaded files do not appear in the download directory automatically, when a file is uploaded, its name is placed into FILES.IDX. The SYSOP routine "update files" allows you to make this known to the world. This program runs through the message sections allowing you to delete approve or modify an entry. Instructions are included in the program. This program may also be invoked inside UBBS by trusted users. To do so, enter the download area of your choice and enter "abc.xyz" as the file name. This is only available to persons with sysop privilege and those you have specifically approved using "update sysop". File up/downloading is controlled by the presence of the files "ALLOW.UP" and "ALLOW.DOWN" in the file section directories. These files have no content. The files UBBS_FILES:DOWNLOAD.AREAS and UBBS_FILES:UPLOAD.AREAS are text files printed whenever the user requests a list of up/download areas. Note that these two control areas allow you to create upload only areas, download only areas, or areas which do not appear in the listings but are accessible to those "in the know". The "update sysop" selection allows you to designate up to 3 people as file sysops for each download section. When this selection is invoked, you are given each of the 3 names for each file section. If you wish to chenge it, just enter the new name. The names appearing here must match EXACTLY the user's mail name on UBBS. The CB selection requires the CB/Vax simulator also distributed by UALR. The CB selection will not work unless UBBS is installed privileged, and the CB system is operational at your site. If you wish to set up UBBS as a public bulletin board, define an account in SYSUAF.DAT similar to the following: Username: BBS Owner: BULLETIN BOARD SYSTEM Account: BULLETIN UIC: [177,1] ([BULLETIN,BBS]) CLI: DCL Tables: Default: DISK$USER:[BBS] LGICMD: DISK$USER:[BBS]LOGIN.COM Login Flags: Disctly Lockpwd Captive Diswelcome Disnewmail Dismail Disreport Disreconnect Primary days: Mon Tue Wed Thu Fri Secondary days: Sat Sun No access restrictions Expiration: (none) Pwdminimum: 5 Login Fails: 0 Pwdlifetime: (none) Pwdchange: (none) Last Login: 23-NOV-1985 22:33 (interactive), (none) (non-interactive) Maxjobs: 0 Fillm: 20 Bytlm: 8192 Maxacctjobs: 0 Shrfillm: 0 Pbytlm: 0 Maxdetach: 0 BIOlm: 18 JTquota: 1024 Prclm: 1 DIOlm: 18 WSdef: 150 Prio: 4 ASTlm: 24 WSquo: 200 Queprio: 0 TQElm: 10 WSextent: 500 CPU: (none) Enqlm: 30 Pgflquo: 10000 Authorized Privileges: TMPMBX NETMBX Default Privileges: TMPMBX NETMBX This account should have no password. To allow a specific line to automatically connect to the BBS, use the SYS$MANAGER:SYSALF.COM to specify automatic connection to the username you have defined. If you wish to limit the ability for other access, the LOGIN.COM file has the code in it to restrict UBBS to certain dial-in lines. It is currently not being used on my board, but was left in in order to customize it for your site. To the best of my knowledge, there is no limit (other than your VAX) as to how many concurrent users you may have. All file updating is handled via standard FORTRAN i/o and RMS record locking. While this documentation does not cover all aspects of UBBS, it should allow you to set the board up and get your feet wet. A good working knowledge of FORTRAN is recommended to fully utilize UBBS. I/O routines used in UBBS have been lifted from the VAXNET submission, and are used by permission. The current implementation of UBBS is actually used to run 2 different bulletin boards at UALR. This just requires changing the pointers to BBS$ and BBS$FILES. In our case, there are also some programming changes. To handle that without separate copies of the program, the user logical "ARKLUG" is set to "TRUE" to invoke the changes. I realize that UBBS will have to be customized for each individual site that runs it. I would appreciate hearing from anyone who implements it as a public system. I would also like to get copies of any enhancements, fixes, or improvements anyone makes to UBBS. If you have any questions, comments, praises, or curses, feel free to send them on. New versions of UBBS are available from UALR at very infrequent intervals. Dale Miller Computing Center - NS204 University of Arkansas at Little Rock 2801 S. University Little Rock, AR 72204-1099 DOMILLER@UALR.BITNET (501) 569-8714 (voice - 8:00-17:00 Central) (501) 568-9464 (UBBS) UBBS is copyrighted (c) 1986 by Dale O. Miller, and is released for private and commercial use. It may not be sold, either alone or as part of a package. The author excludes any and all implied warranties including warranties of fitness for a particular purpose and will not be liable for incidental or consequential damages as a result of using this product. ****** Warning ***** UBBS may be addictive both to you and your users.