*************************************************** * 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: (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: (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: (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' 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 '-' with 'r' o Also, allow continuous reading of 1 or more consecutive messages using the - 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