User Tools

Site Tools


introduction

The Mystic Ecosystem

There are several executable programs that comprise the Mystic BBS ecosystem. This page provides a brief overview of each and explains how they interact with each other.

MYSTIC - Mystic BBS

MYSTIC is the heart of Mystic BBS. Incoming Telnet callers connect to this to executable via MIS. If no command line option is supplied, Mystic will attempt to start up locally so that you may log into the BBS, automatically selecting the first available node for you.

In addition to no command line, the following options can be used:

MYSTIC -CFG    This tells Mystic to start in local configuration mode.

MYSTIC -ANSI   This invokes the built in ANSI editor using the syntax 
               mystic -ansi <filename>. If <filename> is supplied it will
               open that file otherwise it will create an empty buffer.
               
               The ANSI editor can load display files with color codes from 
               PCBoard,Wildcat, Mystic's pipe codes, and ANSI.  The editor 
               can save in ASCII or Pipe Code or ANSI and includes variable 
               line length saving for ANSI files as well as some display 
               options that can be set specifically to Mystic BBS
               
MYSTIC -AUTH   Check password authentication for a user by supplying the
               following syntax: -AUTH <username> <password>.  If the
               password is correct, Mystic will print TRUE to STDIO and
               exit immediately (or FALSE if incorrect).

MYSTIC -C$     This specifies the user's Country name which will be assigned
               to the UO MCI code and ultimately saved to the user's record
               as their last known country.
               
MYSTIC -CP$    This tells Mystic in Unix environments to start in a
               particular codepage (UTF8 or CP437).  Ex: -CPUTF8 or -CP437

MYSTIC -HOST$  This specifies the user's hostname which should be passed
               into Mystic by the telnet server.  Ex: -HOSTphl.verizon.net

MYSTIC -IP$    This specifies the user's IP address which should be passed
               into Mystic by the telnet server.  Ex: -IP125.132.54.741
               
MYSTIC -L      This tells Mystic to start in a local login mode.  This
               option should be supplied whenever you are logging in from
               your local console.  It is particularly desired in Unix
               where Mystic is not able to tell the difference between
               a local console login and a remote user.
 
MYSTIC -N#     This specifies a specific node number.  There is usually
               no reason to use this, as Mystic will automatically select
               an available node.  In fact it is not recommended to use this
               at all.  Ex: -N1 tells Mystic to start node 1.
               
MYSTIC -NEWUSER  This allows a new user to be created from the command line
                 using the following key=value pairs:
                 
                    handle=usernamehere
                    name=realnamehere
                    pass=passwordhere
                    email=emailhere
                    level=seclevelhere
                    menu=start
                   
                  At a minimum Mystic requires the handle, realname, and
                  password fields to be set.  Mystic does NOT apply the
                  password policy to the supplied password in these
                  situations.  The security level also cannot be above
                  249 and any attempt to set a security of 250 or higher
                  will result in the user being created with a security
                  level of 0.  The menu option sets the user's start
                  menu that will be loaded when they log in.
                  
                  Mystic will print TRUE or FALSE to STDIO depending on
                  whether or not the user was properly created.  Failures
                  occur when minimum values are not supplied or when a
                  user already exists.
                  
                  Example:
                  
                  mystic -newuser handle=g00r00 name=g00r00 pass=password
                  
                  If the optional "update" command is provided on the command
                  line then Mystic will create the user if they do not exist
                  but update them if they do exist, provided that the user
                  to be updated is not currently logged into the BBS or being
                  edited in the user editor.
                  
                  Example:
                  
                  mystic -newuser update handle=g00r00 email=new@gmail.com
                  
                  The above example would update user g00r00 with the email
                  address supplied.

MYSTIC -T#     This specifies the number of minutes the user will be
               permitted to use this session.  Ex: -T60 limits the user
               to only an hour even if they have many hours of time left

MYSTIC -TEXT   This invokes the built in text editor using the syntax 
               mystic -text <filename>. If <filename> is supplied it will
               open that file otherwise it will create an empty buffer.

MYSTIC -TID#   This specifies the socket handle when using Mystic with a
               third party telnet server under Windows
               
MYSTIC -TT     This option which will override any detected TerminalType from
               TELNET/RLOGIN. ./mystic -ttANSI
                                  
MYSTIC -U$     This specifies the username to login to Mystic with and must
               be used along side the -P command to supply the password.  If
               a user name has a space in it, the spaces should be replaced
               by an underscore.  For example:
 
               mystic -uJoe_User -pMYPASSWORD

               The above example will automatically attempt to login as the
               Joe User.
               
MYSTIC -VER    Prints the Mystic version number and exits

MYSTIC -X$     This specifies a MPL program to execute and then exit Mystic
               afterwards.  The -U and -P must also be supplied with this
               in order to tell Mystic which user to run the MPL program as

               mystic -uJoe_User -pMYPASSWORD -xusage
 
               The above will execute usage.mpx from the scripts directory
               after logging in as Joe User, and then exit the BBS after
               execution.
               
               If command arguments need to be passed to the executed script
               then they must be enclosed with quotations such as:
               
                  mystic -uJoe_User -pMYPASSWORD "-xmyscript option1 option2"
               
MYSTIC -Y$     This specifies a PYTHON program to execute and then exit Mystic
               afterwards.  The -U and -P must also be supplied with this
               in order to tell Mystic which user to run the PYTHON program as

                 mystic -uJoe_User -pMYPASSWORD -ytestpython
 
               The above will execute testpython.mpy from the scripts directory
               after logging in as Joe User, and then exit the BBS after
               execution.
               

MIS - Mystic Internet Server

The Mystic Internet Server (MIS) is an application which acts as a server for various internet protocols. It can support one or all of the following:

TELNET, RLOGIN, SSH, BINKP, FTP, NNTP, POP3, SMTP, HTTP, Events

Note that the POP3, SMTP servers are used for Mystic BBS internal 'Email' only at this time. The Events system is used by Mystic to call other programs based on time of day or as semaphores are created that trigger events such as importing echomail and/or netmail.

MIS is something you will want to keep running 24/7.

MIS needs to exist in the same folder as MYSTIC.EXE and MYSTIC.DAT files in order to work. It optionally will check for the “mysticbbs” environment variable if it exists to find the directory where MYSTIC.DAT resides.

When running in Linux/macOS keep in mind that by default the operating system will not let a service bind to a port less than 1025 unless it is a ROOT user (in Linux) and NOT AT ALL in MacOS. In Linux, MIS has the ability to switch from root back to whatever the user and group is that owns the executable AFTER it binds to the ports it needs for the server. So in Linux you can simply do a:

sudo ./mis server

Note: This will not run MIS as root. It will only use root to immediately bind the ports and then it will switch to the user who owns the executable.

MIS POLL

Since Mystic 1.12 A47 MIS offers a POLL function/switch. This replaces the previously used FIDOPOLL binary that was retired after Mystic 1.12 A46. The POLL switch enables the server to send and receive echomail and netmail packets to configured EchoMail Nodes. There are three polling options than can be configured for EchoMail nodes - BINKP, FTP, or Directory-based transmission.

Optional switches for MIS POLL are:

POLL SEND            - Only send/poll if node has new outbound messages
POLL FORCED [Type]   - Poll/send to all nodes of session [Type] (Blank/All)
POLL UPLINK [Type]   - Poll all Uplink nodes of session [Type] (Blank/All)
POLL [Address]       - Poll/send echomail node [Address] (ex: 46:1/100)
POLL LIST            - List active echomail nodes
POLL ROUTE [Address] - Show configured netmail routing (Optional address)
POLL SEARCH [Text]   - Search nodelist for [Text]
POLL KILLBUSY [Mode] - Delete BSY files [App, Echo, All] (Blank/Echo)

MIS CONFIGURATION

The options for configuring MIS are found in the Servers menu within the Mystic BBS Configuration System by running the following command:

MYSTIC -CFG

You can enable/disable different server types, change their listening ports, and some other options.

Setting up a telnet BBS is as simple as configuring then loading MIS and telnetting in! :)

IP BLOCKING + EXCEPTIONS

MIS will check your Mystic DATA directory for file named denylist.txt It will use this file to check against the IP addresses of incoming connections. For example, if you wanted to block 123.123.123.123 you would simply add a line into the denylist.txt file with that IP address.

IP blocking supports wildcards too, so for example, you could put 123.123.123.* and block any IP address that begins with 123.123.123.

If an IP address is blocked, Mystic will attempt to send them the contents of the file “blocked.txt” from the Mystic DATA directory.

If this file does not exist, it will simply print “BLOCKED” to the connection's terminal and disconnect them.

You can also add a allowlist.txt file the Mystic DATA directory. This file will exempt an IP address from the DNS blacklist, DNS country check, and the auto ban IP systems. The format of the file is the same as denylist.txt If you know of certain IP addresses you never want to see auto banned on your system - allowlist.txt is a great way to ensure that never happens!

Entries in both denylist.txt and allowlist.txt can contain a mixture of both IPV4 and IPV6 addresses and can contain a single wildcard, using an asterisk to mask an IP range. For example “127.*” would block any IPV4 address that begins with “127.”. IPV6 works in the same way, expand the IPV6 address up to the point where you want to wildcard it, such as “014f:*”

Refer also to the Edit IP Denylist and Edit IP Allowlist sections of the Wiki.

DUPLICATE IP CONNECTIONS

MIS will block an IP from opening multiple connections to the BBS. If a person is already connected to Mystic and they attempt to open a second connection, MIS will attempt to send them the contents of the file “dupeip.txt” from the Mystic DATA directory.

If the file does not exist, it will simply send them “Only 1 connection(s) per user” and disconnect only their second connection.

Their first connection will remain untouched.

BUSY NOTIFICATIONS

If a connection is made when all of the nodes configured for telnet are being used, MIS will attempt to send them the contents of busy.txt from the Mystic DATA directory. If this file does not exist, it will simply print “BUSY” to the terminal and disconnect them.

MUTIL - Mystic Utilities

Mystic Utilities, otherwise known as MUTIL is an automated maintenance and utility program that is controlled by .ini configuration file(s).

Think of MUTIL as the Swiss Army Knife utility program for Mystic BBS. It can be tasked with running multiple functions at once or be configured in a far more granular fashion to do one task at a time when called.

More details can be found in the MUTIL section of this wiki.

FIDOPOLL

This executable has been retired as of Mystic 1.12 A47 and replaced my 'MIS POLL' but if you have an older copy of Mystic here are the details. FIDOPOLL was a program was used to send and receive echomail and netmail packets to configured EchoMail Nodes. It used one of three configured options to do so - BINKP, FTP, or Directory-based transmission.

Optional switches for FIDOPOLL were:

FIDOPOLL LIST           - List configured Echomail nodes
FIDOPOLL ROUTE          - Show netmail route information
FIDOPOLL SEND           - Only send/poll if node has new outbound messages
FIDOPOLL FORCED [type]  - Poll/send to all nodes of session [type] (blank/all)
FIDOPOLL [Address]      - Poll/send echomail node [Address] (ex: 46:1/100)
FIDOPOLL SEARCH [data]  - Search nodelist for [DATA] can be address or text
FIDOPOLL KILLBUSY [ALL] - Reset busy flags for all echomail nodes
                          "ALL" also kills application busy files and should
                          only be used when Mystic+Utilities are NOT running

If you are still using FIDOPOLL we suggest you update your Mystic version today and start using MIS POLL. It's a far better experience.

EchoMail nodes are configured in the Mystic BBS Configuration System under the 'Configuration' menu.

QWKPOLL

QWKPOLL automatically deals with QWK and REP packets during polling.

The export and import functions are not needed, and only provided for systems that may want to use an alternative transport method.

Syntax: QWKPOLL [ALL]
                [Qwk Network Index]

                [EXPORT] [Index/ALL] [PATH TO CREATE REP]
                [IMPORT] [Index/ALL] [PATH OF QWK PACKET]

Ex: QWKPOLL ALL                    - Exchange with ALL QWK hubs via FTP
    QWKPOLL 1                      - Exchange with only Qwk Network #1
    QWKPOLL 1 EXPORT /bbs/qwknet   - Create REP packet in /bbs/qwknet
    QWKPOLL ALL IMPORT /bbs/qwknet - Import QWK packets from /bbs/qwknet

NODESPY

NodeSpy is a program that will allow you to snoop, kick, and chat with users who are connected to your BBS. It will also provide you with BBS usage statistics and graphs. Think of this as your “Waiting for call” screen

In addition, NodeSpy also has a terminal mode that offers a full blown ANSI BBS telnet client with dialing directory, scrollback, and Zmodem with ZEDZAP file transfers!

It is important to note that NodeSpy does not currently monitor BBS users while they are using doors nor does it offer a chat option to engage with bbs users.

MIDE - Mystic Integrated Development Environment

Mystic Integrated Development Environment or MIDE is a development tool that aids budding coders in building scripts using Mystic Programming Language (MPL). It's a text editor which helps you to create MPX programs. This program allows MPS source files to be edited and compiled, while offering some other features that a normal text editor does not.

You will find this tool in the /mystic directory. Run it using the following command.

MIDE

MPLC: Mystic Programming Language Compiler

The Mystic BBS Programming Language Compiler allows sysops to compile their own scripts written in Mystic Programming Language (MPL). MPL programs are created using source file (.mps) and then compiled into executable files (.mpx). The source files are just typical text files that can be edited with any text editor or the MIDE utility that ships with Mystic.

You will find this tool in the /mystic directory.

Check out the /mystic/themes/default/scripts directory for examples of MPS files.

Available options to use this program are:

MPLC [filename] Compile a specific MPL script. Example: MPLC mpldemo.mps

MPLC -T         Attempts to read theme configuration from mystic.dat in the
                current directory or the directory defined by mysticbbs
                environment variable, and then uses Themes path to compile all
                scripts in each theme's scripts directory.
  
MPLC -ALL       Compile all scripts in current directory and sub
                directories

MPLC -C         Compile all scripts in current directory only
                 
MPLC -F         Works just like -T but also accepts a filemask to compile any
                matching files in each theme's script directory.  For
                example: mplc -f bulletin*         

MPLC -P [path]  Compile all scripts in [path]

MPLC -R [path]  Compile all scripts in [path] in its sub-directories
introduction.txt · Last modified: 2023/01/20 03:36 by avon

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki