Mystic Utilities (MUTIL)
Scripting Custom Modules
Mystic Utilities (MUTIL)
Scripting Custom Modules
Mystic BBS has a completely configurable and incredibly flexible menu system that allows for full control over the visual appearance and functionality of the BBS. Each menu consists of the basic settings, and a list of menu commands that define what options are available on each menu. These menu commands can then be assigned one or many “actions” to perform when the item is selected. Each action may also have parameters that can be or will be required to be specified in the “data” field.
This section contains a reference to all of the menu actions available in your Mystic BBS as well as any information needed that relates to those actions.
The syntax of each menu command is:
Data: available data switches / syntax A description of the menu command and available data switches
Note: Mystic has around 140 different menu commands, not all of them are documented here yet.
An Auto signature is an user created signature that can optionally be automatically appended to each message posted by the user. The following menu commands are available for manipulating the auto message:
AD - Delete Auto Signature
Data: None Deletes the user's auto signature
AE - Edit Auto Signature
Data: None Edits the user's auto auto signature
AT - Toggle Auto Signature
Data: /NOASK Asks the user if the want to enable or disable the auto signature. If the /NOASK option is supplied on the optional data field, then Mystic will toggle the setting without prompting with a Yes/No question.
AV - View Auto Signature
Data: None View the user's auto signature
Mystic can have any number of different BBS lists, identified by using a “List ID”. The List ID is simply the base filename used to store the BBS list database on disk, so it can be any valid filename but should never include any file extension, just a basic word of text. The following section contains BBS List menu commands:
BA - Add new entry to BBS list
Data: <LIST ID> This option allows the user to add a new entry to a BBS list. The BBS list must be specified using the <LIST ID> in the optional data.
BL - List entries in a BBS list (detailed view)
Data: <LIST ID>;SEARCH This option allows the user view the BBS list using the detailed list mode. This provides more information than the typical abbreviated list The <LIST ID> must be specified in the optional data. If ";SEARCH" is appended onto the List ID, then Mystic will prompt and allow the user to search for entries in the BBS list.
BS - List entries in a BBS list (abbreviated view)
Data: <LIST ID>;SEARCH This option allows the user view the BBS list using the abbreviated view mode. This provides more information than the typical abbreviated list The <LIST ID> must be specified in the optional data. If ";SEARCH" is appended onto the List ID, then Mystic will prompt and allow the user to search for entries in the BBS list.
Mystic BBS supports DOOR.SYS, CHAIN.TXT, and DORINFO1.DEF DOS-based door formats, as well as Mystic's own native DOOR32.SYS format for modern BBS doors and games. These drop files are always created in the node's specific temporary directory. For example, if a door is executed on node 1, then the drop files will be created in the temp1 temporary directory.
In the Linux and OS X versions, Mystic automatically redirects the standard input and output of external programs, allowing many programs that are not even designed for BBSes to be used.
Each door action has a command line which will be executed by the operating system when the action is executed. There are a number of codes that Mystic will replace with specific values if they are found in the command line:
%# = User's unique ID %A = User's real name (spaces are replaced by an underscore) %B = User's real name (with spaces) %C = The current user's codepage (CP437 or UTF8) (added 1.12 A39) %H = The current socket handle (added 1.12 A34) %N = The current node number (added 1.12 A34) %P = The node's temp directory %R = User's handle (with spaces) %T = User's time left in minutes %U = User's handle (spaces are replaced with an underscore _) %0 = The current communication handle (socket handle) %1 = Depreciated. Always returns a "1" now %2 = Depreciated. Always returns "38400" now %3 = The current node number %4 = User's IP address %5 = User's hostname
The following commands are available for executing external programs and doors:
DD - Execute External Program
Data: <command line to execute> /DOS Creates the DORINFO1.DEF, CHAIN.TXT, and DOOR.SYS drop files in the node's temporary directory. In case sensitive file systems, these files are created with full UPPERCASED letters. If the /DOS option is appended on to the end of the command line, Mystic will create the drop files in a DOS text file format, even when used in operating systems like OS X and Linux that used a different text file format.
D3 - Execute DOOR32 Door Program
Data: <command line to execute> /DOS Creates the DOOR32.SYS drop file in the node's temporary directory. This file is always created in lower cased letters on all operating systems. If the /DOS option is appended on to the end of the command line, Mystic will create the drop files in a DOS text file format, even when used in operating systems like OS X and Linux that used a different text file format.
Mystic supports an unlimited number of file bases and file groups which can contain any number of files within them. Files can be listed using arrow and page keys to scroll through the list, and archives can be interactively browsed and searched in the same way (including archives within archives). Mystic fully supports long file names in both file directories and file names, and has extended support for things like ANSI within .DIZ files, and more.
This section contains menu actions that are relative to Mystic's file areas.
FA - Change File Base
Data: "+", "-", <Base ID>, /NOLIST, or None This action will list the File Bases in the user's current File Group and prompt the user to select a new File Base. If /NOLIST is supplied in data, then Mystic will prompt for the File Base and not automatically list them first. If the data is set to "+" then Mystic will move to the next File Base that the user has access to. If the data is set to "-" then Mystic will move to the previous File Base. Finally, the Base ID can be supplied (as shown in the File Base Editor) to automatically change the user into a specific File Base.
FD - Download Files
Data: None This command will prompt the user to download file(s). If the user currently has files queued for download, Mystic will ask them first if they would like to download the queued files. If the user selects no or does not have any files in the queue, Mystic will ask them for a filename to download, and then search the File Bases to allow the user to download the requested file.
FF - Download New/Master File List
Data: /NEW, /GLOBAL, None This command will compile a list of files in the File Bases based on the user's access levels. If no option is supplied, Mystic will generate a list of all files in the File Bases in the user's current file group. If /NEW is supplied, Mystic will generate a list of only new files. If /GLOBAL is supplied, Mystic will generate a list that will include all File Bases within all File Groups instead of just the current group.
FG - Change File Group
Data: "+", "-", <Group ID>, or None This action will list the File Groups that the user has access to, excluding any groups flagged as "hidden" and then prompt the user to select a File Group. If the data is set to "+" then Mystic will move to the next File Group. If the data is set to "-" then Mystic will move to the previous File Group. Finally, the Group ID can be supplied (as shown in the File Group Editor) to automatically change the user into a specific File Group. When joining a file group, Mystic will display the "fgroup#" display file from the theme's text directory if it exists, where # is the group's ID.
FI - File Base Index
Data: <template filename with no extension>, or None The File Base Index system presents users with a list of all File Bases, sorted by group, along with statistics of total and new files for each base. Users can scroll through and search through this list, and select File Bases to list files in as well as "subscribe" and "unsubscribe" to specific bases. The data field provides the template name which if left blank defaults to "file_index" and points to the template file to load. This field should not include a file extension as .ini will be appended to it. The template file contains all of the visual configurations for this function as well as many other options that can completely customize the experience. For example, one could copy the default file_index.ini template to file_change.ini, and then modify its visual and functional settings so that it pops up a scroll box of File Bases for the user to change their current File Base. The same could be done to pop up a list of Files Bases that allows the user to toggle which bases will be included in scans for new files. To use these alternative templates, simply execute FI with the data field of "file_change" or whatever the custom template filename you've created is.
FL - List files in current File Base
Data: SEARCH, None This command will list files in the user's currently selected File Base. If the word SEARCH is in the data field, Mystic will prompt the user to enter a file mask to search for files which match a certain file mask.
FN - Scan for, and list new files
Data: "A", "C", "G", None This command will scan and list new files uploaded since the last time the user scanned for new files. If no data is provided, Mystic will ask the user if they'd like to scan the current base or all bases in the user's current File Group. If data is A then Mystic will scan all File Bases within all File Groups. If data is G then Mystic will scan all File Bases in the current group without prompting. If data is C then Mystic will only scan the user's current File Base.
FP - Set new file scan date
Data: None This command will allow the user to set their new last file scan date to a user inputted date. After entering the date the user will be asked if they would like to set the date for the current File Base or all File Bases. Finally, Mystic will reset the last new file scan date for appropriate Bases.
FS - Search for files
Data: None This command will allow the user to search for files by performing a partial text match against the filename OR any text in the file description. Mystic will first present the "fsearch" display file if it exists, then prompt the user for search criteria. Next the user will be asked if they would like to search the current Base, all Bases in the group, or all Bases in all Groups.
FU - Upload a file
Data: /current This command will allow the user to upload a file. If the BBS is configured to place uploads in a specific File Base, then the file will be uploaded into that base. Otherwise, it will be uploaded to the user's currently selected File Base. Mystic will first display the "upload" display file if it exists, and next ask the user for the file transfer protocol unless the user has selected a Default protocol in which case it will skip this step. Finally, Mystic will prompt to press enter to begin the transfer. If the transfer protocol is anything that was created within the last 25 years or so, chances are Mystic will never even need to ask for filenames. In fact, a user can upload as many files as they want at one time without ever entering any file names or information about the file! Mystic can detect all of the upload files, test them, import descriptions if they exist, and optionally prompt the user for descriptions if it is configured to do so (and there wasn't a .DIZ to import). In the event a protocol is chosen from the stoneage, like Xmodem, then Mystic will simply ask for the filename before beginning the transfer. If the /current option is specified, Mystic will attempt to upload to the current file base even if a specific file base has been configured for uploads
FV - View contents of a file
Data: None This command allows the user to view the contents of a file in the File Bases. The user is prompted for a file name, and the filename is then searched for throughout all Bases in the user's current file group. If a file is found, the contents will be listed and the user can navigate through its contents, view and download files within the archive, as well as view, search and download contents of archives contained with that archive.
FZ - Toggle File Bases for New Scan
Data: /ALLGROUP, None This command allows users to select the bases that are included in their scan for new files during a new file scan. The bases listed are the bases in their current group. If the /ALLGROUP option is in the data field then Mystic will present them all File Bases in all File Groups as long as they meet access requirements.
GD - Show a display file
(For information on Random Display Files, see Display Files)
Data: ([FILE]) or (@[BAUD]@[TRUE/END/FALSE]@[FILE]) [/NEW] [/ABORT] [/MCI] This command sends the contents of a display file to user. There are a vast number of optional data which can be supplied to change the way in which the files are sent. If the [FILE] parameter does not include a directory, then Mystic will assume the file exists in the user's current Theme's TEXT directory If the [FILE] parameter does does not include an file extension, Mystic will display .ANS if it exists or .ASC if the ANSI version does not exist In this mode, Mystic will also apply the Random Display File logic to the base filename, selecting a random file if enabled. If [/NEW] is added to the end of the data command, Mystic will only display the file if it is NEW. This means if the date of the display file is newer than the user's last call into the BBS. If [/ABORT] is added to the end of the data command, Mystic will not allow the user to abort displaying the file. Aborting is allowed by default. If [/MCI] is added to the end of the data command, Mystic will not process MCI codes of any kind, including pipe colors, while display the file. The (@[BAUD]@[TRUE/END/FALSE]@[FILE]) method allows the ability to emulate a baud rate while displaying, as well as whether or not to pause the screen during display (TRUE) or only at the end (END), or not at all (FALSE). The [FILE] parameter uses the same rules as discussed above. Some examples of the DATA commands: Data: myfile Result: Mystic will display "myfile.ans" from the user Theme text directory or "myfile.asc" if the ANSI version does not exist or the user does not have ANSI. If the .AN1 or .AS1 extension exists, Mystic will apply its random display file logic to the file and select a file randomly. Data: c:\mystic\textfiles\myfile.txt Result: Mystic displays the file if it exists. Data: c:\mystic\textfile\myfile Result: Mystic will display the ANSI version if it exists or the ASCII version if it does not. (.ans and .asc respectively) Data: bbsnews /NEW Result: Mystic will display bbsnews from the user theme text directory but only if it has been edited since the user's last call Data: @19200@FALSE@myfile Result: Mystic will display myfile from the user theme text directory applying the same extension rules. It will emulator 19200 baud rate which works on all terminals, and it will NOT pause Data: @0@END@myfile Result: Mystic will display myfile from the user theme text directory applying the same extension rules. It show the display file at full speed and only pause at the END of the display file. Data: @38400@FALSE@c:\mystic\textfiles\myfile.txt /NEW Result: Mystic will display myfile.txt from the specified directory while emulating 38400 baud rate and pausing on each page but only if it was updated since the user's last login.
GV - View a display file in ANSI viewer
Data: <template>;<helpfile>;<speed>;<filename>[;END] The ANSI viewer shows a file within the full screen, allowing the user to scroll up and down through the file using their arrow keys, page up/down, and home keys. The viewer also has the ability to extract and display SAUCE tags to get the artist and group information. Pressing SPACE will also display the file in a "traditional" BBS way, scrolling from start to finish using the supplied emulated baud rate. Several values are required in the DATA field for this command, separated by a semi-colon: <template> defines the template used for the viewer itself, found in the current theme's display (text) directory. For more information on configuration of the template, see **TO BE COMPLETED** section. <helpfile> defines the help file displayed when the user selects to show help from within the viewer. It should be in the text directory. <speed> defines the baud rate to emulate when displaying the file if the user selects <space> to display traditionally. Use a baud rate of 0 for a full speed display. <filename> defines the name of the file to actually display to the user. If no file extension is provided, ".ans" will be assumed. If no path is provided, Mystic will use the current theme's text directory. Optional paramenters: <END> if ";END" is added after the filename field, the viewer will start viewing at the end of the file instead of the beginning. Examples: Command: GV Data: ansigalv;ansigalh;38400;myansifile Command: GV Data: ansigalv;ansigal;0;myansifile;END The first example will execute the display file viewer using the template "ansigalv" and the help file "ansigalh" with the baud rate of 38400 if a user presses <space> to do a traditional view. The file "myansifile" is the display file, since it is missing a path and a file extension, Mystic will use ".ans" and the current theme text directory. The second example is the same as the first, except it displays the file at full speed instead of 38400 baud emulation, and also starts showing the file at the end of the file, rather than the beginning.
Mystic offers the ability to connect to another system through your own using any one of TELNET, RLOGIN, or SSH protocols. By default, Mystic will attempt to connect via IPV4 but if it cannot, it will next try to connect via IPV6 before ultimately failing.
Both RLOGIN and SSH protocols will require a user and password be supplied in the optional data.
IR - Outbound RLOGIN Connection
Data: /addr=<hostname> /port=1234 /user=@USER@ /pass=@USER@ This command creates a gated terminal session to another terminal server using the RLOGIN protocol. The /addr /user and /pass options must be included. If the /port option is not provided then the default port of 513 will be used. Mystic will replace @USER@ with the current user's name if it is supplied in either or both of the /user or /pass options. The user's password cannot be sent using an @code@ and must be manually supplied due to the password encryption. Mystic in the near future will encrypt a users password, meaning at no time does it ever know or store your actual password. It cannot send it because it doesn't know it.
IS - Outbound SSH Connection
Data: /addr=<hostname> /port=1234 /user=@USER@ /pass=@USER@ This command creates a gated terminal session to another terminal server using the SSH protocol. The /addr /user and /pass options must be included. If the /port option is not provided then the default SSH port of 22 will be used. Mystic will replace @USER@ with the current user's name if it is supplied in either or both of the /user or /pass options. The user's password cannot be sent using an @code@ and must be manually supplied due to the password encryption. Mystic in the near future will encrypt a users password, meaning at no time does it ever know or store your actual password. It cannot send it because it doesn't know it.
IT - Outbound TELNET Connection
Data: /addr=<hostname> /port=1234 This command creates a gated terminal session to another terminal server using the TELNET protocol. The /addr option must be included. If the /port option is not provided then the default port of 23 will be used.
The following menu commands related to the Message Bases and reading/posting of messages.
MN - Scan for New Messages
Data: /G /P /M /NOLR /NOFROM /NOREAD This menu command scans for new messages. The optional data field allows for modifiers to the default behavior. By default if no optional data is provided, Mystic will scan for all new messages in the user's current message group. If /P is provided in optional data, Mystic will only scan for personal messages (messages From or To the user) If /G is provided in optional data, Mystic will scan all message bases in all groups. If /M is provided in optional data, Mystic will forced the user to read the new messages (mandatory read). If /NOLR is provided, Mystic will not update the user's "last read" message when performing the scan. The following commands augment the behavior of the /P personal scan option: If /NOFROM is provided, Mystic will only look at the To field when scanning for new personal messages (instead of both To and From) If /NOREAD is provided, Mystic will not show messages that have been flagged as "Read" by the user.
MX - Post text file to message base
Data: <File>;<Base ID>;<From>;<To>;<Subject>;[Network To Address] This menu command posts a text file to a message base. It will allow a file up to 10,000 lines to be posted and will automatically split them into multiple posts of 1000 lines each if the post is more than 1000 lines (including automatically appending a message count to the end of the subject ie: (1 of 3)" If you want to post an ANSI file, it should be saved with a 79 column width using a capable ANSI editor. Mystic's own built in ANSI editor can save an ANSI file properly formatted for message posting by specifying a column length of 79 in the Save dialog. The optional data field is required for this to work, except for the Network Address field which is only required if you are posting to a NetMail base. Each value should be separated by a semi-colon (;). The <File> field contains the filename to post to the base. This file should be a text file with up to 79 columns per line and up to 10,000 lines. The <Base ID> is the Message Base ID as found in the Message Base Editor <From> The From field of the message <To> The To field of the message <Subject> The Subject of the message [Network Address] is the To network address used when posting to a NetMail base. This field can be excluded when not posting Netmail. Examples: c:\mystic\temp1\msgtext.txt;1;g00r00;All;Statistics for January c:\mystic\temp1\msgtext.txt;3;g00r00;Avon;Automated post;21:1/101