jBBS - The Clipper BBS that speaks Fidonet - Written by: ----------- Jay Kenney 1:202/601 * (619)221-0311 2400,9600HST 24 hours * Will Greenway 1:202/101 * (619)479-3006 1200,2400,9600HST 24 hours * --------------- Gracious appreciation to our beta testers. (Nerves of steel!) Lloyd Helm 1:202/609 * (619)281-0725 1200,2400,9600HST 24 hours * --------------- jBBS is Copyright (C) 1988,1989,1990 by Jay Kenney No payment is required for the use of jBBS. Donations however, are gladly accepted. Jay Kenney 1098 Evergreen Street San Diego, CA 92106 You may make changes to the jBBS sourcecode and re-compile it to your requirements. Please do not re-distribute your modified jBBS as "jBBS". If you re-compile jBBS and sell it as a commercial package, please contact me regarding extended support services at the above address. jBBS is a dBASE compatible BBS that can read and write Fidonet type messages. It has been in serious development since June '88 and has gone through many changes in the process. jBBS is compiled with Clipper (tm). jBBS requires BinkleyTerm as a front-end to answer the phone and check for mail. It is very sysop-configurable to any XT/AT/386 system. All output is routed through a "fossil". GETIO.C and GETIO.OBJ are included in the Jbbs.Lib source. GETIO is how Jbbs talks to the modem. jBBS does not require dBase III Plus (tm), or Clipper (tm) to operate. jBBS requires: 1) BinkleyTerm - Copyright (C) 1988,1989 by Bob Hartman and Vincent Perriello. Front Door or Dutchie -might- work, to my knowledge they have not yet been tried. 2) A Registered version of DSZ - Copyright (C) 1989 by Omen Technology Inc. 3) PKUNPAKJ and PKPAKJR - Copyright (C) 1986-1988 PKWARE Inc. (views .ARC's) 4) Pkunzip - Copyright (C) 1989 PKWARE Inc. (views .ZIP files online) 5) LHARC - Copyright (C) 1988-1989 Yoshi (optionally views *.LZH files) You will also need a mail "packer" such as: QMAIL - Copyright (C) 1988-1989 Greg Dawson or: oMMM - Copyright (C) 1989 BS Software and: Confmail Revision 3.3 - Copyright (C) 1986-1987 Bob Hartman (for oMMM only) If you have no idea what those are, you've got a big job ahead of you. All but the registered DSZ are available from almost any Fidonet-type Bulletin Board system, or the jBBS support BBS at (619)221-0311. Expanded Baud rate support. Jbbs now supports 300, 1200, 2400, 4800, 9600, 19200, and 38400 baud. INSTALLING jBBS ~~~~~~~~~~~~~~~ It is important that you add 1 line to your Autoexec.Bat file. Add this line to your Autoexec.Bat file: SET DSZLOG=DSZ.LOG Make a subdirectory called jBBS, copy all the enclosed files there. Study the "BBS.BAT" that is inside JBBSKIT.ZIP. It runs Binkley and exits properly to jBBS. FIRST -- Run Jbbsutil.Exe. It will ask you for the default path for your Jbbs files. After that, choose the "E)dit config" option and fill in everything. Note on "Special" users: They can save themselves from automatic logoff at maximum time if you have configured Jbbsutil with a value greater than 1 for the "Minutes a special user can add to time" option. They can only do this once a day. They will not be allowed to do this if it would overrun an event. Special users can see and download files that are unavailable to regular users. When you have your start time for an event defined in jBBS, jBBS will tell the user that they have to log off when that time arrives. The problem with that is that it does not happen -until- an event. A guy could be real deep in a *.* download and completely overrun the event. What it needed is a thing like PCBoard has that says "Time adjusted for an upcoming event", and -fix- their remaining time so it accuratly reflects exactly how much time they really have left. So now it does that. It will NOT allow a "special" user to get extra time with that "Lloyd Helm likes you, would you like more time?" thing when it happens either. Once you have edited Jbbsutil ------------------------------ Copy an empty FILES.DBF to each of your files subdirectories. (An empty FILES.DBF is included in the JBBSDBF.ZIP) Note that you do not have to have a FILES.DBF in the default jBBS directory. ~~~ * dBase structure of File: FILES.DBF (just for info.) 1.......NAME char 12 2.......DESC char 60 3.......FILESIZE char 11 4.......FILEDATE Date 8 You will need a FILES.BBS in each files area. jBBSUTIL and LOADER read a FILES.BBS from each file directory. This is a sample of FILES.BBS: ----------------------------------------- RENUMJBS.ZIP Deletes & renumbers messages for jBBS TOPTEN.ZIP Creates list of most popular downloads JBBSEXE.ZIP JBBS.EXE & Overlays version 1.04 JBBSDOC.ZIP Docs for jBBS LOADER.ZIP Loads all file areas, writes MASTER.TXT JBBSPRGS.ZIP .Bat files, jbbs.cfg, menus, and source JBBSDBF.ZIP Empty Databases for jBBS JBBSUTL.ZIP Utilities for jBBS (JBBSUTIL.EXE) ----------------------------------------- (This is the same structure as required by the Opus BBS system.) (The description must start on the 14th column.) Note: If a file exists called "Header.Bbs" in the file path, it will be displayed at the top of the files listing when a user views the files from that area. Make "Header.Bbs" files only as straight ascii text. (Do this later if you'd like, it's optional.) Converting Opus 1.0 users to jBBS: ------------------------------ Freq or download FU.ZIP (Fido Utilities). It will output your Opus users to a text file with their name, password, and times called. Call FU with the "/p" parameter, and redirect the output to a file. Like this: --------------- FU /p >opus.old --------------- Then create a database called FILL.DBF with dBase: ***File: FILL.DBF 1.......NAME char 37 2.......PASS char 37 3.......TIM char 3 4.......FNAME char 20 5.......LNAME char 20 6.......PASSWORD char 20 7.......TIMES numeric 4 0 From dBase say: USE FILL APPE FROM OPUS.OLD SDF Then run this little program from dBase: ---------------------------------------- clea set talk off use fill do whil .not. eof() namer=trim(name) atsp=at(" ",namer) repl fname with substr(namer,1,atsp) repl lname with substr(namer,atsp,20) repl password with trim(pass) repl times with int(val(tim)) skip endd ---------------------------------------- And then to finally get them into jBBS do this from dBase: USE USER INDEX LNAME APPE FROM FILL That's it. It will work. And as soon as they log on to jBBS, it will force them to fill out their address & phone. תתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתת Run JBBSUTIL.EXE. again ----------------------- Run JBBSUTIL.EXE and take the first option "Load one file area". When it says "Do you want to edit the FAREAS database?" say "Y". Turn your capslock on, and press to add the first file path. (You may need to press the down arrow key to add the first record.) End the path with a backslash, press when done, then enter the upload path after it jumps to the "upload path" field. Add the name of the file area, the security level, type of sort, and menu id letter or number for this area (see below). When you have completed a record, cursor back to the left, press the down arrow again and "New" will appear at the top of the screen. Continue filling in all of your file areas this way. Make sure you have no blanks. If you want to delete an empty record or a wrong one, press the del key and it will be marked for deletion. When you have finished, press the esc key to exit the FAREAS.DBF edit screen. Any record marked for deletion will now be removed from the database. *** dBase structure of File: FAREAS.DBF Updated...12/11/88 Records...13 1.......FILEPATH char 40 Download path 2.......UPPATH char 40 Upload path 3.......NAMEFILE char 40 Title of file area 4.......SECURITY numeric 3 0 Access to download area 5.......SORTFILE char 2 Choose "A" or "D", for type of sort for the files.bbs A = Alphabetical, D = Date descending (UPPER CASE!) 6.......AREAID char 1 Your menu option for this area * Caution, do not use any of the following: D, T, N, ?, V, M, F, G, U, A * All of the above are already hard-coded into the Files program. You can use any other number or character. Note that the character you choose will be converted to uppercase by jBBS. 7.......DIRFILE char 40 Download path again. Load each files area with the JBBSUTIL option "Load one file area". It will load the FILES.DBF from the FILES.BBS in that path, then will display it. It will pick up any orphan files and mark the description with "* Orphan *" You can delete an entry with the Del key. You can edit a description or file date. It will then write a new FILES.BBS for that area and import that file area into the Master.Dbf. Cursor to the right to see or edit all of the fields. Add yourself to the User.Dbf ---------------------------- Choose JBBSUTIL option "Add User" to add your name. Make yourself user # 1. Give yourself an access level of 99. * * dBase structure of File: USER.DBF 1.......FNAME char 20 2.......LNAME char 20 3.......PASSWORD char 20 4.......ADDRESS char 40 5.......CITY char 15 6.......STATE char 2 7.......ZIP char 11 8.......PHONE char 13 9.......BBSPHONE char 13 (if user is sysop) 10.......FIRSTCALL Date 8 11.......LASTCALL Date 8 12.......ACCESS numeric 2 0 13.......TIMES numeric 4 0 (times on) 14.......TODAY numeric 4 0 (minutes on today) 15.......USESANSI Logical 1 16.......LASTREAD char 3 (last msg. area read) 17.......DLTIME numeric 6 0 (DL minutes) 18.......ULTIME numeric 6 0 (UL minutes) 19.......HELPLV numeric 1 0 (help level) 20.......SAVED Logical 1 (user got extra time?) 21.......PROTOCOL char 2 22.......QUICKLOG Logical 1 (skip welcomes?) 23.......NOUL Logical 1 (user can upload?) 24.......PASSDAY Date 8 (days since PW change) * Do not try to edit the field labeled LASTREAD with dBase. * It has binary characters that will go /wahoo!/ in dBase's BROWSE Edit the message areas FROM jbbsutil. ---------------------- Edit the message area paths,names, and privileges. You are editing my sample MESSAREA.DAT from inside JBBSUTIL.EXE. You can also delete MESSAREA.DAT from DOS and JBBSUTIL "Edit Message Area" will regenerate a new blank one. Do not try to edit MESSAREA.DAT with a text editor. Save and quit (F10) from the Message Base Control Program and it will take you to a list of your message areas in groups of three. Select the maximum number of messages that you want to have in each area. You can have any number of messages in any message area. However, I don't recommend over 9999 in one area. Edit the menus from JBBSUTIL. ----------------------------- You can hide an option from users by setting the security level high enough. (Edit my sample xxx.MNU files from inside JBBSUTIL) - NOT A TEXT EDITOR! There are 5 menus to edit: BULLETIN.MNU FILES .MNU MAIN .MNU DOOR .MNU MESSAGE .MNU * Do not edit. Options are hard-coded SYSOP .MNU * Do not edit. Options are hard-coded * Unless you have changed the sourcecode, leave the 1st letter option * as they are in my samples with the exception of FILES, MAIN, & BULLETIN. FILES.MNU ~~~~~~~~~ You'll need to change the names and menu options to your file area names and options. You define these in the FAREAS.DBF edit option: "Do you want to edit the FAREAS database?" from JBBSUTIL. (see above) BULLETIN.MNU ~~~~~~~~~~~~ Create or copy your bulletins to BULLxx (xx = 1 to 99, no extension) Create or copy your Private bulletins to BULLxx.P (xx = 1 to 99, "P" extension) Only "Special" access users can read a bulletin with a .P extension. (xx = The bulletin number) BULL1, BULL2, BULL9, BULL10, BULL11 Edit the Trashcan from JBBSUTIL. -------------------------------- Add any unacceptable names by cursoring to the bottom of the file and pressing the down arrow key. Press when the new record appears, then type in the name you do not want to allow. That's all the installation you'll need to do with JBBSUTIL. * * Study, edit, then run LOCAL.BAT. jBBS should take off and run. ------------------------------------------------------------------------------- OTHER FILES JBBS USES: ~~~~~~~~~~~~~~~~~~~~~~ NORUN.XXX ------------------------ Create an little file with anything in it called NORUN.XXX. This file is necessary to run jBBS locally. It must not be in the /jBBS subdirectory when you are ready for callers. So copy it to the root of the drive you are running jBBS from, then when you want to run the Local.Bat, have Local.Bat copy it to the jBBS directory, and delete it when done. * NORUN.XXX is only used for local log-on. * Delete it after you have run jBBS local. Usernumber.BBS ------------------------- Create "xx.BBS" where xx is a valid user number to send a personal message to a user when he next logs on. jBBS will stop the user immediatly following the bulletins, and say "A personal message from Sysop", then display your text file. The "xx.BBS" file will be deleted after the user has seen it. YELL.OK ------------------ If this file exists in the jBBS directory (anything in it), jBBS will allow the user to page you. If it does not exist they will be told that you are not available. Move this file around during Binkley events. OUTSIDE.MEM ----------- jBBS creates this file when a user takes an option you define with OUT.CFG If jBBS finds this file in the jBBS directory, it assumes it is the last user returning from a door. For this reason you should be sure your BBS.BAT file deletes it (if it exists) just before running BTBIG or Bt.EXE. Now, on to something entirely different: LOADER.EXE ~~~~~~~~~~ LOADER.EXE will load ALL files areas, but you -must- have the proper paths set up in FAREAS.DBF first. And you must have a FILES.BBS in each area. Make sure you have Fareas.Dbf completely filled in by adding the paths and names with JBBSUTIL before you go messing with LOADER. Loader will check and load each database in each files area with information from your files.bbs that is in each files directory. Then it will update and re-sort your Master.Dbf. Then it will write 2 allfiles lists: MASTER.TXT is a listing of all available files that have a security level less than your "Special" access level. MASTERP.TXT is a listing of all available files including those with a security level equal or greater than your "Special" access level. * Note: File areas with a security level equal or greater than 95 are excluded from MASTERP.TXT. Loader should be run during your nightly maintenance event. LOADER can be called with the parameter NOLOAD and it will not load all of the file areas. If called with the NOLOAD parameter, LOADER assumes that all areas remain unchanged. That means that uploads came into the system from users, or you added files manually from JBBSUTIL. It will still produce the updated files MASTER.TXT and MASTERP.TXT, and any new uploads will be listed. Loader uses: * Structure of File: MASTER.DBF 1.......NAME char 12 2.......DESC char 60 3.......FILESIZE char 11 4.......FILEDATE Date 8 5.......SECURITY numeric 3 0 6.......DIRFILE char 30 And another support program: JBBSMSG.EXE ------------ This stand-alone renumbering/loading program will delete the lowest messages in an area and retain the maximum number of messages that you defined in Jbbsutil.Exe. It will also update you and your users lastread pointers for each area it renumbers. To renumber an area call it like: "JBBSMSG R" To load Fidonet *.msg's call it like: "JBBSMSG L" * Jbbs.Exe remembers your users lastread pointers for 999 message areas. Whenever a user reads message in an area, Jbbs updates a file called "Lastread.Jbs". You do not need to do anything with this file. Jbbs will create and maintain it within the message area directory along with Jbbsmsg.Exe. The file simply contains the users names and the last message they have read in this area. RUNNING jBBS ~~~~~~~~~~~~ A note on indexes. They are NOT dBase compatible! They are only compatible with Clipper Summer 87 and Clipper 5.0 If you use dBase to get in there and change things in any of the .Dbf's, or if you delete something without having the correct index file open with the database, errors may occur, like jBBS won't be able to find files that you know are there. If this should happen to you, simply say (from DOS): DEL *.NTX. Every jBBS program or utility checks for the existance of the proper indexs, and if it doesn't find them, it creates them. It will not harm your databases. The status line you see at the bottom of the screen is not visible to the user on line. UserName, Phone, Access Level, # of times user has called, Upload Hours, Download Hours, Elapsed time, Time remaining, and Memory in use is on the first status line. Address, State, Zip, Last Date called, and Baud is on the 2nd status line. If the caller has been on today for more than 1 minute, the second line will also include a DAY=nn:nn hours/minutes display. A note about "MEM=nn". The higher that number is, the happier jBBS is. New users: ---------- Users first and last names are checked against invalid names in the database named "TRASHCAN.DBF". I have supplied a sample trashcan which can be edited with JBBSUTIL. If an invalid name attempt is made, the user is logged off, and the log is posted with the name they attempted to use. New users are forced into a questionaire that demands: 1) At least 5 characters in the address field. 2) A phone number with at least 7 numbers. Characters are NOT allowed. 3) City, State, and Zip 4) Where did they get your phone number? It will also ask the user if they want ansi graphics. If they do, ansi will be turned on after they complete the questionaire. Then it will ask if they run a BBS and the phone number if they do. New users are asked "How did you get this phone number?" If they do not answer (hit a c/r), they will be asked the question again, and if they still refuse to leave this information, their access will be set to 1. (locked-out) If you should add a user manually through JBBSUTIL, you can leave all fields blank with the exception of the firstname, lastname and security level. When they log on, jBBS will force them to fill in the blank fields. A valid user can enter their name in upper or lower case, or any combination of. They can enter just the first name at the log on, or can stack commands (with spaces in between) firstname lastname, or "firstname lastname password". They get five attempts at their password. Password can be upper or lower case...doesn't matter. Each password failure is posted in the log, and they get progressively urgent messages that they are failing the password. Before a user gets to the main menu, they are shown the jBBS welcome screen, and sent to the bulletin menu. If the user has been on today already, it skips right to the main menu with the message "Hello Again!" Their time remaining is adjusted from any previous log-ons, not to exceed the maximum. Local sysop log-on skips your welcome, bulletins, and your goodbye too. Saves you some time when logging on locally. If you want to test welcomes and goodbye's locally, create a fake-name user, and log on as him locally. When you log on local, jBBS assumes it is you (sysop user #1), and only requires a carriage return to confirm your name, then you enter your password. WELCOME AND GOODBYE files ------------------------- WELCOME.ANS Your color ansi welcome screen (Please..no clear screen in here) WELCOME.BBS Ascii welcome GOODBYE.ANS Your color ansi goodbye screen (Please..no clear screen in here) GOODBYE.BBS Ascii goodbye On a G)oodbye, jBBS waits 6 seconds to display your Goodbye screen, then lowers dtr and quits. jBBS checks for the existance of a file named WELCOME2.BBS or WELCOME2.ANS and displays it (with more prompts if necessary) following the bulletin menu at log-on IF it exists. WELCOME2.BBS and WELCOME2.ANS are optional. Security-level aware automatic bulletins (optional) Example for a level 5 user: If a file exists called LEVEL5.BBS, it will be displayed with more prompts and a pause at the end of the file. Only level 5 users see it. Same goes for up to level 99. LEVEL1.BBS for locked-out callers, LEVEL5.BBS for normal, etc. ------------------------------------ You can make "Levelnn.Bbs" welcome display show only every 2nd through 9th time a caller logs on. If you leave your "Levelnn.Bbs" file the way it is, it will display every time that the user logs on. If, on the other hand you start the file with the very first character being a Chr(1) like this:  then a number from 2-9 the file will display only every xth time the user logged on. Example: File = LEVEL8.BBS ------------------------ 3 Welcome SPECIAL USER. Be sure to occasionally check the official SPECIAL USER message area # 87. ------------------------ This file would only display to the users at security level 8, and only every THIRD time they called. - Guaranteed to blow-up their scripts! ;-} jBBS has a 5 minute inactive timeout. Every minute it will send the message "Are you there?", once each minute, then log them off and post the log with "5 minute timeout" if there are no keystrokes from the user in 5 minutes. There is an exception to this. I changed the timeout to 1 minute at the log-on. When JBBS first comes up and asks for the name it will wait only 1 minute until it dumps them after posting the log that a "jerk" timed out waiting for the first name. Everywhere else it waits the full 5 minutes. Age.BBS (optional) ------- If the file "Age.Bbs" exists, and the user selects "V" from the main menu, (V)erify Age on your main menu), it asks "How old are you? :" -after- displaying "Age.Bbs" (There is no " to continue" on Age.Bbs display, so you should keep it to one screen.) Jbbs checks: 1) Is the answer 21 or greater? 2) Is the user already an 8 access or above? If the users says 21 and he doesn't already have an 8 or above, it will upgrade his access level in the user database, and will also upgrade his online access level for this and all later calls. It will also post the log, telling you what it's done. (Sorry, the level 8, and age 21 is hard coded for the AGE option.) Sysop keys while user is on-line: --------------------------------- With a user logged on, you can hit Alt-L on the local keyboard, and your local keystrokes will go out to the remote. Ctrl-X will knock the remote user off. Cursor up raises the user on line 1 access level. Cursor down lowers the user on line 1 access level. The grey + key adds 1 minute to the time allowed for the user on line. The grey - key deducts 1 minute from the time allowed for the user on line. * Nasty user key: If the sysop hits the F6 with a user online, Jbbs will toggle their baudrate from what it was originally to 300 baud. Hitting F6 again sets it back to what it was before. If you've F6'd them down to 300 baud from say 2400, file transfers will still go at their old baudrate, but the estimated transfer time will be computed from 300 baud. So what would have taken 20 minutes at 2400 baud becomes 160 minutes, and Jbbs says "Not enough time for download." hahahahaaa! Alt-C = CHAT Chat/Yell is internal. A user who does a Y)ell can abort the yell with any key. You need to have a file named "YELL.OK" (can have anything in it), during the event when you want yell to be okay. Delete it when you don't want to be paged. Use Binkley's events and BBS.BAT to make it happen. A file named "CHAT.TXT" will be created the first time you chat with a user. After that, the file will be appended with the start/stop times of chat and all the text that was in those chats. There is word-wrap in chat. To exit chat, hit Esc, and the user goes back to where they were. You can F10 exit to DOS in while in CHAT. CHAT displays red ! exclamation marks inside chat for both the sysop and user. Y)ell plays the "CHARGE" tune. Turn off the music by hitting F7 with a user online, or have a little nothing file in the jBBS directory called NOBELL. With the music off, it will still appear to the user as if Y)ell is calling you. F10 exit to Dos. Sysop can drop to DOS locally with a user online. It works anywhere Jbbs is waiting for a keystroke from the remote, even inside Chat. There is no way the remote user can force a drop to Dos. When you are finished in Dos, type "EXIT" and two carriage returns to give the BBS back to the user, or return to Chat. You can also drop to Dos from remote if you have an access level of 99 and select the "}" key at the main menu. To drop to Dos from remote, you'll need a batch file named "OutJbbs.Bat" like this example: ------------------ watchdg1 on ctty COM1 type outside.txt command ------------------ * The Watchdog is there just for caution, I do not remove it at the end of the batch file to insure I haven't left anything in memory. After I hang up, I want the board to boot. * You -need- CTTY COM1 in there. Aux or Gate may work too. I have not tested them. * Outside.Txt is just instructions to me or other sysop-level users to type EXIT to bring the board back up when they're done. Error posting to the log: ------------------------- Watch for the occurance of *TERROR* in your log for any errors that caused jbbs to abort. It will successfully write the Clipper error message to your log now. This is a -major- help to you, if Jbbs tells you it can't find a database it expects, and an even bigger help to me if Clipper finds a data-type mismatch or programming error I made. It will name the procedure and variable, and show the reason Jbbs bombed. MAIN MENU ~~~~~~~~~ Command stacking: Once a user has gotten to the main menu, they can stack any commands with spaces in between. It will skip some menu displays if a user uses stacked commands. (Speeds things up a bit.) Stacked commands can be as much as 64k in length. Pretty impossible someone would do that much, but is is there anyway. Non-obvious commands: S)tatistics User can change address,phone,city,state,zip,BBS phone, and password. L)ist Users View user names and last date called, sorted by lastname. They can jump to the first letter of a users last name with the J)ump command. This function also checks for users with the same last name and the same password. I figure *that* is a stupid person using multiple names on your BBS. If it finds such a user, it will zero the access level of one of those user names. It also informs whoever is viewing the user names that they have found a duplicate user name, and increments a "score" for them. (Very fun to watch!) It posts the log with what user killed what other user too. H)elp level Users can select full menus, commands only, or naked prompt. ? Help Displays MAIN.HLP text file you can/should edit. A)nsi on/off Color ansi on or off as default. C)omment Goes to comment procedure and posts log that user has left a comment. B)ulletins Displays DOS file dates of all bulletins found. If user has ansi on, the date will appear in red if the date is greater or equal to the last date that the user called. External DOORS (DOOR.MNU) -------------- EXIT TO DOS (no shell) - User returns to main menu when done. File OUT.CFG ------------- X 99 49 Y 1 48 Z 1 47 ------------- Write a file with lines like the above. Name it OUT.CFG Each door takes 3 lines. The first line is the Door menu option, the second line is the security level reqwuired to use the door, and the third line is the errorlevel you want Jbbs to exit with. The above sample would be for 3 doors. The first one is level 99 (sysop only). On the first line put the menu key you want to activate the option. (The key can be "Y" if you wish to replace the internal chat with your own.) Be careful not to duplicate the "M)ain Menu" option. On the second line put the security level required to use the option. On the third line put the Dos errorlevel you wish to exit with. Jbbs will exit entirely out to run your outside program. FILES MENU ~~~~~~~~~~ F)ind a file Wildcards are stripped out. It will check both filenames and descriptions for the string they specify. It pauses after every 21 files if it finds a lot. They can download right from there. P)rotocol Users default file transfer protocol. If blank, user will be prompted for the protocol at every upload or download. U)pload Regular users have choice of regular upload, or hidden to sysop only. Special users also have option of special-user upload. .ARC and .ZIP uploads have PKUNPAK /t (test) and PKUNZIP /t run on them. The output of PKUNPAK or PKUNZIP is re-directed to COM1,COM2,COM3 (any port that you have definded in JBBS.CFG), or NULL. jBBS checks for an error in the archive and asks the user if they'd like to delete the file -IF- it finds an error. The description is added to the FILES.BBS, the appropriate FILES.DBF, the MASTER.DBF, plus the log. (Yes...the description is entered into your log also.) If you have an upload compensation factor in jBBS.cfg that is greater than 1, it will apply the (upload time * compensation factor) to the allowable time the user has on line for that session if the upload took more than 1 minute. * Batch uploads do NOT work. I never considered it, and it would take a * lot of work to get it in there, due to getting descriptions and running * the Pkunpakj /t (test) uploads function....sorry Upload file will not allow upload of "FILES.DBF" or "FILES.BBS". Wildcard (* or ?) in upload file name is not allowed. User is informed. A)ll files list Displays Master list of files sorted by name or descending file date. Fills the screen, then the user can continue showing the files, quit, or download right from there. If they download, after the file has transferred they will loop back to the all files list where they were before they downloaded the file. It remembers what type of display they had (Name or date), and where they were in the Master file. N)ew files The user is presented with their last called date to search from, which they can change. Files are listed in ascending date order from that date on. Notice that a user can view all files in ascending order from the N)ew files, and in DEscending order from the A)ll files by D)ate? ... Is that cool? N)ew files command supports 3 date formats when the user selects an alternate date to list the files. When a user selects N)ew files, pressing at the "Date to search from = dd/mm/yy, or :", gets them the files since they last called. If they want to view the files with a different date, they can type in the date like one of these three date formats: 1) 03/15/89 2) 03-15-89 3) 031589 D)ownload Checks the transfer time for the users baud rate before allowing any download(s). Wildcards are allowed. jBBS takes great effort to insure that a file is sent. A fully named file (FILE1.ZIP) gets an exact match, and is passed to DSZ. A wildcard named file tries to pass their wildcard filename to DSZ after doing a find in the jBBS master database with the exact set off. A filename with the incorrect extension will be passed to DSZ with the -right- extension. DSZ output will display on your terminal. The user will not see the output of DSZ. Wrong files area, sends right file: ----------------------------------- Example: If a user is listing your Utilities files area, and tries to download a file that is your Games directory, JBBS will now correctly send the right file from the Games directory. It still checks for valid user access to the file first. Before, if a user was listing -one- file area, and tried downloading a valid filename, but it existed in a different file area, Jbbs would say "File not found". Now it will send the right file. We dun need no steenking extensions! ------------------------------------ Filenames for downloading can be stacked from the files menu. They can put as many filenames there as they'd like, and in any combination. Example: This file exists / This is really CAL.PRG / / ALSEARCH.ZIP CAL CODE*.* ALLFILES.ARC \ \This is named wrong. Jbbs will send ALLFILES.ZIP \This is CODE39.ARC The users estimated transfer time and time remaining are compared between every transfer. If they don't have enough time, it will not complete their file list. V)iew ARC, ZIP, LZH files Runs "PKUNPAK /V" on an ARC file. The output is placed in a temporary file which has pauses at each screenfull. * This command will also view .ZIP files if PKUNZIP is in the path. * This command also supports LHARC for viewing .LZH files. * All you need is LHARC.EXE somewhere in your path. * I should mention that V)iew arc, zip, and lzh is not merely re-directed output from these utilities to the comm port. JBBS actually writes the output to a temp file which it then reads into memory for viewing with "More?" prompts at screenfulls. This way, we need not fear a dropped carrier at the wrong time. * V)iew ARC or ZIP file can find a filename -without- the extension. Get that? User wants to view a file named 3DBB.ARC. When Jbbs prompts him for the filename, he just types "3DBB" and Jbbs will find the file. It checks to make sure it really is an Arc or Zip before attempting to view the file. It will also find the proper file if they make a mistake and ask for "3DBB.ZIP", then tell them the real filename. I think this is a neat feature. Especially with the mixture of Arc and Zip files that are going around now, a user can easily get confused on the extension. ? Help Displays FILES.HLP text file you can edit. CPS rates and log posting of files: ----------------------------------- Either in your Autoexec.Bat, or your Bbs.Bat, make sure you have the following line: SET DSZLOG=DSZ.LOG jBBS reads DSZ.LOG from the jBBS default directory and picks up the -real- cps rate. It can tell if the file was aborted, or transferred successfuly, and will post your log correctly. You can let DSZ.LOG can grow to any size, it won't bother jBBS. Successful downloads that were a "special access" file will post your log with "DL!" in front of the filename instead of just "DL". Better log reporting of files downloaded: ----------------------------------------- Here's the latest with a successful read from Dsz.Log. It looks at the first character in the line and if it is a "E" or "L", it will report an aborted download. Your Jbbs.Log will no longer show any wildcards on successful downloads. It will post the log with each filename, and dsz's cps rate for that file. MESSAGES MENU ~~~~~~~~~~~~~ [M]ain Menu Return to main menu [N]ext Read messages in ascending order [P]revious Read messages in descending order [C]ontinuous Non-stop messages. Good for capture. [E]nter Message Enter a message [R]eply Reply to a message [K]ill Message Kill a message [L]ist Messages To and from's only [H]eaders Message headers listed only [D]ownload Area Download a message area. Start at any number. (Capture) [J]ump to Files Leave the message area and go to the files menu [A]rea Change Select a different type of message area [G]oodbye Hang up If a user enters or replies to a message, jBBS checks your "AREAS.BBS" for the real echomail area name. If it finds it in areas.bbs, it will write a file named "IWROTE" which can be used by Confmail Export or QMAIL to export only the areas that have had new messages written. Message fun for ansi users: --------------------------- 1) A user entering a message that uses the ! exclamation key will get a red ! exclamation key displayed on that line of the message. Listing or reading messages, the ! does not turn red..only -entering- that line of the message and only the ! key. 2) Listing or reading messages jbbs searches for the ">" quote character. If it finds it, it turns that line cyan, then tries to make the reply yellow. Message area display files: (optional) -------------------------------------- You can have header display files that will show when the user first goes into a message area. You can put instructions to the user there, or just nifty ansi graphics. In each message subdirectory, create a HEAD.ANS and HEAD.BBS display file. If the user has ansi on, they get HEAD.ANS, if it's off they get HEAD.BBS. It's kinda like PCBoard displays when you join a new conference. You don't need a clearscreen at the top of the display file. Keep the file length to about 16 lines so the menu will display below it without pushing your display off the top of the screen. Note that this is optional. You do not have to have these HEAD display files. If jBBS doesn't find them in that message area subdirectory, nothing happens. Other notes on messages: ------------------------ Displayed messages have any ESC codes stripped out. This is to protect you from having a user leave a message that attempts to redefine the users keyboard, or change colors. K)ill message now checks to see if the user is the sender or receiver of a message before allowing them to kill the message. Sysop access level 99 overrides this. Sysop can kill any message. Special users can edit your origin lines in messages. Your origin line will be displayed to them and they will have the option to write their own. Your net/node number will be appended to their origin line. When entering messages: An empty TO: defaults to "All" An empty SUBJECT: defaults to "?" With the belief that the sysop should hold complete control over messages on his system, sysop access level 99 will be asked "Mark this message as read?" when reading messages that are addressed to you. If you say no, the message will not be marked as received. R)eply to a message asks the user if they want to quote from the message they are replying to. If they wish to quote the message, it will be displayed one line at a time and they will be asked at each line if they want to quote that line. They can choose to quote the line, not quote the line, or quit out of the quote feature. jBBS next asks for the subject, and continues on with their message/reply. The quoted part of the message that they are replying to is tagged on to the beginning of the body, in one block. So you can't have a quoted line, a reply line, a quoted line, a reply line, etc. Everything they quoted will be at the top of the message in one block. I may be able to allow that in the future, can't say right now, but this is a workable quote feature without the need of using the "Q)uote" from the messages menu. The user cannot edit or delete lines that they have quoted. When the message is saved, jBBS puts the quote and their new message together. SYSOP MENU ---------- Use the "!" key from the Main menu to activate it. Only level 99 has access. Presently, only user edit and delete is supported. You can edit any field of the users record. * Announcing a great log reporting utility: ---------- TOPTEN.ZIP ---------- Top Ten Ver. 1.4 Copyright Lloyd Helm 1989. Top Ten is a simple yet fun program that allows you to create a bulletin containing either the top twenty or top hundred files that are the most popular D/L's on your system. Currently Top Ten only keeps track of two hundred and fifty files at anyone time. an inactive files are deleted after 2 months of inactivity so as to make room for an active file. Top Ten writes to your input log with starting and ending times mostily to show you that it DID run! Top ten requires that you are running JBBS and that Top Ten is in the same directory as the input log other then that there is very little you need to do. Well putting it as one of your bulletins couldn't hurt! Run it as part of one of your nightly events and your off and running. The command Paramaters are few and simple. -S Causes Top Ten to print out the Top one Hundred. Default is a Top Twenty print out. -D Causes Top Ten to NOT delete your log file. If you leave this param off it will delete your log file after processing. -P Name of the bulletin that Top Ten creates for special Access files! If you have a board with an special Access section that is not open to the general public and would like for the people with access to this area to have their own Top Twenty bulletin then use this option. -F Name of the bulletin that Top Ten creates for regular access files. -I Name of input file. Top Ten defaults to JBBS.log Example: Topten -S -D -PBULL1 -FBULL2 -IBINKLEY.LOG This would cause Top Ten to create two top one hundred Bulletins. It would create both a regular user (bull2) and special user bulletin (bull1). It uses Binkley.log to get it's information.(This would only work if you have JBBS writing to the binkley.log!!). It will not delete the input file. Example: Topten -D -Fbull7 -Ibinkley.log This is how i use Topten. It creates a top twenty bulletin for regular users(bull7) using Binkley.log for input. It does not delete the input file. My thanks to Jay Kenney writer of JBBS for his help and suggestions. An for not letting me rest on my laruels! I would also like to thank the Miller Brewing company for the will to put in the long hours!!! Lloyd Helm Fido Net 1:(202/609) :end docs jBBS The old Updates.Doc has been merged into Jbbs.Doc. This is the new updates doc for version 1.04c_1 and above. ************* Read and capture the JBBS echo for updates until the docs are rewritten. ************* 1.07 - 03/15/90 -------------------- JBBS version 1.07 - Messages.Dbf + Messages.Dbt First thing needed is to NOT overwrite your BBS.BAT or LOCAL.BAT !! Copy mine somewhere else, or print them out. Edit your BBS.BAT and LOCAL.BAT files before doing anything else. (See below) Then run "JBBSMSG L" to load the message databases. You do not need to copy any .dbf files anywhere. Jbbsmsg will create a Messages.Dbf and Messages.Dbt in -each- of your messages subdirectories. It will delete each of the Fidonet-style nnn.Msg files as it is appended into the Messages database. (Add one message to the database - delete one Fidonet message.) This method insures that you will not go disk full when loading the Messages database. Just for your information, run CHKDSK on the drive that you have your messages on before running "JBBSMSG L". Then run CHKDSK after you have loaded the Message databases. On my machine, I had about 2,000 messages and 2MB of free space before loading the message databases. After loading the databases, I had over 5MB of free space. * Other notes: -------------- * Add a "S)can Messages" option to your Messages menu with Jbbsutil's * "Edit menus" function. This is a new messages command that will allow * your users to scan the message headers or body of the messages for * a search string. * BBS.BAT ------- Add the line "if exist e:\dbbs\outside1.mem del e:\dbbs\outside1.mem" (with your path of course) just before you call BTBIG (or BT). This is necessary so that there is no way a user calling in can be mistaken for someone coming back from a door. (Insurance can't hurt!) Notice that jbbs.exe now exits with an errorlevel 56 if a user left echomail. (This does not happen if they left a comment.) Look at my :dbmail label. Right after my "qm toss scan -Fg:\areas.bbs pack", you'll notice I run "JBBSMSG D" delete any messages that exist. This is necessary so that on the next run of the jbbs message importer "JBBSMSG L", the messages a user might have left won't be re-loaded into the database. When a user enters a message(s) in jBBS, jBBS still writes the Fidonet- style nnn.Msg file to disk. It also appends the message to the Messages database. Once the messages have been processed (QMail, or Confmail), you want to be sure to DELETE them. If you don't do this, you will get dupes. Scan for the word "jbbsmsg" in my BBS.BAT. You'll find it at the bottom of my :postarc label to import messages into the databases as soon as they arrive. Notice there is an "l" parameter. This tells Jbbsmsg to LOAD the messages. You will find a "jbbsmsg r" in my :doit label. This is my nightly maintenance event. The "r" parameter for Jbbsmsg tells it to renumber the messages database. The "r" option of Jbbsmsg is called in my :doit label. LOCAL.BAT --------- Notice the errorlevel 56 call to :dbmail: --- :start jbbs 2400 if errorlevel 56 goto dbmail --- And the :dbmail label in Local.Bat: --- :dbmail g: cd\ qm scan pack e: 1.06 - 02/15/90 -------------------- Local Area Network - Net Bios compatible version. * * Thanks to Lloyd for the file and record locks! * * You do -not- need to do anything different if you are not running a Local Area Network for this version. It works just like the previous versions in a single user environment. If you are running a Local Area Network, set up a different subdirectory for each node you will be running. Copy the jBBS files to each subdirectory. Configure each node to use it's own separate log. Or, install jBBS on each workstation. 1.05c_5_b - 02/07/90 -------------------- Messages menu has been compressed to put more message on the screen. L)ist User has columnar format. Log on screen has removed the funny ansi sequence that moves the users name to the left. "BIG" username at logon now shows both first and last name. 1.05c_5 - 02/06/90 -------------------- Multiple events. On the first run of jBBS or Jbbsutil, it will create a database called EVENTS.DBF. You add, delete, or edit an unlimited amount of events through Jbbsutil's "Misc. Functions" option. The EVENTS.DBF can be empty. It can be in any order. You can keep your already existing event that you defined in the "Edit Config" option of Jbbsutil. The start and end times you enter in "Edit Events" must be in military format, ie: 17:30:00. When a user calls, or is already on the BBS, if their maximum time allowed on the system will overrun an event, jBBS will adjust their remaining time to make sure they are off the BBS before the event occurs. 1.05c_4 - 01/21/90 Credits to Lloyd Helm and Brad Chesbro Yeah, ok, me too...:-) -------------------- Edit your Files menu. Change the "T)ransfer Protocol" option to "P)rotocol". Add a new command called "T)agged files DL". Users can tag files at any screenfull from any files display. When they return to the files menu, they select "T)agged files DL" and jBBS will send all the files they've tagged from any area. The new PUMA transfer protocol is now supported by jBBS. PUMA100.ZIP is available here by download or file request. jBBS will not show the PUMA protocol option unless it finds PUMA.EXE in your default jBBS directory. jBBS no longer uses dBASE compatible NDX indes files, the indexes are now Clipper compatible NTX files. Delete *.NDX from your jBBS directory. The NTX indexes are smaller and faster. None of the jBBS programs need JBBS.CFG anymore. The defaults are all edited from inside JBBSUTIL with the E)dit Config option. Make sure your LOADER.EXE is the new version. The old LOADER will not work with the new JBBS and JBBSUTIL. Note to sysops compiling jBBS with Clipper: Use the new JBC.BAT and JBBSC.LNK files to compile JBBS.EXE. Use the new JBUC.BAT to compile JBBSUTIL.EXE. Use the new LOADERC.BAT to compile LOADER.EXE Use the new RC.BAT to compile RENUMJBS.EXE You no longer need the CL.LIB for any of the jbbs programs. You no longer need the NDX.OBJ for any of the jbbs programs. You -DO- need the new JBBS.LIB in your compiler batch files. If you already have a JBBSTXT.DBF delete it along with JBBSTXT.NTX (or JBBSTXT.NDX). Let JBBSUTIL re-create the new JBBSTXT.DBF and JBBSTXT.NTX. 1.05c_1 - 12/27/89 (Mushi-Mods) Thanks to Brad Chesbro (1:202/315) for the new stuff! -------------------- The changes that have been made to jbbs.prg and jbbsutil.prg are the beginning of a text database that will eventually contain every output string that jBBS uses. You the sysop will be able to edit the content of each string as well as the colors used in each string. Presently, only a few strings are definable. When you run JBBSUTIL.EXE choose the Misc menu, then select "Set Colors". From this option you can now edit jBBS's colors. Leave them alone right now! Try changing some of them after you have had a look at the current default colors jBBS now uses. After viewing the default color screen, look at "Edit Text". Once again..leave them alone! Use the PageUp/PageDn keys to view the definable strings. By studying the example and the default strings you can understand how this works, then try making some changes. Test your changes locally. If there is an error, jBBS will not display what you thought you were defining. It looks a bit confusing at first, but with a little experimentation you'll see how powerful this new feature can be. Non-American jBBS sysops could make German or Spanish, or whatever language they wish without the need for Clipper compiling of the code. Now...THIS IS IMPORTANT. Do not edit JBBSTXT.TXT unless you thouroughly understand what you are doing. The way to make changes to the default strings is through JBBSUTIL. As I add new definable text strings, I will be issuing a new JBBSTXT.TXT with new releases. You will then be instructed to delete 2 files that JBBSUTIL creates if it does not find them. The 2 files are: JBBSTXT.DBF and JBBSTXT.NDX. Brad has changed the BIG username at logon to a bit-mapped function that may go through another change. The whole thing might end up written in C and added at link time. For now, jBBS only shows the users last name at logon, and it will place it at the top of the screen. A user sending a BEEP or chr(7) to jBBS will not be bumped off the board anymore. They will only see a message flash by on their screen that says "NO BELLS ALLOWED", and your machine will -not- beep. 1.05b_7_b - 12/18/89 -------------------- jBBS now writes PCBOARD.D12 and PCBOARD.D14 instead of a single PCBOARD.DAT for PCBoard compatible door programs. Rename Pcboard.D12 or Pcboard.D14 to PCboard.Dat depending on which type of door you are running inside your BBS.BAT. 1.05b_7 - 12/17/89 ------------------ Lloyd's at it again! FILES.PRG has been rewritten to be more readable, and he's optimized the code with proceduralized routines, and CASE...ENDCASE statements. LOGON.PRG has been changed to post your log with a first-time callers address, city, state, zip code and password. This just makes it easier for you to check if they have left valid information. 1.05b_6 - 12/13/89 ------------------ Lloyd Helm (1:202/609) has been hard at work contributing code! New D)oor command from the main menu uses a new DOOR.MNU and a new OUT.CFG. Edit your Main menu to add the D)oor command. Any OUT1.CFG and OUT2.CFG must be made into a single OUT.CFG. Simply stack your old OUT1.CFG and OUT2.CFG inside OUT.CFG. You can now have as many alphabetical or numeric door commands as you can fit on the Door menu. Just keep on stacking the options in your new OUT.CFG. Use JBBSUTIL to edit your DOOR.MNU. Lloyd has done a lot of code optimization which recovered 2k from the jBBS.exe. He found some redundant code I'd written, and made some changes which make the jBBS code more readable. 1.05b_4 - 12/08/89 ------------------ Get the new and improved JBBSUTIL! Then thank Lloyd Helm for the nifty new menu modifications and clean up of some of my re-DUMB-dant code. Have you ever seen someone log on that types in a name, then backspaces it out and types in a different name? I have. That is a user you should keep an eye on. He may be dual personalities on your BBS, he may not really be who he says he is, or he may be just a poor typist. You figure it out... Here's an excerpt from what jBBS posts in your log when this happens: -------- ! 08 Dec 16:23:38 JBBS - WARNING! - Possible Suspect? ! 08 Dec 16:23:38 JBBS Backspaced john ! 08 Dec 16:23:50 JBBS - WARNING! - Possible Suspect? ! 08 Dec 16:23:50 JBBS Backspaced frank ! 08 Dec 16:24:00 JBBS - WARNING! - Possible Suspect? ! 08 Dec 16:24:00 JBBS Backspaced george : 08 Dec 16:24:11 JBBS Jay Kenney logged on at 9600 Bps. User #1 : 08 Dec 16:24:21 JBBS Jay Kenney Off Normally. Len=0 Today=0 -------- 1.05b_3 - 11/26/89 ------------------ Not deducting time in chat was not working. I'm pretty sure it is fixed now from the tests I ran here. Let me know if it's not working for you. Non-Ansi users were getting a non-exit loop in Messages A)rea Change, so I fixed it. When a user asks for a download, the display of bytes for the file or files is formatted with commas. This will work up to 999 MegaBytes. When a user asks for a download, the display of the estimated download time will be like: "7 minutes, 30 seconds". jBBS and the new JBBSUTIL.EXE will create a file named JERKS.DBF which you can edit, add, or delete jerk user names from JBBSUTIL. If you add a valid user name to the Jerks.Dbf, every time that person logs on, jBBS will act like you gave them the F6 nasty user key. Kind of a non-confrontive TWIT status, the user will think your BBS is always broken. Note that merely hitting the F6 key with a user on line will not put them into JERKS.DBF. You have to manually add them via JBBSUTIL. 1.05b_2 - 11/21/89 ------------------ A few minor things. 1) The new F6 error messages have been enhanced to be more DOS-like. It will attempt to force a valid A, R, or I for the prompt that asks "Abort, Retry or Ignore". It will do that 10 times before dropping out of the "Abort, Retry or Ignore" prompt entirely. The error messages will also not all happen at once. They will only happen at the 1st, 3rd, 5th, 8th and 11th Getkey() wait. I am currently considering a database named "JERKS.DBF" that you could access from JBBSUTIL. jBBS would check this database when every user logs on, and if it finds their exact first and last name, it would automatically kick in with the same as if you had hit the F6 key from the local keyboard every time they log on. If I decide to implement this, jBBS will automatically create JERKS.DBF so we don't have to worry about distributing another database. 2) When a user says goodbye, jBBS will tell them their elapsed time for the session like "3 minutes, 45 seconds" instead of "00:01:23" And -yes- I covered for less than 1 minute, more than one minute, and "1 minute, 45 seconds" instead of "1 minutes, 45 seconds". I hate it when software tells you "1 minutes"... 1.05b_1 - 11/19/89 ------------------ The F6 (nasty user sysop key) is much more robust! Remember this is a toggle, so you can turn it on and off just to play with someone if you'd like. It will tell jBBS that the user is connected at 300 baud which will make it quite difficult for them to download very much. It now also will send the user some rather terrifying DOS error messages. It's going to look like your hard-disk is dying. Rest assured! Nothing is wrong with your machine, but the user will get what appears to be sector not found and seek errors, and finally DOS's "WARNING! ALL DATA ON NON- REMOVABLE DISK DRIVE C: WILL BE LOST, Proceed with Format (Y?N)?" before they see "General Failure", and they get bumped off. jBBS still cleans up by updating the users record, when they finally do get knocked off, and jBBS does nothing nasty like lowering their security. That's up to you. Have fun with this one! ;-) A command string terminated with is limited to a maximum length of 100 characters. If the user enters a string in excess of 100 characters, the string is reduced to NULL, and jBBS posts your log to that effect. If this occurs more than 4 times in a session, jBBS will dump the user off the board. The main reason for this function is to eliminate modem garbage from getting stuffed into the string that jBBS is trying to make sense out of. 1.05a_9 - 11/14/89 ------------------ Thanks to Bill Thomson of (1:202/611) for the following: New user logon asks "Is your name spelled correctly?" when their name is not found in the user database. Much less confusion on this one. "Smart" goodbye screen waits shorter period of time before issuing the dtrdown (hangup) command for 9600 baud connects. Also waits longer for a 1200 baud connect goodbye. 1.05a_8 - 11/11/89 ------------------ Many thanks to Hermanno Mizusawa for submitting some changes he's made to the sourcecode. Here's what Hermanno did: 1) Now the files program has a much better status line display that is kept on the bottom 2 lines from the main files menu. 2) Download area in Messages program now uses .ZIP instead of .ARC'd file to be sent to users, and does not ask for the download protocol if it has already been defined by the user. 1.05a_7 - 11/10/89 ------------------ Files program "F)ind a file" enhanced for ansi users, now shows red search string in filname, also makes the string red if it already was uppercased in a description 1.05a_6 - 11/07/89 ------------------ Bug fixes for additional "out of memory" problems 1.05a_5 - 11/03/89 ------------------ Return of the BIG USER NAME at logon! The remote user does -not- see this. It's only for you. I find it a big help to see who's logging on from across the room. Messages.Prg has been optimized to use -much- less memory if a user A)rea changes to many areas. The Displaymenu function had added a line at the heading of each menu, and a linefeed before and after the options. 1.05a_4 - 10/22/89 ------------------ The registration procedure has been changed so if they skip their address or phone, or give invalid information, they don't have to re-enter everything. 1.05a_3 - 10/19/89 ------------------ Fixed a stray "Press to continue, or D)ownload" that would show when a user did D)ownload after a F)ind file command and had stacked filenames. A user who times out after 5 minutes of activity will have their daily time on the system set to the maximum, and their "saved" flag will be set to true, so they will effectively be locked out of the system for the rest of the day. 1.05a_2 - 10/10/89 ------------------ Following is from Will Greenway: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Contained herein is the start of the new stuff for MESSAGES. The Quote Highlighting system should be VERY interesting now. There is also a set of 'C' functions starting with the OCCURS function, which I will begin supplementing things with as I go along. The new functions will be in MESSFUNC.OBJ and is separate from GETIO.OBJ. I did this most DEFINITELY on purpose... after the hassles I had getting that spot of code to work there is *NO* way I am going to take a chance of messing up its functioning by haphazardly trying to add to the code. The first new FUNCTION is called OCCURS()... the syntax is RESULT = OCCURS(Target,Compare) Where Target is a string of any length. Compare is any character. Result is the number of times COMPARE exists within Target. Example : X = OCCURS("Jay Kenney is a Programmer","a") && X = 3 This could be useful for counting Carriage returns within a message body... or a number of small things... What I used it for was much more mundane, but what the hell... This sucker will search a 64k string in less than a millisecond... its *FAST*... Remember to put MESSFUNC.OBJ in your link process. Of you wish to use OCCURS for anything, declare it EXTERNAL at the top of JBBS.PRG New features section: The punctuation test is now native and should be 100% faster which should cause less line wrap failures. Each level of a quote displayed in a message now has its own color, twelve levels are supported. 1.05a_1 - 10/08/89 ------------------ Message output speed considerably improved! 1.05 - 10/07/89 ------------------ Thanks to Will Greenway, the Messages program has been optimized to read the messages off the disk faster. Watch for further optimization of messages and new features that Will is working on. 1.04e_4 - 09/22/89 ------------------ F)ind a file converts users search string to uppercase when found files are displayed. If user has ansi color on, their search string will also be displayed in red. 1.04e_3 - 09/20/89 ------------------ Lynx file transfer protocol had a bug -only- with 9600bps+ connections. It's fixed. "Special" users see a blue background for "special" files when doing a N)ew files listing if they are using color ansi. If a message area has the security level assigned to it for your "special" access users, the title of that message area will be bright white on blue for ansi color users. 1.04e - 09/07/89 ------------------ You can delete files the files NOBELL, INSTANT.BBS, LOCKED and NOCHAT.TXT if you have been using them. These variables are now defined in JbbsCfg.Dbf 1.04d_6 - 08/27/89 ------------------ Time spent in chat will not count against the users remaining time on line. Events will still be forced. I have not tested what happens if you chat over the midnight mark, but covered for it by resetting their time "logged on" as 1 minute after midnight if it runs over midnight. 1.04d_5 - 08/25/89 ------------------ @USER@ in the To: field of a message will put the remote users full name as the To: of a message. @USERFIRST@ in the body of a message will put the users first name into the message. You can also use @USER@ in the body of the message to use the users full name. Both of these "wildcards" can be used in any of the display files such as welcome, welcome2, levelnn, or goodbye to put the users name into the display. Anyone with access level 99 will not be knocked off the bbs with "Exceeded time limit". "King of the cps" displayed on the files menu. jBBS will keep track of the highest cps transfer rate and appoint a new king if the old rate is exceeded. jBBS will not allow a rate higher rate than 2000 to cover for Zmodem recovery transfers which can go at an amazingly high rate. Cps transfer rates are now displayed to the user when they complete their transfers. jBBS gets the cps rates from your DSZ.LOG, so they are acccurate. 1.04d_4 - 08/14/89 ------------------ Strips the ctrl-z from messages entered with jBBS. It didn't bother anything, but looked stupid. On uploads, checks the name of the file being uploaded up to and including the dot, so if you have a file named FILE1.ZIP and someone tries to upload FILE1.ARC, jBBS will tell them you already have it. (Yeah!) Lynx protocol support: There are 4 new .bat files in JBBSPRGS.ZIP: SLYNX.BAT Send Lynx SHSLYNX Send using CTS/RTS handshaking @ 9600+ RLYNX.BAT Receive Lynx RHSLYNX.BAT Receive using CTS/RTS handshaking @ 9600+ 1.04d_1 - 08/08/89 ------------------ jBBS does NETMAIL. I just added netmail to jBBS. It will recognize your netmail message area as long as you have defined it with Jbbsutil's "Edit Message Areas" as a MATRIX #3 type area. It will ask for the net/node you are sending the message to, then also ask if it is a File Attach, File Request, or File Update request. If you want to send a file attached to a message, put the path and filename you are sending as the subject of the message and answer "Y" to the file attach prompt. If want to do a regular file request, put the name of the file you want to request as the subject of the message. If you want to do a FileUpdateRequest, you must already have a copy of the file you want to request from the remote system on your disk. Put the drive,path,and filename as the subject of the message. When Binkley calls, it will compare the filedate of your copy of the file with the filedate of the file on the remote system. If the file on the remote system is newer, the Binkley at the remote will send the file to you. If the filedate is the same or less on the remote system, Binkley will not send the file to you again. The "dLORED" editor sub-menu (the one with "S)ave, A)bort") has a new option available only to access level 99. You can R)ead in a file which will be placed below your message text in the message. 1.04c_6 - 08/02/89 ------------------ Writes 2 more files for PCBoard on a door exit from OUT.CFG 1) PCBOARD.DAT some PCBoard doors need this 2) USERS Cool! A 2-user PCBoard user database. 1st record is sysop, 2nd is user. You -might- need this for your door. 1.04c_5 - 07/24/89 ------------------ Writes 4 files on a door exit from OUT.CFG -------------- 1) DORINFO1.DEF for QuickBBS 2) PCBOARD.S12 for PCBoard 12.0 (rename to PCBOARD.SYS) 3) PCBOARD.S14 for PCBoard 14.0 (rename to PCBOARD.SYS) 4) DOORUSER.DAT for the COA (Catacombs of Ascii) Posts users elapsed door time in your log. 1.04c_4 - 07/19/89 ------------------ S)tatistics and the Fixguy functions are now in STATS.PRG Result...jBBS runs in less space. 1.04c_3 - 07/18/89 ------------------ Building on the idea of the output from the new DOWNLOAD.DBF, I've made it so your users can now also view a list of files they have downloaded. From the S)tatistics menu, they can select option #8 if they are using ansi. Without ansi turned on, this option will not appear on the Statistics menu, and will not function even if they do try it. The reason for this is that it uses ansi screen locations for it's columnar output, and bytes total per screen. The main purpose of having this option is to be able to inform the user if they have exceeded any limitations you might have on your system, of the facts concerning the files, and bytes they have downloaded. Wildcard downloads with more than 1 file being sent by jBBS will say like: "Sending 5 files Zmodem QMOD*.*" just before DSZ kicks in. 1.04c_2 - 07/02/89 ------------------ jBBS will write a new database called DOWNLOAD.DBF with this version. It saves the users name, filename downloaded, bytes in the file, and the date they downloaded the file. I am currently adding an option to JBBSUTIL that will allow you to view or print from this database. So for now, DOWNLOAD.DBF is somewhat useless to you, but...you'll see... 1.04c_1 - 06/29/89 ------------------ Reply to a message now asks the user if they want to quote from the message they are replying to. If they wish to quote the message, it will be displayed one line at a time and they will be asked at each line if they want to quote that line. They can choose to quote the line, not quote the line, or quit out of the quote feature. jBBS next asks for the subject, and continues on with their message/reply. The quoted part of the message that they are replying to is tagged on to the beginning of the body, in one block. So you can't have a quoted line, a reply line, a quoted line, a reply line, etc. Everything they quoted will be at the top of the message in one block. I may be able to allow that in the future, can't say right now, but this is a workable quote feature without the need of using the "Q)uote" from the messages menu. The user cannot edit or delete lines that they have quoted. When the message is saved, jBBS puts the quote and their new message together.