***************************************************
* What's New in Synchronet Version 3.19 for Win32 *
* (ChangeLog since v3.18b for Win32 Sep 20, 2020) *
***************************************************
Terminal Server
~~~~~~~~~~~~~~~
o Add support for NTVDMx64 (16-bit DOS doors on x64 editions of Windows)
http://www.columbia.edu/~em36/ntvdmx64.html for more details
o Allow FOSSIL mode of the Win32 virtual UART/FOSSIL driver to be disabled
o Allow "FOSSIL Only" as a configuration option for external programs in SCFG
o Load/keep/refresh each node's configuration in memory
Configuration changes are more readily visible (just log-off and back on)
o Changed user birthdate storage format to YYYYMMDD, input to MM/DD/YYYY
o Up to 40 characters can be configured by the sysop for gender options
The default choice/configuration is now: "M/F/X" (not just "M/F")
o Don't force password-changes for users with blank passwords (e.g. Guest)
o Allow node directory to be configured in Advanced node options
o Support for manual terminal width setting and terminals with > 99 rows
o String command (';find') to find message and file areas by search word
o Access Requirement Strings (ARS)
- SYSOP ARS keyword now applies to target user, not necessarily the user online
o New @-codes (see http://wiki.synchro.net/custom:atcodes for more details):
- !x to perform Ctrl-A style terminal/attribute control
(performs equivalent to Ctrl-Ax)
- TEXT:<num> (display text.dat string #num)
- NETMAIL (user's personal netmail or email address)
- FWD ("On" if the user has opted for forwarding their mail to netmail or "Off")
- TMP (user's chosen temporary file type, e.g. "ZIP")
- NOTE (user's note, same as MEMO1)
- UDR (user's upload/download byte-ratio)
- UDFR (user's upload/download file ratio)
- LASTIP (user's most recent IP address at time of logoff)
- BIRTH (user's birthdate in for full-format, i.e. MM/DD/YYYY or DD/MM/YYYY)
- BDATEFMT (user birthdate input format, alias: BIRTHFMT)
- SYSAVAILYN (same as SYSAVAIL but expands to "Yes" or "No" instead)
- SHOW:<ars> (only show the following text to users meeting ARS)
SHOW (restore console output for all users)
- MSG_THREAD_ID, MSG_THREAD_BACK, MSG_THREAD_NEXT, MSG_THREAD_FIRST
- FREESPACEM (free disk space in Mebibytes)
- FREESPACEG (free disk space in Gibibytes)
- FREESPACET (free disk space in Tebibytes)
- FILE_TAGS (tags for currently displayed file)
- MAILR and MAILR:# (number of read mail messages waiting)
- MAILU and MAILU:# (number of unread mail messages waiting)
- GIT_HASH (Git commit hash of current build)
- GIT_BRANCH (Gir branch name of current build)
- SEX (user's gender) and GENDERS (gender options)
- Support C escape sequences in FILL @-code argument
e.g. FILL:\x20 to fill with space
- Support strftime format arguments (w/C escape sequencs) to DATE/TIME @-codes
DATE: (alias: TIME:)
BDATE: (alias: BIRTH:)
PWDATE:
SINCE:
LASTON:
FIRSTON:
LASTNEW:
EXPDATE:
- WAIT:<tenths_of_second> (wait a duration or for any key press)
- CONTINUE (wait for key press, aborting display upon 'N' or Ctrl-C)
- GETKEY (wait for any key press)
o New option to create door drop files in node's temp directory
o HAPROXY support option
o Support markup tags (optionally) when displaying posts
o Support PETSCII terminals connected to non-PETSCII ports
o Support forwarding of local email msg to networked mail (w/comments)
and change of message subject
o Store client terminal information in node#/terminal.ini
for future use (e.g. for improved node spying)
o Create node#/client.ini for each node client connection
o Support 3rd party installer files for 150+ external programs (doors)
See xtrn/3rdp-install/README.md for details
o New text.dat strings (see docs/text319b.dif for full list of changes):
HowManyColumns
InternetMailSent
FidoNetMailSent
QWKNetMailSent
MsgsToYouOnlyQ
ToYouOnly
SetMsgPtrPrompt
DateLastKeys
DirLibKeys
SubGroupKeys
AllKey
All
ListKey
FileInfoEditPrompt
EditExtDescriptionQ
FiTags
FiUploadedTo
FiChecksum
FiAuthor
FiGroup
TagFileQ
TagFilePrompt
EnterYourGender
DisplayExtendedFileInfoQ
General
~~~~~~~
o New file base format (based on SMB), see docs/newfilebase.txt
- supports long filenames
- better support for files > 2GB and 4GB
- extended file descriptions up to 4000 chars are now supported
- supports file tags (specified by uploader, optionally, per directory)
- stores and reports MD5 and SHA1 hash of files
DIZ enhancements: Read/use SAUCE data, support ANSI, increase max 1->4K
Inspired by Blocktronics (and other ANSI art group) packs' FILE_ID.DIZ/ANS
files:
- Support (and prioritize) FILE_ID.ANS
- Convert ANSI color/attribute sequences in DIZ files to Ctrl-A equivalent
(uses SAUCE width and ICE color, if specified)
- Don't treat DIZ as a series of lines, they're not always nowadays.
- New putmsg() mode: P_INDENT to print files indented by current column
- Display full (up to 64-char) filenames in lists when using 132+ column
terminal.
- Use the Author, Group, and Title fields from the SAUCE if present/non-blank
o libarchive integration (into SBBS and SBBSecho)
built-in support for creating/extracting zip, 7zip, and tgz files
additional read-only formats: rar, lha/lzh, iso, xar, and cab
o Give sysop more control over characters allowed in uploaded filenames
o Recognize the "standard" USENET signature delimiter: "\n-- \n"
o Use Linux OFD locks on 64-bit Linux builds
o Use a more-liberal username matching algorithm
e.g. Ignore all non-trailing non-alphanumeric characters
o Support for single-part MIME-attachment decode/download
o .ini file !include now supports wildcard patterns
e.g .!include modopts.d/*.ini
o Support for "name@address" syntax in twitlist.cfg
JavaScript
~~~~~~~~~~
o Added 'user' properties: birthyear, birthmonth, and birthday
o Added 'system.text()' method: similar to bbs.text()
o New JS User.stats properties:
- read_mail_waiting
- unread_mail_waiting
- spam_waiting
o New FileBase class
o New Archive class
o New JS system properties: git_hash and git_branch
o Add edit_msg() and forward_msg() methods to JS 'bbs' object
o Expose the next-run-date/time for an event as a new `next_run` property
for `xtrn_area.event[]` (in `time_t` format) for easier debugging of these
kinds of issues
o File.iniGetValue(), iniGetKeys(), iniGetObjects() now supported nested
(!include'd) .ini files
o 'jsexec -r<expression>' to evaluate a JS expression from command-line
o More control over jsexec console output streams (-A and -S options)
o New bbs.view_file(filename) method
o Add bbs.export_filelist() method
o Add bbs.msg_from_bbsid property
The following properties would only reflect the status at the time the
file_area object was initialized:
- can_access
- can_upload
- can_download
- is_operator
- is_exempt
... so if changes were made the user while online, for example, these property
values would *not* also change to reflect the current state.
The lib[] and lib_list[] 'can_access' properties still have this flaw.
Also: Add a new "files" property to the dir[] and dir_list[] objects to report
the current number of files in each directory database.
The following properties would only reflect the status at the time the
msg_area object was initialized:
- can_access
- can_read
- can_post
- is_operator
- is_moderated
... so if changes were made the user while online, for example, these
property values would *not* also change to reflect the current state.
Also: Add a new "posts" property to the sub[] and sub_list[] objects to
report the current number of posted messages (quicker than opening a MsgBase
instance).
SBBSecho
~~~~~~~~
o Signal the sub-board's configured semaphore file when importing echomail
o Don't attempt to parse origin addr from origin lines in NetMail msgs
o Support user netmail forwarding
o Automatically route in-transit mail to points to boss nodes
o When packing netmail (stored messages), don't discard non-zero zones
o Log an error and exit immediately when a local linked-node is configured
o Generate a MSGID kludge for netmail messages created by SBBSecho
o Built-in sbbsecho.log rotation
New configuration params: MaxLogSize (default: 10M) and MaxLogsKept (10)
Control Panel
~~~~~~~~~~~~~
o New sem-file: ctrl/sound.mute
o Update sound (WAV) file play-on-event support in Windows build
o A "hack attempt" sound file is now supported in the Terminal Server, Mail
Server, and Services
o "login" and "logoff" sound files are now supported in the Terminal Server,
FTP Server, Web Server, Mail Server, and Services.
o The following sound files may now be configured in the [Global] section of
the ctrl/sbbs.ini file, if desired to set the default sound files for all
servers/services in on place:
- AnswerSound
- LoginSound
- LogoutSound
- HangupSound
- HackAttemptSound
Web Server
~~~~~~~~~~
o Fix requests to the webserver using IPv6 address http://[1234:1234::]
requests
o Fix heap corruption that could occur when HSTS feature is enabled
FTP Server
~~~~~~~~~~
o Disable FTP Bounce (FXP) support by default (but configurable)
o FTPS (FTP over TLS) fixes (e.g. uploads)
o Implement max concurrent connections for FTP
by setting MaxConcurrentConnections in the [ftp] section of sbbs.ini
Mail Server
~~~~~~~~~~~
o Optionally limit concurrent connections to mail server
via MaxConcurrentConnections key in [mail] section of sbbs.ini
o Reject control chars in base64-decoded auth credentials (name/password)
o POP3 CAPA cmd support in transaction state
o Detect and reject forged "from" fields in submitted msg headers
o No longer decodes based64-encoded messages before storing in msg/mail base
o Support quoted filenames in message subjects
smbutil
~~~~~~~
o Don't count vote/poll messages when purging to meet the maximum msgs setting
o New commands to flag/unflag all messages for deletion
o Replace ESC chars with '.' when viewing messages, support '-<count>' with 'r'
o Also, allow continuous reading of 1 or more consecutive messages using the
-<digit> option (no prompting)
Stats
~~~~~
o About 15 months of development (Oct-2020 through Dec-2021)
o 2276 files changed, 326374 insertions(+), 187917 deletions(-)
o v3.19a first appeared in Git (w/new FileBase) on April 4, 2021