***************************************************
* What's New in Synchronet Version 3.10 for Win32 *
* (ChangeLog since v3.00c for Win32 Dec 31, 2000) *
***************************************************

Highlights
~~~~~~~~~~
o Servier-side JavaScript for dynamically-loaded BBS modules 
  and dynamic-HTML indexes for FTP server

o GUI Configuration Wizard

o TCP socket and FTP client support in loadable modules

o Support for embedded file descriptions (FILE_ID.DIZ/DESC.SDI) in FTP server

o Improved support for multiple SBBSCTRL instances

o Improved support for external DOS/FOSSIL programs (doors)

o Additional configurability/programmability options


General
~~~~~~~
o Support for '*' wildcard syntax in trashcan/filter files
  (e.g. "24.0.193.*" or "*.ppp.someisp.com")


Control Panel
~~~~~~~~~~~~~
o New Configuration Wizard
  - Automatically runs on fresh install
  - Asks basic required questions
  - Hopefully eliminate some FAQs and common newbie-sysop errors

o New MinimizeToSysTray option
  - Minimizes SBBSCTRL to an icon in the system tray
  - Icon animates when there are active clients
  - Icon tool-tip reports number of active clients
  - Double-click icon to restore SBBSCTRL window
  - Right-click for pop-up menu of frequently-used menu items

o New "Events" window for event-thread log messages and status
  - No longer clutters Telnet Server log

o QWK message events (e.g. for FTP-QWK transfers) can be disabled per-instance
  using the new "QWK Events" checkbox (defaults to enabled)
  - Required for multiple instances of SBBSCTRL

o New Control Panel Properties Dialog (File->Properties)
  - Allows configuration of LoginCommand, ConfigCommand, etc.

o Configurable Node and Client window display intervals 
  (previously hard-coded to 1 and 5 seconds, respectively)

o Closing no longer interferes with Windows shut-down procedure

o Sorting by first/last-on dates in User List now works correctly

o Added to the BBS->Edit menu: 
  - New user password (NUP) failure message (text/nupguess.msg)
  - Nodes full message (text/nonodes.txt, previously hard-coded)
  - Logon message (text/menu/logon.asc)
  - Auto-message (data/msgs/auto.msg)

o Eliminated possibility of over-writing registry values with defaults
  if SBBSCTRL is immediately shut-down before initialization has completed

o SBBS.DLL version is now checked and verified (can't mix versions)

o Minor cosmetic improvements (e.g. FTP server configuration dialog)
  - Fixed tab orders and enabled more control hints (tool-tips)

o Revamped Node Window
  - Improved handling of NODE.DAB read/locking errors
  - New popup menu item to refresh display
  - New keyboard short-cuts for all popup menu items

o Spy Window fix: KeyboardActive checkbox alternating checked status and 
  not reflecting previously saved value

o Link to Online Docs (http://www.synchro.net/docs) on Help menu

o Statistics window update interval (previously hard-coded to 5 seconds) now 
  configured via SCFG->Nodes->Node 1->Advanced Options->Statistics Frequency


Telnet Server
~~~~~~~~~~~~~
o Server-side JavaScript Support for Loadable Modules
  - Full support for Core JavaScript objects and classes:
    - Global (extended and enhanced)
    - Object
    - Function
    - Array
    - String
    - Boolean
    - Number
    - Date
    - Math
    - RegExp (Perlesque regular expressions)
  - Includes Netscape server-side File class
  - Both a procedure and object-oriented language
  - Substantially more powerful language than Baja
  - No "compiling" required (don't ever lose your source code again)
  - For more info on Core JavaScript, see http://mozilla.org/js
  - See exec/*.js for examples
  - Baja modules and command shells are still fully supported
  - Execute JS via command-line with "?modulename" instead of "*modulename"
  - New and evolving ASP/DOM-like Synchronet Object Model:
    - system
    - system.stats
    - system.node_list[]
    - server
    - client
    - user
    - file_area
    - file_area.lib_list[]
    - file_area.lib_list[].dir_list[]
    - Socket (class)
    - User (class)
  - Telnet-specific objects:
    - bbs
    - console

o Improved auto-terminal-type detection
  - Telnet option negotiation occurs before auto-detection sequence 
    (for CRT compatibility)
  - Added ANSI save and restore cursor position codes to sequence 
    (for HyperTerminal compatibility)

o New inactivity (H) exemption
  - Eliminates "Are you still there?" prompt and auto-disconnection for 
    specific users
  - Add to your exec/logon.src (if upgrading):
    compare_ars exempt H
    if_true
        or _console CON_NO_INACT
        end_if

o New @-codes:
  - FULL_VER            Synchronet version and revision
  - VER_NOTICE          Synchronet version notice
  - OS_VER              Operating system name and version
  - JS_VER              JavaScript implementation version
  - PLATFORM            Platform name (e.g. Win32, Linux, etc)
  - COPYRIGHT           Copyright notice
  - COMPILER            Compiler name and version
  - SOCKET_LIB          Socket library name and version
  - MSG_LIB             Message library name and version
  - HOST                Now contains FULL (untruncated) host-name
  - AGE                 User's age (in years)

o Configurable "Nodes full" message (via text/nonodes.txt)

o Better handling of DLL/EXE version mis-matches

o Quicker response to Ctrl-C (abort) command

o Fixed Guru Chat GPF/segfault bug

o Screen pause is disabled while at the private message (Ctrl-P) prompt

o Chat Menu is fully reprogrammable using PCMS (Baja or JavaScript)
  - See exec/chat_sec.src for example

o No longer logs (or displays locally) failed password attempts if the sysop 
  has so configured the system in SCFG

o Fixed problems with changing first/last node parameters during run-time
  - New first/last node parameters don't take effect until server is restarted

o Input and output threads now log/display number of bytes and packets 
  sent/received upon termination

o Changed NODE.DAB locking failure delays (earlier and longer)

o Process directory is now changed to the ctrl directory during initialization

o Uninitialized port numbers (set to 0) are now set to sensible defaults 

o External Program enhancements/fixes:
  - Added %~ command-line specifier for DOS-compatible (8.3) filename
    (use in place of %f to convert long filenames to DOS-compatible)
  - Added SBBSCTRL environment variable when running native external programs
  - Moved exec_mutex protection to cover all types of executables 
    (fixed problem with I/O occasionally going to wrong node/user)
  - Improvement resource clean-up for Win32 version
  - Sets Baja-retrievable errorlevel

o Binary receive mode is automaticaly disabled when returning 
  from external programs
  - Some Telnet clents (e.g. HyperTerminal) enable Binary mode when
    transferring files, but do not disable Binary mode when done.
    This causes transmitted CR/LF pairs to be interpretted as two
    separate characters (instead of one)

o Added support under Win9x/Me for "naughty" FOSSIL programs/doors
  - DOSXTRN.EXE now includes a 16-bit ISR stub for FOSSIL programs/doors
    that DO NOT generate interrupts (e.g. IceEdit, Operation Overkill II, etc)

o Improved background DOS program/door performance under Win9x/Me
  - DOS/FOSSIL driver (SBBSEXEC.VXD) now schedules VM upon user input
  - Most noticable performance gain with Global War

o Reduced CPU utilization for DOS programs/doors under WinNT/2K
  - DOS/FOSSIL driver (SBBSEXEC.DLL) now yields time-slices for programs
    that poll for input (similar to how TAME operates)
  - No more 100% CPU usage from games like LORD, TradeWars, BRE, etc

o Improved disconnected-user detection while running DOS/FOSSIL doors
  - Periodic sending of telnet GA (go-ahead) command

o Non-exclusive timed events now run in the background automatically
  - Allows multiple simultaneous events and asynchronous execution
  - Has nothing to do with child window appearance or priority

o Timed event codes are now logged/displayed in uppercase (cosmetic only)

o Fixed bug in random number generation

o No longer prompts for "Forward To Netmail" if the option is disabled in SCFG

o Optional e-mail/netmail address filter/trashcan file (text/email.can) 

o Event loop delay (previously hard-coded to 1 second) now configured via 
  SCFG->Nodes->Node 1->Advanced Options->Semaphore Frequency
  

Baja v2.3
~~~~~~~~~
o Partially compiled .BIN files are now deleted

o New Control Flow Functions:

  - LOOP                Begins an execution loop (nesting supported)
  - CONTINUE            Continues an execution loop
  - BREAK               Breaks an executuion loop
  - END_LOOP            Ends an execution loop

o New TCP/IP Functions:

  - SOCKET_OPEN         Create/open a TCP/IP socket
  - SOCKET_CLOSE        Close a socket
  - SOCKET_CONNECT      Initiate outbound connection
  - SOCKET_ACCEPT       Accept an inbound connection
  - SOCKET_NREAD        Get number of bytes ready to read
  - SOCKET_PEEK         Peek at receive buffer
  - SOCKET_READ         Read from socket
  - SOCKET_WRITE        Write to socket
  - SOCKET_CHECK        Check socket connection status
  - SOCKET_READLINE     Read a CR/LF terminated line of text

  - FTP_LOGIN           Login to a remote FTP server
  - FTP_LOGOUT          Logout from a remote FTP server
  - FTP_PWD             Print current working directory
  - FTP_CWD             Change current working directory
  - FTP_DIR             Display current directory listing
  - FTP_PUT             Send (upload) a file to server
  - FTP_GET             Receive (download) file from server
  - FTP_RENAME          Rename file on server
  - FTP_DELETE          Delete file from server

o Miscellaneous New Functions:

  - INCHAR              Case-insensitive version of INKEY
  - COPY_CHAR           Copy current cmdkey to int var or str var
  - COMPARE_ANY_BITS    Compares bits in any two integers
  - COMPARE_ALL_BITS    Compares bits in any two integers
  - SHIFT_TO_FIRST_CHAR Shifts string to first occurance of char
  - SHIFT_TO_LAST_CHAR  Shifts string to last occurance of char
  - FILE_RECEIVE        Like FILE_PUT, but doesn't require sys pass
  - LPRINTF             Local printf (to local console)

o New BBS Functions:

  - FILE_RECEIVE        Same as FILE_PUT, but no system password required
  - MULTINODE_CHAT      Joins a specified multinode chat channel
                        (used in new exec/chat_sec.src)

o New System Variables (defined in exec/sbbsdefs.inc):

  - _FTP_MODE           FTP operating modes (see FTP_* constants)
  - _CLIENT_SOCKET      Current telnet client's socket handle
  - _SOCKET_ERROR       Last socket error
  - _STARTUP_OPTIONS    BBS startup options (See BBS_OPT_* constants)


FTP Server v1.10
~~~~~~~~~~~~~~~~
o Dynamic HTML Index support using Server-Side JavaScript 
  - See exec/ftp-html.js for source code
  - Additional FTP-specific objects:
    - ftp.path
    - ftp.sort
    - ftp.reverse
    - ftp.file_list[]
    - ftp.dir_list[]
    - ftp.curlib
    - ftp.curdir
    - ftp.html_index_file

o Automatic support for embedded file descriptions (FILE_ID.DIZ and DESC.SDI)

o Detected hack/intrusion attempts are now logged to data/hack.log

o Directory listings are now sorted alphabetically (ala Unix)

o Failure to create uploaded file (e.g. directory not created) bugs fixed:
  - Error message cause gpf/segfault
  - No 450 error response to client

o Resumed downloads (using FTP "REST" command) fixed (wrong response code)

o Now uses control port-1 (normally 20) as TCP port for all active data 
  sessions
  - Fixes problem of locating FTP server behind intelligent firewalls

o Added active/passive mode indication to upload/download log output

o Configurable QWK packet creation timeout 
  - defaults to 10 minutes, previously hard-coded at 5 minutes

o No longer logs (or displays locally) failed password attempts if the sysop 
  has so configured the system in SCFG

o Fixed mutex leak in Win32 build when stopping/restarting FTP server

o Fix to disallow viewing of (ASCII or HTML) index file for aliased directory
  where user has insufficient access to list files
  (e.g. "/main/uploads" aliased as "/incoming" in ctrl/ftpalias.cfg)

o Shortened thread shutdown timeout (from 60 seconds to 15)

o Fixed upload filename bug in non-Win32 flavors

o Now disallows uploading of dynamic index filenames (if enabled)

o Sending a 0-length file is no longer treated as a failed download

o The path to the upload or sysop directory can now be specified with the STOR 
  (upload) command
  - previously, you had to change the current directory first

o Fixed occasional GPF/segfault during shutdown

o Fixed case sensitivity problem with locally added files via telnet

o Optional "hack attempt" sound file (Win32 version only)

o Optional e-mail address filter for guest account passwords


Mail Server v1.11
~~~~~~~~~~~~~~~~~
o SMTP Sending to a forwarded address (251 response) fixed

o POP3 port, address, hostname activity logged

o Now supports destination address hostnames starting with a digit

o No longer logs (or displays locally) failed password attempts if the sysop 
  has so configured the system in SCFG

o Shortened thread shutdown timeout (from 60 seconds to 15)

o Uninitialized startup values are now set to sensible defaults 

o Fixed memory leak if server stopped and re-started


***********************************************************
* What's New in Synchronet Version 3.10 Revision C (Beta) *
***********************************************************

Telnet Server
~~~~~~~~~~~~~
o 0-byte QWK packets are now simply ignored rather than generating errors
  - It is assumed the file is still being downloaded by another process

o Configurable number of polls before yield for NT/2K/XP fossil driver
  - Allows tuning of multitasker TAME-like performance
  - Was previosly hard-coded to 10, values of 5000+ improve LORD and LORD IGM 
    RIP detection but increases CPU usage for BRE and possibly other doors

o Fixed old bug: anonymous uploads weren't flagged as anonymous unless the 
  entire directory was forced anonymous

o Fixed new bug: FidoNet echomail semaphore files weren't working

o Password display char is now configurable as the fourth character in the 
  last line of the text.dat - defaults to 'X' if not specified
  - third char is currently ignored but is reserved for for configurable
    "quit" character in the future (currently hard-coded to 'Q')

o When replying to mail, no longer prompts to delete message if message was 
  already flagged for deletion (caused unintential UN-deletion of message)

o Fixed Baja bugs: SYSOP_PAGE and GURU_PAGE functions set reversed logic state

o Improved internal chat page performance (random tones) - rarely used


JavaScript
~~~~~~~~~~
o Improved Socket class 
  - last_error property is maintained on a per-instance basis
  - externally created sockets won't be closed on deletion

o Added global sound() function to play external WAV files 
  - use sound.js module via command-line (e.g. for external chat pager)


FTP Server v1.10
~~~~~~~~~~~~~~~~
o JavaScript contexts are only created when needed
  - should improve performance, reduce memory usage, and improve reliability

o Fixed bug: anonymous uploader names were shown in directory listings

o Fixed bug: daily user statistics (logons today, time used today, etc) were
  not being reset if user was logged in during the date change (12 midnight)

o Fixed bug: logoff was setting timed-used-last-call to number of 'seconds'
  used rather than 'minutes'

o Implemented security considerations recommended in RFC2577:
  - Added a 5 second delay after each failed login attempt
  - Session is terminated after 3 failed login attempts
  - Port command supports ports >=1024 only, defeats "bounce attack"


Mail Server v1.11
~~~~~~~~~~~~~~~~~
o Updated mail-abuse.org DNS and HTTP server addresses 
  (for RBL/RSS/DUL SPAM rejection)

o Creates data/spam.log listing every rejected SPAM attempt

o Fixed bug: logoff now handles resetting of user's daily statistics

o Time used during POP3 sessions are now added to user's timeon stats


/* End of V310_NEW.TXT */
