This is the setup I used to build XBBS. I set up the main bbs original directory as /bbs but it could just as easily have been /usr/bbs or /user/bbs or /usr/john/bbs. You must, however, insure the the home directory is in the SAME filesystem as the rest of the directories. /bbs '---home /bbs/home - user login area '---lists /bbs/lists - lists area '---pgms /bbs/pgms/ - program & files area '---fls /bbs/pgms/files - files area '---amiga '---bbs '---c64 '---mcs '---msdos '---unix '---uploads '---msg /bbs/pgms/msg - message area '---fsale '---general '---hwanted '---special '---s_tech /bbs/pgms/s_xx - sigs '---files '---msgs /bbs/pgms/xx - various misc '---xbbsgen '---allign '---doc '---msgpack '---purguser  xbbs .bbs files answer.bbs - A file that is generated by the bbs software ( the answers to the questionnaire ) question.bbs. areas.bbs contains the path information for uploading, downloading, and listing of files along with the access privilege of the download directory. bulletin.bbs contains your bulletin which is printed out whenever a user logs into the bbs or with the B command from the main menu. callers.bbs contains a time log of all of your bbs callers. In addition to the name and time, all uploads and downloads are logged into this file. If a file is uploaded as "SYSOP ONLY", the description of the file is also added to callers.bbs instead of files.bbs. This way, you can still get the description. dlmsg.bbs features.bbs contains the actual programs that you make available to you users. filepriv.bbs contains the privileges assigned to the file menu options. help.bbs contains the HELP information for your users. helpfile.bbs helpmsg.bbs helpsig.bbs humor.bbs contains the humor file for your users! inval_port.bbs ports listed in this file will be refused access to the bbs. lastcall.bbs contains the information about your last user on the system. listfile.bbs contains the actual list files that you make available to your users. mainpriv.bbs contains the privileges assigned to the main menu options. msgareas.bbs contains the path information for the different message bases. newuser.bbs contains the message you output to new users. question.bbs contains the questionaire for new users. The file that is generated by the bbs software ( the answers to the questionnaire ) is called answer.bbs and is located in the same directory as question.bbs. s_tech.bbs sigentry.bbs sigs.bbs contains the listing of the sigs on your system. sigwelcome.bbs system.bbs contains the terminate message you output to the user when he "logs off". unixmsg.bbs this file will be displayed upon entry into the unix option. userpriv.bbs is a dynamically created/appended file which contains the individual user privileges along with their "delta time" allocation. users.bbs contains the list of all of your users, with their passwords, first time called, last time called, and their address in the form of city and state. welcome.bbs contains the "welcome" message you output when the user logs in. Please note that this is sent prior to the bulletin and may be your message of the day. FILES SECTION ============= files.bbs contains all of the files that are available for downloading. A different files.bbs is required for each download directory and must be placed in that directory. ie '/bbs/pgms/fls/uploads/files.bbs' MESSAGES SECTION ================ messages.bbs contain all of the messages. A different messages.bbs is required for each message directory and will be created automatically in that directory. ie '/bbs/pgms/m_forsale/messages.bbs' There are three codes used within this file : 0 - The message is active and not confidential 5 - The message is active and is confidential 9 - The message was deleted 6) The file, crossref.bbs, contains the cross reference table between the message number and file record number. This way, RAPID message access is achieved. Presently, you can have up to 1000 messages within the system. ( active and deleted ) 8) The file, header.bbs, contains the information to add the NEXT message into the message file. This way, a search is not required to find the proper entry point.  MESSAGES MSGAREAS.BBS The file, msgareas.bbs, contain the path information for the different message bases. The format is as follows: 1) The first line of the file can be used as a RULER SINCE IT IS NOT USED. 2) The following lines in the file have the following format: a) Columns 1-13 The download path. Please note the ORGPATH is added to the contents. An example is as follows: ORGPATH = /usr/sandy/bbs and columns 1-13 contain general; therefore, the entire path name = /usr/sandy/bbs/general. 3) Column 14 must be a space 4) Columns 15-55 contain the description of the download directory 5) Column 56 must be a space 6) Columns 57-61 contain the DIRECTORY PRIVILEGE - left justified. Therefore, you can set your privileges from 1 - 32767. WARNING, if you give your user access to the msg section from the main menu and DO NOT give him access to any of the directories, he will NOT be able to get out of the initial directory change! A MAXIMUM of 99 directories can be used! To select the message area to use for the "GOOD-BYE" message, immediately following the privilege level for that message base, insert an asterisk (*). This will then, automatically, select that msg base for the parting message. When a message is sent to a user, the name is now verified. In addition to name verification, the follow-two aliases are permitted: Sysop and ALL. If Sysop is used as the first name, the Sysop's real name will be substituted into the message; if All is used as the first name, All Users will be substituted. MESSAGE BASES ============= There are multiple message bases. The three files, crossref.bbs, header.bbs, and messages.bbs are stored in each different message base. The file, messages.bbs, contain all of the messages. A different messages.bbs is required for each message directory and will be created automatically in that directory. ie '/bbs/pgms/m_forsale/messages.bbs' There are three codes used within this file : 0 - The message is active and not confidential 5 - The message is active and is confidential 9 - The message was deleted ( Note: if you wish to reactivate a deleted message, just change the "9" to either a "0" or "5" ). ( A program will be available soon to "squeeze" the message file and remove deleted messages ) Warning! DO NOT try to modify the following files with an editor like vi: header.bbs, crossref.bbs, messages.bbs since they are NOT ~truly ASCII files and the files WILL BE damaged. In the case of crossref.bbs, no ASCII information is even stored in it ( binary file ). DAILY MESSAGES ============== A new option is available that allows you to make different daily messages for each day of the week for a FULL year. This message is then printed out to your users during their login process into the bbs. You can put whatever you wish into this file. The file can be as little as one line or as large as you desire! Page control is automatically supported during the output. You may wish to use this option to wish your users a "Merry Christmas" or a "Happy New Year". The file name is in the form of Month_Day.msg. An example of the file that would be displayed on September 02, 1987 would be as follows: Sep02.msg Please note that if the file is not found, NO message will be displayed to your user; therefore, this is option is COMPLETELY optional and can be ignored when not needed.  FILES An option in the files menu "Z(ip new list)". This new option allows you to scan all allowable directories for NEW, locate, raw and ~regular file list. There is no need of going from directory to directory, manually, and checking for new files. Once you get into the file menu, you can select the Z(ip file menu) option and then select the new file listing which will do the above operation automatically for you. The software will scan each allowable directory for you and output the new file list. If the upload directory is nolonger in the same file-system as the upload path, a Unix style mv will be performed; however, the user will get a message telling will to notify the sysop that the upload path is not in the same filesystem as the bbs users' home directory. AREAS.BBS The file, areas.bbs, contains the path information for uploading, downloading, and listing of files along with the access privilege of the download directory. The format of the file is as follows: 1) The first line of the file can be used as a RULER SINCE IT IS NOT USED. 2) The following lines in the file have the following format: a) Columns 1-13 The download path. Please note the ORGPATH is added to the contents. An example is as follows: ORGPATH = /usr/sandy/bbs and columns 1-13 contain bbssoftware; therefore, the entire path name = /usr/sandy/bbs/bbssoftware. 3) Column 14 must be a space 4) Columns 15-55 contain the description of the download directory 5) Column 56 must be a space 6) Columns 57-61 contain the DIRECTORY PRIVILEGE - left justified. Therefore, you can set your privileges from 1 - 32767. WARNING, if you give your user access to the files section from the main menu and DO NOT give him access to any of the directories, he will NOT be able to get out of the initial directory change! 7) Columns 62-63 must be spaces 8) Columns 64-79 contain the UPLOAD path for that download directory. A MAXIMUM of 99 directories can be used! You must now have multiple versions of files.bbs. One, each, for EVERY download directory and it must be in that directory. The files.bbs file must only contain the file listing for that particular directory! FILES.BBS The file, files.bbs, contains all of the files that are available for downloading. Initially, you will have to generate it; however, it is automatically updated with each individual upload which is not for "SYSOP ONLY". A different files.bbs is required for each download directory and must be placed in that directory. The format of the file is as follows: Filename Description Please remember that there is only ONE space between the file name and the description. The size and date of the file is determined at list time and is dynamically added to the listing. If the file cannot be found, the message "OFFLINE" is placed in the size field. There are two special characters that maybe used in the filename field: . ( period ) and the ~ ( tilde ). The period is used to add comments to your listing. Please remember that a space must be used to separate the period from the comment. The comment will be printed out in the description field of the listing. An example is as follows: . . The following files are used to generate the BBS . bbsc1.c One of the files to make the BBS. When this is listed by your users, it will look as follows: The following files are used to generate the BBS bbsc1.c 35087 Sep 14 One of the files to make the BBS. If column 1 has a '+' (plus) in it, the entire line, minus the plus, will be displayed. This is a NON-FORMATTED comment which your users can see. The ~ ( tilde ) is used to terminate the listing at a specific spot. If you DO NOT want your users to see certain files after an entry in your listing, just place the ~ in column 1 and the listing will stop. This option is made available if you do not want your new uploads known until you can verify if they are good files or are public domain. An example of its usage is as follows: . . New Uploads . ~ Field sizes: The filename field: 14 characters The description field: 50 characters As new files are uploaded, they are appended to the end of the file. You may want to move the entries to other spots in the file. A quick note on how files are handled when they are uploaded. Files are sent, depending on the protocol used, either to your FILES directory or to your /usr/bbs directory. In the case of the files being sent to /usr/bbs ( KERMIT UPLOAD ), they will be moved to FILES after the transfer is completed. If the file(s) is/are marked as SYSOP ONLY, they will be moved to your BBS directory to insure complete privacy. Therefore, even if your user knows the name of the file, he can not get to it!  SIGS For what it is worth, here is the documentation on how to install and set up a sig............. Please NO flames!!!! For clarity, I will be referring to a term called ORGPATH. ORGPATH is nothing more than the directory that contains the bbs software. ... The following steps are REQUIRED to set up a sig: 1) From ORGPATH, make a directory with the SAME name as the SIG. 2) Be sure the permissions are such so that the bbs user has rwx permission. 3) From that directory, make two new directories called files and msgs. The files directory will be the file section for that SIG. You guessed it, the msgs directory will be the message base for that SIG. 4) Same as step 2 but for the two new directories. 5) The files directory must contain a file called files.bbs. This is exactly the same as the GENERAL file directories. Guess what, it uses the same code! Actually, the message section for the SIG is controlled by the same code as for the GENERAL message bases. 6) In ORGPATH, generate a file called sigs.bbs. This file is the listing of the sigs on your system. The distribution contains an example sigs.bbs that you can use as a guide. 7) Sigs.bbs is basically in the same format as features.bbs etc. The IMPORTANT difference is that a SIG can either be "private" or "public". If you wish to make the SIG private, put an asterisk is column 78. You will notice that the distribution sigs.bbs has two SIGS, one is private and one is public. The first field is the SIG name and MUST be the SAME name as the SIG directory that you made in step 1!!!! The second field is the description and the third field is the privilege level assigned to that SIG. 8) Each SIG MUST have a file in ORGPATH using the SAME name as the directory but with an extension of .bbs. If the SIG is private, you will have to make a list of each allowable user in the form of Firstname Lastname. Remember, on user per line and CAPITALIZE the first character of the first and last names. A string compare is performed. If the SIG is "public", you must still make each file by simply typing "touch signame.bbs" where signame is that of your SIG. REMEMBER, make sure that the file has rwx permission for the bbs user. This is very important since a public SIG is dynamically updated by the user. 9) This is optional but nice! In the directory that you made in step one, you can have a file called sigwelcome.bbs. This file will be displayed, if it exists, to the SIG user once he has successfully logged into the SIG. It is nothing more than an ASCII file an can be generated by "vi". A) This ALSO an optional but nice feature. In the directory that you made in step one and if it is a private sig, you can have a file called sigentry,bbs. This file is displayed to the user, if he tries to login to the sig, and entry is not permitted because he/she is not listed in the sig users file. It can be used to describe the way he/she can be registered, by you, into the sig. Once you have performed the above steps, you are ready to login yourself into each SIG. Go into each SIGS message section and leave a message. This will make all the necessary msgs files. REMEMBER, a "private" SIG can only be entered if the user's name is present within the appropriate .bbs file. This is ALSO true for you. You MUST enter your name too to gain access. The msg checking code includes sigs. An optional file called sigentry.bbs can be added which is displayed to the user when he opts to log into a private sig and he is not registered. Added Additional features option to each SIG; therefore, each SIG can have its own external programs and/or shell scripts which is independent of the main menu A(dditional) features option. The format of the features.bbs file is exactly the same as the one for the main menu; however, this file is stored in the SIG directory ( same as where sigentry.bbs and sigwelcome.bbs are stored )  LISTS listfile.bbs To make listfile.bbs, you can use the file, listfile.bbs as a guide. The format of the file is as follows: LINE 1 ------------ruler Line 2 - N The actual files that you make available to you users. Each line is broken up into fields. The fields are as follows: Column 01 - 50 The full path name of the file to list. Column 51 A space Column 52 - 72 Description of the file. A file, /tmp/files, is generated for each and every L(ist) command that is requested. This is a temporary file which is sent to the user.  PRIVELDGES FILEPRIV.BBS filepriv.bbs contains the privileges assigned to the file menu options. The file simply contains the letter and privilege assigned to the letter. The range of privileges can vary between 0 and 32767. The privileges are all relative so you may want to limit the range from 1 to 9. Warning, be sure that the G option is ALWAYS lower than the lowest individual privilege so you user can log off! An example of the file can be found in this download section called filepriv.bbs. MAINPRIV.BBS mainpriv.bbs contains the privileges assigned to the main menu options. It is in the same form as filepriv.bbs. An example of the file can be downloaded and is called mainpriv.bbs. USERPRIV.BBS userpriv.bbs is a dynamically created/appended file which contains the individual user privileges along with their "delta time" allocation. The file contains entries for each of your users in the form of: FIRSTNAME LASTNAME PRIVILEGE_LEVEL DELTA_TIME EXTRA_KBYTES An example of a particular user maybe as follows: John Smith 5 600 5 Basically, the above user has a privilege level of 5 and has 10 additional minutes allowed over the default time (RUNTIME in bbscdef.h). Also, he has an extra 5 kilobytes of downloading allowed ( added to MAXKBYTES in bbscdef.h ). An entry may also look like this: Joe Blow 2 -2400 -50 This means that the above user has a privilege level of 2 and has been disallowed 40 minutes from the default time. If the default time is set at 60 minutes, his total usage time is only 20 minutes. His maximum allowable download in bytes has also been reduced by 50K! The default privilege level can be found in bbscdef.h and is called NEWPRIV. The menus are variable according to the user's privilege level. If the user DOES NOT have the privilege to use the option, the option will NOT be displayed. A file, inval_port.bbs, can contain a list of the sio lines which you do not wish bbs users to use. An example of this file is included in the distribution. A log of the disallowed called is stored in a file called restricted.bbs.  FEATURES To make features.bbs, you can use the file, features.bbs as a guide. The format of the file is as follows: LINE 1 ------------ruler Line 2 - N The actual programs that you make available to you users. Each line is broken up into fields. The fields are as follows: Column 01 - 50 The full path name of the program plus commandline Column 51 A space Column 52 - 72 Description of program Column 73 A space Column 74 - 78 Privilege level assigned to the program Column 79 An asterisk or space If column 79 is an asterisk, '*', then the BBS software will switch back to the default terminal parameters and then execute the program. After the program completes, it will then switch back to the BBS terminal parameters. The user will be notified of the switching so that he/she can change his/her terminal program if necessary. If column 79 is a space, the BBS program will redirect stdout to a temporary file and then send the output to the bbs user.  QUESTIONAIRES This file contains the information needed to make your questionnaire. The following commands are available in column 1: ! Output the rest of the line and wait for an input ^ is the same as '!' except that the input MUST NOT be NULL (strlen > 0 ) @ Output the rest of the line and send a crlf & Same as '@' without the terminal crlf $ Outputs a '?' and waits for an input * is the same as '$' except that the input MUST NOT be NULL (strlen > 0 ) % Output crlf Y || y Output the rest of the line and set FLAG true if response is a Y or y N || n Output the rest of the line and set FLAG true if response is an N or n { Start conditional statements ( execute the following lines if FLAG is equal to true } End conditional statements / Exit questionnaire - Normally used as a conditional statement An example of a questionnaire is as follows: @XBBS QUESTIONNAIRE NDo you want to continue the questionnaire (y/n) { / } !Input your full name !Input your home telephone number !Input your work telephone number &Input your full address ( 5 lines available ) $ $ $ $ $ !Input your profession @Thank you for answering my questionnaire You may use the above example as your questionnaire. The file that you generate is called question.bbs and is located in the same directory as the rest of the .bbs files. The file that is generated by the bbs software ( the answers to the questionnaire ) is called answer.bbs and is located in the same directory as question.bbs.  CONFIGURATION XBBS is configured by using the program xbbsgen. The following are the questions and sample answers you will be asked: Input the full path name for the users home directory: /bbs/home Input the directory name where the bbs software can be found: /bbs/pgms Input the full path name for checksum: /bbs/pgms/checksum Input the full path name for crc: /bbs/pgms/crc Input the full path name for ymod: /bbs/pgms/ymod Input the full path name for rb: /u/bin/rb Input the full path name for sb: /u/bin/sb Input the full path name for rz: /u/bin/rz Input the full path name for sz: /u/bin/sz Input the full path name for kermit: /u/bin/kermitt Input the full path name for sealink: /u bbs/pgms/sealink/sealink Input the first name of the sysop: rick Input the last name of the sysop: mccalla Input the number of SECONDS you will allow for a login: 300 Input the number of SECONDS you will allow for usage: 5400 Input the number of SECONDS you will allow for response: 180 Input the privilege level for new users: 5 Input the maximum privilege level allowed to users: 32767 Input the maximum number of seconds allowed to users: 32767 Input the daily number of KILOBYTES allowed to users: 500 Input the full path name for tar: /usr/bin/tar bin/tar Input the full path name for zcat( link to compress): /usr/bin/zcat Input the full path name for arc: /u/bin/arc Input the full path name for unzip: /u/bin/unzip Input the full path name of the dev driver for local monitoring: /dev/tty09 Input the full path name for the console device driver: /dev/tty01 Input the full path name for the SHELL and command switch you wish to use for the U(nix) option in the main menu. Example: /bin/sh ? /bin/sh Do wish to have the software do a message scan when the user logs on? 1=yes, 0=no ..... 1 Input the full pathname to be used by the USENET reader. /usr/bin/readnews Input the full pathname to be used by the USENET poster. /usr/bin/postnews  USENET In order to allow access to usenet there must be a '.newsrc' file in the 'orgpath'. In this example it would be /bbs/pgms  CHAT By selecting this option the caller can send a beeping signal to the console terminal to indicate that he would like to chat with the sysop. The sysop can respond to the request for chat by running the 'chatbbs' command from the specified console terminal. Chats are logged into the callers file.  SYSOP UTILITIES USER SIGNALS that are used: 1) SIGUSR1 Toggles the local monitoring of the BBS. An example of the SHELL Script that can be used is "toggle". This file can be found in the download section. 2) SIGUSR2 Toggles the privileges and time of the present user on the system. The time and privilege level is set to maximum so CARE should be used with this option since the user can now enter into Unix/Xenix with the U option in the main menu. An example of a SHELL SCRIPT that can be used is "systoggle". This file can be found in the download section. The sysop, by using SIGUSR2, can now give the present user temporary maximum privileges and time on the system. Since this is a "toggle", by issuing this signal again, the user will be returned back to the logon time limits and privileges. An example of a SHELL SCRIPT that can be used is systoggle. You can now allow users to enter into Xenix/Unix! Care should be given when allocating the user such high privileges. This is the U option in the main menu. A suggestion would be to give this privilege the maximum allowed in this BBS, 32767. Remember, when SIGUSR2 is issued, that user WILL HAVE that privilege! There are two different versions of program which will list the users on your bbs: listuser and listusers. The two programs are basically the same except for how they get the file name. Listuser expects the file to be called users.bbs and also that it resides in the same directory. This is the version that I use as an A(dditional features) program. Listusers prompts you for the full pathname of the file.  REGISTRATION My address is as follows: Sanford Zelkovitz 5852 Maxson Drive Cypress, Ca 90630 Please drop me a line and let me know how this code is working for you. If you would like to send a donation to help cover my equipment expense, that would be greatly appreciated! Sandy **************************************************** * Brought to you by SJZ * * 24 hrs a day / 7 days a wk * * 714-821-9671 - Data * * 714-821-9670 - Voice * **************************************************** ( For BBS, log in as bbs ) alphacm!login: bbs Presently, registration, on this bbs, is not required to upload and download files. However, this policy may change; therefore, I strongly suggest that you fill out my questionnaire. The questionnaire option can be found in the main menu: Q(uestionnaire). If and when the policy changes, non registered users will loose their download privilege along with the capability of entering messages. The uucp system name is: alphacm The uucp and call in data lines accept calls at 19200/9600/2400/1200 baud < no 300 baud >. A break sequence is required to switch between the baud rates. The uucp mail path is: ......!att!hermix!alphacm!sandy ......uunet!zardoz!alphacm!sandy ......!trwrb!ucla-an!alphacm!sandy ******* YOU MUST BE AT 8N1 TO LOG INTO THE BBS! ******* The source code for this software is available for downloading. The modems on this system are now Telebit Trailblazer-Plus(es). Therefore, 19.2K/9600 baud PEP protocol is now supported. The "PEP" tones are sent AFTER the lower baud tones; therefore, if you are connecting at 19.2K/9600, you must be sure that your Telebit DOES NOT lock onto the lower baud tones < set s7 to 60 or higher and set s50 to 255 ). The reason for sending the "lower baud" sequence first is to allow the "lower baud" users enough time for a baud rate "lock on". RTS/CTS flow is enabled for the higher baud rates. There have been MANY questions left for me on how to connect to this system via uucp to request files. Actually, the procedure is very simple. Just login as nuucp with no password. All of the directories used by this bbs have read privileges; therefore, you can request and receive any file or files that are available for downloading. You must remember the full path names of the files. Any file that is in the bbssoftware directory has the path name of /user/bbsfiles/bbssoftware/. Likewise, the unix directory has the path name of /user/bbsfiles/unix/. This is also true for each and every file directory on the system. You can get the directory name from the A(rea change) command while in the file section. You will recognize the name by the first field displayed on each and every line. Just add /user/bbsfiles/ to whatever is displayed. As an example, if you want the file, ALLbbs.tar.Z, the full pathname is /user/bbsfiles/bbssoftware/ALLbbs.tar.Z. If you have a file that you would like to send to this system for others to use, please send it to /usr/spool/uucppublic. Remember, the path is /user/bbsfiles/bbssoftware and NOT /usr/........ {trwrb|ucla-cs|cepu}!ucla-an\ \ \ | | {att|ihnp4|decvax|sco}!hermix\ | \| |--!alphacm!{root|sandy} /| uunet!zardoz / | | / / ucbvax!ucivax!icnvax/  MISC A COMMON mistake that MANY users have been making is that ALL COMMANDS are NOT case sensitive. That is, you can use either upper or lower case characters. The ONLY thing that is case sensitive are the file names used in downloading and uploading. Like all other BBS software, both upper and lower cases can be used in any of the menus or options. Another option, which is neglected, is the capability of stacking a directory number to the A(rea change) option from within the message and file sections. Basically, you do not have to list out the list of directories, unless you want to. If you know that you want to switch to directory 3, all you have to type is 'a 3' ( note: the ' characters were added only for clarification ). Actually, any of the following combinations will work: 'a 3' 'a3' 'a;3' or and non-numeric character between the a and the 3! Primary and Secondary Extensions Used on This BBS A) Primary Extension 1) .arc Use arc to "unarchive" and "uncompress the file" 2) .tar Use tar to "unarchive" the file 3) .cpio Use cpio to "unarchive" the file 4) .ar Use ar to "unarchive" the file 5) .shar Use /bin/sh to separate the file 6) .shr Use /bin/sh to separate the file B) Secondary Extension 1) .Z Use uncompress to "uncompress" the file 2) .z Use unpack to "uncompress" the file Note: Files that end with a .Z may be either 12 bit or 16 bit compression. Normally, when 16 bit compression was used, it will be noted in the file description. TO HOT KEY OR NOT TO HOT KEY, THAT IS THE QUESTION I have had MANY question about the "hot key" entries that are used by the bbs; primarily, when are they used. The answer is VERY simple, if an input ONLY requires a single character, IT IS HOT. If an input is completely satisfied with only two characters, it will terminate after the second character. Since there can only be a maximum of 99 message bases, 99 file bases, 99 bulletins, and 99 questionnaires, when you are requested to input that particular number, the software will be satisfied after only two characters; however, if a QUIT is also allowed (single "q" entry ), the software WILL HOT KEY ONCE THE "Q" IS TYPED. Since the majority of the commands can be fully satisfied with only a single character, that character is ALL that is necessary and the software will "hot key". The A(rea change) commands in the message and file sections allow you to specify the base to change to; therefore, the ARE NOT "hot keyed". The B(atch read command) allows MANY entries and will not "hot key" until 80 characters are typed. Whenever you are asked for an input and a "ruler" is displayed, the software will "hot key" after the LAST allowable character for that field. To summarize the above statements; if the software DOES NOT "hot key" on a single key stroke, that means one of three things: 1) That particular option has optional secondary parameters 2) That particular option requires additional parameters 3) You typed an invalid entry All bases (bulletin, file, message, questionnaire) can only have a maximum of 99 entries; therefore, the inputs will "hot key" after the second character or the first if a "q" was typed and allowed at that time. ************** OPTIONAL FILE ************* An optional file, locking.h, is now available to allow the XBBS code to compile on AT&T 3Bs or other truly SysV systems. Remember, this file MUST NOT be used for Xenix systems. ************************ AVAILABLE FILE PROTOCOLS For Uploading: Ascii, Xmodem-checksum, Xmodem-crc, Ymodem, SEAlink*, Zmodem, and Kermit. For Downloading: Ascii, Xmodem-checksum, Xmodem-crc, Ymodem, Kermit, SEAlink*, Zmodem, and type. CREDITS: SEAlink is a copyrighted protocol by System Enhancements Associates. Note: The kermit that is used on this system NOW supports sliding windows! There are TWO different Ymodem protocols available, BATCH & NON- BATCH.  CREATING THE BBS SYSTEM The paths for all the files may be defined. You will have to modify it for your system. When designing your system, think of what you are doing! BE ABSOLUTELY SURE that your BBS software is NOT in the same directory as your file section for uploads and down-loads! This way, your users.bbs file WILL BE SECURE! The way that I have my system configured is as follows: My BBS software is in a directory called /bbs/pgms and my file section is in a directory called /bbs/pgms/files. Since the file directory is the ONLY directory available to your users, your BBS system is secure. ( No access to callers.bbs and users.bbs ). Make a new user called bbs with a null password ( type a return when asked for the password ). After this new user is generated, use vi to modify /etc/passwd. Change the shell entry to the full pathname of bbsc1. In my system, it is /bbs/pgms/bbsc1, and set his home to /bbs/home. This way, when a user logs in as bbs, he will NOT have a shell behind him and therefore CANNOT get into your system! Make another user called bbsuser. When you want to send mail to your users, address it to bbsuser. This way, the message "you have mail waiting" will not be displayed. If your Unix does not run at 8N1 and you have a file, /etc/motd, rename it to /etc/motd.motd. This way, your user, when he logs in at 8N1 will not receive JUNK charcters for your message. Then, modify /etc/profile as shown in etc_profile on this system. ( Your non-bbs users will still get your message of the day!). You can place the same file as your welcome.bbs and it will be displayed at 8N1. To compile the BBS source code, just type "make". Please note that the "s around make are just there for emphasis. To compile crc.c, type: cc crc.c -O -o crc To compile checksum.c type: cc checksum.c -O -o checksum Kermit is already in the compiled form. If you wish to get the source code, leave me a message and I will try to comply. Ymodem uses rb and sb. These files are contained in the COMPRESSED archive, rzsz.a.Z. You will have to uncompress the file, using uncompress, which is a linked file to compress. After uncompressing the file, you must then unarchive it using ar. To compile the files, use the following commands: To compile sz.c, type: cc sz.c -O -o sz To compile rz.c, type: cc rz.c -O -o rz To generate the proper link files, type: ln sz sb ln rz rb Take a look at the sample questions that will be asked by the configuration program and have the answers ready. If you do not have any of the modem protocols you will have to download them. Determine the path structure you want to use for the following sections: files messages lists sigs bulletins Create the directories and in the case of the files sections you will have to put a blank copy of files.bbs in each directory. For the sigs you will have to create a ~couple of files. For the message areas they should be left empty. Using an editor modify the following files in /bbs/pgms areas.bbs bulletin.bbs features.bbs inval_port.bbs listfile.bbs msgareas.bbs system.bbs welcome.bbs In the bbs all work and users are the single login user of ,bbs,. Internal priveldges determine what the user is allowed to do. Once this has been completed, do a chmod 666 *.bbs. This is necessary to guarantee proper privileges on the bbs files. Also, change the privileges to 777 on the directory, /tmp. This is required so that the upload/download file listing will function properly for your users. Then, change the owner of users.bbs to bbs and the group to root. Change the permissions for users.bbs to 660. starting with /bbs all directories must be -rwxrwx--- bbs root all files in all directories must be -rw-rw---- bbs root or -rwxrwx--- bbs root If any files are not set there is a very likely chance that the bbs will not run. These ~privileges will also help protect the bbs from other system users. Check the 'bbs' has priveldges for /tmp Run the xbbsgen program to generate the config file. This file will be placed in the home file specified for 'bbs' ie /bbs/home If you have specified a device for the monitor terminal other than /dev/null when you ran xbbsgen then bbs will need permission to write to it. Once the system is generated, run it for the first time as a program under root and enter a message to create the files required for each message base. To do this change to the home directory of bbs (/bbs/home) and run the command 'su bbs'. One small paragraph on how the kermit transfer path works: All kermit uploads are sent to /usr/bbs. After the uploads are completed, the files are moved to your files directory. Wildcard transfers are enabled. On downloads, ONLY the files that are in the files directory CAN BE TRANSFERRED. This way, again, your system is secure. Please remember the magic words "directory privileges"! You will have to make sure that the following directories have modes of 777: 1) The directory pointed to by USRBBS in bbscdef.h 2) The directory pointed to by PATHFILE in bbscdef.h 3) The directory pointed to by ORGPATH in bbscdef.h 4) /tmp A word of caution: if you have a user that uploads a file as SYSOP ONLY, and the file ~disappears, you DID NOT ensure proper directory privileges! You see, the code does a link and then an unlink from the original directory ( either USRBBS for Kermit or PATHFILE for the others ) to ORGPATH. ( A simulated mv in "C") Extra Information On How the BBS Operates 1) All errors that are detected that would normally go to stderr are sent, instead to a file called /tmp/errors_out. Under normal conditions, this file should always have a 0 length. Warning! DO NOT try to modify the following files with an editor like vi: users.bbs, header.bbs, crossref.bbs, messages.bbs since they are NOT truely ASCII files and the files WILL BE damaged. In the case of crossref.bbs, no ASCII information is even stored in it ( binary file ). There have been many questions concerning how to set up the ~ individual message bases when first bringing up the system. Unfortunately, my documentation has a LOT to be desired! You see, you should NEVER run bbsc1 as a stand alone program! The proper way to run the bbs, as a local user, is to do a cd to the bbs's home directory and then do an su to bbs. This way, the permissions will always be correct. Prior to running the bbs to generate the individual message bases, be absolutely sure that you already have the file, msgareas.bbs in the form that you want. You see, this file contains the names of the individual directories that contain the different message bases. Also, be sure that the directories that contain the message bases have read/write/execute permission for the bbs user. Once this is all done, the bbs software will generate the needed files for you automatically. You must manually do the mkdir(s) to make all of the needed directories since the bbs software expects the directories to be there. How should my system look prior to running the bbs? This is a question MOST often asked me. To answer this question, I will graphically show a hypothetical system. |------message_base_one /bbs/home |------message_base_two | |------message_base_three |------/bbs/bbsfiles-----|------file_base_one |------file_base_two |------file_base_three |------my_utility_directory The ONLY file that should be in the hypothetical system as pictured above in /bbs/home is the .config.bbs file! There shouldn't be ANY other file in this directory or any other directories made from it. This is VERY important so that kermit uploads will operate properly. All the the distribution bbs files MUST reside in the above hypothetical system in /bbs/bbsfiles. This includes all of the software and ALL of the .bbs files. Within this directory, your users.bbs, userpriv.bbs, all of your callers files, and daily accounting files will be generated. Also, as shown above, all of the message base directories and file base directories will reside. If you set up the system as shown above, the installation will be completely successful. BE ABSOLUTELY SURE that the bbs user has read/write/execute permission in ALL of the directories. If this is NOT the case, file generation and read/write errors will occur.