<html>
<head>
  <title>WebJames - History</title>
</head>

<body bgcolor="#ffffff">



<p>
<h3>
<table bgcolor="#cccccc" width="99%"><tr><td>
<a name="history">History</a>
</td></tr></table>
</h3>

<i>0.48 (05/05/2007)</i>

<ul>
  <li>Fixed bug in handling of connections aborted by the client.
</ul>

<i>0.47 (21/05/2006)</i>

<ul>
  <li>Added MimeUseExt and MimeUseFiletype attributes.
  <li>Fixed logging of accessfile filename if file not found.
  <li>Fixed returning junk if realm not specified for a password protected area.
  <li>Default location of config and attributes files moved to Choices: to ease future upgrading.
</ul>

<i>0.46 (5/10/2005)</i>

<ul>
  <li>Fixed a bug that could cause SSI if statements to incorrectly match sometimes.
  <li>Fixed a bug that prevented PHP file uploads from working.
</ul>

<i>0.45 (2/4/2005)</i>

<ul>
  <li>Requesting a file with a trailing slash now results in a 404 error rather than serving the file.
  <li>A moved attribute on a file that doesn't exist now only sends the moved report and not the 404 report as well.
  <li>Moved reports are now generated correctly when virtual hosts are in use.
</ul>

<i>0.44 (3/1/2005)</i>

<ul>
  <li>Set correct content-type for autoindexes.
</ul>

<i>0.43 (7/12/2004)</i>

<ul>
  <li>Added OverrideName attribute.
  <li>Added support for substituting regex matches into OverrideName and DocumentRoot attributes inside locationmatch sections.
  <li>Now gives a wimp error box if unable to listen on any sockets.
  <li>Added autoindex handler to generate directory listings.
</ul>

<i>0.42 (18/1/2004)</i>

<ul>
  <li>%20 escape sequences in URIs now map to a hard space rather than a normal space.
  <li>Fixed a bug that could occasionally cause a served file to get truncated.
</ul>

<i>0.41 (1/11/2003)</i>

<ul>
  <li>Fixed BASIC and C cgi-libs to check correct error numbers for RISC OS 5.
  <li>Log a warning if AddHandler parameters are wrong
  <li>Fixed a bug that could cause file not found errors for some SSI virtual operations.
</ul>

<i>0.40 (25/6/2003)</i>

<ul>
  <li>Comparisons of Host: header is now done case insensitively.
  <li>Fix bug introduced in 0.39 that caused a data abort on some machines.
</ul>

<i>0.39 (18/6/2003)</i>

<ul>
  <li>Minor improvments to the build system.
  <li>Correctly interpret error numbers from RISC OS 5 internet SWIs.
</ul>

<i>0.38 (9/12/2002)</i>

<ul>
  <li>Recompiled for 32bit compatibility.
</ul>

<i>0.37 (29/10/2002)</i>

<ul>
  <li>Fixed corruption when serving some imagefs files in UnixLib builds.
  <li>Fixed bug that could cause a crash when logging some header lines that contained a % character.
  <li>Added an extra option to the syslog config variable to specify use syslog if present, internal logging otherwise. This is now the default.
  <li>Added support for name based virtual hosts.
  <li>Added DocumentRoot attribute as an alias for homedir.
  <li>Added ServerName and ServerAdmin attributes, to replace serverip and webmaster config options for virtual hosts.
  <li>Added support for <code>&lt;IfHandler&gt;</code> conditional sections in attributes file.
  <li>Fixed bug that could cause a socket to be registered with SocketWatch even if WebJames failed to listen on the socket.

</ul>

<i>0.36 (22/7/2002)</i>
<br>
 Thanks to Matthew Phillips:

<ul>
  <li>Improved support for POST requests in the BASIC cgi-lib
  <li>Fixed a bug in parameter handling in the BASIC cgi-lib

</ul>

<i>0.35 (20/5/2002)</i>

<ul>
  <li>Uses separate files for each CGI script request to prevent problems with one script starting before the previous one's output has been read
  <li>Added <code>cgi-iodir</code> config option to control directory used for CGI script io files

</ul>

<i>0.34 (10/1/2002)</i>

<ul>
  <li>now outputs <code>Content-Location:</code> and <code>Content-Language:</code> headers when appropriate.
  <li>fix for UnixLib bug that prevented filenames with top bit set characters from working.
  <li>workaround for bug that prevents report files from being found after the PHP handler had been invoked.
  <li>workaround for bug that prevented image filing system files to be served correctly when compiled with UnixLib.
  <li>now sets PHP filetype and sprite as if !PHP had not been seen then this would not get done and thus the PHP handler may fail to work.

</ul>

<i>0.33 (20/12/2001)</i>

<ul>
  <li>fixed bug that prevented nested SSI files from working.

</ul>

<i>0.32 (17/11/2001)</i>

<ul>
  <li>fixed bug that could cause WebJames to crash if a zero length URI was requested.
  <li>fixed bug in BASIC and C cgi-libs that prevented more than 32K of data being sent at once.
  <li>fixed bug in filer CGI script that allowed access to directories other than $.Public.
  <li>filer CGI script can now cope with long filenames (up to 256 chars).
  <li>addition to C cgi-lib to support POST data. Thanks to <a href="mailto:mdc@ihug.co.nz">Michael Curtis</a> for this.

</ul>

<i>0.31 (18/9/2001)</i>

<ul>
  <li>reverse dns and syslog options are now runtime rather than compile time.
  <li>clf log will also be sent to SysLog when the syslog option is enabled.
  <li>split makefile into several different files, to enable different builds to be made more easilly
  <li>a few minor changes in the code to allow compilation with gcc, and linking with UnixLib.
  <li>added support for PHP as a built in handler.
  <li>fixed bug that caused image files to have their Content-Type: set incorrectly.
  <li>new config option <code>imagedirs</code> that allows some image files to be treated as files, and others as directories, based on filetype.
  <li>fixed bug that caused a crash if you forced a shutdown from the taskmanager while there were still active connections.
  <li>split the help file into several smaller files, as it was getting a bit large.
  <li>now uses the SocketWatch module, if present, to improve performance.
  <li>supports HTTP HEAD requests 

</ul>

<i>0.30 (4/8/2001)</i>

<ul>
  <li>no longer converts %7E type escape characters that are in the query string.
  <li>sets more environment variables for CGI scripts: <code>REQUEST_URI, DOCUMENT_ROOT,
  HTTP_ACCEPT, HTTP_ACCEPT_LANGUAGE, HTTP_ACCEPT_CHARSET, HTTP_ACCEPT_ENCODING</code>.
  <li>added support for content negotiation and multiviews.
  <li>added the server-parsed handler for SSI files.
  <li>suports <code>Location:</code> and <code>Status:</code> headers output by CGI scripts
  <li>ensures all headers from CGI scripts have the correct line endings
  <li>outputs a <code>Date:</code> header in all responses

</ul>

<i>0.29 (30/3/2001)</i>

<ul>
  <li>added support for %7E type escape characters in URLs.
  <li>no longer faults POST requests from Oregano.
  <li>fixed bug that stopped the homedir attribute from working.
  <li>now treats image files as files rather than directories.
  <li>ANTRESOLVE and SYSLOG switches work correctly again.
  <li>added <code>#ifdef</code>s around all MemCheck code.
  <li>logfile output is now buffered, so the file is not kept open.
  <li>when a bad request is received, the reason why it was bad is
      added to the logfile.
  <li>if there is an error in a rexex or an unknown filetype when
      parsing the attributes file, then this is reported in the logfile.
  <li>added <code>log-header</code> command to config file, to allow
      arbitrary headers to be logged.
  <li>leaving the filetype empty in an <code>AddFileTypeHandler</code>
      now only applies that handler to any file that is not explicitly
      matched by another handler. The filetype of <code>ALL</code> can
      be used to apply the handler to all filetypes.
</ul>

<i>0.28 (1/1/2001)</i>

<ul>
  fixed a couple of bugs:
  <li>when an AddFiletypeHandler is used with an unknown filetype, it is now ignored, rather than being
      applied to all filetypes.
  <li>if an unknown handler is specified for a file, it now sends a no content report rather than leaving
      the socket open and not sending anything.
</ul>

<i>0.27 (27/12/2000)</i>

<ul>
  <li>added support for <code>&lt;files&gt;</code> sections in attributes file
  <li>added support for <code>&lt;locationmatch&gt;</code>, <code>&lt;directorymatch&gt;</code>
      and <code>&lt;filesmatch&gt;</code> sections in attributes file
  <li>changed C++ style comments to C style and indentation spaces to tabs
  <li>removed CASESENSITIVE compiler switch
  <li>added casesensitive config option (which even works on case-insensitive filesystems)
  <li>new attributes <code>stripextensions</code> and <code>setcsd</code>
  <li>redirect cgi environment variables are now removed after the script has finished executing
  <li>introduced handlers, <code>AddHandler</code>, <code>AddFiletypeHandler</code> and
      <code>Action</code>
  <li>added send-as-is handler
</ul>

<i>0.26 (19/10/2000)</i>

<ul>
  <li>attribute <code>defaultfile</code> can now take a list of files to look for
  <li>added support for the <code>SCRIPT_NAME</code>
      enviroment-variable when using 'redirected' cgi-scripts.
      This allows the <code>$PHP_SELF</code> variable to work in PHP scripts.
  <li>bugfix in leap year calculation
  <li>bugfix in assigning attributes - if a [/dir/] section was defined then the attributes for [/] were ignored for all files in dir
  <li>moved the site directory outside of !WebJames (perhaps the config and attributes need to move to Choices:?)
  <li>attributes can now be attr (space) value as well as attr = value
  <li>added support for <code>&lt;location&gt;</code> and <code>&lt;directory&gt;</code> sections in attributes file
      (<code>&lt;files&gt;</code> to follow shortly)
  <li>added support for htaccess files
  <li>a new attribute has been defined <code>errordocument</code>
  <li>changed value passed to Wimp_Initialise so it <i>might</i> work on RISC OS 3.10
</ul>


<i>0.25 (31/08/2000)</i>

<ul>
  <li>I (Alex Waugh) have now taken over the maintenance of WebJames
  <li>a couple of new attributes have been defined:
      <ul>
      <li><code>allowed-filetypes</code>
      <li><code>forbidden-filetypes</code>
      </ul>
      these allow cgi-scripts to be executed only if their filetype is/isn't on the list,
      useful for keeping both PHP scripts and normal HTML in the same directory
</ul>


<i>0.24 (26/06/2000)</i>

<ul>
  <li>the various cgi-script related enviroment-variables are now set
      as literal strings and are set <em>every</em> time a CGI-script is
      executed, rather than just the first time
</ul>


<i>0.23 (19/12/1999)</i>

<ul>
  <li>fixed bugs which prevented CLF output from cgi-scripts and reports
</ul>


<i>0.22 (12/07/1999)</i>

<ul>
  <li>new attribute: <code>defaultfile</code> sets the name of the file to
      return when a request for a directory is received - this lets you
      return something else than <code>index.html</code>
  <li>WebJames now quits if it fails to bind the socket that listens for
      incoming connections
</ul>


<i>0.21 (24/06/1999)</i>

<ul>
  <li>when the server returns a <code>301 (moved)</code> or
      <code>302 (temporarily moved)</code> respons, the new URL is now
      absolute if possible (ie. if the <code>serverip</code> field in
      the config file is set)
</ul>


<i>0.20 (08/06/1999)</i>

<ul>
  <li>serious bug in <code>cache.c</code> fixed - when compiled with the
      <code>LOG</code> switch, WebJames crashed when loading a new version
      of an already cached file...
</ul>


<i>0.19 (06/06/1999)</i>

<ul>
  <li>tidied <code>stat.c</code>
  <li>fixed bug in <code>attributes.c</code> - spaces in <code>realm</code>s
      were removed...
  <li>some new attributes have been defined:
      <ul>
      <li><code>more-attributes</code>
      <li><code>hidden</code>
      <li><code>nothidden</code>
      <li><code>ram-faster</code> (defined, but not yet implemented)
      <li><code>priority</code> (defined, but not yet implemented)
      </ul>
</ul>


<i>0.18 (16/05/1999)</i>

<ul>
  <li>added support for the <code>SERVER_ADMIN</code>
                        and <code>SERVER_PORT</code>
      enviroment-variables when using 'redirected' cgi-scripts
  <li>fixed a bug: <code>-put</code> and/or <code>-delete</code> arguments
      were not passed to 'webjames'-style cgi-scripts
  <li>the portnumber is now passed to 'webjames'-style cgi-scripts as
      part of the CLI-arguments (using <code>-port XX</code>)  BASIC
      cgi-lib updated to handle/ignore this
  <li>WebJames can now accept connections on multiple ports - simply
      specify a comma-seperated list of ports in the config-file
  <li>three new attributes supported - if the
      <code>port</code>-attribute if defined for an URI, only request
      on the specifed port are accepted (this is only useful when
      WebJames is configured to listen on multiple ports); the
      <code>allowed-hosts</code> and <code>forbidden-hosts</code>
      attributes control which hosts can access the data
  <li>if the requested URI is a directory, a <code>301 Moved</code>
      reply is returned, with a <code>/</code> appended to the URI
  <li>if compiled with the <code>CASESENSITIVE</code> switch, URI matching
      is done case-sensitive.
</ul>


<i>0.17 (02/05/1999)</i>

<ul>
  <li>finally found a nice way to implement support for the <code>PUT</code>
      and <code>DELETE</code> request-methods
  <li>new attribute supported - the
      <code>methods</code>-attribute defines which request-methods are
      allowed for an URI - this can be used to allow only <code>PUT</code>
      request to access the script defined by the <code>put-script</code>
      field in the config file
  <li><code>report_servererr()</code> added
</ul>


<i>0.16 (29/04/1999)</i>

<ul>
  <li>support for cookies when using 'redirected' cgi-scripts
</ul>


<i>0.15 (25/04/1999)</i>

<ul>
  <li>fixed bugs in <code>read.c</code>:<br>
      - an error was generated if WebJames <i>succeeded</i> in allocating
        a buffer for the body of a request!!<br>
      - failed to check when the entire request-body had been read<br>
  <li>fixed a couple of bugs relating to cgi-requests, <code>POST</code>
      now seems to work - or at least the few examples I've tried worked...
  <li>added <code>cgi-input</code> and <code>cgi-output</code> fields to
      the config file - these control the location of
      the spool-files used for redirected input/output to/from cgi-scripts
  <li><code>report_badrequest()</code> now replaces the <code>WHY</code>
      keyword in the report-file
  <li>added support for the <code>CONTENT_LENGTH</code>,
                            <code>CONTENT_TYPE</code>
      enviroment-variables when using 'redirected' cgi-scripts.
  <li>fixed bug in the BASIC cgi-lib - <code>CGI_MaxBytesPerSecond%</code>
      was set to 100 if WebJames specified <code>-bps 0</code>, ie. no limit 
</ul>


<i>0.14 (04/04/1999)</i>

<ul>
  <li>fixed bug in <code>cgi.c</code> (sometimes caused
       <code>QUERY_STRING</code> to be set to an incorrect value)
  <li>added support for the <code>SERVER_SOFTWARE</code>,
                            <code>SERVER_PORT</code>,
                            <code>SERVER_PROTOCOL</code>,
                            <code>SERVER_NAME</code>,
                            <code>PATH_TRANSLATED</code>,
                            <code>REMOTE_HOST</code>
      enviroment-variables when using 'redirected' cgi-scripts.
  <li>server ip-address/domainname can now be specified in the
      config file
  <li>fixed bugs in <code>resolve.c</code> so WebJames can now be
      compiled using the <code>-DANTRESOLVER</code> switch
</ul>


<i>0.13 (20/03/1999)</i>

<ul>
  <li>security-bug fixed - pasword-protection failed if the URI included
      arguments, eg. <code>/cgi-bin/query?q=whatsat</code>
</ul>


<i>0.12 (13/03/1999)</i>

<ul>
  <li>somehow <code>CR</code> and <code>LF</code> had been switched in
      <code>write.c</code> - although the exact same bug was fixed in
      v0.10b...
  <li>the <code>CLF</code> log wasn't rotated as specified in the
      config file and wasn't closed after the
      specified timeout
  <li>serious bug in the attributes-scanning-code fixed -  attributes
      were sometimes applied incorrectly (eg. the attributes for the
      file <code>/abc</code> were applied to the file <code>/abcde</code>)
  <li>when using 'redirect' cgi-scripts, WebJames writes
      <code>HTTP/1.0 200 OK</code> before outputting the file to the
      socket
</ul>


<i>0.11 (07/03/1999)</i>

<ul>
  <li>cgi-scripts that expect all output to go to the socket are now
      supported
  <li>the 'moved', 'access' and 'homedirs' database files have been
      dropped in favour of a much more flexible (and faster!) system
      where you can assign attributes (like password-protection,
      redirection, cacheability and more) to any UR - numerous minor
      and major changes to allow this... <em>this is still not fully
      tested yet</em>
  <li>MAJOR bug fixed - password-protection failed if you just changed the
      case of (any letter in) the URI; URIs are now case-insensitive - not
      perfect considering that many browsers assume otherwise, but for now
      it'll have to do
  <li><code>report_busy(connection)</code>   changed to
      <code>report_busy(connection, text)</code>
  <li>logfiles may be rotated either when they're too big or too old; the
      old logs can automatically be compressed
  <li>the duration for which logs are kept open after a write is now
      configurable
  <li>the maximum allowed size of a request can now be configured
  <li>the <code>connection</code> structure now has fields for the
      <i>User-Agent:</i> and <i>Referer:</i> lines from the
      request-header; these are now included in the <code>CLF</code> log
  <li>resolver handling moved to <code>resolve.c</code>
  <li>cache-heap handling moved to <code>cacheheap.c</code>
  <li><code>cacherefreshdelay</code> no longer used
  <li>rewritten to use OSLib... <em>hasn't yet been tested/compiled with
      the <code>-DANTRESOLVER</code> or <code>-DSYSLOG</code> flags</em>
</ul>


<i>0.10b (03/03/1999)</i>

<br>
  Thanks to Chris Bitmead
    <a href="mailto:chris.bitmead@bigfoot.com">
    &lt;chris.bitmead@bigfoot.com&gt;
    </a>:

<ul>
  <li>serious bug in <code>write.c</code> fixed - <code>CR LF</code>
      had been switched, so many browsers failed to read the header...
</ul>


<i>0.10 (07/02/1999)</i>

<ul>
  <li><code>quitwhenidle</code> command added and
      <code>&lt;WebJames$Dir&gt;.Restart</code> added -
      to kill and restart WebJames, simply double click on the WebJames
      icon in a filer window
  <li>cgi-lib has grown so big that it is now necessary to use
      <code>END=&18000</code>
  <li><code>report_badrequest(connection)</code>   changed to
      <code>report_badrequest(connection, text)</code>
  <li>if a cgi-script is password-protected, the username is passed to the
      script (as <code>-user &lt;username&gt;</code>)
  <li>rather than specifying a single username:password pair in the access
      file, you may now specify a file with any number of username:password
      pairs; the cgi-script <code>pwd</code> and the database file
      <code>users</code> demonstrate this
  <li>loglevel can now be set from the config file
  <li>HTTP version number is now read as major.minor
  <li>lots of bugs in and around <code>report.c</code> fixed
  <li>tidied the code for handling unimplemented request methods
  <li>cgi-lib has been updated to support the new <code>clf</code> command;
      it now also has support for sending <i>long</i> commands to WebJames;
      some small bugs fixed
  <li>tested the new <code>clf</code> command - works fine; WebJames no
      longer generates a clf-log-entry when a request results in a
      cgi-script being executed
  <li>the <code>!Run</code> file now checks for the presence of the MimeMap
      module, although not quite as extensively as JF suggested...
</ul>


<i>0.09 (03/02/1999)</i>

<ul>
  <li>added (but not yet tested) the new <CODE>clf</CODE> command
</ul>

  Thanks to Justin Fletcher
    <a href="mailto:networking@thevillage.ndirect.co.uk">
    &lt;networking@thevillage.ndirect.co.uk&gt;
    </a>:

<ul>
  <li><code>-DSYSLOG</code> can now be used to build a version that uses
      <code>SysLog</code>
  <li>logging levels are now reversed - high numbers are lower priority
      type messages; <code>LOGLEVEL_NEVER</code> is now the lowest level
      you can use
  <li>internal mimemap database deleted, and MimeMap module used instead
  <li>time conversion fixed
</ul>


<i>0.08 (31/01/1999)</i>

<ul>
  <li>released...
</ul>


<p>
<h3>
<table bgcolor="#cccccc" width="99%"><tr><td>
<a name="todo">Things that need to be improved</a>
</td></tr></table>
</h3>

 <ul>
 <li>currently only supports the ANT/Acorn resolver
 <li>when a cgi-script fails, it should be possible for it to use the
    report-generating facilities in WebJames; eg. by use of a command
    like:<br>
    <code>report &lt;code&gt; &lt;socketno&gt; &lt;lines&gt; &lt;rmaaddr&gt;</code>
    (the rma block should hold &lt;lines&gt; lines; each line should be
    0-terminated and have the following format:
    <code>%KEYWORD%:value</code>).<br>
    <b>This has not yet been implemented...</b>
 <li>the ability to serve as a proxy would be nice!!!
 <li>there's no provision for reverse dns when a cgi-script is called
 <li>cgi-lib doesn't handle the extended common log file format
 <li>should support HTTP 1.1
 </ul>

<p>
<a href="index.html">Back to contents</a>
<p>
</body>
</html>
