User Tools

Site Tools


whats_new_112

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
whats_new_112 [2017/05/05 23:13] – release notes 1.12 A32 avonwhats_new_112 [2023/01/18 01:15] (current) – 1.12 A48 released avon
Line 19: Line 19:
 \\ \\
 \\ \\
- +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\
  
  
Line 1760: Line 1777:
    or TZUTC kludges when posting to a FTN networked message base.  Fixed.    or TZUTC kludges when posting to a FTN networked message base.  Fixed.
        
-      <ALPHA 1.12 A32 RELEASED -- May 5, 2017>+   <ALPHA 1.12 A32 RELEASED -- May 5, 2017>
        
 </code> </code>
  
 +===== 1.12 Alpha 33 =====
 +
 +<code>
 +
 + + Added some additional error logging to MUTIL's TIC processor when
 +   attempting to open and close TIC files.
 +
 + ! Replaced the old MSGID system with a new system. All parts of Mystic now
 +   use the same unified piece of code to generate MSGIDs.  This should also
 +   fix the recent dupe MSGID bugs mentioned in previous alpha.
 +
 + + Mystic now shows the operating system "bit" in Tear lines in messages.
 +
 + + Changed references of "OSX" to "macOS".
 +
 +   <ALPHA 1.12 A33 RELEASED -- May 12, 2017>
 +   
 +</code>
 +
 +
 +===== 1.12 Alpha 34 =====
 +
 +<code>
 +
 + ! Fixed a bug which could cause a bad memory reference error in various
 +   places within Mystic.
 +
 + ! MUTIL PostTextFile wasn't taking into consideration the tear and origin
 +   lines when posting to a networked base while splitting large posts into
 +   multiple messages.
 +
 + + -VER commandline option in Mystic now prints the OS information too.
 +
 + + Increased buffer size when writing message text to JAM bases to 32k up
 +   from 8k
 +
 + + Mystic JAM will no longer strip spaces from the right side of MSGID tags
 +   in JAM to help work around a bug with GTPower.
 +
 + ! JAM Reply CRC and Msg To CRC were not always converted to lower cased
 +   before calculated. As per JAM specs all CRC calculated on string must be
 +   lower cased first.  Packing message bases will regenerate these.
 +
 + + Reduced the time it takes to calculate Message Index Reader statistics
 +   by about 60%. Statistics may be calculated incorrectly unless all bases
 +   have been ran through the message base packer once to regenerate CRC values
 +
 + ! Fixed a bug which could cause some node processes to not detect when a
 +   user hangs up, possibly resulting in a ghosted user or even a stuck
 +   process.
 +
 + + Added a new internal protocol Xmodem/CRC. This protocol can be added by
 +   creating @XMODEMCRC in your Protocl Configuration and has not had much
 +   testing.  **This is experimental; it may or may not stick around**
 +
 + + When shutting down MIS2, it no longer prompts to press a key when closing
 +   but instead displays a "shutdown complete" message and pauses 1.5 seconds
 +
 + + When editing a file entry in a file base there is now a (H)atch command
 +   which allows files to be hatched to all networked systems linked to that
 +   file base.  Files to be hatched will have a "Hatch pending" text or a
 +   Hatched flag if the request was already processed.
 +
 + + Mystic now creates "filebone.out" semaphore file whenever a new file is
 +   requested to be hatched.
 +
 + + MUTIL TIC processor will now scan for requested hatches.  Any files
 +   requested to be hatched will have an appropriate TIC file created
 +   in each linked node's filebox, and the file will be copied to each
 +   linked node's filebox.
 +
 + + In addition to existing /E to view networked message bases linked to a
 +   node, the echomail node editor now has a /F to view and edit networked
 +   file bases linked to a node.
 +
 + + Significant stability improvements to MIS2 along with some minor cosmetic
 +   changes.
 +
 + ! Changed PKT addressing on pass-through echomail so that BBBS systems with
 +   its security feature enabled will not reject packets.
 +
 + + In the echomail nodes editor, when enabling a FileBox with a blank filebox
 +   location, Mystic will now give the option to automatically generate and
 +   create a directory for that node.  The format used by Mystic for the
 +   directory is as follows:
 +
 +     Root filebox directory = <mystic root path> + "/filebox/"
 +
 +   Each directory is created under the root location with the format of:
 +
 +     <domain>_z<zone>n<net>n<node>  (p<point> appended only for points)
 +
 +   Example for 21:1/108@fsxnet when installed to c:\mystic would be:
 +
 +     c:\mystic\filebox\fsxnet_z21n1n108\
 +
 +   <ALPHA 1.12 A34 RELEASED -- June 23, 2017>
 +   
 +</code>
 +
 +===== 1.12 Alpha 35 =====
 +
 +<code>
 +
 + + File bases now have a "File Echo Hub" flag which if set to Yes will
 +   prevent any pass-through files for this file echo.  If a new file for the
 +   base is received via a TIC it will be added to the file base, but not sent
 +   to any downlinks (unless manually hatched by the SysOp).
 +
 + ! Fixed a bug where hatched files were creating the wrong CRC value in .TIC
 +
 + ! Files hatched by Mystic were not getting the Origin field added in .TIC
 +
 + + Reduced the time it takes for calculation of area index reader statistics
 +   by an enormous amount, at the expensive of some accuracy.  In A33 my test
 +   took 6 seconds to complete a list of 300 areas with around 250,000
 +   messages.  In A34 I reduced it to 2.5 seconds.  In A35 its now taking
 +   a shocking 1/20th of one second!
 +
 + ! Fixed a bug in startup.mps when using its automatic login feature that
 +   could cause a crash.
 +
 + + STARTUP.MPS now allows a "UserLoginNew" boolean variable to be set which
 +   will push to the new user application when TRUE.  This allows MPL to
 +   completely replace the user login/new user processes if desired.  All MPL
 +   programs will need to be recompiled in this alpha.
 +
 + + Mystic will now create an "errors.log" file in the logs directory which
 +   is intended to be a universal place where any errors that happen in any
 +   part of Mystic (MIS, Mystic, MUtil, etc) will be logged.  This is a work
 +   in progress.  The idea is to expand on this to allow notifications within
 +   the MIS2/NodeSpy UIs but also to optionally have SMS/e-mail notifications
 +   when your BBS has errors.
 +
 + + Mystic node logs now have a cleaner output in preparation for future log
 +   rolling and log levels for node specific logs.
 +
 + + Completely rewrote the startup and shutdown procedures for Mystic.  This
 +   should be transparent to everyone but I mention it just in case.  Handling
 +   of connection loss and inactivity timeout events have been reworked.  This
 +   will allow me to do things such as implement a draft message system for
 +   resuming your posts (if you lose connection while posting) among other
 +   things.
 +
 + + Themes (regardless of when one is selected) will always fallback to the
 +   default theme if an error occurs while attempting to change themes.  In
 +   addition, -CFG can now be loaded when there is no theme configuration at
 +   all.
 +
 + + New MCI code <pipe>AA turns aborting ON for the current display file. This
 +   goes along with the existing AO code which turns aborting OFF for the
 +   current display file.
 +
 + + More stability work on MIS2 particularly for Pi and (hopefully) macOS
 +   this time although I have had limited time to do testing.
 +
 + + Performance optimizations to input functions on all platforms
 +
 + + Added new CFG variables to MPL: "CfgLoginTries", "CfgPWTries" return those
 +   respective settings and CfgEchoChar returns the password character for the
 +   current theme.
 +
 + + NodeSpy terminal now supports sending of the INSERT and F1-F10 keys to
 +   remote servers.
 +
 + + When connecting using NodeSpy terminal, ESCAPE will now abort connection
 +
 + + NodeSpy now has a Port field separate from the address field.  If the port
 +   is set to 0 then the default port will be used for that connection.  Old
 +   entries that used ":<port>" in the address field will have to be edited
 +   manually to remove the :<port> and set the Port field.
 +
 + + NodeSpy now supports both SSH and RLOGIN connections.  Entries will now
 +   have a configurable Protocol option where the connection type is set.
 +
 + + NodeSpy now sets connection type and name of the entry connected to in the
 +   window title. IE: NodeSpy/Terminal (SSH) mybbs.com
 +
 + + Removed the -PATH command line option as now -CFG should work always.
 +
 + ! Fixed a bug in the FS message editor and ANSI editor cut and paste
 +   functions which could cause the cursor to get completely lost.
 +
 + + Mystic's TIC processor will now always write "MS-DOS" format text files
 +   when writing or updating a .TIC file.  If it receives a .TIC in a
 +   different format, it will still covert it to MS-DOS.  This is to possibly
 +   provide better compatibility with DOS-based processors that may fail to
 +   properly read a Unix text file.
 +
 + ! Fixed a bug where MIS2 BINKP was always using an internal buffer size of
 +   128 bytes, instead of the intended 32KB for each send/receive buffer.
 +
 + + Mystic's random display file system now also will include letters a-z,
 +   allowing up to 36 randomly selected display files per filename, up from
 +   11.  It works the same as before.  If myansi.an1 exists, then Mystic
 +   will randomly select any file that exists in the myansi.an0-myansi.an9
 +   range or myansi.ana-myansi.anz range.  For OSes with case sensitive
 +   filenames, the extensions are always lowercased.  They do not have to be
 +   in any order, just .an1 has to exist to "trigger" the random system:
 +
 +      myansi.ans
 +      myansi.an1
 +      myansi.anz
 +      myansi.an5
 +
 + + When killing a "ghost node", NodeSpy will now attempt to send a kick user
 +   command to the actual node.
 +
 + + When a Windows node is shut down by right clicking and closing from the
 +   task bar or when closing the window from the "Window preview" on the task
 +   bar, Mystic will no longer create a ghost node.  It will also log an
 +   "irregular shutdown event" to the errors.log file.
 +
 + + Mystic upload, mass upload and MUTIL upload will all now import
 +   FILE_ID.ANS if it exists as a priority over FILE_ID.DIZ.  These .ANS files
 +   can be full ANSI descriptions of files, up to 50 columns of art per line.
 +
 +   If ANSI is found in a .DIZ file, Mystic will still continue to process it
 +   properly with the ANSI intact, just as it had before this release.
 +
 + ! Fixed a bug in MIS2 that could cause the configuration values to not be
 +   applied to BINKP server and for semaphore files to not be properly created
 +
 + + The MC (Check E-mail) command now has a /UNREAD option which will only
 +   list new unread e-mail messages, instead of all messages in your inbox
 +   when scanning for new messages.
 +
 +   <ALPHA 1.12 A35 RELEASED - Sept 7, 2017 >
 +
 +</code>
 +
 +===== 1.12 Alpha 36 =====
 +
 +<code>
 +
 + + MUTIL echomail export now logs to all log levels should it fail to release
 +   a BUSY flag for a node.  It will also add an entry into the global
 +   errors.log file.
 +
 + + MUTIL echomail import now logs to all log levels should it fail to release
 +   a BUSY flag for a node.  It will also add an entry into the global
 +   errors.log file.
 +
 + ! Mystic should now properly delete all the drop files from the node's temp
 +   directory when returning from a door.
 +
 + ! When routing pass-through netmail, Mystic was not setting the PKT password
 +   properly to the new routed node's configured PKT password.
 +
 + ! When calculating pass-through and exported netmail by route, Mystic was not
 +   skipping over echomail nodes that were flagged as Inactive.
 +
 + + Nodelist compiler will now process ?00 through ?99 compressed files instead
 +   of ?01 through ?99.
 +
 + + Mystic now logs an entry when returning from a door
 +
 + + Mystic now logs the command line for every program it runs, including
 +   doors and archives, etc.
 +
 + + Mystic now logs when it begins to shutdown a node normally
 +
 + + In Unix versions, Mystic will now "watchdog" any door process.  If the
 +   connection is lost, Mystic will immediately send a SIGTERM signal to the
 +   process and shut itself down.  This will fix the "DOSEMU 100% cpu" problem
 +   both on the DOSEMU side and the Mystic side.
 +
 + ! Fixed a BINKP bug where Mystic was not looking at the unsecure directory
 +   during unsecure transfers when it was comparing file sizes of files that
 +   already existed on the server.
 +
 + + Changed BINKP to not administer flood protection which seems to allow it
 +   to work better with IREX.
 +
 + ! When uploading REP packets online, the TZUTC kludge wasn't being added to
 +   messages.
 +
 + + Two new functions for Python: param_count() returns the number of
 +   parameters passed to the script.  param_str(#) returns the parameter number
 +   where # is the number.  Supplying (0) will give you the script location and
 +   name.  Supplying nothing will give you the entire command line.  Example:
 +
 +     import mystic_bbs as bbs;
 +
 +     bbs.writeln ("Number of parameters..: " + str(bbs.param_count()))
 +     bbs.writeln ("Full command line.....: " + bbs.param_str())
 +     bbs.writeln ("Script name...........: " + bbs.param_str(0))
 +     bbs.writeln ("|CRParameters (param_str):|CR")
 +
 +     count = 0
 +
 +     while count <= bbs.param_count():
 +       bbs.writeln ("   Param #" + str(count) + ": " + bbs.param_str(count))
 +
 +       count = count + 1
 +
 +     bbs.writeln("|CR|PA")
 +
 + + Running Mystic with a -VER now shows the date and time that Mystic was
 +   compiled in addition to the version.
 +
 + + Mystic will now include the compile date in the tear line for networked
 +   messages.  This will probably change in the future.
 +
 + ! BINKP was not always sending M_ERR frame when authentication is denied
 +   before connection was shutdown
 +
 + + MPLC now outputs to STDIO for better integration with compiling from 3rd
 +   party editors.
 +
 + + FIDOPOLL now uses the MIS2 BINKP engine, instead of the MIS engine
 +
 + + MIS2 now has an active event engine and the event engine in MIS has now
 +   been disabled.
 +
 + + Mystic now logs whenever a MPL script is executed
 +
 + + Mystic now logs whenever a Python script is executed
 +
 + + Mystic now logs user and password errors when supplied via command line
 +
 + + MIS2 now has local country blocking that works with IPV4 and IPV6.  It
 +   no longer uses a service, instead a local database exists in the DATA
 +   directory.  This database is named "iplocation.bin" and is a free
 +   LITE IPV4+IPV6 database located at:
 +
 +      lite.ip2location.com/database/ip-country
 +
 +   You should download the "IPV6 BIN" file, an example filename might be:
 +   IP2LOCATION-LITE-DB1.IPV6.BIN.ZIP and then rename the .BIN file inside
 +   of the ZIP as "iplocation.bin" in the DATA directory.  You will then
 +   use iplocation.txt also in the DATA directory to configure which
 +   countries to block, similarly to the way the old MIS worked.  For a
 +   temporary time you can also find a database at:
 +
 +     www.mysticbbs.com/downloads/prealpha/iplocation.zip
 +
 +   To enable this feature, configure it on a per-server basis in the servers
 +   configuration.
 +
 + ! Fixed a bug in the message linking, and also changed the way the linking
 +   creates its database.  This should hopefully allow for better accuracy but
 +   it is advised to pack your message bases once to make sure your bases are
 +   in good health if you don't do it occasionally, and then run the message
 +   link.
 +
 + + When debug logging is on MUTIL msg linking will now log each message it
 +   links and what it calculates for each message.
 +
 + ! FIDOPOLL was not honoring the BINKP packet size configuration in the
 +   Echomail nodes.  This could cause problems with older Mystic mailers that
 +   only supported up to 30KB packets because it defauled to 32KB
 +
 + + Node logs, FidoPoll and Mutil logs now all include the compile date along
 +   with the Mystic version.  This may be removed later.
 +
 + + The "GR" menu command (Gosub return) now has a "/NOEXEC" optional data
 +   option.  If this is supplied Mystic will not execute "FIRSTCMD" menu
 +   commands after returning to the menu.
 +
 + ! Fixed a BINKP bug where in a very rare circumstance the receive state
 +   could eat a frame that was intended for the send state.  This could cause
 +   the session to "timeout" as BINKP waits for the missing frame.
 +
 + + Changed QWK Networking HUBs to use the "Packet ID" configured in the QWK
 +   Network configuration instead of the BBS QWK packet ID.  The way it worked
 +   previously was confusing, but allowed for multiple hubs in a QWK network
 +   so it might be changed back before final release.
 +
 + ! FTP server was not showing the QWK packet in the root directory when using
 +   NLST instead of LIST
 +
 + ! Log rolling by day will now roll the log if the date rolls over at midnight
 +   while logging.
 +
 + + MIS2 logs are no longer buffered and should update immediately.
 +
 + + MIS2 now has an FTP server available in the MIS2 server configuration.  If
 +   you went rogue and tried to create an FTP server in a pre-alpha test before
 +   it was in the WHATSNEW then you need to go delete the FTP server before
 +   continuing, or else your FTP server data will get corrupted.
 +
 + + FTP server now supports Anonymous FTP.  File bases can be marked to
 +   "allow anonymous" and if so, those areas and the files within them will
 +   be available to Anonymous logins for free.
 +
 + + FTP server now supports IPV6 in both port and passive modes.
 +
 + + The FTP server will now resolve your configured BBS domain upon start up
 +   to get both the IPV4 and IPV6 address.  It will also perform this procedure
 +   every 1 hour so if a dynamic IP changes it will be detected.
 +
 + + FTP server connections now each have their own static passive FTP port
 +   which is the port configured as the "passive port start" plus the slot
 +   number added onto it.  This means you need to open up ports "FTP start port"
 +   + "max connections" - 1.  So if you have max connections set to 10 and your
 +   start port set to 60000 then you need to open up ports 60000-60009.
 +
 + + FTP server now prints if it cannot resolve domain IP on startup or when
 +   refreshing the IP addresses, and will also print the data port range the
 +   FTP server uses (which must be allowed through your firewall).
 +
 + + FIDOPOLL can now connect via IPV6.  There is a new option for each
 +   echomail node where IPV4 or IPV6 can be selected.  Unsecured outbound
 +   connections still default to IPV4 but a nodelist lookup for what seems to
 +   be a barely used "IPV6" flag may be added in the future.
 +
 + + MIS2 now has the NNTP server active!
 +
 + + MIS2 now checks the whitelist, blacklist, auto-ban by connection attempts
 +   when a connection is made before performing the duplicate IP check.  In
 +   the past, connections refused for connecting multiple times on the same IP
 +   were not being counted towards the auto-ban by connection attempts.
 +
 + + New event type has been added to MIS2 event manager: "IP Blocked" This
 +   event can be executed every time an IP has been blocked by any MIS2
 +   server's auto IP ban configuration.
 +
 +   The purpose of this is to allow you to run a command to create a block rule
 +   at the firewall level so that the IP cannot even reach MIS in the future. In
 +   Linux "iptables" can be used, and in Windows "netsh" can be used to do this.
 +
 +   The @IP@ code in the shell command will be replaced with the IP of the banned
 +   account.  Mystic will still continue to add the IP to its own blacklist.txt
 +   as well.
 +
 +   The default events in a fresh install now include example events for this.
 +   To create them in an existing environment, create a new event and set the
 +   type of "IP Blocked" and then the Shell command to:
 +
 +     Linux   :
 +     Windows :
 +
 +   In Windows the firewall prior to Windows Vista did not allow creating rules
 +   from the command line, so this default will likely only work for Vista or
 +   later versions.
 +
 +   In most Linux installations iptables will be owned by root, and thus MIS
 +   will not have access to use the command.  You will need to chown iptables
 +   so the BBS user can access it, or chmod it so all users can use it.  Keep
 +   in mind setting it so all users can use it is not a secure approach.  An
 +   example of this might be:
 +
 +     chown bbsuser:bbsuser /sbin/iptables
 +
 +     If you are unsure where iptables is you could do a command from the root
 +     folder to locate iptables binary:
 +
 +       sudo find . -name "iptables"
 +
 +   Managing IP blocking rules:
 +
 +     Show contents of block rules in Firewall:
 +
 +       Linux   : iptables -L INPUT -v -n | less
 +       Windows : netsh advfirewall firewall show rule name="IP Block"
 +
 +     Remove a blocked IP rule from Firewall:
 +
 +       Linux   :
 +       Windows :
 +
 + + MIS2 servers now have a "Send Blocked" option to toggle on or off the
 +   sending of a message to the connected system when they are blocked.
 +
 + ! During startup MIS2 would create mis2.log and the tempmis directory with
 +   root access if they did not already exist.
 +
 + + MUTIL will now switch to the owner of its binary in a similar way that
 +   MIS and MYSTIC do, just in case someone tries to run it as root.
 +
 + + FIDOPOLL will now switch to the owner of its binary
 +
 + + MIS2 now has POP3 server.  I am not planning to do any significant testing
 +   until the SMTP server is added.
 +
 + + MUTIL FILEBONE.NA importer now allows the echotag to be used for the
 +   description and FTP name.  It also logs when an invalid line is discovered
 +   including the line number when debug logging is enabled.  See default
 +   mutil.ini for example of values.
 +
 + + MIS2 now has the SMTP server from MIS.  The old MIS has now been removed
 +   from the BBS and can no longer be used.  MIS2 has been renamed to MIS.
 +
 + + New MPL command: "GetFBaseID" files a file base by its ID and populates
 +   the FBase variables.  It also returns TRUE on success or FALSE on failure.
 +
 +     If GetFBaseID(UserFBase) Then
 +       WriteLn ('You are in: ' + FBaseName)
 +     Else
 +       WriteLn ('You have not selected a file base yet');
 +
 + + New MPL command: GetMBaseID works the same as the GetFBaseID command above
 +
 + + New Python function "getuserid(ID)" returns a user dictionary of the user
 +   associated with ID.  If no user is found it will return None:
 +
 +     import mystic_bbs as bbs;
 +
 +     user = bbs.getuserid(1)
 +
 +     if not user is None:
 +       bbs.writeln(user["handle"]);
 +
 + + New Python function "getmbase(num)" returns a Message Base dictionary of
 +   the record physically located at (num).  This example will print all of
 +   the message bases out:
 +
 +     import mystic_bbs as bbs;
 +
 +     count = 0;
 +
 +     while not bbs.shutdown():
 +       mbase = bbs.getmbase(count);
 +
 +       if mbase is None:
 +         break;
 +
 +       bbs.writeln(mbase["name"]);
 +
 +       count = count + 1;
 +
 +     bbs.writeln("List complete. |PA");
 +
 + + New Python function "getmbaseid(ID)" returns a Message Base dictionary of
 +   the Message Base with ID of (ID).
 +
 + + New Python functions for reading Message Bases:
 +
 +     msg_open, msg_seek, msg_found, msg_next, msg_prev, msg_gethdr,
 +     msg_gettxt, msg_close
 +
 +   Rather than try to document them all here I've included a "msgread.mpy"
 +   in the default installation as an example of how to use these functions.
 +   This example implments a very basic message reader using the user's current
 +   message base.
 +
 + ! Mystic will now show "proto.xxx" or "protob.xxx" for batch-only protocols
 +   if they exist instead of generating a list of protocols.  PROTO should
 +   contain all protocols, regardless of batch or not.  PROTOB should contain
 +   only batch-supported protocols.
 +
 + ! Fixed a bug where Mystic was allowing non-batch protocols to be selected
 +   for a batch file transfer.
 +
 + ! Fixed a bug where the -Y and -N MCI codes were not always working for the
 +   next Yes/No prompt.
 +   
 +   <ALPHA 1.12 A36 RELEASED - Dec 3, 2017 >
 +
 +</code>
 +
 +===== 1.12 Alpha 37 =====
 +
 +<code>
 +
 + + New Python functions for reading Message Bases:
 +
 +     msg_open, msg_seek, msg_found, msg_next, msg_prev, msg_gethdr,
 +     msg_gettxt, msg_close
 +
 +   Rather than try to document them all here I've included a "msgread.mpy"
 +   in the default installation as an example of how to use these functions.
 +   This example implments a very basic message reader using the user's current
 +   message base.
 +
 + ! Mystic will now show "proto.xxx" or "protob.xxx" for batch-only protocols
 +   if they exist instead of generating a list of protocols.  PROTO should
 +   contain all protocols, regardless of batch or not.  PROTOB should contain
 +   only batch-supported protocols.
 +
 + ! Fixed a bug where Mystic was allowing non-batch protocols to be selected
 +   for a batch file transfer.
 +
 + ! Fixed a bug where the -Y and -N MCI codes were not always working for the
 +   next Yes/No prompt.
 +
 + + Changed the format of the "scan" settings data for message and file bases,
 +   this should be total transparent to everyone, except that update.exe needs
 +   to be ran to update the data files.
 +
 + + MUTIL has a new "PurgeUserBase" function will which mark users who have
 +   not connected to the BBS in X days for deletion.  UKILL function has been
 +   removed from MBBSUTIL.  Default mutil.ini has been updated
 +
 + + MUTIL has a new "PackUserBase" function which will physically delete user
 +   records, private messages to and from them, their lastread pointers in
 +   message bases, their scan settings in message and file bases.  This can
 +   only be executed when there are no users online.  Default mutil.ini has
 +   been updated.
 +
 + ! Fixed a bug where MUTIL was not always removing the proper BSY files when
 +   it timed out waiting for a node to finish.
 +
 + + New Python function "charxy(x,y)" returns the character and attribute of
 +   the user's screen at the X/Y coordinate.  Example:
 +
 +     ch, attr = charxy(1, 1);
 +
 +     writeln("attr=" + str(attr));
 +     writeln("char=" + ch);
 +
 + + New Python function getcfg() returns basic configuration options in a
 +   Python dictionary.  I am not going to list out dictionaries here as I am
 +   adding to it as people ask for it, but for with any dictionary you can
 +   always iterate through it to see the elements until it lands on the Wiki
 +
 +     import mystic_bbs as bbs;
 +
 +     bbs.writeln("|CLElements:")
 +
 +     cfg = bbs.getcfg()
 +
 +     for key, value in cfg.items():
 +
 +       bbs.write ("Key: " + key.ljust(20));
 +
 +       if isinstance(value, bool):
 +         bbs.writeln(" Value: " + (value and "True" or "False"));
 +       elif isinstance(value, (int, long)):
 +         bbs.writeln(" Value: " + str(value))
 +       else:
 +         bbs.writeln(" Value: " + value)
 +
 +     bbs.writeln("|PA")
 +
 + + New Python function "getyn(text, default)" This presents a Yes/No prompt
 +   and returns True if they answer yes, False if they answer no.  The
 +   second parameter is the default selection (True is yes, False is no):
 +
 +     if getyn("Is this an example? ", True):
 +       writeln("You answered Yes!")
 +     else:
 +       writeln("You answered No!")
 +
 + + New Python function "showfile(filename, baud, pause, abort, onlynew)"
 +
 +   This function shows a display file and provides all options specific to
 +   how it is displayed as parameters and returns True or False depending on
 +   if a display file was found and shown.
 +
 +   The filename logic uses the same as the GD menu command (see the Wiki
 +   documentation for GD for more info) which means it has implied paths and
 +   extensions and random display files if desired.
 +
 +   The baud parameter is 0 for full speed or whatever the baud rate at which
 +   Mystic should display the file.
 +
 +   The Pause parameter is a True/False value that when True will attempt to
 +   pause on a full screen.
 +
 +   The Abort parameter is a True/False value that when True will allow the
 +   file to be adorted while display using the space bar.
 +
 +   The OnlyNew parameter is a True/False value that when True will only show
 +   the file if it has been update since the user's last login to the BBS. Ex:
 +
 +     showfile("gj-glue1", 9600, False, True, False)
 +     showfile("c:\mystic\textfiles\mytext.txt", 0, True, True, False)
 +
 + + New Python command "getprompt(number)" will return prompt (number) from
 +   user's currently selected theme.  If the prompt has been replaced with
 +   a script or display file, Mystic will execute the script or show the
 +   file.
 +
 + ! Fixed an issue where setting scanned bases with the /qwknet option was
 +   not showing anything in the QWK networking menu.
 +
 + + New Python command "stuffkey(text)" This function adds text into the
 +   input buffer as if the user had typed it.
 +
 + + New Python command "sysoplog(level, text)" logs a line to the node's
 +   log using level as the loglevel.  Only if the loglevel is set equal to
 +   or greater than <level> will it be shown in the log.  Text is a string
 +   of text which will have a datestamp added to it automatically.
 +
 +     sysoplog(1, "Welcome to my Python script!")
 +
 + + New Python command "access(acsstring)" returns True or False if the user
 +   passes (has access) to the supplied <acsstring>:
 +
 +     if access("s20"):
 +       writeln("User has a security level of 20 or higher!")
 +     else:
 +       writeln("User has less than 20 security.")
 +
 + + New Python command "rwrite(text)" writes text to the user with no line
 +   ending and no MCI or color code processing.
 +
 +     rwrite("You |12will actually see the color code here");
 +
 + + New Python command "rwriteln(text)" writes text to the user with no MCI
 +   or color code processing, and moves to the next line after sending:
 +
 +     rwriteln("Line one")
 +     rwriteln("Line two")
 +
 + + New Python function "upuser(seclevel)" Updates the current user's security
 +   profile to <seclevel>, which includes access flags, time left, daily
 +   limits, etc.  Ex: upuser(50)
 +
 + + New Python function "wherex" returns the current X location of the cursor
 +
 + + New Python function "wherey" returns the current X location of the cursor
 +
 + + New Python function "textattr" returns the current text color attribute
 +
 + + New Python function "textcolor(attribute)" sets the current text color
 +   to <attribute> where attribute is calculated as (FG + BG) * 16 so white
 +   on a blue background would be 15 + 1 * 16 (or 31).
 +
 + + New Python function "getmgroup(number)" returns a dictionary of the message
 +   group at record number <number>.
 +
 + + New Python function "getmgroupid(number)" returns a dictionary of the
 +   message group with the ID of <number>.
 +
 + + New Python function "getfgroup(number)" returns a dictionary of the file
 +   group at record number <number>.
 +
 + + New Python function "getfgroupid(number)" returns a dictionary of the
 +   file group with the ID of <number>.
 +
 + + New Python function "getfbase(number)" returns a dictionary of the file
 +   base located at record number <number>
 +
 + + New Python function "getfbaseid(number)" returns a dictionary of the file
 +   base with the ID of <number>
 +
 + + MUTIL's MergeNodeList should no longer care about the casing of the file
 +   archives or the nodelists within those archives.  In otherwords, its now
 +   case insensitive even on case sensitive OSes.
 +
 + + Mystic BBS now has a built in text editor which will be expanded on as
 +   development continues.  Like all of Mystic's functions this is designed to
 +   work over any terminal connection and will be a work in progress.
 +
 + + Small revamp of the System configuration to add a "Networking" category
 +   as the Configuration column is getting cluttered and will be moreso as I
 +   add in several new options that are planned.
 +
 + + Configuration now allows many of Mystic's text-based control files to be
 +   edited within the configuration using the new text editor.
 +
 + ! Message and File group editors were not assigning a new Unique ID to the
 +   group when pasting.
 +
 + ! Fixed a bug during graphics detection in Linux where Mystic would still
 +   show ANSI codes until after the graphics prompt was displayed.
 +
 + + New Python function "mci2str(code)" This function returns the value of
 +   an MCI code, where code is the two digit MCI code.  For example:
 +
 +      writeln("User: " + mci2str("UH"));
 +
 + + New Python procedure "gotoxy(x,y)" This locates the cursor to the X
 +   and Y position if the user has ANSI graphics.  If you supply a 0 for
 +   either value it will be replaced by the current cursor position.
 +
 + + When snap_new is enabled in the Index message reader, Mystic will now snap
 +   to a base with new messages after a CTRL+U.
 +
 + + Renamed the configuration themes to "3D ANSI" and "Shareware BBS" and
 +   updated the cfgroot1.ans file in DATA slightly.  If you want to have the
 +   Shareware BBS theme look as its intended, replace your old cfgroot1.ans
 +   with the updated one from a fresh installation.
 +
 + + Pre-alpha versions of Mystic are now compiled with full debugging
 +   information.  Binaries will create a <program name>.mem file in the
 +   directory where it exists which could help debugging if a crash occurs.
 +
 +   As a result of this change, the size of the binary files will be huge in
 +   comparison up to around 10 times the normal size.  Alphas will still be
 +   compiled in "release" form.
 +
 + + MYSTIC.DAT and USERS.DAT are no longer linked together, so if they are
 +   separated the user number generator will not generate bogus numbers.  The
 +   downside is it will take longer to save a new user account.
 +
 + + MUTIL now has a function to sort files in file bases [FileSort] replacing
 +   the similar function in MBBSUTIL.  See the default mutil.ini for more
 +   sort options.  The sort only works for bases that contain up to 250,000
 +   files but this can be easily expanded if anyone ever hit that limit.
 +
 + + MBBSUTIL has been removed from Mystic BBS and should be deleted.
 +
 + + Mystic's text editor is now available in the System Configuration in the
 +   Other section and will allow loading and editing of any text file.  Keep
 +   in mind that it has some limitations.  Raw tabs will be converted to 8
 +   spaces, character 12 will be escaped and represented as ^L while character
 +   27 will be escaped as ^[.  Any occurance of these will be converted back
 +   upon saving, with the exception of raw tabs which will remain as spaces.
 +
 + + New command line option for mystic: -text <filename> while open the text
 +   editor from the command line.  If <filename> is supplied it will open that
 +   file otherwise it will create an empty buffer.  IE:
 +
 +      mystic -text mytext.txt
 +
 + + All SysOp menu commands (that begin with a *) now have an optional data
 +   parameter "/nopw" which will tell Mystic not to ask for the SysOp password
 +   prior to executing the command.
 +
 + + EchoMail Node editor now uses a paged style form similar to the user editor
 +   instead of opening up various boxes.
 +
 + + New Menu command: *1 Edit text file.  This command's optional data should
 +   include a filename in which to edit.  If the file does not exist by default
 +   the editor will not execute.  The user cannot open any other text files
 +   unless the "/open" parameter is supplied.  If /open is passed then Mystic
 +   will start with an empty buffer if a filename is not given (or doesn't
 +   exist) and the user will be allowed to open any file on your drive as well
 +
 + ! Color editor and access flag editor were not using the configuration theme
 +   and instead were always using 3D ANSI.  This has been fixed.
 +
 + + Use Passive mode is now defaulted to Yes when creating new QWK Network and
 +   FTN BY FTN client.
 +
 + + Added two new Configuration themes: Mono Pink and Mono Blue.  You'll need
 +   to copy cfgroot2.and and cfgroot3.ans to your DATA directory from the DATA
 +   directory of a new installation.
 +
 + + New command line option for mystic: -ansi <filename> while open the ANSI
 +   editor from the command line.  If <filename> is supplied it will open that
 +   file otherwise it will create an empty buffer.  IE:
 +
 +      mystic -ansi text\gj-glue1.ans
 +
 +   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's System Configuration > Other tab now has an "Text Editor" option
 +   which will open up the Text editor.
 +
 + + Mystic's System Configuration > Other tab now has an "ANSI Editor" option
 +   which will open up the ANSI editor
 +
 + + Mystic's Theme Editor now has a function for "Templates" which will open
 +   up a listing of all .ini files in that theme's text directory.  When one
 +   of those files is selected, Mystic will open its text editor.
 +
 + + Mystic's Theme Editor now has a function for "Display Files" which will
 +   open up a listing of all .a?? files in that theme's text directory.  When
 +   one is selected, Mystic will open its ANSI editor.
 +
 + + New Menu command: *2 Edit ANSI file.  This command's optional data should
 +   include a filename in which to edit.  If the file does not exist by default
 +   the editor will not execute.  The user cannot open any other ANSI files
 +   unless the "/open" parameter is supplied.  If /open is passed then Mystic
 +   will start with an empty buffer if a filename is not given (or doesn't
 +   exist) and the user will be allowed to open any file on your drive as well
 +
 + + The beginning of Echomail node security is here!  The easiest way to think
 +   about how this system works is to relate an Echomail node to the way
 +   security works for a user in your BBS.  Each node will have a security
 +   level, access flags, and can be a member of many Echomail groups (up to
 +   65000 echomail groups can be defined).
 +
 +   Different functions throughout the echomail system will eventually have
 +   "Echo ACS" strings which work just like the user ACS strings that we're
 +   familiar with.  For example, you might have "Hatch File EACS" in a file base
 +   where you could say that you wanted only echomail nodes within a particular
 +   group to be able to hatch files, or a particular security level or access
 +   flag(s), or even by static echomail node ID.  For example:
 +
 +      Hatch File EACS: g2|s255|fH|u10
 +
 +   The above would say that any echomail node that is a member of Echomail
 +   group 2, OR any node that has a security level of 255 OR any Echomail node
 +   that has flag H can hatch files to that file base.  The Echomail node
 +   with the ID of #10 can also hatch.
 +
 +   This is a very powerful system for managing an Echomail network, and EACS
 +   strings will be added to various functions in the future as seen fit.
 +
 + + New Python command: msg_delete(handle).  This deletes the current message
 +   as returned by msg_first or msg_next
 +
 + + Echomail Node editor will now check for any other active nodes with the
 +   same configured adddressed whenever it saves an echomail node.  If it finds
 +   a conflict it will pop up a message warning you of the conflict.
 +
 + + New ACS value: "OS" will be true if the user is connected by a secure
 +   connection to the BBS (ie SSH).
 +
 + ! Fixed a JAM file handle leak in the NNTP server.
 +
 +   <ALPHA 1.12 A37 RELEASED -- Jan 1, 2018>
 +
 +</code>
 +
 +===== 1.12 Alpha 38 =====
 +
 +<code>
 +
 + ! Fixed an issue that caused MPL programs to crash
 +
 +   <ALPHA 1.12 A38 RELEASED -- Jan 1, 2018>
 +
 +</code>
 +
 +===== 1.12 Alpha 39 =====
 +
 +<code>
 +
 + + New Python command: backspace (number, destructive).  This function sends
 +   (number) backspaces and if (destructive) is True, then it will also
 +   delete the character.  If False it will only move the cursor backwards.
 +
 + + Record data changes for user database:
 +
 +     - First on and last on dates are now stored in Unix timestamp format.
 +
 +     - Expire, last password change, and last e-mail validation dates now
 +       use julian day number
 +
 +     - IP field extended to support IPV6, host extended to 80 characters
 +
 +     - Vote tracking extended from 20 to 99
 +
 +     - Added space for variable iteration PBKDF2-HMAC-SHA512 encrypted user
 +       passwords.
 +
 +     - Added User country field for historical storage
 +
 +     - Local QWK Path is now split into Local QWK Path and Local REP Path
 +
 + + Record data changes for message base database:
 +
 +     - Expanded name to 60 characters
 +
 +     - Removed Sponsor field
 +
 +     - Added Read EchoACS and Post EchoACS
 +
 +     - Created date changed from packed DOS to Unix timestamp format
 +
 + + Record data changes for file base database:
 +
 +     - Extended name to 60 characters
 +
 +     - Extended echotag to 40 characters
 +
 +     - Added Passthrough EchoACS
 +
 +     - Created date changed from packed DOS to Unix timestamp format
 +
 + + Record data changes for events database:
 +
 +     - Added a unique ID to each event
 +
 +     - Added OSType attribute to each event
 +
 +     - Added new statistical tracking attributes
 +
 +     - Removed Node number from BBS type event
 +
 +     - Added field to support enhanced semaphore event system
 +
 + + Record data changes for servers database: Added more space for more server
 +   types and options.
 +
 + + Installation program will now question the installer at the beginning to
 +   help determine the local console codepage on Linux platforms.
 +
 + + Mystic message searching now allows full logical boolean searches along
 +   with order of operations.  The following tokens are used:
 +
 +     & = AND
 +     | = OR
 +     ! = NOT
 +
 +   Parentheses can be used to group results.  If you want to search for a
 +   single word or user you can still just type in the word, but otherwise
 +   you now have the options to do searching like:
 +
 +      (g00r00 & released) | pre-alpha
 +
 +   This would return any message that contained both g00r00" AND "released",
 +   OR it contained the word "pre-alpha"
 +
 +   Searches are case insensitive and will search the From, To, Subject, and
 +   message content (excluding kludge lines).
 +
 + + New door command line code %C.  This is replaced by the user's current
 +   codepage as either "CP437" or "UTF8".
 +
 + + Mystic will now track the country detected during country blocking within
 +   each user's session.  A new MCI code "UO" will return the user's country
 +   of origin as determined by the country blocker in MIS.
 +
 + + Mystic's installation file install.exe can now be ran to copy over your
 +   binary files for you by command line:
 +
 +     install replace <root Mystic path>
 +
 +   Windows seems to be blocking this from running on my Windows test system
 +   for some reason, so I am looking into a way around whatever it is doing.
 +   You may need to rename it to something like "temp.exe" in Windows to get
 +   this to work :\
 +
 + + ANSI editor now has a "CRLF at EOF" which always defaults to Yes.  If this
 +   is Yes, Mystic will save a CRLF at the end of the ANSI file so that the
 +   cursor moves to the next line.  If No, then Mystic will not.
 +
 + + ANSI editor now shows a "File saved" confirmation box after saving.
 +
 + + ANSI editor now retains the changed filename between save dialog boxes
 +
 + + CTRL+X will now exit the ANSI editor, asking to save if the file has been
 +   changed first.
 +
 + + When in the full text and ANSI editors, the delete key will now allow files
 +   to be deleted within the Open file dialog box.
 +
 + ! Mystic was not properly handling MSGID fields created by Synchronet when
 +   replying to Echomail via Netmail
 +
 + ! Mystic will no longer refuse Netmails that use the Synchronet-style MSGID
 +
 + ! Bugfixes to ANSI editor save functions, particularly when saving without
 +   clear screen enabled.
 +
 + + New ANSI editor buffers will now default to saving with "Clear Screen Yes"
 +
 + ! FTP server was showing QWK packet when logged in as Anonymous
 +
 + + Mystic now has a new feature which can be enabled in the File Base Settings
 +   called "Download FTP" When this is enabled to Yes, Mystic will ask the
 +   user if they'd like to download their queued files via an FTP link instead
 +   of using a file transfer protocol.
 +
 +   The FTP link will contain a virtual directory that contains all of the
 +   files in their batch queue, and will expire after 1 hour.  The user can
 +   use their web browser or FTP client to connect to the FTP URL and list
 +   and download the files that they queued on the BBS.  Access enforcement
 +   and statistical tracking will be applied via the virtual FTP directory
 +   just as it would if the user was downloading the file from the BBS.
 +
 +   This feature requires that Mystic's FTP server is enabled and properly
 +   configured, and that Anonymous FTP access is enabled in the Server
 +   settings.  This means proper firewall configuration and valid BBS domain
 +
 +   Four new prompts will go along with this.  If you are using the default
 +   prompts you can simply copy over the default.txt to your data directory,
 +   but if you have modified the prompts then you'll need to add these new
 +   prompts into your default.txt and any other themes you use.  They are
 +   located in the upgrade.txt or the default.txt from a fresh installation.
 +
 +   An HTTP equivalent will be enabled in a future build.
 +
 + + MIS now has a basic HTTP server.  The server can be created in the server
 +   editor within the configuration.  A webroot path must be defined, which
 +   points to a directory where your website files and configuration will
 +   exist.  For example, if you set webroot to c:\mystic\webroot\ then you
 +   will need to create two subdirectories under it (cfg and www):
 +
 +      c:\mystic\webroot\cfg\
 +      c:\mystic\webroot\www\
 +
 +   In the www folder will be where you place your website files.  The CFG
 +   folder will hold various configuration values for the web server in the
 +   future.  Note this is a very barebones server at this point only really
 +   capable of serving basic websites, but I intend to work on it further as
 +   I find time.
 +
 + + ANSI editor now has block options.  CTRL+B can be used to select a block
 +   of text to be centered on.
 +
 + + ANSI editor now has a block option for filling a block with a character,
 +   an attribute or both.
 +
 + + ANSI editor now has a block option to select a block and center text found
 +   within the selected block (using the center of the selected block as the
 +   center point)
 +
 + + Event system will now recalcuate the event state every 10 seconds, this
 +   has been increased from 5 seconds in order to reduce load of an updated
 +   semaphore system
 +
 + + The "Semaphore" event system has been enhanced to allow specifying boolean
 +   logic of semaphore files that must exist (or not) to trigger an event. A
 +   new field has been added to define which semaphore files should be removed
 +   when the event is ran.  The usual boolean evaluation tokens that are used
 +   in ACS, message searching, etc, all apply here as well: () to define order,
 +   !=NOT, &=AND |=OR.   An example usage might be:
 +
 +      Event Type: Semaphore
 +       Semaphore: (echomail.in|netmail.in)!fidopoll.bsy
 +      Kill After: echomail.in|netmail.in
 +
 +   The above example says to trigger the event if echomail.in OR netmail.in
 +   exists but NOT if fidopoll.bsy exists.  The result would be that the
 +   command line would run when there is incoming net/echomail but it'd also
 +   wait for fidopoll to finish running (if it is) before kicking off.
 +
 +   The Kill After field says that when it runs it should delete echomail.in
 +   and netmail.in.  Each file specified here should be separated by a pipe
 +   character (|).
 +
 +   For existing systems, the upgrade program will automatically populate the
 +   "Kill after" field with the currently configured semaphores but for new
 +   events you'll now need to define which semaphores to delete when it runs.
 +
 + + Semaphore events will now delete the semaphore files when it executes
 +   instead of at the time the semaphores are detected.
 +
 + + Semaphore events now dynamically update their "run state" until the point
 +   in which they execute.  This means that if a semaphore event triggers but
 +   another event is running which causes it to be flagged "Run next", it will
 +   continue to evaluate the semaphore files up until the moment it runs. If
 +   the state of those semaphores changes between being flagged as Run Next and
 +   actually executing, the event will detect it and adjust itself accordingly.
 +
 + ! Fixed a bug in the socket code that could sometimes cause a lost connection
 +   to not be detected if it happens while sending data to the client.  This
 +   could be a major cause for those who've had some "ghost node" issues.
 +
 + ! Who's Online was not pausing when the BBS had enough nodes to fill up
 +   multiple pages.
 +
 + + NodeSpy now has an option to connect via IPV4, IPV6, or to default to
 +   either V4/V6 and then fallback to using the other if it cannot resolve
 +   the address.
 +
 + + Echomail nodes can now be configured to default to resolving via IPV4 or
 +   V6, with a fallback to the other one if the address cannot be resolved.
 +
 + + FidoPoll will now attempt to use IPV6 if it is available and then fallback
 +   to IPV4 when connecting to unsecure nodelist via a nodelist lookup.
 +
 + + MIS event status will now display the date and time when the event was
 +   last executed as well as the last result returned from execution.  If you
 +   are a A39 pre-alpha tester, note that any events you've created in the
 +   Event editor with A39 may have to be recreated for this tracking to work
 +   because the "Event ID" was always getting set to 0 in earlier builds.
 +
 + + SENDMAIL now has an IPType similar to those added to Fidopoll, echomail
 +   nodes, Nodespy, etc.
 +
 + ! Mystic BINKP should no longer fail CRAM-MD5 negotiations when a BINKP
 +   option is listed after the CRAM-MD5 handshake in the options frame.
 +
 + + Mystic FIDOPOLL FTP send functions will now log FTP session data to the
 +   log file, similar to what it does with BINKP.
 +
 + + Mystic FIDOPOLL FTP will now automatically prepend a / to a directory if   it is not configured in Mystic's echomail node configuration with a slash
 +   it is not configured in Mystic's echomail node configuration with a /
 +
 + + QWKPOLL will now log to "qwkpoll.log" in the log files directory.
 +
 + + QWKPOLL will now log all FTP client/server exchanges in qwkpoll.log
 +
 + + MIS will now attempt to detect any ghost nodes and will reset the node
 +   data under many different circumstances.  If this happens, it will be
 +   logged in mis.log with an explaination as to why it was assumed to be
 +   a ghost node.  This combined with other recent stability improvements
 +   should help quite a bit with long term uptime of the terminal nodes and
 +   servers.
 +
 + + Echomail node configuration: Echomail node address input now is a single
 +   input instead of splitting out zone, net, node and point into their own
 +   fields.  This is done to make a little more room on the form for other
 +   options.
 +
 + + Echomail node configuration: Nodes now have a "SysOp Name" field.
 +
 + + Mystic Python has a new function: Delay (milliseconds) causes the problem
 +   to wait for a specific number of milliseconds.
 +
 + + All Mystic executables will now either display the compiled version
 +   date/time or have a -ver/-version option to do the same.
 +
 + + New menu command: MF (View draft message posts).  This command allows
 +   users to view and resume any saved draft message posts.  If the user
 +   has no drafts a simple message will be printed saying there are no
 +   saved drafts.
 +
 +   Drafts are automatically saved when a user runs out of time, gets
 +   disconnected for inactivity or loses/drops connection in the middle of
 +   posting or while replying to a message.  If Mystic has any sort of error
 +   while saving the message, it will also creat a draft of the message for
 +   the user.
 +
 +   If the optional data of /SCAN is supplied, Mystic will check to see if
 +   there are any drafts, and prompt the user if they would like to
 +   review their saved drafts ONLY if they have drafts.  If they do not do
 +   drafts, the command will simply do nothing.  Ideally you could put this
 +   somewhere during your login process, as the new default install does in
 +   prelogin.mnu
 +
 +   Six new prompts (532-537) go along with this. If you are using the default
 +   prompts you can simply copy over the default.txt to your data directory,
 +   but if you have modified the prompts then you'll need to add these new
 +   prompts into your default.txt and any other themes you use.  They are
 +   located in the upgrade.txt or the default.txt from a fresh installation.
 +
 + + New ACS command "OD" returns TRUE if the user has any draft message posts
 +   saved.
 +
 + + New MCI code "MF" shows the number of draft messages saved for the current
 +   user.
 +
 + + Posting a message now no longer enforces group requirements when evaluating
 +   the "PostACS"
 +
 + + The message editor now has a "Save as draft" option from the command menu.
 +   This means you will need to add that command to the menu if you use a
 +   custom template for your message editor, otherwise replace msg_editor.ini
 +   with the newer one from the installation.
 +
 +   See upgrade.txt for instructions on adding the command or use the default
 +   msg_editor.ini as a guideline.
 +
 + + Two new Python functions: pwrite and pwriteln.  These work just like the
 +   write/writeln or rwrite/rwriteln except they only resolve pipe color codes
 +   and not all MCI codes.
 +
 + + Echomail ACS is active.  Note: YOU MUST BE USING MUTIL TO PROCESS ECHOMAIL
 +   AND .TIC FOR THIS SYSTEM TO WORK.  Mystic cannot apply security to third
 +   party tossers.
 +
 +   This system is just like User access system except that it applies to
 +   echomail nodes.  Each echomail node has its own security level, group
 +   memberships (to echomail groups) and a set of acess flags.  The following
 +   commands are available within EACS:
 +
 +      s<level>  : Echomail node must have a Security Level greater than or
 +                  equal to <level>
 +      g<number> : Echomail node must be a member of Echomail group ID equal
 +                  to <number>
 +      f<flag>   : Echomail node must have flag <flag> which is a letter
 +                  between A to Z.
 +      u<number> : Echomail node must have a unique ID of <number> This
 +                  allows security to be applied to specific nodes (ID is
 +                  shown in echomail node editor).
 +
 +   Just like user ACS, Echomail ACS can also use parenthesis and boolean
 +   evaulation.
 +
 + + Echomail ACS has been activated for message base subscribing/reading. A
 +   new field in each Message base configuration called "List EACS" defines
 +   the ACS requires for an echommail node to be able to see, subscribe, or
 +   unsubscribe to the area via AreaFix
 +
 +   Hubs can still manually link a base to a node regardless of security, so
 +   for example if you wanted to force nodes to always carry a specific echo
 +   area, you would give them the base and then set the "List EACS" to an
 +   access they do not have (or even use % which is "never" in ACS terms). With
 +   this setup in place, the node cannot add or remove the area, they can only
 +   perform rescans.
 +
 + ! When hatching/tossing files, MUTIL will now properly randomly generate a
 +   random 8 letter .tic filename if one already exists of the same name as
 +   the archive.
 +
 + + The FU (File upload) menu command now has a new optional data command
 +   called "/current" If this option is specified, Mystic will attempt
 +   to upload to the current file base even if a specific file base has been
 +   configured for uploads.
 +
 + + The GH and GI (Goodbye and Hang up Immediately) menu commands have a new
 +   optional data option.  If "/RECYCLE" supplied, Mystic will log the current
 +   user out and restart the session as if the user just connected to the BBS.
 +
 + + The XL (Matrix Login) command now as a new optional data option.  If /FULL
 +   is supplied, the typical Matrix login will be immediately skipped and the
 +   user will be presented the standard login process.  This is intended to
 +   allow people to use the Matrix login for things other than a Matrix-style
 +   log in.
 +
 + + MUTIL [ImportEchoMail] now has a new option: default_rescan.  This option
 +   allows the SysOp to define the default parameters used when a downlink
 +   requests a %RESCAN on all message bases.  In the past this defaulted to
 +   "R=250" MUTIL will continue to default to that value if it is not defined
 +   in the .ini file, otherwise it will adopt whatever is defined.  Be sure to
 +   define a valid command otherwise RESCAN will not work.  See the default
 +   MUTIL.INI for more information.
 +
 + + MUTIL now has a new option under the [General] section: "logcache" This
 +   can be a true or false value.  If true, MUTIL will cache the log file
 +   meaning it will write the log file in chunks of "8KB" instead of every
 +   line being written.  This is the default and HIGHLY recommended setting for
 +   MUTIL. If set to false, MUTIL will physically open the log file and write
 +   each individual log line to the file and then close it.  Setting this to
 +   false will most likely significantly reduce performance.
 +
 + + Mystic AREA/FILEFIX wasn't properly reporting +1 to Netmail when processing
 +   a request.
 +
 + ! Fixed a bug in Areafix RESCAN when using the R= command, caused by changes
 +   to my JAM code back when I was optimizing the statistical calculation for
 +   the Index reader.
 +
 + + New MPL function DateUnix returns the current date/time in Unix format
 +
 + + New MPL function DateU2D (unixdate): Converts <unixdate> to a DOS date
 +
 + + New MPL function DateD2U (dosdate): Converts <dosdate> to a Unix date
 +
 + + AreaFix responses now list the message base name along with the echotag
 +
 + + AreaFix rescans now show the total messages exported
 +
 + + AreaFix %LIST command now has an option parameter to perform boolean
 +   capable searches on the echotag and message base name.  These work just
 +   like msg searches with parenthesis (&)AND (|) OR (!) NOT functionality:
 +
 +      %LIST BBS            - List areas that contains "BBS"
 +      %LIST BBS!Renegade   - List areas that contains "BBS" but not "Renegade"
 +
 + + AreaFix now has a "%ALL" command.  Using "%ALL" or "%+ALL" will add all
 +   areas the node has access to.  Using "%-ALL" will remove all nodes the
 +   area has access to.  The command has an option second parameter which will
 +   perform a boolean capable search on the echotag and message base name:
 +
 +      %ALL                 - Add all bases the node has access to (but not
 +                             subbed)
 +      %-ALL                - Remove all bases the node has subscribed to
 +      %ALL BBS!Renegade    - Add all that contain "BBS" but not "Renegade" in
 +                             the echotag or base name
 +      %-ALL BBS!Renegade   - Remove all bases that contain "BBS" but not
 +                             "Renegade" in the echotag or base name
 +
 + + File Bases now have an "List EACS" This Echomail ACS works identically
 +   to the Message Base version, allowing hubs to define which nodes have
 +   access to list, subscribe, and receive get files from an echoed file base
 +
 + + FileFix %LIST function now has an optional second parameter to perform
 +   boolean searches in the same was as Areafix.
 +
 + + FileFix now has an %ALL function that mimics the functionality of the
 +   Areafix equivalent.
 +
 +   <ALPHA 1.12 A39 RELEASED -- April 20, 2018>
 +
 +</code>
 +
 +===== 1.12 Alpha 40 =====
 +
 +<code>
 +
 + + Door command lines now have %R which will return the user name without
 +   underscores in the name.
 +
 + ! Fixed a bug where groups could be created with a duplicate ID.  You may
 +   wish to double check you groups to make sure none of them have the same
 +   ID.
 +
 + ! Fixed a bug in Python GotoXY function that would cause a crash when using
 +   it.
 +
 + + The MUTIL ImportNA function now allows a "use_ansi" default value to be
 +   defined when creating message bases.
 +
 + + The MUTIL Echomail Import function now allows a "use_ansi" default value
 +   to be defined when automatically creating message bases.
 +
 + + The MUTIL ImportMessageBase function now allows a "use_ansi" default value
 +   to be defined when creating message bases.
 +
 + + MIS FTP now logs when a SysOp deletes a file from a filebase via FTP
 +
 + + MIS FTP/NNTP/SMTP/POP3 servers now have a better idle/timeout system which
 +   will cause the server to shutdown more gracefully when exiting MIS with
 +   active connections.
 +
 + + New menu command: M! This is a rewrite of the message area index reader
 +   rebuilt to work identically to the file base index lister.  See the
 +   msg_index.ini file for more details.  Command line option is the template
 +   name or default to msg_index.ini if none is specified.  I am not removing
 +   the old one just yet so that people have time to adapt to the new version
 +   and to test it for issues, but please note the old one will likely be
 +   replaced by this new one eventually once the features are all done and
 +   tested.
 +
 + + New MPL variable: UserPosts contains the number of posts a user has made
 +
 + + New MPL variable: UserDLs contains the number of downloads user has made
 +
 + + New MPL variable: UserULs contains the number of uploads user has made
 +
 + + Mystic now has a new User Editor which doesn't look a whole lot different
 +   than the old one, except that it incorporates some newer ideas that were
 +   introduced into the Echomail Node editor that makes jumping around between
 +   pages of information easier.  One major thing to note is that you can no
 +   longer view user passwords and can now only "reset" user passwords.
 +
 +   Like the other page-based editors you can scroll from the first or last
 +   item to change page, use the tab key, the pageup/down keys, the left
 +   and right arrows, or enter a page number directly to shift between pages.
 +
 + + Mystic now has a password policy in System Configuration where the minimum
 +   password length can be set along with number of required capital letters,
 +   numbers, and symbols.  It is highly recommended that the minimum password
 +   length is set to at least 7 characters.  Some default prompts have been
 +   updated to support this new feature: 18, 419, 420. If you have custom
 +   themes, you should take a look at the new defaults and consider updating
 +   your custom prompts as well.
 +
 + + Mystic now allows the option to store passwords in case insensitive
 +   cleartext and case insensitive hashing using industry standard methods for
 +   password storage.
 +
 + + Mystic now allows passwords to be stored using PBKDF2 with SHA512-bit
 +   hashing at variable configurable iterations.  What does this mean?  The
 +   biggest benefit is that when enabled, Mystic will never store a user's
 +   password anywhere in the BBS system.  This system is the same system used
 +   for Password Managers such as LastPass, 1Password and operating systems
 +   such as MacOS.  In fact, with its variable iterations Mystic could be
 +   considered to be more secure as those products in terms of cracking a
 +   user's password hash.
 +
 +   Two new options are added into the Password Policy options, the first is a
 +   password storage method which has three options:
 +
 +      ClearText Case Insensitive       (This was the legacy storage method)
 +      ClearText Case Sensitive
 +      PBKDF2 SHA512 Hash               (This is also case sensitive)
 +
 +   It is highly recommended to use password hashing and stop using cleartext
 +   passwords.  With password hashing enabled, a person could be given your
 +   users.dat and they still would not be able get a user's password.
 +
 +   The second option is VERY important when using PBKDF2 and that is the
 +   number of iterations the process will use when hasing a password.  The
 +   default value is 1000 and may be considered a little low in terms of
 +   enterprise level password storage but it works at a reasonable speed for most
 +   systems.  In general, the higher the number of iterations the more secure it
 +   is, but the longer it will take for Mystic to store or check a password.
 +   Setting this value to 10,000 on an original Raspberry Pi for example may
 +   cause Mystic to take 10+ seconds to store or check a password and for many
 +   that may be too slow.
 +
 +   It is recommended that it is kept at 3000 or lower for performance reasons
 +   unless you know what you are doing.  Even at this level PBKDF2 with a 512
 +   bit hashing system is more secure than any other BBS software today.  If
 +   you find the delay for 1000 is too short you can adjust the value but just
 +   beware that if you change hardware someday, those values still remain...
 +
 +   The way the system works is that a user's password is stored in the format
 +   configured at the time their password is set, including the iterations. The
 +   password remains stored in this format even if you change the storage method
 +   until the user changes their password or you reset it using the user editor.
 +   It is important that you do not set the iteration level too high for the
 +   hardware you are using to run your BBS now or in the future.
 +
 + + Mystic user passwords have now been expanded to 25 characters maximum.
 +
 + + Mystic now allows passwords to be reset via Internet e-mail.  This option
 +   can be enabled in System Configuration -> Password Policy and will require
 +   that the SMTP sendmail/relay options are configured in the Server General
 +   Options tab.  The user must also have a valid e-mail address assigned to
 +   their user account.
 +
 +   If enabled, the user will be sent an e-mail with a randomly generated code
 +   and then prompted by the BBS to enter the code.  Upon entering the code
 +   the user will be prompted to change their password and finally logged into
 +   the BBS as if they had typed their password in correctly.
 +
 +   8 new prompts have been added to the themes to support this new feature
 +   most having 4 promptinfo MCI codes active: &1=min length  &2=min caps
 +   &3=min nums  &4=min symbols.  These new prompts (538-546) will need to
 +   be added to your custom themes if you have them.  See the upgrade.txt
 +   for more information.
 +
 + + New Configuration theme: Turbo Vision.  Not really a favorite of mine,
 +   but one of the goals of this theme option is for nostalgia preservation
 +   and the TurboVision look was widely used in the BBS scene.
 +
 + + Mystic's built in RAR archive functions should now work with newer RAR5
 +   format RAR files.  If you encounter any issues viewing a RAR file please
 +   e-mail me a link to download the same file or the file itself so I can
 +   take a look at it.  Keep in mind Mystic does not allow you to view
 +   encrypted archives.
 +
 + + Changed the e(X)it command in the text editor to (Q)uit to match that of
 +   the ANSI editor.
 +
 + + New ACS function "OV" returns true if the user has validated their current
 +   e-mail address.
 +
 + + Email address fields have been expanded to 60 characters, input field
 +   length by default is 40 characters (up from 35).
 +
 + + Mystic will now validate that the user enters a valid e-mail address
 +   format when prompting for e-mail address during new user application and
 +   when editing user information.  Two new prompts have been added that will
 +   be displayed when they enter an invalid e-mail address: #463, #486.  You
 +   should update your prompts based on the new defaults.
 +
 + + New menu command: -V (Validate e-mail address).  This function will send
 +   a code to the user's e-mail address and then prompt them to enter it on
 +   the BBS.  Upon entering the code successfully, the "OV" ACS command will
 +   begin to report true.  If the optional data field contains a security level
 +   Mystic will also update the user's security profile. The OV ACS can also be
 +   used in order to perform any number of actions if validation is successful.
 +
 +   New prompts have been added to support this: #547-#552.  You will need to
 +   add these if you have custom themes.
 +
 + + Mystic now supports CNET Control-Y color codes.  These work in file
 +   description .DIZ importing, in file descriptions, in message reading, in
 +   Mystic's file/ANSI viewer and ANSI gallery, and Mystic's ANSI editor can
 +   now load CNET color coded files.  Thanks to NuSkooler for initial info
 +   about the color codes.
 +
 + + New Python function: "logerror(string)" This creates an entry into the
 +   global error log of the string passed to it, and also creates an entry in
 +   the current node log as well.
 +
 + + The group editors now have a Move function that allows repositioning the
 +   order of groups.  Simply Copy a group and them move to where you want to
 +   place it and select Move.
 +
 + + The file base editor now also has a move function.
 +
 + ! When tagging a bunch of bases in the message base editor and selecting
 +   Sort, it was possible to press ESCAPE and wipe out your message base
 +   configuration entirely.  Fixed.  Sorry to anyone affected by this.
 +
 + ! Fixed a bug in the global message base editor where setting the Max Msgs
 +   value could cause the value to get garbled when updating the bases.
 +
 + + Two new options to the GD menu command (Display a file):
 +
 +      /MCI   - If this option is supplied, Mystic will not filter out any MCI
 +               codes including pipe colors.
 +
 +      /ABORT - If this option is supplied, Mystic will not allow the display
 +               file to be aborted.  By default they are allowed.
 +
 + + Mystic's SMTP sendmail function now supports opportunistic SSL via the
 +   TLS v1.2+ protocol.  Combined with CRAM-MD5 authenication, this provides
 +   encryption of both the password handshake and the overall session.
 +
 + + Message Box MCI codes no longer automatically pad the header text with a
 +   space on each side. This makes it consistent with other box functions and
 +   allows a bit more flexibility.
 +
 + + MUTIL echo import now gives a more meaningful message when a PKT password
 +   is defined and there is no echomail node configured for the origin address
 +
 + + Mystic BINKP server and FIDOPOLL now support opportunistic SSL (TLS v1.2+)
 +   using a proprietary extension of the BINKP protocol.  This means that it
 +   will only work with other Mystic BBS clients and servers, but I do plan
 +   to document the extension and send it to the authors of other mailers in
 +   hopes that it can be standardized.
 +
 +   BINKP server settings now have a "Use SSL" setting which can be set to
 +   one of three settings:
 +
 +      No     : BINKP server will not offer SSL extension at all
 +      Yes    : BINKP server WILL offer SSL extension optionally
 +      Forced : BINKP server will refuse all connections not using SSL
 +
 +   EchoMail Nodes now have a similar setting which will be used when polling
 +   for new mail:
 +
 +      No     : FIDOPOLL will not use SSL extension at all
 +      Yes    : FIDOPOLL WILL use SSL if the server supports it
 +      Forced : FIDOPOLL will refuse to exchange mail with a server
 +               unless it supports SSL
 +
 + + For those of you who downloaded the A40 pre-alpha before Dec 16th, you
 +   will have password issues.  To fix this you can copy over the latest
 +   upgrade.exe and place your A39 users.dat into DATA and execute "upgrade
 +   password".
 +
 + + Message bases with an origin line set to a blank will now inherit the
 +   default value set in System Configuration > Message Settings.  This is how
 +   it was supposed to work but it wasn't.  The origin line will now also be
 +   blank when creating a new message base, instead of setting the value to
 +   the current default.  This also includes MUTIL import/create functions.
 +
 + + The random origin line selection engine (@ORIGIN=) will now be processed
 +   if it is defined in the default origin line.  In the past it was only
 +   processed when defined for an individual message base.
 +
 + ! Mystic will no longer make echomail bundles with a bracket in the filename
 +   extension which could happen in a certain circumstance.
 +
 + ! Fixed a bug where Mystic was adding a point to the INTL kludge origin/dest
 +   addresses when dealing with point systems.
 +
 + + Message Base editor now has a /A command to select all bases.
 +
 + + File Base editor now has a /A command to select all bases.
 +
 + + File Base editor now has a /G Global Editor similar to the Message Base
 +   editor
 +
 + + Echomail nodes now have an "Encryption Key" option.  When this option is
 +   set to a non-blank value, Mystic will encrypt all of the contents of
 +   Netmail messages to this node with an AES-256 encryption.  This completes
 +   a fully encrypted echomail solution as both transport and private messages
 +   are secured.
 +
 +   This is done in a way that is completely transparent to unsupporting
 +   systems, meaning that you can still route netmail through systems and they
 +   will not harm the encrypted netmails!  The encryption also hides the
 +   message subject, so when combined with Area/Filefix passwords will no
 +   longer be readable. You must have Cryptlib installed for this to work.
 +
 +   The other echomail node must of course have the same key configured for
 +   your node in order to decrypt the netmail when it arrives.  This works the
 +   same way as any other password setting in echomail nodes.
 +
 +   When routing Netmail, Mystic will intelligently re-encrypt the message
 +   between routing points when possible.  In other words if you have a point
 +   system who sends from 555:1/2.1 to 555:1/1 but is routed through 555:1/2,
 +   Mystic at 555:1/2 will know that it has an encryption agreement between
 +   both 555:1/2.1 and 555:1/1 so it will decrypt the message from 555:1/2.1
 +   and then reencrypt it for 555:1/1 before routing it.
 +
 + + Mystic Area/Filefix will now accept commands that start and end with a
 +   percentage sign (as opposed to just starting with) so: %LIST and %LIST%
 +   will work, for example.
 +
 + ! Mystic wasn't properly using UTC time when adding the @VIA kludge while
 +   routing Netmail (it was using local system time).
 +
 + ! Reviewed Netmail routing with point systems and corrected a couple little
 +   bugs with addressing.  This will hopefully have no negative effect on any
 +   other behavior.
 +
 + + Mystic BINKP now sends the local time and time zone information whenever
 +   it connects to another BINKP server.
 +
 + + MUTIL MsgPack now no longer users the Mystic temp directories while
 +   packing message bases.  Instead, it creates temp files in the same
 +   directory as the message base.  This should allow MsgPack to continue to
 +   rename files when message bases are stored on different devices than the
 +   root Mystic directory.
 +
 + + New MPL function to go along with new password engine:
 +
 +     Function CheckPW (PW: String) : Boolean;
 +
 +   This function checks the supplied PW against the current loaded User
 +   and returns true if the password matches or false if it does not.
 +
 + + New MPL function to go along with new password engine:
 +
 +     Procedure SetPW (PW: String);
 +
 +   This procedure sets the password for the currently loaded users (ie
 +   the User storeed in the current User variables)
 +
 + + New MPL function to go along with new password engine:
 +
 +     Procedure ValidPW (PW: String) : Byte;
 +
 +   This procedure checks the password passed in PW against the configured
 +   password policy and returns a result depending on its status:
 +
 +     1 = Password does not meet min length
 +     2 = Password does not meet min cap letters
 +     3 = Password does not meet min symbols
 +     4 = Password does not meet min numbers
 +
 +   <ALPHA 1.12 A40 RELEASED -- Dec 25, 2018>
 +
 +</code>
 +
 +===== 1.12 Alpha 41 =====
 +
 +<code>
 +
 + ! Fixed the broken SSH that creeped its way into A40.
 +
 + + Changed the date format in message quoting to "DD MMM YYYY"
 +
 + ! MUTIL echo export should no longer toss messages back to the origin node
 +
 +   <ALPHA 1.12 A41 RELEASED -- Dec 27, 2018>
 +
 +</code>
 +
 +===== 1.12 Alpha 42 =====
 +
 +<code>
 +
 +
 + ! Reverted back to Free Pascal 3.0.2 and magically a lot of the problems
 +   have gone away with the Unix versions.
 +
 + + Increased the BINKP max file queue per session to 200 files, up from 100
 +
 + + Mystic BINKP now sends the build date, time and operating system with
 +   bit level as part of the welcome
 +
 + + Mystic BINKP now sends the queue size (# of files and total bytes) after
 +   authentication and before starting to transfer files
 +
 + ! Fixed some issues that were causing IPV6 servers and clients to act
 +   differently in Unix based systems.
 +
 + + Prompt #464 message quote text now has &4 MCI code which is replaced by
 +   the time that the original message was written.
 +
 + + Mystic will now log to the node log if a user attempts to post to a
 +   message base but does not have access to do so.
 +
 + + Mystic will now log Python errors to the BBS node log and the Mystic
 +   global errors.log
 +
 + + MUTIL now has a function to export a FILEBONE.NA file based on the file
 +   bases.  A new [Export_FILEBONE.NA] stanza has been added to the INI file
 +   for more information see the default mutil.ini file.
 +
 + + MIS servers now show "Server busy" instead of "BUSY" when a connection is
 +   received when all client slots are in use.  "BUSY" will still be shown by
 +   Mystic.
 +
 + + New option for each Echomail node: Crash Limiter.  When FidoPoll sends
 +   files via BINKP it will skip queueing any files for sending larger than
 +   this value.  The value is defined in kilobytes.
 +
 + + MUTIL now allows the loglevel to be defined in each specific stanza.  If
 +   the loglevel is defined within a process' stanza, then that loglevel will
 +   override the value set in the general stanza just for that process.
 +   
 +    <ALPHA 1.12 A42 RELEASED -- Feb 2, 2019>
 +
 +</code>
 +
 +===== 1.12 Alpha 43 =====
 +
 +<code>
 +
 + + Mystic now has two new door MCI codes:
 +
 +     %A - Returns the user's realname with spaces replaced with underscores
 +     %B - Returns the user's realname
 +
 + + Expanded the BBS domain from 25 to 45 characters.
 +
 + + Mystic will now inform you if you try to edit a message that has already
 +   been sent.  It already informs you if the message was sent while you were
 +   editing it (which tends to happen if you have messages set to send on save
 +   as opposed to logoff).
 +
 + + Mystic's private user to user chat system now has a split screen chat
 +   option.  A new template userchat.ini and userchat.ans are required now to
 +   be accessible by your theme otherwise your user to user chat will not
 +   work.  See the default installation for these new files.
 +
 + + Mystic now has Mystic-DOS, a built in command shell console that allows
 +   for various disk and BBS functions within a command shell interface that
 +   mimics both Bash and MS-DOS/Windows shell commands.  Disk management,
 +   executing MPL and Python scripts, snooping and chatting with users on
 +   other nodes, editing ANSI and text files, etc.
 +
 +   A new menu command *D has been added but it cannot be executed unless the
 +   user has a security level of 255.
 +
 + ! Fixed a bug in Mystic Python that would cause a crash whenever the
 +   msg_open function failed to open or create a message base.
 +
 + ! Fixed a bug in Mystic wildcard match functions and increased speed by a
 +   good amount.
 +
 + + (when country blocking is enabled)Mystic now logs the user's country in the node log along with their IP
 +   and hostname
 +
 + + The install program now has an "extract" function to go along with the
 +   replace function.  Type "install help" for more details.
 +
 + + MUTIL now has an AutoHatch function to automate periodic hatching
 +   of files from the file base.  See default mutil.ini for more information.
 +
 + + New SysOp menu command: *3 This allows a SysOp to snoop (watch) a user on
 +   another node.
 +
 + + You can now press CTRL-E when editing menu settings on the Display File
 +   field to open up the ANSI editor.
 +
 + ! In various places whenever a file rename or move needs to occur, Mystic
 +   will first try a fast move and if it fails, it will attempt to copy the
 +   file to the new destination and then delete the original.
 +
 + + When reading forced message bases, Mystic will now allow the user to quit
 +   reading if they've already read all of the messages.
 +
 + + Mystic Message Base and File Base editors now have an /U Unsubscribe option
 +   This command will automatically generate an Areafix or Filefix Netmail
 +   request to unsubscribe from a base (and option to delete the base after)
 +
 + + The Echomail node editor now has three new options in the / menu:
 +
 +     1 - Send Areafix request to the selected node
 +     2 - Send Filefix request to the selected node
 +     3 - Send Netmail message to Sysop of the selected node
 +
 +   All of these will allow you to quickly and easily contact an Echomail node
 +   to communicate with the SysOp or to add/remove message and file bases or
 +   anything else the Area/Filefix commands allow without having to fumble
 +   around with addresses and passwords!
 +
 + + System Configuration now has a log file viewer option in the Other menu
 +   next to the Text and ANSI editors.
 +
 + + New Menu command: *4 This opens the log file viewer
 +
 + + Text editor now has a (CTRL+J) Jump to Line number option
 +
 + + Text editor now has a (CTRL+W) Where function which allows full boolean
 +   line searching using paranthesis and &|! operators
 +
 + + Text editor now has a (CTRL+A) Again function which repeats the last
 +   Where function again
 +
 + ! MUTIL was not adding a NULL at the end of the last PKT when doing a rescan
 +   of message bases.
 +
 + + When importing and forward netmail, MUTIL will now allow an address to be
 +   defined, allowing Netmail to a certain name on the current setup to be
 +   forwarded to different name and/or network node.  See default MUTIL.INI for
 +   more information.
 +
 + + New menu command "UF" Edit Twit Filter.  This allows a user to edit their
 +   twit filter, which is a list of users whose messages will be automatically
 +   skipped when reading message bases.  Each user can define up to 50 users
 +   they wish to ignore.
 +
 + + MUTIL now creates and removes BUSY data before and after processing TIC
 +   files and hatches.
 +
 + ! Fixed a bug when using the save file to message menu command where Netmail
 +   messages were not properly being flagged as private.
 +
 + + The SysOp name in the EchoMail node editor can now have an address appended
 +   to it, and Mystic will send the message to that address when using the
 +   "NetMail SysOp" option.  So if the Echomail node address is 21:1/100 but
 +   when you use the Netmail to SysOp function you want to send it to 21:1/101
 +   instead because 1:/100 is a hub only, then you can set the SysOp name to
 +   "Avon@21:1/101" to override the address.
 +
 +    <ALPHA 1.12 A43 RELEASED -- March 2019>
 +
 +</code>
 +
 +===== 1.12 Alpha 44 =====
 +
 +<code>
 +
 + + New MPL variable: CfgDefTheme returns the configured default theme
 +
 + + New MPL variable: CfgTextFB returns the theme's text fallback theme
 +
 + + New MPL variable: CfgScriptFB returns the theme's script fallback theme
 +
 + + New MPL variable: CfgFallback returns true or false if default theme
 +   fallback is enabled for current theme
 +
 + + New Python CFG variable: deftheme returns the configured default theme
 +
 + + New Python CFG variable: textfb returns the theme's text fallback theme
 +
 + + New Python CFG variable: scriptfb returns the theme's script fallback
 +
 + + New Python CFG variable: fallback returns the themes' fallback setting
 +
 + + Updated default BULLETIN.MPS file to support scanning for bulletins in
 +   all theme fallback directories.
 +
 + ! MPLC was not properly scanning all directories recursively when -ALL was
 +   supplied.  Additionally, MPLC will now not attempt to compile a .mps file
 +   that is 0 bytes in size.
 +
 + + New Theme system has been implemented.  The default text, menu, and
 +   scripts directories in the System Configuration have been removed and
 +   replaced by a single Themes directory.  This directory specifies the root
 +   directory where all Mystic BBS themes are found Ex: c:\mystic\themes\
 +
 +   THEME.DAT has been depreciated and is no longer used by Mystic BBS
 +
 +   Theme prompts are no longer restricted to being 255 characters or less,
 +   they now have an unlimited length.
 +
 +   UPGRADE utility will convert your existing BBS to the new themes structure
 +   for you so you do not have to do anything.
 +
 +   Each theme itself now has a root directory that can be up to 20 characters
 +   in length, and consists of three subdirectories.  Each theme has a
 +   theme.ini in the root directory that contains various configuration options
 +   that can be configured by text editor or the Themes Editor.
 +
 +   Each them can also have a prompts.txt which contains one or more Mystic BBS
 +   prompts.  Any prompts not in prompts.txt are loaded from the theme's
 +   fallback if one is specified, and ultimately the "default" prompt found in
 +   prompts.dat (new to Mystic BBS).
 +
 +   Themes can now contain only the prompts that are actually customized instead
 +   of requiring ALL prompts to be in a theme's prompt file, and then it can
 +   fallback and pull inherited prompts or defaults.  This means that you will
 +   no longer have to update your prompts for every theme when new prompts are
 +   added or existing prompts that you haven't customized are changed
 +
 +   Scripts and menus work the same as prompts do with the capability to fall
 +   back to another theme and/or ultimately the configured default theme if
 +   that feature is enabled.
 +
 +   The directory structure looks like this:
 +
 +      \mystic\themes                                - Root Theme directory
 +      \mystic\themes\default                        - Default theme directory
 +      \mystic\themes\default\theme.ini              - Theme settings
 +      \mystic\themes\default\prompts.txt            - Prompts (optional)
 +      \mystic\themes\default\text                   - Text/template files
 +      \mystic\themes\default\menus                  - Menus
 +      \mystic\themes\default\scripts                - Scripts
 +
 +   There is no installation process for a theme as Mystic will detect them
 +   dynamically.  If you have a Theme and you wish to share it, all you have to
 +   do is ZIP up the theme directory (default as shown above) and give it to
 +   whoever you want to share it with.  They just paste the directory into their
 +   root theme directory and it will instantly appear in Mystic BBS without any
 +   other work required.  This makes it very easy to create, update, and share
 +   custom themes.
 +
 + + Themes now have an input barrier option, where a character can be defined
 +   to be displayed on the left and right side of string-based input prompts.
 +   LeftChar/LeftAttr RightChar/RightAttr can all be defined in theme.ini and
 +   one or both character can be enabled.
 +
 + + New MCI code |IB disables the input barrier for the next string input
 +   prompt.
 +
 + + New Python function "setpinfo(byte, string)" text the prompt info value
 +   for byte to the text in string. Ex: setpinfo(1, "Hello world!")
 +
 + + New Python has many new functions for accessing the file listings.  A new
 +   demo filelist.mpy has been added to the default installation to demonstrate
 +   these functions.  The following new functions have been created:
 +
 +   function "fl_open(basefn)" opens a filelist where basefn is the filename
 +   for the file base, returning a handle to the filelist  If a filelist does
 +   not exist one will be created.
 +
 +   function "fl_close(handle)" closes an opened filelist
 +
 +   function "fl_seek(handle, filenumber, skip)" seeks to a file number. This
 +   should always be called before cycling through file listing.  If Skip is
 +   set to true, then Deleted records will not be returned.
 +
 +   function "fl_next(handle)" return the next available file
 +
 +   function "fl_prev(handle)" return the previous available file
 +
 +   function "fl_found(handle)" returns true if a message from the last seek
 +   or next or prev function has been found
 +
 +   function "fileinfo = fl_getfile(handle)" returns a dictionary with
 +   information about the current file
 +
 +   function "filedesc = fl_getdesc(handle)" returns a list that contains the
 +   file description.
 +
 + + BUSYLOG debug logging has finally been disabled.
 +
 + + Two new Python functions:
 +
 +     function dateu2d(date) : date - This converts a unix date to a DOS
 +     crunched date used in places in Mystic.  This date format is being
 +     replaced in Mystic but it still exists in some areas.
 +
 +     function dated2u(date) : date - This converts a DOS crunched date to a
 +     Unix timestamp
 +
 + + New Python function: function acsnogroup(access string) : boolean
 +   Process an access string but returns "true" for all group checks regardless
 +   of the user's group membership.  Returns true or false is user has access
 +
 + + New Python function: procedure setprompt(number, text)
 +   This sets a theme prompt to the value of text for the duration of the user's
 +   session or until they change or reload the theme.  The change is not
 +   permanent.
 +
 + + New Python function: function msg_stats(msgbase)
 +   This function works by passing the handle of an already opened message
 +   base (msg_open).  It calculates and returns 4 results: Total messages,
 +   new messages for the current user, number of messages addressed to the
 +   user, and the unix date of the last post in the message base.   This
 +   function may cause problems if used within a message reading loop, so
 +   msg_seek may need to be called afterwards in that case.  Example:
 +
 +     total, new, yours, lastpost = msg_stats(msg)
 +
 + + New Python function: function getnetaddr(number)
 +   This function returns a network address configuration passed as number to
 +   the function.  The result is a dictionary with the following elements:
 +
 +      zone, net, node, point, desc, domain, primary, addr
 +
 +   Primary is a 0 or 1 value, 1 being true.  Addr is a string representation
 +   of zone, net, node, point.
 +
 + + File Base Editor now shows Network address on the list window, and also
 +   allows sorting by Base Name, File Name, and Network.
 +
 + + Expanded node messages from 79 characters to 245 characters.
 +
 + + Template prompts no longer have a length limit of 255 characters, they now
 +   have no maximum length.
 +
 + + File Base Index lister (file_index.ini) now has a sort option which allows
 +   bases to appear in alphabetical order or by order of appearance in the
 +   group editor.  See the default file_index.ini for example.
 +
 + + Some minor changes to the menu editor, mostly cosmetic and some text
 +   changes to help clarify what options are when editing a commmand.  You can
 +   now also use Page Up/Down to move between menu commands without having to
 +   exit back out to the list of all menu commands.  You can now use CTRL+V to
 +   simulate a menu while editing an actual menu command.
 +
 + + New MCI code for prompt #2: &1=User handle &2=Location
 +
 + ! Fixed year 2020 bug that caused some wrong day calculations in a couple
 +   of places.  The next bug should be 2038, so we have a few more years to get
 +   that addressed before it becomes an issue.
 +
 + + MPLC now has a -T option which will attempt to read MYSTIC.DAT either in
 +   the current directory or using the mysticbbs environment variable to get
 +   the Theme path, and then it will recursively compile any scripts found in
 +   the Theme directory tree.  You can optionally supply the path to Mystic
 +   BBS root directory if you have multiple installations.  Example:
 +
 +      mplc -t         - Attempts to read mystic.dat from current directory or
 +                        mysticbbs environment variable, and then uses Themes
 +                        path to compile.
 +
 +      mplc -t /mybbs  - Attempts to read mystic.dat from the supplied root
 +                        directory, and then uses Themes path to compile
 +
 + + MPLC now has a -F option which will attempt to read the Theme path and then
 +   compile any files matching the supplied mask contained in any directories
 +   under the Theme directory. Example: mplc -f bulletin*
 +
 + + Improved detection of time expiration and connection loss during message
 +   and file scans.
 +
 + ! SEEN-BY lines should now include the net number at the start of new lines
 +
 + ! Mystic SMTP client now resends "EHLO" after upgrading connection to SSL.
 +   Some servers work without this step so it slipped through testing.
 +
 + + MIS and FIDOPOLL now save the last dates they interacted with an echomail
 +   node.  This value is now displayed in the Echomail node editor when
 +   highlighting a node (Last Inbound=MIS, Last Outbound=FIDOPOLL). /R can be
 +   used inside the node editor to reset stats.
 +
 + ! Mystic was not using a 0-based month in PKT file headers.  Fixed.
 +
 + + New prompt editor!  There is now a Reset function which will reset a prompt
 +   back to the system default prompt.  The Undo function has been enhanced to
 +   save the last 100 changes and will allow you to undo prompt changes
 +   starting from the newest change of a prompt to the oldest if you have made
 +   many changes.  The source of a prompt in the editor is now shown with the
 +   following values:
 +
 +     Current Theme  - Prompt is customized by the current theme
 +     System Default - Prompt is not part of any theme, using system default
 +     <Theme Name>   - Prompt was inherited from <Theme Name>
 +
 +   Only current theme prompts are saved in the theme's prompts.txt.
 +
 + + All theme prompts have had their maximum length in expanded from 250
 +   characters to 8192 characters per prompt.
 +
 + + Themes now have an ACS string that can be used to hide themes from the
 +   listing.  Keep in mind when configuring your BBS to allow theme selection
 +   on connect: There will not be a user known at that time so any security
 +   will cause the theme not to show.
 +
 +   The ACS is for the listing only.  The purpose is mostly to hide themes
 +   while they are in development.  Themes can still be selected regardless
 +   of ACS using using a menu command:
 +
 +      Command: GE (Edit User Settings)
 +         Data: 14 mytheme
 +
 + + The GE suboption 14 menu command (select theme) now has a /RELOAD option
 +   which causes the current theme prompts to refresh:
 +
 +      Command: GE (Edit User Settings)
 +         Data: 14 /reload
 +
 + + Themes now have an "Order" property which determines which themes are
 +   listed first.  Values can be between 1-65000 with the lowest numbers
 +   being listed first.  Themes will also be listed in the Themes editor using
 +   this value.
 +
 + ! Fixed a bug that could cause protocol downloads to get stuck on a
 +   connection drop
 +
 + + MUTIL's MsgPurge now validates that messages are from or addressed to valid users
 +   if the base type is Private or the base allows for Private replies within
 +   the base.
 +
 + + By request, Mystic no longer shows the OS and Node number when initially
 +   connecting to the BBS.  If you wish to add this back you can use MCI codes
 +   or tell me why you think it needs to be reverted!
 +
 + ! Fixed a bug where MSGID could result in 0:0/0 when zone matching a Netmail
 +   base with no address assigned to it.
 +
 + + Mystic no longer logs the actual bad password text.  This should have
 +   been removed a long time ago but I always liked seeing what the scripted
 +   bots tried to log in with when they found my BBS.
 +
 + + Rewrote all of the FLO add/remove functions with improved file locking to
 +   address potential race conditions.
 +
 + ! Fixed an issue with a file resume race condition in BinkP client/server
 +
 + ! Fixed an memory leak introduced in A43 that could cause a rescan to give
 +   corrupt message(s) in a packet.
 +
 + + Msg/File base global editors now ask you if you want to abort when pressing
 +   escape to exit.
 +
 + + Echonode editor now warns you if you edit a node and save it with a 0:0/0
 +   address or a missing domain.
 +
 +   <ALPHA 1.12 A44 RELEASED -- 4 Feb, 2020> 
 +   
 +</code>
 +
 +===== 1.12 Alpha 45 =====
 +
 +<code>
 +
 +
 + ! Fixed bug in Python setprompt function.
 +
 + ! Rewrote some old DOS compatibility wrappers so that Mystic no longer
 +   localizes the file times in BinkP sessions.
 +
 + ! Similar to BinkP Mystic no longer localizes the system time in the Path
 +   portion of a TIC file.
 +
 + ! Fixed a bug with Lightbar/Grid style menus that was causing them to not
 +   handle extended key jumps properly.
 +
 + ! Fixed a bug in the nodelist browser that could cause some results to show
 +   the wrong Net number.
 +
 + + Menu Command: GE option 17 (Change file list type) can now have an option
 +   of 0 or 1 (0=standard 1=lightbar) to set the type without prompting
 +
 +      Command: GE (Edit user settings)
 +         Data: 17 1
 +
 + + Menu command: GE option 20 (Change message reader type) can now have an
 +   option of 0 or 1 (0=standard 1=lightbar) to set type without prompting
 +
 +      Command: GE (Edit user settings)
 +         Data: 20 1
 +
 + + Revamped the MUTIL startup code so that it provides better details in the
 +   errors.log should it fail to start up for any reason.
 +
 + ! Fixed broken outbound SSH (Menu command IS)
 +
 + + When entering Echomail addresses, Mystic will now automatically assign the
 +   Primary address if one isn't defined.  Primary flag will also be removed if
 +   an address is set to 0:0/0 with primary flag.
 +
 + + Mystic BINKP server now sends an M_ERR frame and aborts the session if it
 +   receives what looks to be nonsense from the remote client.  Previously it
 +   would wait until timeout.
 +
 + + When Mystic's Firewall has blocked a connection it will now detect if the
 +   connection was intended to be BINKP and send a "BUSY" flag with a note that
 +   says the connection is blocked.  FIDOPOLL will now detect this as well.
 +
 + ! Fixed a bug where a user's scan settings for a base could get "stuck" in
 +   Forced mode if a base was forced and then changed.
 +
 + + Mystic now has an "Auto Whitelist IP" option in Login/Matrix settings. This
 +   option can have two values: "User Flag", or "All Users".
 +
 +   When set to "User Flag" Mystic will check a flag on the user's account
 +   called "Whitelist IP" and if its set, it will automatically whitelist the
 +   IP of the user who logged in if it is not already whitelisted.
 +
 +   When set to "All Users" Mystic will automatically whitelist the IP
 +   of all users who successfully log into the BBS.
 +
 +   <ALPHA 1.12 A45 RELEASED -- 18 Feb, 2020>
 +   
 +</code>
 +
 +===== 1.12 Alpha 46 =====
 +
 +<code>
 + + Mystic Linux version no longer uses command line options for password
 +   during RLOGIN and SSH sessions.  It now privately passes using a 512
 +   bit hash.
 +
 + - The old MI Message Index Reader has been removed and replaced with the
 +   newer Index reader.  This "new" index reader has been in Mystic to be
 +   tested under the M! menu command for more than a year so it is time to
 +   get rid of the old.  The default template is msg_index so you should
 +   copy msg_index.ans and msg_index.ini during upgrade if you haven't yet.
 +
 + + Mystic's BINKP server now has an "SSL Port" option which when set to a
 +   non-zero value will also run the BINKP server in direct SSL mode.
 +
 + - Removed the Opportunistic BINKP SSL/TLS extension support as Mystic was
 +   the only known software to support it and it was unlikely other software
 +   would adopt it.  Maybe I'll bring it back someday as I do prefer this
 +   method of BINKP server.
 +
 + + Mystic's BINKP server now allows the "Port" option to be set to 0 to
 +   disable non-SSL connections when used in combination with the SSL Port
 +   option, so that Mystic will only accept SSL BINKP connections.
 +
 + + FIDOPOLL and EchoMail node entries now have a "Use SSL" option which flags
 +   whether or not the node being configured for BINKP is an SSL BINKP node or
 +   not.  Note: The default port for BINKP SSL is 24553.
 +
 + ! Fixed a bug where stale .BSY files were not getting deleted properly.
 +
 + ! Fixed a potential incompatiblity issue with some versions of Cryptlib.
 +
 + ! Fixed an issue where a file that contains "file_id.diz" in its filename but
 +   is not an exact match could get left in the temp directory when uploading
 +   files.
 +
 + + MIS now has a replacement for FIDOPOLL built into it and is accessible by
 +   the "POLL" command line.  This still supports BINKP, BINKPSSL, FTP and
 +   Directory connections and has the "send "force" and poll by address lookup
 +   options contained in the original.
 +
 +   The benefits here besides having one less binary as part of the Mystic
 +   package is that it has a better user interface, better logging, and can
 +   have an unlimited number of concurrent outbound connections (defaulting
 +   to 5, configurable under Servers > General Options).
 +
 +   For example if you have 2 FTP uplinks and 5 BINKP nodes that all have mail
 +   you can run the "mis poll send" command line it will attempt to send to all
 +   7 nodes at the simultaneously instead of one after the other.
 +
 +   Eventually FIDOPOLL will be replaced so it may be a good idea to switch
 +   over to using this sometime soon.
 +
 + + When attempting to connect to an outbound mail server, MIS will now wait
 +   only 6 seconds, down from 10 before assuming the connection is unavailable
 +
 + + MUTIL MsgLink no longer spams every single message base into the logging
 +   regardless of loglevel.  Only the base name will be shown if there were
 +   messages actually linked within that base (level 2) and a list of the
 +   actual links (level 3)
 +
 + + MIS POLL now tracks send and receive file statistics (number of files and
 +   size) for FTP-based FTN transmission.
 +
 + + MIS POLL now tracks connection errors for outbound connections for both
 +   FTP and BINKP style connections.
 +
 + + New MUTIL function [EchoNodeTracker] can be used for various HUB-related
 +   utilities to automate downlink management.  Features include:
 +
 +      - Suspending echomail nodes based on days of inactivity
 +          - Optionally unlinking message/file base subscriptions
 +          - Optionally deleting their entire outbound mail queue
 +      - Changing mail and filebox crash nodes to hold-only after a set
 +        number of failed outbound connection attempts
 +      - Automated resetting of echomail tracking statistics after X days
 +
 +   See default MUTIL.INI [EchoNodeTracker] stanza for more information.
 +
 + + When changing a node from "Inactive" to "Active" in the Echomail node
 +   editor, Mystic will now ask if you'd like to reset the node's statistics.
 +
 + + EchoNode editor now shows a "Crash Errors" statistic which is the number
 +   of failed outbound connect attempts since last reset.
 +
 + + CHATx.DAT files now include the Process ID of the current process running
 +   the node and the updated field now uses a Unix timestamp.
 +
 + + Users now have a new flag that when set to Yes will always log them in as
 +   invisible, bypassing the login as invisisble prompt when set to Yes.
 +
 + ! Fixed a bug with BINKP where Mystic could send a 0 byte length data frame
 +   if a file size was exactly evenly divisible by the buffer size.
 +
 + + Mystic now allows the -Nx command line to be supplied to force a specific
 +   node number if you want to log into it.  You should still not use this and
 +   let Mystic manage the number numbers itself, but I've added this for those
 +   that seem to be trying to do this for some reason.
 +
 + ! Fixed a bug with SSL and BINKP where the data frame size could be
 +   improperly calculated under severely throttled/poor latency connections.
 +
 + + Two new Python functions: msg_getlr and msg_setlr to get and set the
 +   lastread pointer for the currently opened message base.
 +
 +     Syntax: msg_getlr (msgbase, userID) returns last read message
 +         Ex: lastread = msg_getlr(msgbase, user["id"])
 +
 +     msgbase is the open message base pointer returned by msg_open
 +     userID is the user's unique ID found in the "id" field of a user
 +     lastread is a signed 32-bit integer of the last read message which can
 +     be passed to msg_seek, for example.
 +
 +     Syntax: msg_setlr (msgbase, userID, userHandle, lastread)
 +         Ex: msg_setlr (msgbase, user["id"], user["handle"], lastread)
 +
 +     The user handle should always be passed (not the real name) as this value
 +     will be hashed as required when a new last read record needs to be added
 +     for the user.
 +
 + ! When deleting an Echomail node, Mystic was not delinking the nodes from
 +   file bases causing an "Unknown node" message to appear in file bases.
 +
 + + Revamped group configuration.  Group names have been expanded to 80
 +   characters.  Groups now have new ShortName field (40 characters).  Groups
 +   now have a InfoFile field (40 characters), and each group's Hidden boolean
 +   has been changed to a flags field.
 +
 + + New MCI code: <pipe>FS returns the current file group short name
 +
 + + New MCI code: <pipe>MS returns the current message group short name
 +
 + + MPL groups now have "groupshort" and "groupinfo" and "groupflags" variables
 +
 + + Python groups now have "shortname" "infofile" and "flags" entries in the
 +   group dictionary.
 +
 + + MIS.LOG now has configurable log rolling in the System Configuration >
 +   Servers > Logging section.
 +
 + + POLL.LOG now has configurable log rolling in the System Configuration >
 +   Servers > Logging section.
 +
 + + When using GOSUB/RETURN with Lightbar menus, Mystic will now remember your
 +   last selected item and return the cursor position to it when returning.
 +   If you want to reset the cursor, use /CURSOR on the data field of your GR
 +   menu command.
 +
 + ! MIS was not refusing to run if the Mystic BBS data files did not match the
 +   version of MIS.
 +
 + ! When in the text editor in view only mode, the backspace key was still
 +   working in edit mode.
 +
 + ! Mystic was being way too aggressive with SSL read/write timeout values
 +   which may have caused some errors in SSL BINKP.
 +
 + + New option: "Ask Message Post" in message settings, when set to yes or no
 +   determines if Mystic will ask users if they'd like to post after reading
 +   a message base.
 +
 + + Mystic's message readers will now print all the maximum column width per
 +   line instead of columns - 1.  This means that your message reading
 +   template will need to not use the bottom line of the user's terminal for
 +   message text or it will cause the user's terminal to scroll.  This may be
 +   reverted back, but we'll see how it goes and how it effects people.
 +
 + ! When toggling show kludges (V) in the standard message reader, Mystic was
 +   not automatically displaying the message.
 +
 + + Max number of simultaneous poll connections is now configurable in the
 +   Servers > General Options section of System Configuration
 +
 + + When tossing TIC files, the dir_prefix can now be defined by source address
 +   as with other settings.
 +
 + + New command line option -AUTH <user> <password> checks the supplied user
 +   and password and prints TRUE if the user exists and password matches or
 +   FALSE otherwise and then immediately exits.
 +
 + ! Fixed a bug in Linux versions where Mystic would couldn't find files in the
 +   file base when hatching a file, despite it actually existing.
 +
 + ! Fixed a bug that could cause some long lines in echomail packets to get
 +   truncated at 255 characters when tossing messages.
 +
 + ! Fixed a bug in the FTP server that would confuse some FTP clients when
 +   closing a data connection (sending two 226 responses after successful
 +   transfer).
 +
 + + Mystic now allows a single message base to be assigned to a QWK network
 +   when operating as a hub, and a FidoNet style network.  Gating will be
 +   automatic when configured for both.
 +
 + ! Fixed a bug when copying an event in the event editor that would cause it
 +   to have the same unique ID as the original event.  This could cause some
 +   events to save incorrectly.  When editing an event, all IDs should be
 +   unique (the ID is shown at the top of the edit window). Review your events
 +   and if you have any that have a duplicate ID you should either make a copy
 +   and then delete the original or just delete the original and remake it so
 +   all events have a unique ID.
 +
 + + MUTIL ImportEchomail now has a bad_packet setting which defines a directory
 +   where bad packets are moved to when an error occurs during import.
 +
 + + New Python function: flush().  This forces any data currently in Mystic's
 +   outbound buffer to be sent to the remote client.  In almost all
 +   circumstances Mystic handles this for you so this will not be needed.
 +
 + + New Python function: purgeinput().  This clears out any input currently in
 +   Mystic's input buffer.  In most cases when doing any IO with the user Mystic
 +   will handle this on its own.
 +
 + ! Mouse support was not working in Lightbar menus.  Not sure when this was
 +   broken but it was probably when I changed how NetRunner mouse support
 +   worked in Beta 19.
 +
 + + Msg listing and file listing was not working properly with mouse support
 +   but I also changed it to allow clicking an already selected message or
 +   file to read the message or flag the file respectively.
 +
 + + New MCI codes for setting high intensity background colors ON or OFF for
 +   compatible terminals like NetRunner and SyncTerm:
 +
 +      CY - Turns iCE colors ON
 +      CN - Turns iCE colors OFF
 +
 + + New Menu Command: XV.  This option allows the user to validate their
 +   e-mail address from the Matrix login menu.
 +
 + + Users can now be created in the User Editor by using the CTRL+A hotkey
 +
 + + Updated the defaults for Matrix login so it no longer uses a Matrix
 +   password by default.
 +
 + ! Fixed a bug in the QWKPOLL FTP client and the FTN FTP client that was
 +   causing non-passive mode to fail.
 +
 + ! Fixed a display bug in the From field of routed Netmail messages.
 +
 + ! MIS was not resolving the "Country" of the connection when the IP address
 +   was whitelisted.
 +
 + + Area/Filefix both now accept %QUERY which works the same as %LINKED
 +
 + ! Fixed a bug with the MPL compiler and the DateValid fuction
 +
 + + New users can now be created from the command line using the -NEWUSER
 +   option followed by a series of attributes in any order:
 +
 +     mystic -newuser handle=myhandle "name=real name" pass=mypass
 +     email=mysticbbs@gmail.com level=10
 +
 +   Mystic will print TRUE or FALSE to STDIO depending on if the user was
 +   successfully created or not.  The command line MUST have a handle, name,
 +   and password attribute at a minimum for the create to succeed.
 +
 +   The level value will accept anything less than 250.  Any new user created
 +   with a level of 250 or higher will be rejected.
 +
 + + The "hackwarn.txt", "newletter.txt" and "sysletter.txt" automatic messages
 +   will now be sent from/to the "Feedback To" setting instead of using the
 +   SysOp name setting.
 +
 + + When searching for a user name, typing "SYSOP" will now translate to the
 +   "Feedback To" user setting instead of the SysOp Name.
 +
 + ! MUTIL PostTextFile was not using the default Origin line when the base's
 +   origin line was blank.
 +
 + + When executing an archive, MIS and MUTIL will now automatically append
 +   2>nul redirect to prevent leaking error messages.
 +
 + ! Did a review of the FTP server code which resulted in a bug fix and a fix
 +   of a memory leak when using passive and extended passive modes.  Server
 +   stability has also been (hopefully) increased.
 +
 + ! Fixed a bug with QWK packet generation when message text lines are longer
 +   than 255 characters.  This bug existed both in the BBS and the QWK
 +   Networking engines.
 +
 + + Mystic-DOS "EDIT" command now also accepts "nano" and "notepad" for those
 +   of you who have that stuck in your head.
 +
 + + Two new MCI codes to show message status of E-mail base:
 +
 +      MW : Shows the number of messages in your e-mail box
 +      MU : Shows the number of unread messages in your mailbox
 +
 +   Note that these values are set to 0 until the MC (Check E-mail) menu
 +   command is executed.  The values are calculated at that time.
 +
 + + New optional data option for menu command MC (Check E-mail): /SCAN
 +   If /SCAN is supplied the MC command will only calculate the current
 +   mailbox stats (total messages and unread messages) without having any
 +   display or interaction with the user.  These values will be stored in
 +   the MU and MW MCI codes.
 +</code>
 +
 +===== 1.12 Alpha 47 =====
 +
 +<code>
 + + The MW menu (write email) command now uses the "Feedback To" configuration
 +   setting as the person to send e-mail to if the user enters "SYSOP".
 +
 + + Enabled the DX menu command to execute DOS FOSSIL doors in Windows 32-bit
 +   using DOSXTRN.  This can be used as an alternative to NetFossil and will
 +   work over all connection types for DOS doors (ie, SSH).  DOSXTRN+DLL must
 +   be in root Mystic directory and are not distributed with Mystic BBS.
 +
 + + Prompt #132 (More Yes No Continuous) has been changed.  The first word
 +   of the prompt now defines the hotkeys used for the prompt.  If you have
 +   a theme that customizes this prompt, the theme prompt will have to be
 +   updated to include this change.
 +
 +     OLD: More: (Y)es, (N)o, (C)ontinuous?
 +     NEW: YNC More: (Y)es, (N)o, (C)ontinuous?
 +
 + + Prompt #522 (Yes/No text) has been changed.  The first word now defines
 +   the hotkeys used for the prompt.  If you have a theme that customizes
 +   this prompt, the theme's prompt will need to be updated or reset to
 +   default.
 +
 +     OLD: No Yes
 +     NEW: NY No Yes
 +
 + + Mystic now displays the default Yes/No text when prompting non-lightbar
 +   questions.  This is more inline with how Renegade Y/N prompts worked.
 +
 + + Updated default LHA/LHZ archive configuration for Linux systems.
 +
 + + When executing archives, MUTIL in Unix will now automatically append
 +   " > /dev/null 2>&1" to the end of each archive execution command in order
 +   to hide standard output and error messages.  It was already adding "2>nul"
 +   in Windows.
 +
 + + Increased the data timeout from 10 to 30 seconds when waiting for a data
 +   connection in QWKPOLL to give a little more time for hub systems to
 +   generate QWK packets (non-passive connections).
 +
 + ! Fixed a bug where the last line of quoted text could occasionally be
 +   missing from the quote selection.
 +
 + ! Fixed the broken escape sequence during outbound telnet, rlogin, and SSH
 +   connections.  CTRL+] should now properly forcefully exit the outbound
 +   connection.
 +
 + + Because allowing a CTRL+] escape character may interfere with transfers
 +   during a bridged connection (ie, a file may have the escape character in
 +   it which could end the session when it attempts to send over the bridge),
 +   all outbound telnet, rlogin, and SSH connections will require the /ESC
 +   option in the command data for the escape sequence to be active.
 +
 + + Mystic will now execute connect.mps which will be ran before any terminal
 +   detection or codepage questions (startup.mps is executed after those
 +   things).
 +
 + + Added autocreate.mps to the default install scripts directory to give an
 +   example system for automatically creating users during RLOGIN.
 +
 + + When executing a door, Mystic now has a helper function to change
 +   directories from the command line.  If you have CD<directory> in your
 +   command line, Mystic will remove it and change to that directory prior
 +   to executing the command line.
 +
 +   For example:
 +
 +     cd<c:\doors\stackem> stackem stackem.cfg %Pdoor.sys
 +
 + ! Fixed a bug where editing a long user note would corrupt itself and the
 +   theme field as well.
 +
 + + Added new MUTIL function [Export_AREAS.BBS] to create an export of all
 +   Echomail message bases in the AREAS.BBS file format.  See the default
 +   MUTIL.INI for example.
 +
 + ! Mystic was not adding the FTN address to the Origin line of NetMail bases
 +   if no address was set in the base configuration.
 +
 + + The -newuser option now has the ability to update existing users if the
 +   optional "update" command is provided on the command line.  In other words
 +   it will create a new user if they do not exist, or update them if they do
 +   provided the user to be updated is not currently logged into the BBS or
 +   being edited in the user editor.  Examples:
 +
 +     mystic -newuser update handle=g00r00 pass=mypassword
 +
 +   This command would create the user g00r00 if they did not exist, or update
 +   the password of the existing g00r00 account if they account did exist.
 +
 +     mystic -newuser update handle=g00r00 email=new@email.com
 +
 +   This command would update the user g00r00 but if the user g00r00 did not
 +   exist it would fail to create them because no password was provided and
 +   by minimum a username and password must be provided to create a new user.
 +
 +   These commands would also fail if the update was requested when the user
 +   g00r00 was logged into the BBS.
 +
 + + The -newuser command line option now has the ability to specify the user's
 +   start menu by using the menu=menuname key/value pair.
 +
 + + Expanded the number of maximum screen lines by 10, and the columns by a
 +   bit too so now Mystic supports terminal sizes up to 160x60 (and 40x24 for
 +   the smallest size <untested>).
 +
 +   Note that if you have enabled creation of "node windows" when running the
 +   Windows version of Mystic, you will want to right click your command
 +   prompt window, select "Defaults", and set the window/buffer size to
 +   default to 160x60.  Mystic creates node windows using the default settings
 +   so if you don't select the largest window a user can use then the screen
 +   will not look correct when a user is in a terminal mode larger than the
 +   node window.
 +
 + + User terminal size is no longer stored in the user record, and Mystic
 +   always uses the detected terminal size (or the default terminal size
 +   defined in System Configuration if no graphics detected on connection).
 +
 + + New MPL variables "TermSizeX" and "TermSizeY" tell you the size of the
 +   user's terminal.
 +
 + + New MPY function termsize() returns the x and y size of the user's terminal
 +
 +   For example:
 +     x, y = termsize();
 +
 + + When logging in locally in Windows, Mystic will now fully draw the status
 +   line at the bottom of the screen.
 +
 + ! Fixed a bug in the FTP server that was causing directory listings to show
 +   an incorrect date.
 +
 + + MPL InputOptions now takes a extra parameter at the end which is a Char
 +   variable to signfify the echo character to use when doing password input.
 +   Testinput.mps example has been updated with an example.
 +
 + + MPL Input class now has a new mode, mode 4 which is a masked string input
 +   that can be used for password entry.  Recompile MPL programs (mplc -t).
 +   The testinput.mps demo has been updated with a password example.
 +
 + + The GE menu command option 10 for changing terminal size now has prompts
 +   #553 and #554 for terminal columns.  No need to do anything but copy over
 +   the new prompts.dat into your data folder as per upgrade instructions.
 +
 + - The old random display file system is gone so if you have the .ana, .anb
 +   type files you will need to update them to use the "new" system that is
 +   being brought over from the Mystic 2 build.
 +
 + + New display file random system.  If for example the base filename of the
 +   display file is "test" then you can make any additional files with a .#
 +   after the base filename and one of them will be selected randomly.  The
 +   old system had a limit of 36 random ANSIs per display file but this
 +   system has no limits.  For example:
 +
 +      test.ans
 +      test.1.ans
 +      test.2.ans
 +      test.10.ans
 +
 +   Mystic will randomly select and display one of the above files.
 +
 + + New display file system for custom terminal sizes that allow specific
 +   files to be displayed based on the user's terminal size.  For example if
 +   the base display filename is "test" then you can add either the columns
 +   or both the columns and lines:
 +
 +      test.ans              < Displays to users with less than 120 columns
 +      test.c120.ans         < Displays to users with 120-159 columns
 +      test.c160.ans         < Displays to users with 160+ columns
 +
 +   You can also include the number of lines as well:
 +
 +      test.c132x37.ans      < Displays to users who have 132x37 or larger
 +                              terminal size.
 +
 + + New display file system can combine the random ANSIs along with the
 +   terminal sizes.  When combined the random number comes first followed
 +   by the terminal size.  So if you have three 160 column scrollers you want
 +   to randomly display and three 80 column, you could name them like this:
 +
 +       scroller.1.ans
 +       scroller.2.ans
 +       scroller.3.ans
 +       scroller.1.c160.ans
 +       scroller.2.c160.ans
 +       scroller.3.c160.ans
 +
 +   Now if you executed a GD menu command with the data of "scroller" Mystic
 +   will randomly display scroller.#.ans if the user's terminal size is less
 +   than 160 columns.  If the terminal size is 160 columns or higher Mystic
 +   will randomly display scroller.#.c160.ans.
 +
 +   All of Mystic's automated display files like logonX and so on all use this
 +   system as well, and so does the dispfile MPL and showfile MPY functions. The
 +   c#x# format is case sensitive.
 +
 +   It is important to note when doing 40 column themes that the column-defined
 +   files always take priority over the base file. This means test.c40.ans will
 +   always be selected over test.ans.  If you are creating a theme that supports
 +   both 80 and 40 columns then you'll want to create c80 files along with your
 +   c40 files.
 +
 + + Template files now allow both random and terminal sized-based file naming
 +   similar to display files.  For example:
 +
 +     msg_editor.ini
 +     msg_editor.c132x36.ini
 +     msg_editor.c160x50.ini
 +
 + + Mystic's Text Editor will now use the full size of the terminal up to
 +   160x60.
 +
 + + The [X## MCI code to move to an X position on the screen has been updated
 +   to allow a third character for X coordinates between 100-160.  The way
 +   this works may have to change in the future.
 +
 + + MUTIL: Added the option to export Golded message base definitions into a
 +   nicely formatted text file.  See the default mutil.ini for an example of
 +   the new [Export_Golded] stanza.
 +
 + + Added new default FS editor template for 132x36 screen resolution.
 +
 + + Rewrote the logic for reformatting text when using the delete key in the
 +   FS editor.
 +
 + + Rewrote the logic for reformating when using backspace in FS editor.
 +
 + + Fidopoll has been removed, you can delete it.  MIS POLL completely replaces
 +   it now, all of the FidoPoll commands there type MIS POLL to get a list.
 +
 + ! A46 build was accidentally shipping with default group configuration in the
 +   old A45 format which would cause some problems unless they were deleted.
 +
 + + New MCI code |[0 sends a terminal sequence to hide the cursor (support for
 +   this will depend on the terminal).
 +
 + + New MCI code |[1 sends a terminal sequence to show the cursor (support for
 +   this will depend on the terminal).
 +
 + + Menus in Mystic now have a "Marquee" option in the Menu Settings.  This
 +   allows each menu to have an optional scrolling field of text of up to
 +   255 characters (but could in theory be expanded).  The Marque settings
 +   have the following option per menu:
 +
 +          Active | Yes
 +               X | 1
 +               Y | 1
 +      Field Size | 60
 +          Offset | 1
 +     Scroll Type | Scroll Left
 +           Speed | 200
 +            Text | |04Hey, |12|UH|04!  How are you?
 +
 +
 +    The active field determines whether or not this will be active on the
 +    menu.  This must be Yes and the user must have ANSI graphics for this
 +    to work.
 +
 +    The X/Y field define the location of the start of the scrolling field
 +
 +    The Field Size defines the number of characters the scrolling field
 +    will show at once.  If the field size is larger than the text supplied
 +    then Mystic will wrap the text to fit the field.
 +
 +    The Offset allows the starting character to be defined when the scrolling
 +    beings.  So the first character at the start X/Y position will be character
 +    at # "Offset" of the text.
 +
 +    The Scroll Type defines the method of scrolling, either scrolling to the
 +    left or the right.
 +
 +    The Speed option defines the number of milliseconds to delay between
 +    scrolling of the text.  Valid options are 100 to 1000ms.
 +
 +    The Text field defines the actual text that will be scrolling.  This text
 +    can have pipe color codes and MCI codes that returns information about the
 +    user such as UH for their user handle and so on.
 +
 + + The default "testlightbar" menu has been updated to show an example of a
 +   scrolling Menu Marquee.
 +
 + + New Menu Command: -M This command sets the current menu's Marquee text
 +   with the text contained in the data field.  If the first 5 characters
 +   are "/ADD " in the command data, Mystic will append the text onto the
 +   existing scrolling field instead of replacing it.  If the data field is
 +   /RESET it will reset the Marquee to the configured Marquee text value.
 +   Otherwise, it will replace the Marquee with the text in the data field.
 +
 + + The theme editor no longer allows the theme being edited to be selected as
 +   an inherited theme.
 +
 + ! Fixed a bug when forwarding a message from a local message base to an echo
 +   base that caused the network address to be missing from the origin line.
 +
 + + Renamed the "Echo/Qwk" message base type setting to "Networked"
 +
 + ! May have fixed a bug created in A46 with file base indexing.  Everyone that
 +   may experience problems with duplicate file detection should probably run
 +   file base packer so it can regenerate the index files.
 +
 + + New MCI code |CHx.  This MCI code just prints out the character after the
 +   CH.  So for example |CH| would send out a pipe character |CHa would print
 +   the letter a.
 +
 + + New MCI code |PD. This MCI code instructs Mystic to space pad the next MCI
 +   code value result. So for example |PD|MB would return " General Messages "
 +   whereas |MB would return "General Messages".
 +
 + + Menu file names can now use the dynamic column and lines filenaming and the
 +   random file names, just the same as templates and display files.  For
 +   example:
 +
 +     main.mnu
 +     main.1.c132.mnu
 +     main.2.c132.mnu
 +     main.c160.mnu
 +
 + ! Fixed a bug where if an extended key is defined in a standard menu, that key
 +   would be available for input.
 +
 + + MUTIL will now honor the "eacs_list" tag when configuring defaults for auto
 +   created message bases.
 +
 + + New ACS command X# where # is the number of columns of the user's terminal
 +   size.  For example: x132 would be true if the user has 132 or higher
 +   columns
 +
 + + New menu command option: /THEME for the *# menu command.  When supplying
 +   this option, Mystic will not ask to select the theme to edit and instead
 +   will load the current theme for editing.
 +
 + + New option when selecting a menu to edit in the menu editor: /T which can
 +   be used to change the theme.
 +
 + + Rewrote the setting of message pointers by date (Menu command MD) so that
 +   it should be significantly faster.
 +
 + + New users now have their default message pointers set based on one of
 +   several different options found in New User Settings 1:
 +
 +   Start Msg Pointers can be set to any of the following:
 +
 +     First message         : Start at the first message in each base
 +     Last message          : Start at last/end of messages in each base
 +     Last (Value) messages : Start at the last X messages of each base
 +     (Value) days ago      : Start at messages that are X days old.
 +
 +   The second Value field sets the number of messages or the days old that
 +   the pointers will be set to depending on the Start Msg Pointers option.
 +
 +   For example, if Start Msg Pointers is set to "Last (value) messages" and
 +   value is set to 10, then the user will start at 10 messages back from the
 +   last message in the base.
 +
 +   If Start Msg Pointers is set to "(Value) days ago" and value is set to 7
 +   then the user will start reading messages in each base that are 7 days old
 +   or newer from the date of their user creation.
 +
 + ! Fixed a bug where Areafix would not properly respond when it receives a
 +   message from software that ends PKT lines with the CR+LF combination.
 +
 + ! Fixed a bug in MUTIL echomail import where the Bad packet directory being
 +   left blank could cause bad packets to get moved to the root directory of
 +   your disk drive when instead it should have disabled the bad packet move.
 +
 + + New Python function isuser(name) returns true or false if the user name
 +   passed to the function is a valid user:
 +
 +     if isuser("g00r00"):
 +       writeln("g00r00 is a user!")
 +     else:
 +       writeln("g00r00 is NOT a user!")
 +
 + + Theme configuration will now allow iCE/blinking color attributes to be
 +   selected when setting input fields and theme colors, etc.
 +
 + + Message base colors in the editor will now allow iCE/blink color attributes
 +   for message text.
 +
 + + In Windows local mode, the status line can now be configured to use iCE
 +   colors.
 +
 + + Mystic echomail tosser will now move whole echomail bundles to the bad
 +   packet directory if it cannot determine archive type or if it cannot find
 +   any packets in the bundle when trying to extract it.  Unknown files will
 +   continue to be left in the incoming folder.
 +
 + ! Fixed a bug where the user could be logged out for inactivity immediately
 +   after a SysOp chat using NodeSpy.
 +
 + ! Text editor was not searching the very last line of the text file when
 +   doing searches or searching Again.
 +
 + + MUTIL: Changed the error message to be more descriptive when importing
 +   unsecure FTN packets with a password assigned to it.
 +
 + + Updated Mystic's BINKP protocol to work around a bug in BINKD where
 +   the way BINKD escapes filenames does not follow BINKP specifications.
 +
 + ! Fixed a bug where Mystic's online help system could end up looping
 +   endlessly if a connection was lost while browsing a help file.
 +
 + ! Fixed some bugs in the Message Index Reader when there are no subscribed
 +   message bases that could cause a crash.
 +
 + + MIDE now properly defaults to UTF8 output in Linux and also includes a
 +   codepage setting mide.ini to force CP437 or UTF8.
 +
 + + MIDE: Removed the 80x50 column mode left over from DOS MIDE.  MIDE now
 +   uses the current screen size in its entirety.
 +
 + + New Python Engine has replaced the old one.  This engine supports Python
 +   2 and Python 3.  Two new fields are now in System Configuration > General
 +   Configuration and those allow you to set the location/name of the Python
 +   library that Mystic will try to load.
 +
 +   If you are upgrading from an old version you should check to make sure that
 +   those values are blank and if they have old left over configuration data
 +   you should set them to blank values.  If blank values do not work then you
 +   must set the value to your installed Python location/library.
 +
 +   For example in Linux you could search for the library like this:
 +     "sudo find /usr -name 'libpython2.7*.so*'
 +
 +   This should give you the location of your Python 2.7 library.  If you do
 +   not have Python 2.7 installed then you can usually install it via a
 +   package manager.  For Ubuntu 20.04 for example you can do:
 +
 +     sudo apt install libpython2.7
 +
 +   Repeat the same process for the Python 3 as well.  In Windows the DLL
 +   files are usually python27.dll and python3x.dll where x is the version
 +   and the installation typically puts them in your C:\WINDOWS folder tree
 +   somewhere.
 +
 +   As always the installed bit version of Python must match the installed
 +   version of Mystic.  For example 64-bit Windows needs 64-bit Python.
 +
 + + New Menu command "GZ" is added to execute a Python 3 script.
 +
 + + New command line option for Mystic -Z will execute a Python 3 script from
 +   the command line (similar to the -Y and -X for Python 2 and MPL
 +   respectively)
 +
 + + Mystic-DOS command PYTHON is now changed to PYTHON2
 +
 + + New Mystic-DOS command PYTHON3 executes a Python3 script.
 +
 + + Theme prompts with the first character of ~ will now attempt to execute
 +   a Python 3 script.  For example:
 +
 +     001 ~mypy3script
 +
 + + Added a new horizontal menu MCI code similar to the pop up vertical
 +   menu, which can be used to quickly make a horizontal lightbar menu and
 +   optionally have a description line below it.  The format is as follows:
 +
 +     <pipe>#H#<color>#<high_color>#<desc_color>#<selected>#<options>
 +
 +   The <color> represents the text color attribute for the standard text
 +   of the selection.  The <high_color> represents the highlighted color when
 +   the item is selected.  <desc_color> is used only when a description is
 +   assigned to a selection and represents the color of the description text.
 +
 +   As with other places where an attribute number is defined the value can
 +   be calcuated be the following formulate FG + (BG * 16) so FG color of white
 +   (16) or a blue (1) background would be 15 + (1 * 16) which is 31.
 +
 +   <options> consists of a comma-separated list of key/text pairs defined as
 +   key-text where key is the hotkey and text is what is lightbar selectable.
 +
 +   So for a horizontal lightbar menu with two light bar options it would look
 +   like this:
 +
 +     <pipe>#H#7#31#14#2A-Option A,B-Option B#
 +
 +   The above would create a horizontal lightbar menu with two options called
 +   "Option A" and "Option B" with the first having a hotkey of A and the second
 +   a hotkey of B.  The text would be attribute 7 (grey) and the highlighted
 +   text would be white on blue background (attr 31).  The third field would
 +   not be used because there is no description defined for any of the options
 +   and the fourth option is says to default to the second option (Option B)
 +   when opening the menu.
 +
 +   Descriptions can be applied to each option by putting those values in
 +   backets in the item name.  The description will be displayed on the line
 +   under the lightbar menu in the same way Searchlight BBS would.  For
 +   example:
 +
 +     <pipe>#H#7#31#14#2A-Option A[Option A description here],B-Option B#
 +
 +   Pipe color codes can be used in the option names and will be rendered as
 +   expected when the item is not highlighted.
 +
 + + Made some enhancements to the FS editor to how reformatting works when
 +   pressing enter in the middle of a sentence or backspace to a previous line
 +
 + ! Mystic's text editor was not detecting a "changed" text file if the only
 +   command done was to cut a line of text.
 +
 + + Mystic's ANSI editor now supports editing ANSI files based on your current
 +   screen size.  If you are greater than 80 columns Mystic will ask when
 +   loading an ANSI how many columns the ANSI is with options up to 160 columns
 +   if your current screen size supports it.
 +
 + ! Fixed a bug with MIDE Run command and also added a screen pause after
 +   executing the script.
 +
 + + Added Menu Margins to the Menu Settings for each menu.  This is used for
 +   standard type menus and allows a number of characters to be defined as
 +   margins on the left and right side of the screen before calculating the
 +   columns and drawing the menu commands.  Setting these to 0 will disable
 +   the margins which will generate menus as they have always been generated.
 +
 +   There are two sets of margins, one defined for terminals 132 columns or
 +   higher and the other set used for those that are less than 132 columns.
 +
 + + When displaying internally generated menu commands, Mystic will now draw
 +   the commands in a non-destructive mode when ANSI is enabled.  This means
 +   the location of menu commands will always be the same and if you display
 +   an ANSI menu (displayed using the header) you can leave a space for the
 +   commands and Mystic will automatically populate them without overwriting
 +   the ANSI.
 +
 + + The E-mail autovalidation function (when using the security level upgrade
 +   option) will now only change your security level if its higher than your
 +   current security level.
 +
 + ! When viewing a text file from within an archive in ASCII mode, Mystic was
 +   not properly displaying the text file.
 +
 + + New MPL Function fWriteStr which will write a string to a text file without
 +   adding line ending characters.  IE:
 +
 +     S := 'Hello world';
 +     fWriteStr(F, S);
 +
 + ! Fixed a bug when using the CD<dir> function in the data field of a door
 +   menu command.  The DX menu command was also not logging the command line
 +   when executing.
 +
 + + When changing a message or file group, the OK ACS flag will be set to true
 +   if a user's group was changed successfully (false otherwise).
 +
 + ! Fixed a bug where Mystic would reset the user's time per day on each login
 +   instead of once per day.
 +
 + + MUTIL will now try to log a result code returned by the operating system
 +   when executing an archive (if debug log level is enabled).
 +
 + ! When resolving the MN MCI code, Mystic will now show the QWK network name
 +   where previously it would show the local network name.
 +
 + + Mystic Configuration now has a "reset caller data" option in the Other
 +   drop down menu.  This will give you the option to reset your last caller
 +   information and/or your total system callers.
 +
 + ! Mystic was not allowing a theme's input field colors to be set to
 +   attribute 0.
 +
 + ! Boolean searches were not working properly in file descriptions but message
 +   searches appear to be working fine.  Fixed.
 +
 + + Mystic-DOS now has a new "MASSUL" command which will kick off a mass upload
 +   directly from the Mystic-DOS prompt.
 +
 + + New ACS command: "OC" will return true if its the user's first call to the
 +   BBS.
 +
 + + New MPL variable: "AcsOKFlag" reads and allows you to set the current
 +   state of the "OK" ACS flag when evaluating ACS.
 +
 + + New MPL CFG variable: CfgSemaPath returns the path to the Semaphore
 +   directory.  I don't think this would require a MPL recompile but I am
 +   forcing one just in case.  Recompile your MPL with the new build.
 +
 + + New MPY user dictionary variables firston, laston (unix stamps) and calls
 +
 + + Mystic will now store the last 99 callers and the GL menu command can now
 +   optionally be called with the number of last callers to show in the optional
 +   data field.  If no value is supplied it defaults to 10.
 +
 + + MIS POLL KILLBUSY now accepts "app" to delete only Mystic application
 +   busy files, or "echo" to delete only Echomail busy files, or all to delete
 +   all.  When nothing is supplied it continues to default to Echomail.
 +
 + + Mystic is now compiled with FreePascal 3.2.2 (except macOS) and whole
 +   program optimization has been disabled as it seems to sometimes cause
 +   some problems.  Binaries will be a bit larger because of it.
 +
 + + You can now flag files by typing the number in the scrolling file list.
 +   This was already working for the standard file list type but it was not
 +   working in the scrolling list.
 +
 + + MUTIL can now execute specific headers from the command line, overriding
 +   what is enabled to automatically run in the INI file.  This is done by
 +   using the -RUN or -EXEC or -EXECUTE option (they all do the same thing)
 +   followed by a comma separated list of the headers that should be executed.
 +
 +   If you are using a non-default .ini filename then you must specify the
 +   execute command before the ini filename.  Some examples:
 +
 +   mutil -run ImportEchoMail            (Run [ImportEchoMail] from mutil.ini)
 +   mutil -run ImportEchoMail import.ini (Run [ImportEchoMail] from import.ini)
 +
 +   An example of calling multiple headers:
 +
 +   mutil -exec ImportEchoMail,LinkMessages
 +
 + + When importing echomail MUTIL will now create an echomail.out or netmail.out
 +   if it has tossed echomail or has routed netmail through the system.  This
 +   change may be reverted back or reworked at some point.
 +
 + + Updated Mystic's default Message Bases for a fresh installation to include
 +   a pre-configured FTN Netmail base as well as updated the default events
 +   for processing inbound and outbound echomail.  The process to set up a FTN
 +   network out of the box is now as simple as:
 +
 +     1. Apply to your network and get your address and BINKP settings
 +     2. Configure your Echomail address in Echomail Addresses
 +     3. Configure your BINKP or FTP connection settings to your uplink
 +     4. Enable the import and export events in the Event editor
 +
 + + Changed Mystic's Netmail routing logic to simplify routing for most people
 +   while still allowing full control for power users:
 +
 +     - Netmail will now first always try to route using the Route strings
 +       defined for each node.  Previously it would look for a direct address
 +       match first before doing this.
 +
 +     - If no route is found from the Route string then Mystic will now attempt
 +       to automatically route Netmail based on some basic address logic:
 +
 +       First it will look for a direct address match in Echomail Nodes and if
 +       one is found it will route directly to the node.
 +
 +       If there is no direct match then Mystic will perform some logic to
 +       select the best node that it can find.  If your system gets a Netmail
 +       for 1:123/123.1 and there is no direct match, Mystic will look for a
 +       1:123/123 node.  If there isn't one, then it will look for a 1:123 node
 +       with priority given to the 1:123/1 if exists.  If a node is still not
 +       found then Mystic will look for a zone match, and finally if no zone
 +       match is found then the Netmail will fail to route.
 +
 +       This new system allows for Netmail to work automatically without any
 +       knowlege of routing being required for most people while still allowing
 +       full control for power users.
 +
 + + MUTIL was not logging Netmail routing errors when Netmail was exported by
 +   ExportEchoMail function (it was logged only during import) additionally,
 +   the From and To field of the Netmail will now be logged.
 +
 + + MIS POLL ROUTE now optionally accepts an address and when supplied Mystic
 +   will tell you where a Netmail addressed to that address would be routed to
 +   based on the current configuration. For example:
 +
 +     mis poll route 1:1/1
 +     Netmail addressed to 1:1/1 would route to 1:268/1 (Node Description)
 +
 + ! Fixed a bug when parsing incoming INTL kludge lines
 +
 + + MUTIL mail processor now supports Netmail PING and pass-through tracing. If
 +   a netmail addressed to PING is sent to the system or passes through the
 +   system, Mystic will generate a notification to the origin system. Example:
 +
 +     Your PING request reached its final destination:
 +
 +      Address: 215:1/3.1
 +     BBS Name: Test BBS 4
 +        SysOp: Sysop Name Here
 +
 +     No additional route was found for this request.
 +
 +     Routing VIA Trace:
 +
 +       Via 215:1/2 @20210619.041119.UTC Mystic 1.12 A47
 +       Via 215:1/3 @20210619.041126.UTC Mystic 1.12 A47
 +       Via 215:1/3.1 @20210619.041132.UTC Mystic 1.12 A47
 +
 + + Taglines are now built into the full screen editor.  Mystic allows for
 +   both a global Tagline database available to all users, but also for users
 +   to create their own personal Tagline database by copying Taglines from the
 +   Global database or by manually adding/deleting them.  SysOps (s255) can
 +   also add and delete Taglines in the Global database directly in the UI as
 +   well but normal users can only add/delete into their Personal database.
 +
 +   A new template goes along with this system and needs to be copied into your
 +   theme from the default installation: taglines.ini and taglines.ans.
 +
 +   A small default Tagline database is now included as taglines.dat in the DATA
 +   directory and should be copied into your DATA folder when upgrading.
 +
 +   The global and per-user Tagline databases can each hold 5,000 taglines up to
 +   75 characters in length.  If a user drops connection while selecting a
 +   Tagline Mystic will still save their message without a Tagline.
 +
 +   New setting in New User Settings 2 to set the default Tagline mode for new
 +   users.  You should go set this to what you'd like new users to receive when
 +   their accouts are created.  Valid options are:
 +
 +     On       - Prompt user to select Tagline when saving a message
 +     Off      - Do not use Tagline system
 +     Global   - Auto apply a Tagline from the Global tagline database
 +     Personal - Auto apply a Tagline for the user's Personal tagline database
 +
 +   New setting in the User Editor for each user has the same options as above
 +
 +   The FS editor template has had some changes to allow for the Tagline mode to
 +   be set from directly in the editor.  Changes specifically are made to str7
 +   in the msg_editor template to add a new prompt for tagline mode.  Refer to
 +   the default for an example.  Prompt str19-str23 we also added to ask the
 +   user to select a Tagline mode and to display the current mode.  Refer to the
 +   default for example.  You'll want to add these in if you use custom
 +   templates so users can set their Tagline mode but if you use defaults you
 +   can just replace the default msg_editor.ini file with the new one.
 +
 +   Mystic will allow up to 5000 taglines per database.
 +
 + + Mystic will now automatically save a draft message if for some reason it
 +   cannot access the message base data files when attempting to save.
 +
 + + Mystic now allows a "bademail.txt" which contains a list of e-mail addresses
 +   that will be refused when a user tries to set their e-mail address.
 +
 + + The bad user name and bad e-mail searches now allow wildcards to be used
 +   in their respective file. So for example you can put *whitehouse.gov into
 +   your bademail.txt to refuse anything that matches that wildcarded text.
 +
 + + Mystic's install program now has an automated install option which can
 +   be initiated as by running "install auto <root directory>" If the root
 +   directory already exists, the installation will abort.  There are some
 +   addtional options that can be specified for paths:
 +
 +     data=<data file path>
 +     theme=<root theme path>
 +     msgs=<msg base path>
 +
 +   If you want to force it to overwrite an existing install you can use the
 +   optional overwrite command.
 +
 +   For example:
 +
 +     install auto c:\mystic
 +     install auto c:\mystic theme=c:\mysticthemes overwrite
 +
 + + New MCI code PE pauses and waits for the ENTER key (no pause prompt)
 +
 + + Optional data fields now has an Numbers option for input type.
 +
 + + MIS will now shutdown if a "mis.shutdown" Semaphore file exists in the
 +   semaphore directory.  MIS may take up to 10 seconds before it notices the
 +   semaphore and begins to shutdown.
 +
 + + The "mis shutdown" command now uses this shutdown Semaphore file instead of
 +   OS-level functions.  This means that the shutdown command will now work in
 +   Windows.
 +
 + + New ANSI viewer has now replaced the old one.  The new one has a few new
 +   features most notably is that is uses the newer template system and also
 +   can load varible sized ANSIs in a virtual canvas space.  What does that
 +   mean?  It means for example you can load a 160 column ANSI while you're
 +   only in 80 columns and then use the left/right arrows, the new TAB view,
 +   or new page left/right functions to scroll around the file.  A new second
 +   percentage/graph bar is provided for X axis bars in addition to the
 +   existing Y axis in the old viewer.
 +
 +   Other new features include prompting for the baud rate when pressing SPACE
 +   to show file as a traditional scroller.  The defaults for columns and baud
 +   can be set by template or overridden by menu command options.
 +
 +   The format for the GV menu command has changed very slightly to also conform
 +   to newer standards used within Mystic BBS:
 +
 +      Command: GV ANSI File Viewer
 +         Data: <viewer template>;<filename> [options]
 +
 +   The following options can be used to set/override defaults:
 +
 +      /END     : Causes file to begin displaying at the end of the ANSI
 +      /COLS=x  : Override default columns to render the file (ie /cols=160)
 +      /BAUD=x  : Set default baud rate when scroller viewing (ie /baud=19200)
 +
 +   Example:
 +
 +     Command: GV
 +        Data: ansiview;my160columnansifile /cols=160 /end
 +
 +   New default templates have been provided and should be copied into your
 +   themes when upgrading: ansiview.ini and ansiview.ans.  These replace the
 +   old ansiviewer.ans in the default installation.
 +
 +   Changed the default ANSI file view on the Demo menu to now use a 132 column
 +   ANSI done by BBS advocate and otherwise sick ass artist Smooth (A rendition
 +   of the Mistigris logo which is also a great group of creative people check
 +   all of them out if you never have)
 +
 + + The ANSI archive viewer template (archive_view.ini) has a new option in
 +   the [Options] stanza called "viewer" which sets the viewer template to use
 +   when calling the ANSI file viewer (defaults to ansiview if undefined)
 +
 + + Input barrier options have been added to Theme editor > Options
 +
 + + Themes now have a Color Mode option which can be set to one of three
 +   options:
 +
 +      None     : Do nothing when theme is loaded
 +      Blinking : Set remote terminal to use blinking colors
 +      iCE      : Set remote terminal to use iCE colors
 +
 +   Whenever a theme is loaded or changed, Mystic will attempt to set the
 +   color mode if one has been selected.  Whether or not these actually work
 +   will depend on the terminal the user is connected with.
 +
 + + New MCI code: CD  This MCI code resets the remote terminal to the default
 +   color mode set in the current theme.
 +
 + + Themes now have a Font Mode option which can be set to one of the following
 +   values/options:
 +
 +     0 - None         > Do nothing when theme is loaded
 +     1 - Default      > Sends the "set default font" sequence
 +     2 - IBM CP437    > Switch to IBM CP437 font
 +     3 - Topaz        > Switch to Amiga Topaz
 +     4 - Topaz+       > Switch to Amiga Topaz Plus
 +     5 - MicroKnight  > Switch to Amiga MicroKnight
 +     6 - MicroKnight+ > Switch to Amiga MicroKnight+
 +     7 - mo'sOul      > Switch to Amiga mo'sOul
 +     8 - p0t NOoDLE   > Switch to Amiga p0t NOoDLE
 +
 +   Whenever a theme is loaded, Mystic will attempt to set the remote terminal
 +   to use this font (or do nothing when set to None).  Whether or not this
 +   actually works depends on the terminal being used.  Some terminals will not
 +   work at all, some will switch to an Amiga font but possibly not the one
 +   selected, and so on.
 +
 + + New MCI code TF resets the terminal font to the theme's default font setting
 +
 + + The fallback setting for a theme has been split into separate fallback
 +   settings for text files, menu files, prompts, and scripts.  When enabled for
 +   each specific category, the theme will fall back to the default theme if it
 +   cannot find a menu, prompt, script or text file.
 +
 +   If you ever changed the fallback setting in a theme from its default then
 +   go into your themes and make sure these settings are set the way you want
 +   them to be set.
 +
 + + Mystic Python and MPL have had their fallback variables prefixed with a
 +   P, T, M, or S for each fallback type.  The default bulletin.mps will need
 +   a minor update in the variable name or you can copy over the new default.
 +
 + + New MCI code SFxx where XX is a font number to switch to in 2-digit format
 +   for example SF07 would set the font to Amiga mo'sOul.  The number
 +   corresponds to the same number used to define default font in the theme
 +   configuration:
 +
 +     1 - Default      > Sends the "set default font" sequence
 +     2 - IBM CP437    > Switch to IBM CP437 font
 +     3 - Topaz        > Switch to Amiga Topaz
 +     4 - Topaz+       > Switch to Amiga Topaz Plus
 +     5 - MicroKnight  > Switch to Amiga MicroKnight
 +     6 - MicroKnight+ > Switch to Amiga MicroKnight+
 +     7 - mo'sOul      > Switch to Amiga mo'sOul
 +     8 - p0t NOoDLE   > Switch to Amiga p0t NOoDLE
 +
 + + Mystic's ANSI viewer will now read column information from a SAUCE v5 record
 +   if one exists, and this will override the default columns set by the viewer
 +   template.
 +
 + + Mystic's ANSI viewer will now attempt to read font information from a
 +   SAUCE v5 record.  If a default font is defined for the current theme then
 +   Mystic will switch fonts to the font type appropriate to view the file and
 +   then reset back to the theme's default font upon exit of the viewer.
 +
 + + Mystic's ANSI viewer will now attempt to load an Amiga specific template
 +   when viewing files that have an Amiga font defined for them in a SAUCE v5
 +   record.  This is done by appending "_amiga" to the template name so if the
 +   template is "ansiview" then Mystic will first try to load the
 +   "ansiview_amiga" template before loading "ansiview" if it does not exist.
 +
 + + Mystic's ANSI viewer will now attempt to read color information from a SAUCE
 +   v5 record.  If a color mode is found and if a default color mode is defined
 +   for the current theme, then Mystic set the color mode of the file upon
 +   loading the viewer and then restore the theme's color mode upon exit.
 +
 + + [ and ] keys now work in the ANSI viewer to do page left/right while viewing
 +   large column ANSI files.
 +
 + + The Index file/msg reader when running in "Area select" action mode (ie
 +   using it as a lightbar base selector) will now set the OK ACS flag to true
 +   if the user selects a msg/file base.
 +
 + + The menu editor now pops up a selectable box of menu commands when setting
 +   a grid jump ID.
 +
 + + When calling the outbound telnet/rlogin/ssh menu command, the /PROMPT option
 +   can be supplied to hide displaying of the connection prompts.
 +
 + + The MYSTIC.DAT format has been expanded and restructured slightly.  This was
 +   to increase then number of FTN Networks from 30 to 50 but also some other
 +   minor changes:
 +
 +      SMTP login expanded to 60 characters
 +      SMTP password expanded to 128 characters
 +      Non-user password fields (matrix, newuser, etc) expanded to 25 chars
 +      Internet Domain expanded to 60 characters
 +      Added BBS Location field
 +
 +   The latest record structures are included in the docs folder (RecConfig is
 +   the record that has changed).
 +
 + + New MCI code BL displays the BBS location as set in configuration
 +
 + + Mystic's BINKP protocol will now send BBS Location if set in configuration
 +
 + + Prompt #150 has been changed to contain the server type text for the
 +   terminal servers (used in whos online and last callers, and the BD code).
 +   Make sure you don't forget to replace your prompts.dat when upgrading.
 +
 + + The POP3 server will now allow login via the full e-mail address instead
 +   of just the user name.  This helps some clients that do automatic setup of
 +   accounts that may attempt to use e-maill address for login.
 +
 + + The POP3 server will now log the actual back and forth of commands between
 +   client and server when Log Level for MIS is set to Max and also will log
 +   to the MIS status window whenever any messages are deleted.
 +
 + + The POP3 server will no longer wrap text at 80 columns and instead will send
 +   the content as is stored.
 +
 + + The POP3 server now supports opportunistic secure TLS.  A new option in
 +   the POP3 server settings to Force SSL only connections has been added.
 +
 + ! Fixed a bug in SMTP server that could cause a memory leak or a crash of the
 +   server when sending a message.
 +
 + + The SMTP server now allows for STARTTLS opportunistic TLS extensions
 +
 + + SMTP server now logs more data when max logging is enabled for MIS and also
 +   now logs when an e-mail is posted into the MIS status window.
 +
 + + The MN menu command now has an option /YOU which causes it to look ONLY at
 +   the To field to see if its addressed to you.  The personal scan option (by
 +   default) returns any message "From you or To you" but if /YOU is supplied it
 +   will return any message "To you" without checking the From portion.
 +
 + ! The G command to go to the next base during a ANSI message reader scan will
 +   no longer be active if the base is flagged as mandatory unless all messages
 +   are read.
 +
 + + MUTIL now has a -L or -LIST command which displays the header names
 +   that are available with the -RUN option.
 +
 + ! Fixed a bug when listing e-mail with the /unread option that could cause the
 +   header prompt to display multiple times.
 +
 + + The IR menu command now accepts /TERM=? to set the terminal type
 +
 + ! Fixed a bug with file list indexing that could cause strange results during
 +   duplicate file scans and mass uploads.  Everyone should run MUTIL's file
 +   pack function to regenerate their indexes:
 +
 +     mutil -run packfilebases
 +
 + ! When using the View archive function Mystic will now require the user to
 +   pass the "Download Unvalidated" and "Download Failed" ACS to be able to use
 +   the Download function from within the viewer if the file is flaggged as
 +   Unvalidated or Failed.
 +
 + ! MUTIL's echomail export was not removing netmail.out semaphore after running
 +
 + + The "install replace" function will now also replace prompts.dat in the DATA
 +   folder which updates the default system prompt data.
 +
 + + New prompt #329 is displayed when entering an illegal filename when
 +   attempting to download a file within the archive viewer (non-ANSI)
 +
 + ! The FV archive viewer command was doing a case sensitive filename search in
 +   Windows version. Fixed.
 +
 + + New ACS command: "OF" returns true if its the user's first call in today
 +   also added in "usertcalls" to MPL and "callstoday" to the Python user
 +   objects.
 +
 + ! This is an A47 specific bug but I am mentioning it because some people have
 +   reported this one: MUTIL should no longer add an extra line at the end of
 +   messages when packing the message bases.
 +
 + + Echomail Nodes now have an "Uplink" flag available to be set to Yes or No
 +   for each node.  A new command "MIS POLL UPLINK" works similarly to the
 +   FORCED command, but will only force a poll of nodes with the Uplink flag
 +   set to Yes.
 +
 + + New MPL function "FindUser (Handle, RealName: String) : LongInt"
 +
 +   This command returns the physical location of a user record in a file if
 +   one exists or a less than 1 value if they do not exist.  For example:
 +
 +   Number := FindUser('g00r00', '');
 +
 +   If Number > 0 Then Begin
 +     GetUser(Number);
 +     WriteLn('Your record has been read into User variables, ', UserHandle);
 +   End Else
 +     WriteLn('Could not find user record');
 +
 + + MUTIL's tosser will now ignore carriage returns when comparing message
 +   content during a duplicate message scan.  The downside of this is that it
 +   will require that the duplicate message database is reset.  To do this you
 +   must delete "echodupes.dat" from the DATA folder when MUTIL is not running
 +   after you have upgraded to the latest MUTIL.
 +
 + ! Mystic in Unix platforms was displaying flag1X and flag2X where X was the
 +   uppercased flag.  It will now display with the lower cased flag to be more
 +   consistant with other display files.  IE: flag1x flag2x
 +
 + ! Fixed an situation where a corrupt message in a PKT could sometimes cause
 +   MUTIL to crash with a 216 corrupted memory error.
 +
 + + Mystic in Windows has a new command line option -NODC when this is combined
 +   with passing a socket handle to Mystic, then it will not attempt to destroy
 +   the socket upon exit.
 +
 + + Mystic now has an option in System Configuration> General Settings to
 +   disable the time per day system for the entire BBS.  Note that when this
 +   feature is enabled, Mystic will not save modifications the user's time
 +   bank if they attempt to deposit or withdraw minutes.
 +
 + + New ANSI gallery (Menu action GA) replaces the old one.  This new version
 +   uses the new template system and is mostly the same as the old one with just
 +   a few quality of life changes:
 +
 +     - Mouse now works inside list box
 +     - Behavior of the ESCAPE key is now configurable
 +     - Uses the newer search system and template system
 +     - Support for showing newer SAUCE data in list
 +     - Menu command syntax has slightly changed:
 +
 +        Menu Command: GA
 +                Data: <path to files> [/TEMPLATE=mygallery] [/NOSAUCE]
 +
 +        The gallery defaults to looking for template 'gallery' but it can be
 +        overridden by using the /template= option.  When upgrading from the
 +        old gallery you might need to change the optional data field slightly
 +
 +   You will need to copy over the new default templates as per the upgrade
 +   instructions to get started.  The old ansigal* files are no longer used
 +
 + ! Fixed a bug where MIS was shutting down nodes after 24 minutes instead of 24
 +   hours when logged into the BBS from an external source (ie, a third party
 +   server or from -L local login).
 +
 + ! MIS ghost node checking for external server types has been revamped so that
 +   it will only shutdown a node spawned from an external process if their node
 +   activity status has not been updated for 24 hours.  Previously it would shut
 +   down any external node after 24 hours of connection even if they were still
 +   active.
 +
 + + The F3 menu command now allows for an /PROT=X option where X is the hotkey
 +   for the protocol.  This can be used to bypass the protocol selection and
 +   override the user's default protocol as well.
 +
 + + The F3 menu command now allows for a /NOPROMPT option which will skip the
 +   "Press <KEY> to begin transfer or <Q>uit" prompt.
 +
 + + Expanded the "data" field for menu commands to 200 characters in the menu
 +   editor.
 +
 + + MUTIL's "PackMessageBase" function will now automatically generate unique
 +   message IDs when packing messages if the message does not already have one.
 +   If you are using the NNTP server in particular you should consider packing
 +   your bases while upgrading so that it can make sure all the messages have
 +   MSGIDs assigned to them.
 +
 + + The NNTP server will now generate unique Article IDs for every message that
 +   works across all newsgroups offered instead of specific to each individual
 +   newsgroup.  This should fix some confusion with some newsreader clients but
 +   keep in mind you may need to clear your local cache in your newsreader as
 +   all message IDs will have changed.
 +
 + + The NNTP server will now automatically generate a MSGID for every message
 +   that it encounters if it does not already have one.
 +
 + + When posting or replying to a message Mystic will now always add a MSGID
 +   and TZUTC kludge line to a message, even if it is a local message or a
 +   non-FTN message.  Same for uploaded REP packets from BBS users.
 +
 + + Using MUTIL MsgPost should now always add a MSGID and TZUTC kludge even
 +   when the base is not a FTN base.
 +
 + + Users who upload REP packets via FTP and QWK networking via QWKPOLL should
 +   now always add MSGID and TZUTC kludges even if the base is not FTN
 +   (FidoNet) type.
 +
 + + NNTP server now supports NNTPS (NNTP via SSL TLS v1.2).  This was tested
 +   with some news readers like GrabIt successfully however there were some
 +   issues with SeaMonkey/Thunderbird connecting and I was not able to find
 +   proper documentation or logs for those readers to investigate.
 +
 + ! QWKPOLL was inappropriately creating a QWKMAIL.OUT semaphore when
 +   importing packets.
 +
 + ! When viewing a file and attempting to download a file from within an
 +   archived file, Mystic was not honoring the file bases's download ACS.
 +
 + + MUTIL EchoImport now has the ability to disable or enable circular dupe
 +   checking.  You can do this by setting "dupe_circular" to true or false
 +   in the ImportEchoMail stanza.  By default this will be enabled.
 +   
 +  <ALPHA 1.12 A47 RELEASED -- December 25, 2021>   
 +   
 +</code>
 +
 +===== 1.12 Alpha 48 =====
 +
 +<code>
 +
 +  + The MUTIL FileToss TIC import now has an "ignore_case" option on operating
 +    systems that use a case sensitive file system.  This option defaults to
 +    true and when set to true, Mystic will accept case variations of the
 +    filename.
 +  
 +    For example: If the filename defined inside the TIC file is "MyFile.ZIP"
 +    but the file on disk is "myfile.zip", it will still be tossed as if they
 +    are the same file even though they are not on a case sensitive OS.
 +  
 +    Mystic will also dynamically update the "File" field within the TIC file
 +    to match the filename case of the file on disk when tossing to any
 +    downlinks.
 +  
 +  + Mystic will now execute an "after_login.mpx" if it exists after the user
 +    has logged in.  This is ran directly after the user enters their password
 +    and passes through all login checks and stat resets.
 +  
 +  + Mystic will now execute a "before_menus.mpx" if it exists after the user
 +    has logged in and went through the entire login process, just before it
 +    sends them to their start menu.
 +  
 +    Here is an outline of the login events:
 +  
 +      BEFORE USER IS LOGGED IN:
 +  
 +      - Connection received, ask for system password if enabled
 +          - Display closed.xxx if password check is failed
 +      - Display Mystic Version
 +      - Execute connect.mpx
 +      - Detect/ask for terminal settings
 +      - Ask for theme selection if ask theme on startup is enabled
 +      - Execute startup.mpx
 +          - If startup newuser then start newuser application
 +          - If startup userlogin then log in user and skip matrix/login
 +      - Execute matrix menu if enabled until user login
 +          - If no matrix menu then display prelogin.xxx
 +          - If no matrix menu then show login prompt until user login
 +  
 +      AFTER USER IS LOGGED IN (includes after new user app):
 +  
 +      - Load/reset stats, user stats, ask for new password if expired
 +      - The following login steps are skipped for QWK network accounts
 +        but are otherwise executed for normal user logins:
 +          - Set or ask for invisible login if configured
 +          - Update whos online data, add call to lastcaller data
 +          - Execute after_login.mpx
 +          - Display login1-9.xxx
 +          - Display sl#.xxx
 +          - Display flag1#.xxx
 +          - Display flag2#.xxx
 +          - Display birthday.xxx
 +          - Check for forced voting questions
 +          - Execute before_menus.mpx
 +      - If QWK network user goto QWK network menu
 +      - If standard user goto user's start menu or default start menu if user
 +        does not have a start menu assigned to them
 +  
 +  + Menus now have a "Reset Activity" flag in the Menu Settings.  When this is
 +    set to Yes, any user activity will reset the TIMER counter for all menu
 +    types.
 +  
 +  + Internally generated Standard menus now have a left and right margin indent
 +    settings for 160+ columns (was only 80 and 132 previously).
 +  
 +  + The "Start Menu" field in the Security Profile editor no longer copies onto
 +    the user's record when upgrading user access.  Also when creating an new
 +    user the Start Menu field on the user editor no longer auto populates with
 +    the Default start menu from System Configuration.
 +  
 +    Instead, Mystic checks the start menu for the user's security profile on
 +    login.  The start menu logic works as follows:
 +  
 +      IF: User's record has a custom start menu defined, use it as start menu
 +      ELSE: If User's security level profile has a start menu defined, use it
 +      ELSE: Use default start menu from System Configuration> General Options
 +  
 +    Mystic will also now log which start menu is being loaded when a user logs
 +    in. "Setting start menu: prelogin (Default start menu)" for example.
 +  
 +    It might be a good idea if upgrading to check your security profiles to make
 +    sure the start menu field is set to a blank or a value that you want for
 +    users with those settings otherwise users could get an error loading menu
 +    error when logging in.
 +  
 +  ! Fixed a few message editor display quirks that found their way into A47
 +    final release.
 +  
 +  + New Python function for assistance in locating display and configuration
 +    files:
 +  
 +      function find_display (<base filename>) : string
 +  
 +      This function takes a base filename and returns the full path and
 +      filename of a display file that would be displayed after applying
 +      the user's emulation settings, screen size, and random selection
 +      system to it.  If no file is found a blank value is returned.
 +  
 +      If no path is included then Mystic will use the current theme's
 +      display path and if nothing is found, it will search through the
 +      theme's configured inheritance settings to try to locate a
 +      matching file.
 +  
 +      If a path is included in the base name, Mystic will search only
 +      within that path and base filename.
 +  
 +      For example:
 +        filename = find_display("myfile");
 +  
 +        (In this case filename may have a value of these examples):
 +        c:\mystic\themes\default\text\myfile.c132x37.ans
 +        c:\mystic\themes\default\text\myfile.ans
 +  
 +        Because no path was used it will also search for inherited themes
 +        based on the theme's configuration.  Include a path to only search
 +        in that path:
 +  
 +        filename = find_display("c:\mystic\mydoors\myfile")
 +        Result then might be: "c:\mystic\mydoors\myfile.ans" etc
 +  
 +  + New Python function for assistance in locating configuration files or
 +    other file types using Mystic's inheritance/dynamic terminal size systems
 +  
 +      function find_config (<base filename>, <file extension>) : string
 +  
 +      This function searches for the base filename and file extension and
 +      returns a valid file (if found) after applying the user's terminal
 +      size and random selection system.  This works under the same rules
 +      as the find_display function but does not apply the terminal
 +      emulation file extensions and instead uses the extension you supply.
 +  
 +      If no path is included in the base filename then Mystic will use the
 +      theme's text path and perform inheritance through the theme's
 +      configuration.
 +  
 +      filename = find_config("myconfig", "ini")
 +  
 +      The result of this might be values such as:
 +      c:\mystic\themes\default\text\myconfig.ini
 +      c:\mystic\themes\default\text\myconfig.c132x36.ini
 +  
 +      If you want Mystic to search only in one path and not perform theme
 +      inheritance when it cannot find something, then include a path with
 +      the base filename:
 +  
 +      filename = find_config("c:\mystic\mydoor\myconfig", "ini")
 +  
 +  ! Mystic when creating a downloadable file list Mystic was leaving the user
 +    in the last file base that was processed instead of keeping them in the base
 +    they were in when the download started.
 +  
 +  + New Python function setlogininfo (username, password, new)
 +  
 +    This function works as part of startup.mps script execution to set the login
 +    details for automated logins via script.  It is equivalent to setting
 +    "UserLoginName" "UserLoginPW" and "UserLoginNew" variables in MPL.
 +  
 +  + New Python function isvalidpw (password) : boolean
 +  
 +    This function returns true if the passed password is valid when compared to
 +    the password policy configured in System Configuration.
 +  
 +  + Two new MCI codes to display current time in 24-hour time format:
 +  
 +      TM - Displays current time in HH:MM 24-hour format
 +      TS - Displays current time in HH:MM:SS 24-hour format
 +  
 +  + New Prompt #328 for the standard archive viewer command prompt, when the
 +    user does not have access to download files.
 +  
 +    If you have never modified prompt #328 in your themes then this prompt
 +    will update on its own.  If you have customized prompt #328 previously
 +    then you will need to reset it to the default value in the prompt editor
 +    for your themes that have customized it.
 +  
 +  + Mystic's BINKP server now has a default "Escape mode" option which will
 +    apply to any unknown connections that do not have a configuration in the
 +    Echomail nodes.  Echomail nodes have their own individual setting for this
 +    in the node editor.
 +  
 +    This setting determines how Mystic will escape special characters in
 +    filenames and defaults to the Auto setting.
 +  
 +    When set to Auto, Mystic will automatically try to determine the escape
 +    mode by using the VERSION frame sent by the mailer.  If no version frame
 +    is found, Mystic will use FTS standard modern \x## escape mode.
 +  
 +    When set to Legacy, Mystic will use the \## format of file escaping which
 +    is used in some legacy mailers such as Argus, Internet Rex, and older
 +    versions of Mystic.
 +  
 +    When set to Modern, Mystic will use the \x## format which is preferred or
 +    even required by some newer mailers such as BinkD, Radius, and BinkIT.
 +  
 +    It is highly recommended to always keep these set to AUTO unless there is
 +    a very specific reason not to.  The escape mode will be logged after
 +    authentication if the loglevel is set to Verbose or higher.
 +  
 +  + New Python function isuserpw (user_password_data, password) : boolean
 +  
 +    This function tests the password against data from a user dictionary and
 +    returns true or false if the password supplied matches the user's password
 +  
 +    For example:
 +  
 +      user = getuser(0);
 +  
 +      if (isuserpw(user['pwdata'], 'MyPassword') == True):
 +            writeln("Your password is MyPassword!")
 +      else:
 +            writeln("Your password is NOT MyPassword");
 +  
 +  ! When a bad name was found in trashcan.dat, Mystic was telling the
 +    applicant that the user name is unacceptable while still continuing along
 +    in the new user process.  It will now refuse to continue as intended.
 +  
 +  + New MCI code "NT" returns the maximum number of allowed nodes/terminal
 +    connections.
 +  
 +  + New MCI code "NA" returns the number of active users currently logged into
 +    the BBS system.  Note that this value is only updated once per 30 seconds
 +    and if a user on another node is invisible to the current user, then
 +    they will be excluded from this number.
 +  
 +  + New option for the "NW" menu command to list who's online.  If the /SCAN
 +    optional data is supplied, Mystic will not display the whos online list but
 +    instead force recalculation of active users (returned by the NA MCI code).
 +  
 +    Mystic will automatically update the NA MCI code value on its own so for
 +    almost everyone this will never be needed.
 +  
 +  + Fixed a bug where termtype could be chopped off or blank if longer than
 +    10 characters.  Also increase reliability of TERMTYPE detection in Linux
 +    version.  Also, apparently TermType was accidentally left out of the A47
 +    whatsnew:
 +  
 +    MPL and MPY both have a termtype which returns the terminal type as sent
 +    via TELNET and RLOGIN sessions.  This was in A47 alphas and final but was
 +    left out and apparently wasn't working well anyway. :)
 +  
 +  + Mystic now has a -TT command line option which will override any detected
 +    TerminalType from TELNET/RLOGIN. ./mystic -ttANSI
 +  
 +  + Mystic's whitelist/blacklist for IP has been renamed to allowlist and
 +    denylist which better describes what it actually does.  If you are
 +    upgrading you should rename blacklist.txt to denylist.txt and
 +    whitelist.txt to allowlist.txt in your DATA folder.
 +  
 +  + TRASHCAN.DAT has been renamed to "badusers.txt" in the DATA folder which
 +    better describes what it actually does.  If you are upgrading you should
 +    rename your TRASHCAN.DAT file to badusers.txt in your DATA folder.
 +  
 +  ! MUTIL FileToss was not properly handling the REPLACE keyword when tossing
 +    a TIC replacing a file with a space in the filename.
 +  
 +  ! MUTIL FilePack was not properly setting the OFFLINE flag when check_files
 +    was enabled, remove_missing was disabled, and a file was physically removed
 +  
 +  + When running MUTIL without supplying an INI file on the command line, it
 +    will first search for mutil.ini in the current directory but if not found
 +    it will now also check to see if 'mysticbbs' environment variable is set
 +    and then search for the path defined there for mutil.ini.
 +  
 +  + Mystic will now automatically reset the base type to Local and remove other
 +    network settings if you try to change them for the local mailbox base (the
 +    first base) using the Message Base editor.
 +  
 +  ! Fixed a bug in the internally generated menus when using a higher column
 +    size count.
 +  
 +  + MUTIL now has an "EchoUnlink" option which scans Networked message bases
 +    and sends the SysOp a report of dormant message bases.  It can also be
 +    configured to automatically delete the message base, generate an Areafix
 +    unsubscribe Netmail to your uplink, remove downlinks, and free up all
 +    disk space used by the dormant message echo.
 +  
 +    Because it relies heavily on a complex configuration, this feature is only
 +    available when you are using Mystic for your echomail tossing solution.
 +  
 +    See the [EchoUnlink] stanza in the default MUTIL.INI that ships with
 +    Mystic for configuration options.  Here you need to define the parameters
 +    that define what a dormant echo is, what actions should be taken if any,
 +    and what echotags should be excluded (if any).
 +  
 +  ! Fixed a bug where the /Unsubscribe option for message bases was not using
 +    the newer routing logic from A47.
 +  
 +  ! Fixed a bug where the /Unsubscribe option for file bases was not using the
 +    newer routing logic from A47.
 +  
 +  + When searching for messages, Mystic will now allow you to search for a
 +    MSGID.  To do so, start searching for a message as you normally would and
 +    enter the message ID ie "a3c8d21c" (without the quotes of course).
 +  
 +  + Mystic's last callers file will now hold the user's personal number of
 +    calls into the BBS.  Prompt #141 will how use &D to show this number
 +  
 +  ! When autocreating a message echo during echomail import, Mystic would
 +    consider inactive echomail nodes as potential uplinks when calculating
 +    the uplink.
 +  
 +  ! Mystic will no longer allow PKT passwords to come from inactive nodes.
 +    This was originally allowed so that Fix messages could be processed from
 +    inactive nodes.  This may change again in the future.
 +  
 +  + Message Bases now have an "Anonymous" flag and when set to Yes, all From
 +    fields will be changed to "Anonymous" instead of the User's name.  Auto
 +    signatures will not be used in an Anonymous base even if the signature is
 +    enabled.
 +  
 +  + To further expand on the automatic Netmail routing logic, Mystic will now
 +    perform a FidoNet fuzzy zone match when auto routing Netmail.  If a zone
 +    is between 1 and 6 they will find a match to a hub which is also part of
 +    a zone 1 through 6 if no other (better) routing match could be found.
 +  
 +    To reiterate: For almost everyone, there is never a need touch the Route
 +    field in your Echomail node editor.  If you ever want to test where a
 +    Netmail will route you can type "mis poll route <address>" and it will
 +    tell you where Mystic will route a message to that address based on your
 +    current configuration.
 +  
 +  + Mystic's BinkP both server and client now supports Opportunistic TLS.  This
 +    allows for connections on a stadard BinkP port to automatically "upgrade"
 +    to a secure TLS connection if both the client and server support it.
 +  
 +    Two new options have been added, one in Server Configuration and one for
 +    EchoMail Node Configuration:
 +  
 +    EchoMail Nodes now have an expanded "Server Type" setting under the BINKP
 +    configuration page.  Four possible options:
 +  
 +      Normal                  : Do not use SSL at all
 +      Direct SSL              : Connect with a direct SSL connection
 +      StartTLS (If Available) : Use TLS when available
 +      StartTLS (Required)     : Always require SSL connection to remote
 +  
 +    The StartTLS Required option will refuse to authenticate with any server
 +    that does not offer the opportunistic TLS upgrading.
 +  
 +    BINKP Server Configuration now has a new "Allow StartTLS" option which
 +    determines how your server will operate.  Possible options are:
 +  
 +      No     : Never allow opportunistic TLS connections
 +      Yes    : Offer to use TLS connection with clients when available
 +      Forced : Require a secure SSL/TLS connection with client always
 +  
 +    The Forced option will cause the BINKP server to refuse any connection that
 +    is not TLS.  The client must connect via Direct SSL or on the standard port
 +    and then upgrade to TLS.  All non-secure clients will be refused.
 +  
 +    As usual these features will require that CryptLib is present and detected
 +    by Mystic.
 +  
 +  + New door command line MCI codes: %X and %Y return the user's terminal size
 +    (X and Y) and %E returns the user's terminal type (if known)
 +  
 +  ! CHAIN.TXT was always writing column 80 even when the user's terminal size
 +    was larger.  It should now write the proper column size.
 +  
 +  ! PING responses were not including the PKT password when sending to a node
 +    with PKT passwords enabled.
 +  
 +  ! Fixed a bug in file indexing that was causing duplicate file searching and
 +    mass uploads to behave strangely within Mystic BBS (MUTIL was ok).  As a
 +    result everyone should run "mutil -run packfilebases" to regenerate the
 +    indexes properly.
 +  
 +  + Mystic event editor now has a /Move option similar to what is found in the
 +    message and file base editors.
 +  
 +  + Mystic events now have an option to automatically prefix command line calls
 +    in Linux with "./" which can be configured on a per-event basis.
 +  
 +  ! Mystic's online mass upload will now rename files longer than the current
 +    maximum filename length if a file is found to be longer than whatever the
 +    current maximum allowed length is.  This was intended but was only working
 +    for traditional uploads and blind uploads.
 +  
 +  + MUTIL's Mass Upload now has a "length_rename" option which defaults to
 +    TRUE.  When set to true, Mass Upload will automatically rename filenames
 +    that are longer than the maximum allowed filename.
 +  
 +  + MUTIL's Import FILES.BBS now has the option to support description wrapping
 +    when importing single line file definitions where the first word is the
 +    filename (this format cannot support spaces) followed by a long line of
 +    text that is the file description.
 +  
 +  + When importing TIC files, Mystic will now wrap the DESC tag when using it
 +    for a file description.  The DESC tag is only used when a file has no
 +    FILE_ID.ANS/DIZ, and there is also no LDESC tag in the TIC file.
 +  
 +  + By request: Added a "botcheck.mps" which is a small MPL script to force the
 +    user to press escape twice immediately after connecting.  Rename to
 +    connect.mps and compile in your scripts directory (assuming you are not
 +    already using a connect script) if you wish to use it.
 +  
 +  + The !C menu command to create a semaphore now adds three lines of text to
 +    the semaphore file:
 +  
 +      Line 1: User ID
 +      Line 2: User Handle
 +      Line 3: Node number
 +  
 +    If no user was logged in when this was created the ID will be -1 and the
 +    handle blank.
 +  
 +  ! Fixed a bug in Message Base packer that could cause LR pointer to be set
 +    incorrectly when packing/purging a huge amount of messages.
 +  
 +  + BINKP will now show periodic updates during file transfer, updating roughly
 +    every 10 seconds during the transfer.  BINKP will also log a confirmation
 +    line when a file is confirmed to be sent or received instead of only at the
 +    start.
 +  
 +  + BINKP now has the ability to limit the bandwidth used when sending or
 +    receiving files.  Setting any of these values to 0 disables the limit
 +    and causes them to operate at full speed.  Any non-zero value sets the
 +    maximum rate in Kilobytes (KB) to use for the connection.
 +  
 +    Two new options have been added to the BINKP Server configuration as well
 +    as in Server > General Settings for MIS POLL and in EchoMail nodes for
 +    specific nodes to override those other settings:
 +  
 +    BINKP Server setting: (Server > Servers > BINKP)
 +  
 +  Download speed limit (for your server when you receive files)
 +  Upload speed limit (for your server, when you send files)
 +  
 +    MIS POLL setting (Server > General Options):
 +  
 +  Download speed limit (for your client, when you receive files)
 +  Upload speed limit (for your client, when you send files)
 +  
 +    EchoMail Node setting (Overrides MIS POLL/BINKP settings if enabled):
 +  
 +  Download speed limit: (Used when you receive files from this node)
 +  Upload speed limit: (Used when you send files to this node)
 +  
 +  + BINKP clients will now respond to a LIMIT frame sent from the remote
 +    connection which allows the receiving server to tell the sender the rate
 +    that it would like files to be sent.  Mystic will not accept a LIMIT frame
 +    less than 2KB (1024 x 2 bytes) and will set anything lower than that to
 +    2KB.
 +  
 +    This is helpful when using bandwidth limits because it is possible for the
 +    sending system to send all of the data for a file at full speed into the
 +    Internet void and then timeout while waiting for a response. (This happens
 +    if the server is using a limited bandwidth and hasn't actually received the
 +    file within the sender's timeout period).
 +  
 +  + EchoNode editor now has a Global editor for editing some values across many
 +    tagged Echomail nodes, including the new node-specific bandwidth limiters.
 +  
 +  + BINKP received/sent messages will now show how long a file transfer took up
 +    to the hundredth of a second in its log messages.
 +  
 +  + The AREAS.BBS export in MUTIL now has a "net_only" option which when set
 +    to false will cause MUTIL to export all bases in AREAS.BBS not just the
 +    Networked bases.
 +  
 +  + The default value for the "To:" field when posting a message is now
 +    configurable on a per-theme basis.  The value of prompt #104 will now be
 +    used as the default for the To field.  If you've never modified this then
 +    you don't have to do anything but you may need to reset it to default in
 +    the prompt editor otherwise.
 +  
 +  + MUTIL ImportEchoMail now has a "dos_filename" option that can be used to
 +    create JAM filenames in the DOS 8.3 file format.  Valid options are:
 +  
 +      0 = Do not use 8.3 filename (uses echotag for filename)
 +      1 = Use shortened 8.3 filename (trimmed based on the echotag name)
 +      2 = Use random hex 8.3 filename
 +  
 +  + MUTIL GoldEd export now has an option to set the group value which can be
 +    up to 6 characters/numbers.  This value will be used in the Group column
 +    when exporting data.
 +  
 +  + MUTIL GoldEd export now has the option to define a zone and if set to a non
 +    zero value will only export bases where the base's network address matches
 +    the configured zone (use if you only want to export FidoNet for example).
 +  
 +  + MUTIL TopList will now allow @RN to be used in the template to show the
 +    user's real name instead of @NA which uses the user handle.
 +  
 +  + The Message Base editor now has a /B option to Select By Network.
 +  
 +  + The File Base editor now has a /B option to Select By Network.
 +  
 +  ! Mystic default install was accidentally installing a startup.mps and
 +    startup.mpx file.  If you are not already using a custom startup script
 +    then you should make sure to delete them from your theme's scripts
 +    directory as they are not intended to be included or installed.
 +  
 +  + FTP server now has an option to test uploads in server options.  Use @FN
 +    to replace with the path and filename of the upload for tests.  Failed
 +    tests will end up in the file listings flagged as "Failed"
 +  
 +  + The FTP server will now send robots.txt from the DATA folder if any FTP
 +    client requests it at the root directory.  The default install will now
 +    include a robots.txt that denies all crawling.
 +  
 +  ! FTP server was failing when changing directories to any FTP directory name
 +    that had a period in the name.
 +  
 +  + New MCI code: DN returns the configured BBS domain name
 +  
 +  + New .INI file can be placed in a Theme's text directory or in the DATA
 +    folder to allow customization of the validate e-mail address e-mail
 +    contents.
 +  
 +    The default installation now comes with a emailval.ini file in the DATA
 +    folder which can be used to learn more.
 +  
 +  + New .INI file can be placed in a Theme's text directory or in the DATA
 +    folder to allow customization of the password reset e-mail contents.
 +  
 +    The default installation now comes with a resetpw.ini file in the DATA
 +    folder which can be used to learn more.
 +  
 +  + The Coord1 in the message editor template (msg_editor.ini by default) now
 +    defines the text attrbute used when doing things such as line clears.  This
 +    option inheritantly allows for editors with non-black backgrounds to
 +    function as expected.
 +  
 +  ! Creating a user in the user editor was not properly setting their tagline
 +    default setting.
 +  
 +  ! Mystic will no longer show "user is marked unavailable" message when sending
 +    a system broadcast to a node with message availability disabled.
 +  
 +  ! When paging another user for user to user chat, Mystic will no longer show
 +    that the node is unavilable if enter is pressed on the node number prompt.
 +  
 +  ! Mystic will no longer display "This base is marked mandatory" when toggling
 +    all bases on or off in the scan settings for message/file/qwk bases.
 +  
 +  ! MIS was not properly returning the "OV" ACS command result when evaluating
 +    ACS strings.
 +  
 +  ! The badusers.txt check was case sensitive when it should have been
 +    insensitive
 +  
 +  + FTP server now logs if an upload test passes or fails and the result code
 +    when it does fail.
 +  
 +  ! Mystic user to user split and line chats were not exiting properly if the
 +    remote user dropped connection.
 +  
 +  ! Netmail PING responses were not properly setting the message date field
 +  
 +  ! Fixed a bug where MUTIL could add a 0:0/0 address in the VIA kludge when
 +    routing Netmail between FidoNet zones.
 +  
 +  ! MIS FTP server was allowing logins when the user was flagged locked out
 +  
 +  ! MIS SMTP server will now refuse to allow e-mail sent from any user who
 +    is locked out.
 +  
 +  ! MIS NNTP server will now refuse to allow logins from locked out users
 +  
 +  ! MIS POP3 server will now refuse to allow logins from locked out users
 +  
 +  ! Fixed a number of bugs when toggling QWK network scan settings for a QWK
 +    network user.
 +  
 +  ! Fixed a number of bugs when toggling new scan settings with compression
 +    turned off.
 +  
 +  + Mystic now tracks the number of doors opened by a user when using a DOOR
 +    menu command.  Door command lines can have a /NOSTAT at the end of the
 +    command line in optional data to tell Mystic not to increment the users
 +    door count.
 +  
 +  + New ACS commands:
 +  
 +      O1 : True if user posted during this call
 +      O2 : True if user sent local e-mail during this call
 +      O3 : True if user uploaded during this call
 +      O4 : True if user downloaded during this call
 +      O5 : True if user opened a door during this call
 +  
 +  + Mystic now updates callers.dat (Last caller information) when exiting the
 +    BBS to include some additional statistics:
 +  
 +      Time spent online (Stored in seconds. 0=Still online)
 +      Number of posts made during call
 +      Number of emails sent during call
 +      Number of files uploaded
 +      Number of file data uploaded in kilobytes
 +      Number of files downloaded
 +      Number of files downloaded in kilobytes
 +      Number of doors opened
 +      Current state at logoff of all access flags (set 1)
 +      Current state at logoff of all access flags (set 2)
 +  
 +      The 10 optional user data fields are also saved when the user logs out.
 +      Along with flags, these can be used to track custom data throughout a
 +      session.
 +  
 +  + Menu editor will now pop up a notification if you reach the max number of
 +    action items per menu command and try to paste or insert a new command.
 +  
 +  + User access flags and Echomail node security flags now have a new editor
 +    which allows for more ways to toggle flags and also allows for a
 +    description to be assigned to each flag.
 +  
 +  ! The NA imports in MUTIL were accidentally dupe checking against the
 +    filename not the EchoTag, causing the import to not catch duplicates in
 +    some situations (where filename was not equal to the echo tag).
 +  
 +  + New MCI code FLxx retuns the ON/OFF prompt depending on the user flag
 +    state.  The xx defines the set and the flag, for example: FL1A would
 +    return on/off state of the user's A flag in flag set 1.
 +  
 +  + New MCI code FDxx returns the flag description where xx defines the set
 +    and the flag.  For example FD1A would return the description for flag
 +    set 1, flag A.
 +  
 +  + New MCI code HXxx sends a hex byte. For example ASCII 254 is FE in
 +    hex so HXFE would send out ASCII 254.
 +  
 +  + Built a new Python loader which will do better at trying to find your
 +    Python information when the Python2 and Python3 library paths are not
 +    set in System Configuration > General Settings.  Leaving those two blank
 +    should now be more likely to work.
 +  
 +  ! Fixed a bug in user to user split screen chat where backspace was not
 +    updating in the terminal.
 +  
 +  ! Fixed a bug in user to user split screen chat where the screen could get
 +    corrupted and go crazy if the user was doing something that used the newer
 +    template format (such as posting a message in the editor, ANSI viewer, etc)
 +  
 +  + Optimized MUTIL's LinkMessages function to increase speed
 +  
 +  + The "MIS POLL SEARCH" (replacement for the same function in FidoPoll) was
 +    accidentally missing.  Its there now.
 +  
 +  + I noticed that pipedoor.ini is not mentioned in the whats new.  I don't
 +    remember when it was added, but Mystic creates an ini-like door drop file
 +    called pipedoor.ini.  The idea behind this is that it can easily be expanded
 +    on with additional fields since it uses a key=value pair on each line.
 +  
 +    There is a doorkit I was working on with the same name that may be released
 +    at some point.
 +  
 +  + New MCI code: LF loads the last font.  Reminder: Font MCI codes only
 +    work when a theme's font is not set to Disabled.
 +  
 +  + New MCI code LC loads the last color mode (ICE/Blinking).  Reminder: Color
 +    system MCI codes only work when a theme's color mode is not set to Disabled
 +  
 +  + Mystic now reads column information from SAUCE when importing FILE_ID.ANS
 +    files and uses them to render if found.  This fixes some "broken" ANSI
 +    file descriptions found in some art packs that were saved in an odd column
 +    size like 44 characters.
 +  
 +    If you see an ANSI description that isn't showing properly, edit it while
 +    listing files and press I to reimport the DIZ to possibly fix it.
 +  
 +  + Mystic will now switch fonts and color modes if a theme has font and/or
 +    color modes set and an ANSI .DIZ file description has SAUCE with font
 +    or color information.
 +  
 +    This means listing files in an Amiga font with blinking text, Mystic will
 +    switch to CP437 and ICE colors just for the ANSI description and then
 +    revert back to the previous font/color mode.  The result is ANSI
 +    descriptions showing properly in Amiga themes and Amiga descriptions showing
 +    properly in ANSI themes.
 +  
 +    Here is a screen capture to demonstrate: https://postimg.cc/TptgGzn6
 +  
 +    In the screenshot, the theme is Amiga font yet Mystic enables ICE and
 +    CP437 just to display the description because the FILE_ID.ANS has SAUCE
 +    information that explains it should be CP437 with ICE colors.  Note the
 +    prompt and filename in Amiga font while description is ANSI
 +  
 +    Note: Existing ANSI file descriptions need to be reimported before they
 +    will work.  Files that were imported to the BBS before Mystic was SAUCE
 +    aware will not have these new features and fixes.
 +  
 +  ! Fixed a bug that was causing IPV6+IPV4 (Default IPV6) to not properly
 +    fallback to IPV4 if the IPV6 connection failed.
 +  
 +  + New MCI code |SI returns the "ID" of the server that the user connected
 +    through (as defined in the Server Configuration) or blank if the connection
 +    did not source through MIS.
 +  
 +  + New command line -SID<name> allows an 8 character ID to be passed to Mystic
 +    which will become the value of the |SI MCI code (for use with a 3rd party
 +    server).
 +  
 +    <ALPHA 1.12 A48 RELEASED -- January 15, 2023>
 +  
 +</code>  
whats_new_112.1494044033.txt.gz · Last modified: 2017/05/05 23:13 by avon

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki