Servertec Internet Server Version 1.12.1 09/04/2005

-----------------------------------------------------------------------------
CHANGE LOG

Servertec Internet Server Version 1.12.1 09/04/2005
- initial open source release

Servertec Internet Server Version 1.12.0 05/29/2005
- added support for IP version 6 (IPv6)
- added support for Filesystem Hierarchy Standard (FHS)
- added DumpPosLogs utility used to dump access, events, errors and monitor
  POS logs
- added DumpDatabaseLogs utility used to dump access, events, errors and 
  monitor database logs
- added configdir command line directive
- added iws.ini templatesdir
- added $basedir variable to Utils.translateAlias()
- added iws.getRealPath(String)
- added iws.getConfigDirectory()
- added iws.getTemplatesDirectory()
- added Utils.getTemplate(String)
- added deploy_iws_fhs shell script
- added templatesdir to iws.ini for specifying the templates directory used
  by the server
- added archivesdir to AdminServlet for specifying the archives directory
  used by the administrator
- added monitordir to AdminServlet for specifying the monitor event log 
  directory used by the administrator
- added templatesdir to AdminServlet for specifying the templates directory
  used by the administrator
- added error checking to deploy_iws scripts
- added stec.util.LinkedList
- impoved FileServlet performance by optimizing algorithm used in FileCache
- reduced object code size by removing redundant code
- error loggers now log root causes
- error loggers now check if the exception being logged is assignable from 
  the specified ignore exceptions
- administrator now accepts ACL definitions without any access rights
- administrator now accepts resource definitions without any ACls
- administrator now checks the validity of specified computer ip addresses
  and ip ranges
- DatabaseLogger now logs event messages as a long raw binary
- DatabaseLogger now logs error messages as a long raw binary
- DatabaseLogger now logs error exceptions as a long raw binary
- increased length of numerous DatabaseLogger fields
- renamed Utils.load(String) to Utils.getConfig(String)
- Realm.authenticateComputer() now returns a boolean instead of an integer
- removed POS example
- updated documentation

Servertec Internet Server Version 1.11.5 04/14/2005
- fixed bug in administrator that resulted in invalid multi-line entries
- fixed bug in administrator that resulted in invalid exported access control
  lists (acls) and resources
- updated documentation

Servertec Internet Server Version 1.11.4 05/19/2004
- fixed bug in administrator acl form that resulted in invalid acls
- updated documentation

Servertec Internet Server Version 1.11.3 05/02/2004
- added support for restricting the maximum number of simultaneous client 
  requests that are allowed
- updated documentation

Servertec Internet Server Version 1.11.2 11/27/2003
- added support for absolute requests URI containing the server's name
- file directive in SSIncludeServlet now processes all relative file paths
  as relative
- requests with expect now respond with 100 continue
- fixed bug that resulted in request headers being case sensitive

Servertec Internet Server Version 1.11.1 07/06/2003
- added obscure_server to obscure the identity of the server
- moved optional classes from iws.jar to optional.jar
- changed url rewriting to encode session id in url and not in query string
- changed keep-alive implementation to better work with Microsoft Windows
  2003
- changed default server_protocol from HTTP/1.1 to dynamic
- changed default value for keep_alive_timeout from 30 to 15
- changed default value for keep_alive_requests from 5 to 100
- updated administrator
- updated cookie tester example
- updated documentation

Servertec Internet Server Version 1.11.0 05/13/2002
- new features
  - added multilingual content negotiation support
    - added support for content negotiation based on Accept, Accept-Language,
      Accept-Charset and Accept-Encoding as specified in request header
    - changed stec.iws.FileServlet, stec.iws.SSIncludeServlet, 
      stec.iws.ServletTagServlet and stec.iws.admin.AdminServlet to use 
      content_negotiation
    - added content_negotiation to iws.ini for specifying whether content
      negotiation is used
    - added default_language to iws.ini for specifying the default language
      that the server should use when setting the default locale and that the
      server and Servlets should use when serving content
    - added default_country to iws.ini for specifying the default country
      that the server should use when setting the default locale
    - added default_variant to iws.ini for specifying the default variant
      that the server should use when setting the default locale
    - added default_charset to iws.ini for specifying the default charset
      that the server should use when serving content
    - added default_content_type to iws.ini for specifying the default
      content type and associated file extension that the server and Servlets
      should use when serving content
    - added content_types to iws.ini for specifying list of content types and
      associated file extension that the server and Servlets should support
    - added default_content_encoding to iws.ini for specifying the default
      content encoding and associated file extension that the server and
      Servlets should use when serving content
    - added content_encodings to iws.ini for specifying list of content
      encodings and associated file extension that the server and Servlets
      should support
  - added support for Solaris x86/Sparc
    - added Solaris x86/Sparc startup scripts and C wrappers
    - added Solaris x86/Sparc installation scripts
    - added Solaris x86/Sparc ApacheGateway
    - added Solaris x86/Sparc AolServerGateway
    - added Solaris x86/Sparc CgiGateway
    - added Solaris x86/Sparc JavaGateway
    - documented Solaris x86/Sparc installation instructions
    - documented Solaris x86/Sparc ApacheGateway
    - documented Solaris x86/Sparc AolServerGateway
    - documented Solaris x86/Sparc CgiGateway
    - documented Solaris x86/Sparc JavaGateway
    - added Solaris x86/Sparc init daemon How To
- improvements
  - security
    - added session's source checking to prevent session id spoofing
    - closed security hole that allowed client scripts embedded in requested 
      URL now response messages replace < with &lh; and > with &gt;
    - closed security hole by removing /servlet alias.ini and 
      stec.iws.InvokerServlet from servlets.ini
    - closed Denial Of Service (DOS) hole by adding max_request_header_length
      and max_request_content_length to limit length of headers and content 
      and max_request_header_count to limit the number of headers received
  - performance
    - improved efficiency by removing redundant code from loops and by 
      changing from String to StringBuffer when concatenating values
    - updated algorithm used when parsing Accept-Language request header used
      by Request.getLocale() and Request.getLocales()
- changes
  - changes to internal Servlets
    - updated stec.iws.admin.AdminServlet
       - updated Control Panel form
         - added About button
      - moved Administrator from stec.iws package to stec.iws.admin package
      - updated Server form
        - added support for content negotiation (multilingual)
        - added new fields: Input Buffer Size, Output Buffer Size, Maximum
          Header Length, Maximum Header Count, Maximum Content Length, HTTP
          Server Protocol, Multiline Headers, Content Negotiation, Send Vary,
          Default Language, Default Country, Default Variant, Default
          Charset, Default Content Encoding, Content Encodings, Default
          Content Type and Content Types
      - removed Temporary Directory and Directory Access fields
      - added Socket form
        - added Socket form to handle detail configuration of socket
          parameters
        - added fields: IP Address, Port, Connections, Maximum
          Connections, Backlog, Server Socket Timeout, Socket Timeout, 
          Socket Send Buffer Size, Socket Receive Buffer Size, Wait On 
          Full, Wait On Close, SO Linger, No Delay, Keep Alive Enabled, 
          Keep Alive Requests, Keep Alive Timeout, Socket Source, Plain 
          Socket Handler, Plain Socket Handler Parameters, Secure Socket 
          Handler and Secure Socket Handler Parameters
      - updated Session form
        - added new fields: Check Session Source
      - updated Mime Types form
        - added new fields: Icon and Type
      - updated Certificate form
        - where possible values entered are checked for validity
      - added About form
        - added About Administrator form used to display product, license and
          copyright information for the server software
    - updated stec.iws.FileServlet
      - added directory_access initialization parameter used to specify 
        whether a directory listing should be returned to client when a 
        default page is not found in the requested directory
      - added display_icons initialization parameter used to specify whether 
        icons should be added to generated directory listings
      - added read_buffer_size initialization parameter used to specify the 
        size of the file input stream
    - added stec.iws.MessageServlet used to reply with the specified message 
      for text file the request matched the specified URL
    - added stec.iws.RedirectServlet used to redirect the request to 
      specified URL
  - changes to configuration files
    - updated aliases.ini
      - removed /servlet definition from distribution
      - removed .ssi definition from deployment
    - updated iws.ini
      - moved tempdir configuration parameter to stec.iws.admin.AdminServlet 
        initialization parameter
      - moved directory configuration parameter to stec.iws.FileServlet as 
        directory_access initialization parameter
      - added server_socket_timeout used to specify the number of
        milliseconds the server socket should wait for a request to arrive 
        before timing out
      - added input_buffer_size used to specify the size of the input 
        buffer used by stec.iws.Request
      - added output_buffer_size used to specify the size of the input 
        buffer used by stec.iws.Response
      - added wait_on_full used to specify whether a request should wait 
        for a worker when none is available or whether the server should 
        simply close the connection to the incoming request
      - added max_request_header_length used to specify the maximum length 
        of a request header
      - added max_request_header_count used to specify the maximum number 
        of request headers allowed
      - added max_request_content_length used to specify the maximum length
        of any POST data
      - added server_protocol used to specify which HTTP server protocol to
        use: HTTP/1.0 or HTTP/1.1
      - added multiline_request_headers used to specify whether multiline
        request headers as used by Multipart/Related Content-Type will be
        supported
    - updated mimetype.ini
      - added icon used to specify the icon image to display when
        stec.iws.FileServlet is displaying directories items.
      - added type used to specify the type for a directory item when
        stec.iws.FileServlet is displaying directories items.
      - added new mime types
      - added icon and type to mime types
    - updated session.ini
      - added %host% and %local_address% variable to session domain 
        parameter
      - added check_session_source flag used to specify whether to check 
        the session's source
    - updated session.ini
      - removed InvokerServlet definition from distribution
      - added CgiServlet definition for Windows XP in distribution and 
        deployment
      - added SSIncludeServlet definition for Windows XP in distribution and 
        deployment
  - changes to server gateways
    - cgiGateway now supports requests from servers that do not set 
      REQUEST_URI
    - javaGateway now supports requests from servers that do not set
      REQUEST_URI
  - miscellaneous changes
    - reduced response headers server generated by default to better support
      WAP and SOAP applications
    - added support for cookie version parameter used when encoding cookies
    - updated employees store used with POS Employees Servlet to be compliant
      with changes made in store format in Persistent Object Store 1.0.1
      02/04/2002
    - added check for request HTTP protocol version and if less than HTTP 1.1
      then disable HTTP 1.1 features
    - moved Realm Administrators from stec.iws package to stec.iws.admin 
      package
    - moved Monitor Event Handler from stec.iws package to stec.iws.admin 
      package
    - added FORCE_SHUTDOWN and DISABLE_SHUTDOWN_HOOK directives to used
      to control how server is shutdown
    - added support for multiline request headers as used by Content-Type:
      Multipart/Related
    - updated copyright headers and messages
- third-party product support
  - added Add-ons configuration instructions for PHP
  - updated Add-ons configuration instructions for Perl
  - tested server with RedHat Linux 7.2
  - tested server with Microsoft Windows XP
  - tested Apache Gateway with Apache Server 1.3.22
  - tested AOLServer Gateway with AOLServer 3.4.2
  - tested server with Microsoft Internet Explorer 6.0
  - tested server with Jakarta Tomcat Jasper 3.3
  - tested server with JavaSoft Java 2 1.3.1 02 b02 and JavaSoft 2 1.4.0-b92
- documentation
  - updated Release Notes
  - changes to Features
    - added Localization and Multilingal Content Negotiation
  - changes to Installation
    - updated Windows 9x/Me/NT/2K/XP installation instructions
    - documented Solaris x86/Sparc installation instructions
    - documented Solaris x86/Sparc AolServerGatewat installation instructions
    - documented Solaris x86/Sparc ApacheGateway installation instructions
    - documented Solaris x86/Sparc CgiGateway installation instructions
    - documented Solaris x86/Sparc JavaGateway installation instructions
  - changes to Add-ons
    - added configuration instructions for PHP
    - updated configuration instructions for Perl
  - changes to How To
    - added configuration instructions Solaris x86/Sparc init daemon
    - added configuration instructions for JSSE and Novell Netware
    - updated configuration instruction for JSSE
  - updated Change Log
  - updated Future Plans
  - updated Knowledge Base
  - changes to Command Line
    - documented new command line directives
  - changes to Administrator
    - updated Server form
      - documented content negotiation (multilingual) support
      - documented new fields: Input Buffer Size, Output Buffer Size, Maximum
        Header Length, Maximum Header Count, Maximum Content Length, HTTP
        Server Protocol, Multiline Headers, Content Negotiation, Send Vary,
        Default Language, Default Country, Default Variant, Default Charset,
        Default Content Encoding, Content Encodings, Default Content Type and
        Content Types
      - added Socket form
        - documented fields: IP Address, Port, Connections, Maximum
          Connections, Backlog, Server Socket Timeout, Socket Timeout, Socket
          Send Buffer Size, Socket Receive Buffer Size, Wait On Full, Wait On
          Close, SO Linger, No Delay, Keep Alive Enabled, Keep Alive
          Requests, Keep Alive Timeout, Socket Source, Plain Socket Handler,
          Plain Socket Handler Parameters, Secure Socket Handler and Secure
          Socket Handler Parameters
    - updated Session form
      - documented new fields: Check Session Source
    - updated Mime Types form
      - documented new fields: Icon and Type
    - documented About form
  - added Localization
  - updated Programming
  - changes to Security
    - documented new security configuration parameters in security page:
      max_header_length, max_header_count and max_content_length
  - changes to Performance
    - documented new performance configuration parameters in performance
      page: input_buffer_size, output_buffer_size, socket_send_buffer_size
      and socket_receive_buffer_size.
  - updated Deployment
  - changes to Java API
    - documented change in classes and methods to final
    - removed stec.iws.QuickSortStringArray
    - stec.iws.iws
      - documented getDefaultCharset(), getDefaultContentEncoding(), 
        getDefaultContentType(), getDefaultLocale(), getFileEncoding(),
        getShutdownCode() and isContentNegotiated()
    - stec.iws.ServletContextImpl
      - documented getName(), getURI() and getSessions()
    - stec.iws.ServletContextManager
      - documented getServletContexts()
    - stec.iws.Session
      - documented useCookie() and useURL() used to specify the session 
        source on a per session basis
      - documented isSessionSourceCookie() and isSessionSourceURL() used to
        check the session source on a per session basis
    - stec.iws.QuickSort
      - updated replace()
    - stec.iws.Utils
      - added getItem(Reader)
  - changes to Servlets
    - added new configuration parameter to stec.iws.AdminServlet: tempdir
    - added new initialization parameters to stec.iws.FileServlet:
      default_folder_icon, default_folder_type, directory_access,
      display_icons, parent_folder_icon, include_hidden, reader_buffer_size,
      sort_descending, sort_filed_name, sort_ignore_case and use_redirect
    - documented stec.iws.MessageServlet
    - documented stec.iws.RedirectServlet
  - changes Config Files
    - updated iws.ini
      - documented content negotiation (multilingual) support
      - documented new parameters: socket_timeout, server_socket_timeout,
        input_buffer_size, output_buffer_size, server_protocol, wait_on_full,
        wait_on_close, linger, nodelay, multiline_request_headers,
        content_negotiation, send_vary, default_language, default_country,
        default_variant, default_charset, default_content_type,
        default_content_encoding, content_types, content_encodings,
        max_request_header_length, max_request_header_count,
        max_request_content_length, socket_send_buffer_size,
        socket_receive_buffer_size and socket_source
    - updated session.ini
      - documented new parameters: check_session_source
    - updates mimetypes.ini
      - documented new parameters: icon and type
  - changes to Classes
    - added stec.iws.MessageServlet and stec.iws.RedirectServlet
    - documented change of Administrator and Monitor Event Handler from
      stec.iws package to stec.iws.admin package
  - changes to Directory Tree
    - added documentation for <iws_dir>/install/solaris,
      <iws_dir>/bin/solaris/sparc and <iws_dir>/bin/solaris/x86

Servertec Internet Server Version 1.10.3 08/26/2001
- added stec.iws.PosLogger for logging Access/Errors/Events to POS
- added stec.iws.PosMonitorEventHandler for logging monitor events to POS
- added stec.iws.PosRealm for accessing users, groups, computers, rights
  ACLs from POS
- added stec.iws.PosRealmAdministrator for managing users, groups, computers,
  rights and ACLs in POS
- added stec.iws.PosSessionStore for maintaining session objects in POS
- added POS Employees example
- documented stec.iws.PosLogger
- documented stec.iws.PosMonitorEventHandler
- documented stec.iws.PosRealm
- documented stec.iws.PosRealmAdministrator
- documented stec.iws.PosSessionStore
- added ability to capture request/response streams
- added debug server configuration parameter to iws.ini for specifying
  whether request/response should be captured
- added Debug configuration parameter to Server Adminstrator page for
  specifying whether request/response should be captured
- added page on programming resources to documentation
- added page on security to documentation
- added page on performance to documentation
- expanded size of line buffer used by j1server and j2service when processing
  iserver.ini files from 256 bytes to 8192 bytes
- exported AOLserver NS-ModuleVersion global variable.
- tested server with JavaSoft Java 2 1.3.1
- tested server with Jakarta Tomcat Jasper 3.2.3
- tested Apache Gateway with Apache Server 1.3.20
- tested AOLserver Gateway with AOLserver 3.4
- tested server with Microsoft Internet Explorer 5.5 SP2
- tested server with Netscape Web Browser 4.7.8
- tested server with Netscape Web Browser 6.1
- tested server with Novell Netware 5.1 Service Pack 3
- tested server with Novell Netware Java 1.2.2
- tested server with Novell Netware Java 1.3.0
- fixed bug that resulted in the server aborting when an exception occured
  while waiting for a request
- fixed bug that resulted in stec.iws.FileServlet file cache returning that
  the requested item was not found for empty items, when file length was 0
- fixed bug that resulted in stec.iws.MultiPartForm.parse() throwing an
  exception when the file being uploaded was prematurely terminated
- fixed bug that resulted in java.lang.NullPointerException being thrown when
  the server was manually aborted while it was being started and servlets
  where not preloaded
- fixed bug that resulted in response throwing an exception when doing a
  flush after the output stream was closed
- fixed bug that resulted in sessions timing out when a negative number
  was specified using Session.setMaxInactiveInterval()
- fixed bug that resulted in Administrator session timing out due to bug in
  Session.setMaxInactiveInterval()
- updated Knowledge Base
- updated Change Log
- updated deployment documentation
- updated optional classes documentation
- updated directory tree documentation
- updated documentation

Servertec Internet Server Version 1.10.2 05/20/2001
- added work-around for Microsoft Internet Explorer bug that results in
  stec.iws.MultiPartForm throwing a java.lang.StringIndexOutOfBoundsException
  when SSL is enabled and the POST data is prematurely terminated
- changed ETAG response header sent by stec.iws.FileServlet to be Microsoft
  Internet Explorer compatible
- added debug to iws.ini for specifying whether to capture all incoming
  requests and outgoing responses
- added Debug to Administrator - Server for specifying whether to capture all
  incoming requests and outgoing responses
- merged WIN32 and Linux configuration files
- fixed bug that resulted in the server sending an extra response header when
  PrintWriter is used after the response is sent when the PrintWriter is
  closed
- fixed bug that resulted in the Administrator allowing the client to manage
  the server without a valid login
- fixed bug that resulted in the Administrator allowing file uploads from a
  remote client when remote administration was disabled
- updated documentation

Servertec Internet Server Version 1.10.1 04/29/2001
- added support for RedHat Linux 7.1
- added support for Apache Server 1.3.19
- added support for AOLserver 3.3.1
- added check_ip_address to sessions.ini
- added Check IP Address to sessions.html
- added support for check IP address
- changed minimum number of connections from 5 to 0
- cleanup server initialization code
- removed entries from deployed users.ini, groups.ini and resources.ini
- fixed bug that resulted in destroy() method not being called for loaded
  Servlets when the server is shutdown and preload_servlets in iws.ini is
  empty or not defined
- fixed bug that resulted in iwsCommand, iwsSSLCommand, stop_iws and
  restart_iws displaying null when the server did not return a status when it
  was being stopped or restarted
- updated Administrator
- updated documentation

Servertec Internet Server Version 1.10.0 01/28/2001
- added support for Windows Me and Windows 2000
- added support for RedHat Linux 7
- added support for Apache Server 1.3.14
- added support for Novell Netware 5.1
- added support for Apache Jakarta Tomcat Jasper version 3.2
- added support for session persistence and caching
- added stec.iws.SessionStore abstract class
- added stec.iws.MemorySessionStore supporting memory resident session store
- added stec.iws.FileSessionStore supporting persistent and caching of
  context sessions
- added stec.iws.DatabaseSessionStore supporting persistent and caching
  context sessions using any JDBC accessible database
- added support for custom monitor event handlers
- added stec.iws.MonitorEventHandler abtract class
- added stec.iws.ConsoleMonitorEventHandler for sending monitor events to
  stdout
- added stec.iws.FileMonitorEventHandler for writing monitor events to a
  specified file
- added stec.iws.DatabaseMonitorEventHandler for writing monitor events to
  any JDBC accessible database
- added stec.iws.EMailMonitorEventHandler for sending monitor events to
  the specified email address
- added ability to specify socket handlers
- added stec.iws.SocketHandler abstract class
- added stec.iws.PlainSocketHandler for opening java.net.Socket based sockets
- added stec.iws.JsseSecureSocketHandler for opening Java Secure Socket
  Extension (JSSE) Secure Socket Layer (SSL) based sockets
- added ability to specify enabled cipher suites
- added shutdown hook to catch break/abort signals and to shutdown the server
- added stec.utils.LocalStrings class to access text messages
- added j1service.exe and j2service.exe supporting NT service
- added %script_name%, %request_uri% and %servlet_context_path% session
  cookie path variables
- removed server.exe
- moved all text messages from source to stec.iws.LocalString.properties and
  stec.sql.LocalStrings.properties files
- changed username to user in logger.ini and realm.ini
- changed username to user in logger and realm documentation
- connection pool monitor now stops when server is being shutdown
- memory session store now stops when server is being shutdown
- replaced SessionManager with MemorySessionStore
- moved session handling code out of SessionContext to MemorySessionStore
- methods in stec.sql.ConnectionPoolManager now throw SQLException
- added getSocket() to stec.iws.Request for accessing the current request's
  Socket object
- standardized Administrator form processing and error handling
- Administrator session now never expires
- updated Administrator documentation
- updated Classes documentation
- updated Directory Tree documentation
- updated Config Files documentation
- updated Administrator Server documentation
- updated Administrator Logger documentation
- updated Administrator Session documentation
- updated Add-ons documentation
- combined user and reference manuals
- split Servlets documentation
- documented archives.ini
- documented stec.iws.MonitorEventHandler class
- documented stec.iws.SocketHandler class
- expanded AdminServlet documentation
- expanded CommandServlet documentation
- fixed bug that resulted in FileServlet file cache growing larger than
  maximum size
- fixed bug that resulted in stec.iws.FileCache growing larger than maximum
  size
- fixed bug that resulted in dbpools.ini and Database Connection Pool
  Administrator that using username instead of user
- fixed bug that resulted improperly in File System Administrator copying
  directories to itself
- fixed bug that resulted in File System Administrator improperly moving
  directories to itself
- fixed bug that resulted in call to HttpSession.putValue()/setAttribute()
  not calling valueUnbound() when updating an existing bound value
- fixed bug that resulted in Default context being used when the requested
  URI does not match a defined alias
- fixed bug that resulted in Administrator logging off when a workgroup
  was defined
- fixed bug in isapiGateway that resulted in prior server being used when
  cookies were not found

Servertec Internet Server Version 1.9.2 10/05/2000
- added support for GNUJSP 1.0.1 10/08/2000
- Administrator now handles multi-line Messages
- Administrator now handles multi-line Templates
- fixed bug that resulted in Connection Pools parameters overwriting the
  Connection Pool name
- fixed bug that resulted in Utils.parseDate() throwing an
  IllegalArgumentException when the server's locale is not US
- fixed bug in OutputStreamLogger that replaced %base_uri% with complete
  request uri
- fixed bug in OutputStreamLogger that replaced %request_uri% with base
  base request uri
- fixed bug that resulted in FileLogger reopening the logger output files for
  each entry added
- added header initialization parameter to FileLogger used to display the
  specified template when the Logger is started or a new logger access file
  is created
- updated logger templates defined
- defined template headers in templates.ini for iis4, iis4_standard,
  iis4_extended access log formats
- documented CommandServlet
- documentated template header fields
- updated documentation

Servertec Internet Server Version 1.9.1 09/12/2000
- added support for JSSE 1.0.2 with strong domestic and export encryption
- changed product name from iServer to Servertec Internet Server
- added MessageServlet
- updated documentation

Servertec Internet Server Version 1.9.0 08/08/2000
- added support for Secure Socket Layer (SSL) using any Java Secure Socket
  Extension (JSSE) compliant provider
- added AOL Server Gateway under Windows 9x/NT and Linux/Unix
- added iwsSSLCommand used to stop and restart the server when Secure Socket
  Layer (SSL) is enabled
- added access log template for Apache Extended File Format
- added sort parameter to FileServlet used specify whether case-insensitive
  sort is performed on directory listings
- added countycodes.ini configuration file
- added country codes
- added new mimetypes
- added %xtimestamp% access log template variable
- added support for multiple default pages
- added connection_pool_interval parameter to iws.ini, used to specify how
  often to check pools for timed out unused connections
- added ability to specify additional parameters in connection pool
  definitions in dbpools.ini, used to specify additional parameters used by
  the JDBC driver
- added timeout parameter to connection pool definitions in dbpools.ini,
  used to specify the number of minutes that an unused connection will remain
  in the pool before it is automatically closed
- added ignore_exceptions parameter to logger.ini, used to specify which
  uncaught exceptions will be ignored by the RequestHandler and which will
  sent to the logger
- added ssl parameter to iws.ini, used to specify whether Secure Socket Layer
  (SSL) is enabled
- added Administrator - Country Codes, used to add, edit and remove country
  codes
- added Administrator - Keystore, used to specify Keystore settings
- added Administrator - Certificates, used to generate, request, display,
  remove, import and export X.509 certificates contained in the Keystore
- added Administrator - File System, used to create, upload, copy, move
  rename and delete items on the server's file system
- added Administrator - Archives, used to backup, restore and remove
  configuration file archives
- directory listings now use <iws_dir>/html/directory_item.tf template
- Administrator can now be used to monitor and manage secure servers
- Administrator - Realms can now be used Import and Export Realms users,
  computers, groups, resources, access rights and access control lists
- Administrator - Workgroup can now be used to specify Protocol, the Web
  protocol used when monitoring the server
- Administrator - Logger can now be used to specify Ignore Exceptions, which
  uncaught exceptions will be ignored by the RequestHandle and which will
  sent to the logger
- Administrator - Connection Pools can now be used to specify Timeout, the
  number of minutes that an unused connection will remain in the pool before
  it is automatically closed
- Administrator - Connection Pools can now be used to specify Parameters,
  additional parameters used by the JDBC driver
- Administrator - Server can now be used to specify Connection Pool Interval,
  how often to check pools for timed out unused connections
- Administrator - Server can now be used to specify where SSL Support is
  enabled
- Administrator - Server can now be used to specify Default Files, multiple
  default pages
- Administrator - Monitor can now monitor secure servers
- removed connection_pools parameter from iws.ini configuration file
- removed Connection Pools Enabled from Administrator - Server
- minimized use of synchronization in Connection, ConnectionPool and
  ConnectionPoolManager
- stec.sql.Connection now implements java.sql.Connection
- rollback is now automatically performed when connections are returned to
  the connection pool
- changed the default maximum number of connection pool connections from 10
  to 20
- changed default parameter in iws.ini to support multiple default pages
  separated by commas (,)
- updated stop_iws and restart_iws C wrappers to use iwsSSLCommand when https
  is specified as Web protocol
- updated stec.sql.Connection to Java 1.2 standards
- updated API documentation
- updated documented directory tree
- updated documented classes
- updated documented configuration files
- updated documented Servlets
- updated Knowledge Base
- updated Features
- updated documentation for deploying the server
- updated documentation for Administrator - Server
- updated documentation for Administrator - Connection Pools
- updated documentation for Administrator - Realms
- updated documentation for Administrator - Logger
- updated documentation for Administrator - Workgroup
- documented installation and configuration of the AOL Server Gateway
- documented Administrator - Country Codes
- documented Administrator - Keystore
- documented Administrator - Certificates
- documented Administrator - File System
- documented Administrator - Archives
- added JSSE Domestic Edition to Add-ons
- added How To for how to setup the server as a Secure Server
- added How To for how to setup the server as a Windows NT Service
- added How To for how to automatically run the server when Window 9x starts
- added How To for how to setup the server as a Linux/Unix init daemon
- fixed bug in DString.change() that resulted in method returning invalid
  values
- fixed bug in Utils.translateAlias() that resulted in aliases containing
  $wwwroot not being properly translated
- fixed bug in Administrator - Mime Types that resulted in the current
  session being invalidated and the Login screen being displayed when ADD was
  selected
- fixed bug in Enterprise Edition Linux/Unix ApacheGateway that resulted in
  shared memory handles not being freed
- fixed bug in Enterprise Edition Gateways that resulted in the next server
  in the cluster not being selected when the iwsServerID cookie was empty
- fixed spelling errors in documentation

Servertec Internet Server Version 1.8.2 05/14/2000
- added support for Jakarta Tomcat Jasper JavaServer Pages (JSP) engine
- added Jakarta Tomcat Jasper (JSP) configuration instructions to Add-ons
- added CGI example
- added DOCUMENT_ROOT CgiServlet variable
- added DOCUMENT_ROOT SSIncludeServlet variable
- added GATEWAY_INTERFACE to SSIncludeServlet
- added URL to CgiServlet
- added ROOT to CgiServlet
- added QUERY_STRING_UNESCAPED to CgiServlet
- added LAST_MODIFIED to CgiServlet
- added DATE_LOCAL to CgiServlet
- added DATE_GMT to CgiServlet
- added DOCUMENT_NAME to CgiServlet
- added DOCUMENT_URI to CgiServlet
- added Temporary Directory to Server Administrator
- added Temporary Directory to Administrator documentation
- added iws.getWorkDirectory() to documented API
- added bindir parameter to SSIncludeServlet
- SCRIPT_NAME in CgiServlet now contains the script being executed
- PATH_INFO in CgiServlet is now set to path value after the SCRIPT_NAME
- PATH_TRANSLATED in CgiServlet based on PATH_INFO
- CgiServlet bindir is now relative to the current virtual-host
- moved deployed cgi-bin to wwwroot
- #exec cmd in SSIncludeServlet no longer uses exec parameter
- changed ssitester.shml exec tests
- changed FileLogger to use iws.getWorkDirectory()
- changed Page Counter sample to use iws.getWorkDirectory()
- changed File Upload sample to use iws.getWorkDirectory()
- updated Configuration Files documentation
- updated Directory Tree documentation
- updated add-ons documentation
- CgiServlet now sets the Content-Type based on the MIME type of the file
  extension of the script being executed
- Content-Length is now always set when Servlet Chaining is enabled
- Response.reset() now removes Content-Length
- changed ROOT CgiServlet variable to be relative to the current virtual-host
- changed ROOT SSIncludeServlet variable to be relative to the current
  virtual-host
- RequestDispatcher.forward() now removes Content-Length from the response
  headers if any request does not set the content-length
- RequestDispatcher.include() now removes Content-Length from the response
  headers if any request does not set the content-length
- Request.getPathInfo() now returns null when Path-Info is empty
- removed Query-String from Request.getRequestURI()
- fixed bug in CgiServlet that resulted in the command being relative to the
  current working directory and not relative to the base directory
  when the bindir specified was a relative path
- fixed bug in Utils.parseDrive() that resulted in the drive letter not being
  returned for absolute paths that do not contain a drive letter
- fixed bug in RequestDispatcher.include() that resulted in an invalid
  Content-Length response header being used
- fixed bug in RequestDispatcher.forward() that resulted in invalid
  Content-Length response header being used
- fixed bug in ServletContext.getResource() that resulted in the physical
  PATH being used not being relative to the current ServletContext
- fixed bug in ServletContext.getResourceAsStream() that resulted in the
  physical PATH being used not being relative to the current ServletContext
- fixed bug in Request.getRequestDispatcher() that resulted in an invalid
  PATH being used when a relative URI was specified
- fixed bug that resulted in Request.getPathInfo() returning the complete URI
  when a Filter was matched
- fixed bug in SSIncludeServlet that resulted in SERVER_PORT_SECURE not being
  set
- fixed bug in SSIncludeServlet that resulted in PATH_INFO not being set
- fixed bug in SSIncludeServlet that resulted in INSTANCE_ID not being set

Servertec Internet Server Version 1.8.1 04/16/2000
- fixed bug in Session.encodeURL() and Response.encodeURL() that resulted in
  an invalid URL being returned when the specified URL contained a
  Query String
- updated documentation

Servertec Internet Server Version 1.8.0 04/02/2000
- added support for Java Servlet API version 2.2
- added support for user definable servlet contexts
- added support for user definable locales
- added support for expanding response buffer
- added support for UnavailableException
- session identifiers are now encoded
- changed ServletManager to static class
- changed RealmManager to static class
- updated documentation
- updated documented API
- Realm and RealmAdministrator no longer extends HttpServlet
- fixed bug in FileServlet that resulted in requests with multiple ranges not
  being handled properly

Servertec Internet Server Version 1.7.3 02/22/2000
- added support in NSAPI Gateway for multiple Objects definitions
- added SessionTesterServlet example
- changed Request.encodeRedirectURL() and Request.encodeRedirectUrl() to only
  encode the session ID when the default session source is set to url and the
  protocol, hostname and port number of the URL specified match the requested
  protocol, hostname and port number
- improved performance by eliminating instantiation of local date formatter
  in Response.setDateHeader()
- improved performance by reducing the number of Date objects instantiated
- Administrator Monitor now displays the total amount of time that each
  workgroup server is up
- improved synchronization used by ClusterMonitor
- fixed bug in ClusterProxy that resulted in NullPointerException sometimes
  being thrown when it was unable to find a server to service the request
- changed Server-Software response header from Servertec-IWS/1.6 to
  Servertec-IWS/1.7
- RequestHandler now ignores IOException as well as SocketException

Servertec Internet Server Version 1.7.2 02/01/2000
- added support in ISAPI Gateway for defining multiple URI and file extension
  aliases
- added instructions for starting the server as a Linux/Unix init daemon at
  startup
- added examples to installation documentation
- Apache Gateway for Unix/Linux now uses shared memory to maintain a single
  next server for all processes
- fixed bug in ConnectionPool that may result in more the than minimum number of
  connections being maintained by pool

Servertec Internet Server Version 1.7.1 01/19/2000
- fixed bug that caused request handler to hang when GET requests contained
  very long Query Strings
- made minor changes to documentation

Servertec Internet Server Version 1.7.0 01/09/2000
- ported stop_iws/restart_iws to Linux/Unix
- ported updated Apache Gateway to Linux/Unix
- added Servlet Chaining example
- added support for chaining Servlets when the response matches a specific
  mimetype
- added stop_iws/restart_iws C wrapper for easy access to iwsCommand
- added iwsCommand used to restart/stop the server from the command line
- added support for virtual hosting
- added support for enabling/disabling Servlet Chaining
- added support for Servlet Chaining
- added remote_admin parameter to iws.ini used to enable/disable remote
  administration of server
- added backlog parameter to iws.ini used to specify size of client request
  backlog kept by ServerSocket
- added %base_uri% variable to session.ini used to specify base URI to
  session path
- added %base_uri% variable to templates.ini used to specify base URI in
  access log
- added %query_string% variable to templates.ini used to specify query string
  in access log
- combined servlets.ini and filters.ini configuration files into servlets.ini
- ServletTagServlet now can be used within a Servlet Chain
- List Employees and Connection Pool examples now uses new included sample
  database
- created sample Microsoft Access database to replace use of Microsoft
  Adventure Works database
- iws and javaGateway C wrappers now support java_exe environment variable
  with embedded Java VM parameters
- mimetype definitions for .shtml and .ssi are now associated with text/html
  instead of application/ssi
- iws and javaGateway C wrappers now remove temporary files on termination
  signals
- removed filters from Administrator
- removed filters from Documentation
- documented directory tree
- documented setting up the server as an Windows 9x/NT Service
- documented automatically starting the server in Windows 9x/NT from the
  StartUp directory
- documented iwsCommand and restart_iws and stop_iws C wrappers
- added FileCache.capacity(), FileCache.size(), FileCache.resize(),
  iws.hosts, iws.getBaseDirectory(), Utils.extractCookie(),
  Utils.getRootHandler(), Utils.concatParameters(), Utils.mergeParameters(),
  AccessLogEntry.baseURI, and AccessLogEntry.queryString to documented APIs
- documented administration of Virtual Hosts
- updated documented classes
- updated log file documentation
- updated configuration file documentation
- updated server installation instructions
- SSIncludeServlet no longer throws an exception when included file contains
  embedded SSI directives
- client requests that result in exception or that are prematurely terminated
  are no longer logged as 200 OK
- query string is now being parsed into parameters when request method is
  POST
- updated documentation for NSAPI/ISAPI/Apache Gateways
  installation/configuration
- NSAPI/ISAPI/Apache Gateways will now try other servers in the workgroup
  when they are unable to connect to the next server in the list
- NSAPI/ISAPI/Apache Gateways will remove servers that are down from next
  list for an interval of time
- NSAPI/ISAPI/Apache Gateways now support load-balancing and failover
- NSAPI/ISAPI/Apache Gateways now uses server with session
- ClusterProxy now tries other servers in the workgroup when it is unable to
  connect to the next/best server
- improved ClusterProxy performance by removing servers that are down from
  next/best list for an interval of time
- ClusterRedirector now redirects to server with session
- ClusterProxy now uses server with session
- InvokerServlet now sends "404 Not Found" when Servlet is not specified or
  when Servlet can not be found
- Administrator no longer converts configuration information to lower case
- iws.init() now catches, reports and logs connection pool initialization
  errors then continues with server startup
- RequestHandler.run() and RequestHandler.nextRequest() now catches Errors
  thrown
- iws.main() now catches Errors thrown
- Utils.encodeCookie() now properly sets expires
- administrator no longer reports valid root directories as not existing when
  base directory is specified during startup
- Session.encodeURL() now properly replaces existing session ids with new
  ones
- Request.getServerPort() no longer returns 0 as the server port when a valid
  server port is known
- logger no longer logs 0 as the server port when a valid server port is
  known

Servertec Internet Server Version 1.6.2 11/07/1999 
- server can now directly access content and configuration files contained in
  a JAR file
- FileServlet can now preload list of files into file cache
- added CookieTesterServlet example
- logger can now perform delayed logging
- ClusterProxy now supports load-balancing
- new ServletTagServlet added <servlet></servlet> tag support
- added <servlet></servlet> tag example
- documented IOManager, IOHandler and RealmAdministrator APIs
- added ConsoleLogger
- OutputStreamLogger is now the base Class used by ConsoleLogger and by
  FileLogger
- decodeParameters()/encodeParameters() were added to Utils
- added configuration page for 3rd party add-ons (JSP/iASP/Perl/iScript)
- replaced SSI example with ssitester
- configuration files are now case sensitive
- Administrator no longer changes keys to lower case
- created separate help for Administrator
- changed format used by aliases.ini, servlets.ini and filters.ini to support
  multiple aliases
- moved file cache configuration from servers.ini to FileServlet definition
  in servlets.ini
- reduced default size of file cache from 8MB to 4MB
- expanded aliases to include servlets and filters enabling a single instance
  of a servlet or filter to be used by multiple aliases
- updated to latest version of Servlet.jar included in JavaServer Web
  Development Kit (JSWDK) version 1.0
- Request.server_variables are no longer stored in a Hashtable
- improved performance by replacing use of Strings with StringBuffers
- improved performance by removing redundant code
- redefined alias .ssi as filter ServletTagServlet
- separated server and gateway installation instructions
- updated documentation
- documented format used by configuration files
- documented new Utils API methods
- documented deploying to JAR/ZIP file
- documented required/optional Classes
- increased the default server timeout from 1 second to 5 minutes so that
  connections do not terminate prematurely because the timeout value is too
  small
- RequestHandler how properly supports keep alive
- Administrator no longer reports valid session timeout values as invalid
- Startup no longer resets session interval to the minimum value when
  interval is set to -1
- Administrator no longer reports that file cache size is not being set
- Session.isValid() now calls HttpSessionBindingListeners for Unbound event
  when session is invalidated
- FileLogger no longer treats absolute paths starting with / as relative
  paths
- ServletManager no longer converts Servlet/Realm URI to lower case
- Utils.parseCookieHeader() no longer throws NoSuchElementException when the
  cookie value contains an embedded '='
- DString.extract() now longer returns invalid values when when the
  delimiters specified are longer than one character
- FileLogger no longer losses access access log entries when a template is
  not specified
- logger no longer logs server port as -1 when the server port is 80
- Administrator Monitor no longer uses/displays -1 for server port when the
  server port is 80
- the file cache no longer grows larger than the maximum size specified
- FileCache.makeSpace() now frees enough space before inserting the new item
  into the file cache
- ConnectionPool.putConnection() no longer calls Connection.close()
  repeatedly when extra connections are being closed
- Administrator no longer writes invalid values for session source in session
  configuration file

Servertec Internet Server Version 1.6.1 10/07/1999 
- logger now uses logger.ini settings to determine whether or not to log
  events, errors and access
- SessionManager is no longer started when interval is set to -1

Servertec Internet Server Version 1.6.0 10/03/1999 
- updated Administrator documentation
- added dns_lookup to Administrator
- added ability to disable DNS lookup
- added Apache/CGI/NSAPI/ISAPI gateways which allows any Web/Application
  Server supporting these protocols to run Servlets using Servertec Internet
  Server as their Java Servlet Engine
- changed exit code for restarting server under Windows 9x from 1 to 0x7FFF
  so that when a Java VM error occurs, iws.exe wrapper will not loop
  endlessly trying to start the server
- added cgi-bin directory to distribution
- Utils.getArgs() now handles any embedded = character that may be returned
  by Request.getPathTranslated()
- Utils.getParameters() no longer improperly returns arguments along with any
  parameters
- Request now removes arguments from query string before calling
  HttpUtils.parseQueryString() so that HttpUtils.parseQueryString() no longer
  throws IllegalArgumentException
- Request.getRequestURI() no longer returns query string along with URI
- changed how request_length is calculated for access log entries,
  request_length is now set to total number of bytes sent by the client
  instead of bytes read from ServletInputStream
- documented new methods
- FileCache methods used to interface with the server's file cache are now
  public
- ServletManager methods used for loading and unloading Servlets, Filters and
  Realms and for checking if a specified Servlet, Filter or Realm is
  presently loaded are now public
- Utils methods for reading items and loading configuration files are now
  public
- iws variables for accessing aliases, mimetypes, messages, resource,
  servlets, filters, realms, ServletManager and server's file cache are now
  public
- iws methods for initializing and shutting down the server and for logging
  errors are now public
- iws methods for getting the servers version and getting the mime type of a
  file are now public
- Logger methods used for logging events, errors and server access are now
  public
- Realm methods for authenticating computers and users and for checking if a
  given IP address is within a specified range of IP address are now public
- documented workgroup and computers administration
- Y2K certified the server
- SSIncludeServlet #config TIMEFMT %Y and %C now use 4 digit year
- FileServlet now generates 4 digit year in directory listings
- DatabaseRealm and FileRealm now check computers at specified hostname, ip
  address or ip range for proper access rights and block access when the
  computer does not have them
- added computers table to database (iserver.mdb, iserver.sql)
- added computers to Administrator
- added computers to access control lists selection form in Administrator
- Administrator now checks that selected right/user/group/realm/acl are not
  in use before removing them
- Administrator can now manage database and file realms
- Response.ServletOutputStream and Response.PrintWriter now flush the output
  stream
- Response.getWriter() no longer outputs response headers when called
- RequestDispatcher.forward() and RequestDispatcher.include() no longer
  throws an exception during processing when the query string is null
- server security now protect resources using multiple selected access
  control lists
- InvokerServlet no longer throws an exception when a Servlet is not
  specified,
- InvokerSerlet now calls FileServlet when a Servlet is not specified
- documented Servlet, Filter and Realm APIs
- shutdown delay was added to control how long to wait before shutting down
  the server
- iws.destroy() now closes the server socket
- RequestHandler no longer keeps alive the connection when Response
  Connection header entry is set to close
- session id from cookie is preferred to session id from url
- HttpServletResponse.encodeURL() and HttpServletResponse.encodeRedirectURL()
  now checks for existing session id before encoding url
- HttpServletResponse.flush() and HttpServletResponse.close() now flushes the
  output stream
- Administrator now shows if a servlet, filter or realm is loaded or unloaded
- Administrator can now load/unload/reload servlets/filters/realms 
- integrated online help into Administrator
- Administrator now supports absolute root directory paths
- Administrator can now be used to monitor and manage a group of servers
- Administrator now supports add/edit/remove workgroup servers

Servertec Internet Server Version 1.5.0 06/27/1999 
- documented SecurityService API
- documented Logger, AccessLogEntry, ErrorLogEntry and EventLogEntry APIs
- updated and expanded documented APIs
- added support for JSDK version 2.1
- added InvokerServlet
- added new security options to Administrator
- added database security
- multi form parser no longer times out on read when input stream is
  terminated by CR/LF
- Administrator expanded to support new logger options 
- created oracle schemas
- Basic authentication support now functions properly when Microsoft Internet
  Explorer Web Browser is used
- added database logger

Servertec Internet Server Version 1.0.0 05/02/1999 
- added FileUpload example
- added support for multi-part forms

Servertec Internet Server Version 1.0.0 03/15/1999 
- StatusServlet no longer throws ClassCastException

Servertec Internet Server Version 1.0.0 03/14/1999 
- getServerName() now properly generates hostname
- FileServlet now properly handles absolute root directories

Servertec Internet Server Version 1.0.0 02/21/1999 
- updated documentation
- Administrator can now manage Session configuration
- Administrator can now be used to specify ip address to use
- added support for specifying how sessions are maintained on client
  (url/cookie)
- added support for listening to requests on single (given) ip address or all
  ip addresses (multihoming)
- added support for specifying session cookie parameters (name, comment,
  domain, path, maxage, secure)
- separated Request and Response objects from request handler

Servertec Internet Server Version 1.0.0 02/07/1999 
- updated documentation
- specified root directory can now be an absolute directory path
- Administrator can now manage logger
- Logger parameters are now separate from server parameters
- added support for access/errors/events log file rollover
- Administrator can now manage Access Log Templates
- defined templates for popular access log formats
- Access logger now uses user defined templates

Servertec Internet Server Version 1.0.0 01/26/1999 
- fixed spelling and syntax errors in documentation
- commented out advworks connection pool because the server will not start
  without defined connection pools and most users do not have the sample
  database
- error handler date parser now handles invalid dates sent by the browser

Servertec Internet Server Version 1.0.0 01/24/1999 
- added Connection Pool example
- added Protected Page example
- added List Employees example
- added RedirectServlet example
- updated installation instructions
- updated build scripts
- updated documentation
- Administrator no longer allows users that have logged off from managing the
  server
- configuration files were updated
- deployment files were updated
- Administrator can now manage Connection Pools, Users, Groups, Realms and
  Resources
- added SessionManager thread to invalidate sessions that have timed out
- added support for http session binding listener/event
- added support for database connection pools
- added support for access control lists (ACL)
- added support for enabled/disabled security
- added support for file cache
- redesigned error handling/reporting
- rewrote object synchronization to minimize the time an object is locked
- added ClusterRedirector
- added ClusterMonitor
- redesigned user interface used by Administrator 
- valid sessions are no longer being improperly invalidated
- added support for single thread model
- added ServletManager to handle Servlet operations
- added support for if-range/range/content-range HTTP 1.1 modifiers
- fixed bug in error message generator
- added support for session timeouts
- added support for enabling/disabling logging of access/events/errors
- added Logger thread for logging access/events/errors
- improved performance by preloading messages and directory templates
- connections are no longer abruptly terminated when stop is selected from
  the Administrator Control Panel, now the request is logged and the
  connection is closed before the server is stopped
- added support for preloading servlets and filters at startup
- added maximum number connections
- added restart to Administrator Control Panel
- added support for if-modified-since/if-unmodified-since HTTP 1.1 modifiers
- added support for keep alive
- added detailed explanations to many of the error codes in messages.ini
- content length is now being recorded in the access log
- FileServlet now handles file and directory processing

Servertec Internet Server Version 1.0.0 10/25/1998 
- filters are no longer being loaded and initialized more than once
- CgiServlet now properly handles Date objects sent by SSIncludeServlet
- removed server variables from request headers
- server now properly redirects requests to default page
- HTTP_ is no longer added to request header variables
- content length is now set to -1 when it is not known
- removed iScriptServlet
- removed .ctf definition from filters.ini

Servertec Internet Server Version 1.0.0 10/15/1998 
- server no longer throws NullPointerException when configuration files are
  not found
- added jsdk.jar to distribution
- updated installation instructions
- updated license agreement
- updated documentation

Servertec Internet Server Version 1.0.0 10/11/1998 
- initial release
