Commits (3)
***************************************************
* What's New in Synchronet Version 3.19 for Win32 *
* (ChangeLog since v3.18b for Win32 Sep 20, 2020) *
***************************************************
Terminal Server
~~~~~~~~~~~~~~~
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 Add support for NTVDMx64 (16-bit DOS doors on x64 editions of Windows)
o Don't force password-changes for users with blank passwords (e.g. Guest
o Allow node directory to be configured in adv. node options
o Support for manual terminal width setting and terminals w/ > 99 rows
o String command (e.g. ';find') to find message and file areas by word
o Access Requirement Strings (ARS)
- SYSOP ARS keyword now applies to target user, not necessarily the user online
o New @-codes:
- !x to perform Ctrl-A style terminal/attribute control
- TEXT:<num> to display text.dat string #num
- NETMAIL: user's personal netmail or email address - for WitNik
- FWD: "On" if the user has opted for forwarding their mail to netmail or "Off"
- TMP: user's chosen temporay file type (e.g. "ZIP")
- NOTE: user's note (same as MEMO1)
- UDR (upload/download byte-ratio)
- UDFR (file ratio)
- LASTIP: user's most recent IP address at time of logoff
- BDATEFMT
- BIRTH: for full-format (MM/DD/YYYY or DD/MM/YYYY) user birthdate
- SYSAVAILYN - same as SYSAVAIL but expands to Yes or No instead
- SHOW:<ars> to only show text to users meeting ARS
- MSG_THREAD_ID
- MSG_THREAD_BACK
- MSG_THREAD_NEXT
- MSG_THREAD_FIRST
- FREESPACEM - Mebibytes
- FREESPACEG - Gibibytes
- FREESPACET - Tebibytes
- MAILR (read mail waiting)
- MAILU (unread mail waiting)
- GIT_HASH
- GIT_BRANCH
- SEX and GENDERS
o New aliases (for consistency): BIRTHFMT -> BDATEFMT and BIRTH:<fmt> ->
BDATE:<fmt>
o Support C escape sequences in FILL @-code argument
e.g. FILL:\x20 to fill with space
o Support strftime format arguments to DATE/TIME @-codes
- DATE: (alias: TIME:)
- BDATE:
- PWDATE:
- SINCE:
- LASTON:
- FIRSTON:
- LASTNEW:
- EXPDATE:
- GETKEY
- WAIT:<milliseconds>
- CONTINUE
o New option to create door drop files in node's temp directory
o Changed user birthdate format to YYYYMMDD, input to YYYY/MM/DD
o Support markup tags (optionally) when displaying post
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
o Create node#/client.ini for each node client connection
o Load/keep/refresh each node's configuration in memory
o Support 3rd party installer files for 150+ external programs (doors)
See xtrn/3rdp-intall/README.md for details
o new text.dat strings:
- InternetMailSent
- FidoNetMailSent
- QWKNetMailSent
- FileInfoEditPrompt
- EditExtDescriptionQ
Change SearchExtendedQ to DisplayExtendedFileInfoQ
- FiAuthor
- FiGroup
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
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 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 HAPROXY support option
o Support for single-part MIME-attachment decode/download
o .ini file !include now supports wildcard patterns, e.g .!include modopts.d/*.ini
Allow sysop to configure new user gender options (not just M/F)
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")
New @-code: GENDERS
text.dat EnterYourSex -> EnterYourGender
Add support for "name@address" syntax in twitlist.cfg
Security
~~~~~~~~
o Give sysop more control over characters allowed in uploaded filenames
JavaScript
~~~~~~~~~~
o Added 'user' properties: birthyear, birthmonth, and birthday
o Added 'system.text()' method: like bbs.text()
o More control over console output streams (-A and -S options)
New JS User.stats properties:
- read_mail_waiting
- unread_mail_waiting
- spam_waiting
New FileBase class
New Archive class
New JS system properties: git_hash and git_branch
Add edit_msg() and forward_msg() methods to JS 'bbs' object
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.
Also expose the error log level as a new property: `error_level` while we're
here.
File.iniGetValue(), iniGetKeys(), iniGetObjects() no supported nested
(!include'd) .ini files
'jsexec -r<expression>' to evaluate a JS expression from command-line
New bbs.view_file(filename) method
Add bbs.export_filelist() method
Add BBS property: msg_from_bbsid
Exposes the FTN BBSID value from the message header (if there is one).
Fix: can_* and is_* properties were not dynamic. Added "files" 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.
Fix: can_* and is_* properties were not dynamic. Added "posts" property.
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.
The grp[] and grp_list[] 'can_access' properties still have this flaw.
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
~~~~~~~~~~~~~
New sem-file: ctrl/sound.mute
Update sound (WAV) file play-on-event support in Windows build
A "hack attempt" sound file is now supported in the Terminal Server, Mail
Server, and Services.
"login" and "logoff" sound files are now supported in the Terminal Server, FTP
Server, Web Server, Mail Server, and Services.
This enhancement fixes Issue #157
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)
...@@ -46,6 +46,12 @@ ...@@ -46,6 +46,12 @@
#define DOSXTRN_REVISION 26 #define DOSXTRN_REVISION 26
#define VDD_FILENAME "sbbsexec.dll" #define VDD_FILENAME "sbbsexec.dll"
#if 0
#define DEBUG_INT_CALLS
#define DEBUG_DOS_CALLS
#define DEBUG_FOSSIL_CALLS
#endif
/****************************************************************************/ /****************************************************************************/
/* Truncates white-space chars off end of 'str' and terminates at first tab */ /* Truncates white-space chars off end of 'str' and terminates at first tab */
/****************************************************************************/ /****************************************************************************/
......
...@@ -665,8 +665,10 @@ void sbbs_t::printnodedat(uint number, node_t* node) ...@@ -665,8 +665,10 @@ void sbbs_t::printnodedat(uint number, node_t* node)
outchar('A'); outchar('A');
if(node->misc&NODE_LOCK) if(node->misc&NODE_LOCK)
outchar('L'); outchar('L');
if(node->misc&(i&(NODE_MSGW|NODE_NMSG))) if(node->misc&(i&(NODE_MSGW)))
outchar('M'); outchar('M');
if(node->misc&(i&(NODE_NMSG)))
outchar('N');
if(node->misc&(i&NODE_POFF)) if(node->misc&(i&NODE_POFF))
outchar('P'); outchar('P');
outchar(')'); outchar(')');
...@@ -683,8 +685,6 @@ void sbbs_t::printnodedat(uint number, node_t* node) ...@@ -683,8 +685,6 @@ void sbbs_t::printnodedat(uint number, node_t* node)
outchar('R'); outchar('R');
if(node->misc&NODE_UDAT) if(node->misc&NODE_UDAT)
outchar('U'); outchar('U');
if(node->status==NODE_QUIET)
outchar('Q');
if(node->misc&NODE_EVENT) if(node->misc&NODE_EVENT)
outchar('E'); outchar('E');
if(node->misc&NODE_DOWN) if(node->misc&NODE_DOWN)
...@@ -693,6 +693,8 @@ void sbbs_t::printnodedat(uint number, node_t* node) ...@@ -693,6 +693,8 @@ void sbbs_t::printnodedat(uint number, node_t* node)
outchar('C'); outchar('C');
if(node->misc&NODE_FCHAT) if(node->misc&NODE_FCHAT)
outchar('F'); outchar('F');
if(node->status==NODE_QUIET)
outchar('Q');
outchar(']'); outchar(']');
} }
if(node->errors && SYSOP) { if(node->errors && SYSOP) {
......