Run Your Own Bulletin Board System

Another fine product © 2019 by Modern Pascal Solutions, LLC.

User Tools

Site Tools


Sidebar

login_mnu

Legacy/X BBS - LOGIN MENU

One of the challenges as a BBS author, is to provide enough flexibility to your product without requiring the end-user (Sysop in this case) from having to do any programming. A common design difference in BBS systems, is the initial login screens… to achieve this, Legacy/X BBS uses what is called a MNU file. It should not be confused with your typical BBS MENU file. The MNU file in Legacy/X also operates as a work-flow control file (WCF in manufacturing ERP accounting). It controls what should happen now, and where to go do things next, depending upon selections and/or security levels.

To do this, the initial splash screen of Legacy/X does a lot of auto-detection by sending out Telnet IAC commands, different ANSI commands, UTF8 detection, Avatar/0+ detection and detecting terminal program capabilities. Through this, it will set what is displayed as your TERMINAL » <string>. That string lets you know what we have detected about the terminal connecting to Legacy/X. (Color Depth, Screen Size, Sound, etc).

To demonstrate different design goals without writing any BBS source, I have developed these examples:

Typical Login

1) Display a BBS welcome screen, we will be using MNU command #1 (Display a file using current emulator mode (detected above)).

2) Next you want to do the login process, we will be using MNU command #10 (Login process). The parameter string consists of 2 files: (1) what to do execute with a successful login, and (2) what to execute if it is a new user.

So, your login.mnu would look like this:
1,,0,0,0,WELCOME
10,,0,0,0,news.mnu,newuser.mnu

Require a System Password

1) Display a BBS welcome screen, we will be using MNU command #1 (Display a file using current emulator mode (detected above)). In this case the WELCOME file contains a static menu with: (A)pply for Membership, (F)eedback to Sysop, (L)og in to System, (P)age Sysop, and (D)isconnect.

2) To (A)pply for Membership we are going to run newuser.mnu - which has been configured that it's last step is to return to step #1 above. To execute a menu, you have two choices - MNU command #11 which forgets what MNU file is currently running, and starts running the MNU file you specify. Or you can pause the current MNU file, load a MNU file you specify and execute it, until it hits the MNU command #14, which returns back to the paused MNU file, by executing MNU command #12.

3) To (F)eedback to Sysop we are going to execute MNU command #119 (Comment to Sysop), which when finished resumes running the current MNU file.

4) (L)ogin to System can be done two different ways. In this example, we are going to require a SYSTEM PASSWORD that must be pre-shared with the user before they called. So we are going to execute MNU command #101 with the password KeepOut.

5) To (P)age the Sysop, we will execute MNU command #118 (Page Sysop for Chat).

6) (D)isconnect after everything is said and done. We do not want or need addition user interaction, so we are simply dropping the connect by calling MNU command #999. Normal BS operation would be to call MNU command #123 (which asks are you sure, and do you want to leave feeback).

So, your login.mnu would look like this:
1,,0,0,0,WELCOME
11,A,0,0,0,newuser2.mnu
119,F,0,0,0
101,L,0,0,0,KeepOut
118,P,0,0,0
999,D,0,0,0

Ask more pre-login questions

If you are interested in making your system look more RETRO, you will want to ask the end-user more questions about their terminals capabilities before doing login. To achieve this, your login.mnu file is going to be the start (WCF) for the process. It will display a WELCOME file, as the end-user what LANGUAGE do they want to use - those choice(s) will execute MNU command #11 to go to another MNU file which we will call graphics.mnu which asks the end-user what graphics capabilities does their terminal provide, etc. etc.

1) Display a BBS welcome screen, we will be using MNU command #1 (Display a file using current emulator mode (detected above)).

2) Next, we want to tell the BBS, that if the user just presses ENTER to default to keystroke '1' by using MNU command #4 with a <string> parameter 1

3) Next, we want to display from the current language file (ENGLISH is DEFAULT) the text ID #1, which happens to be “LANGUAGE PROMPT”.

4) Now, we are going to get input from the end-user by executing command #77. (Language Prompt).

5) Once all is said and done, we want to auto execute MNU command #11 (goto MNU) with a <string> parameter of graphics.mnu

So, your login.mnu would look like this:
1,,0,0,0,WELCOME
4,,0,0,0,1
5,,0,0,0,1
77,1,0,0,0,.en
11,,0,0,0,graphics.mnu

6) We will display a little text to the user about the different graphics choices using MNU command #1 (Display a file using current emulator mode (detected above)).

7) We are going to display in the selected LANGUAGE text prompt #2, which is reserved for GRAPHICS PROMPT.

8) We want to set the default if the user just presses ENTER to 'A' for ANSI Mode.

9) Then we add the MNU commands for each choice displayed by step #7. MNU Command #103 for ANSI, MNU Command #104 for ASCII, MNU Command #105 for UTF8.

10) And then lastly, what to auto execute after the MNU choice, in this case MNU Command #10 the actual LOGIN process.

So, your graphics.mnu could look something like:
1,,0,0,0,LOGIN
5,,0,0,0,2
4,,0,0,0,A
999,G,0,0,0,
103,Y,0,0,0,
104,N,0,0,0,
103,A,0,0,0,
105,U,0,0,0,
106,H,0,0,0,redirect.html
10,,0,0,0,news.mnu,newuser.mnu

login_mnu.txt · Last modified: 01/18/2020 19:02 by Ozz Nixon