Changes to Plexus from Previous Versions
========================================

Plexus 3.0
----------

* in plexus:
  $http_group can now be a list, calls initgroups in site.pl  
  Keep track of childern so we can do load limiting with `connection_max'
  Added tilde expansion support (optional, and can use ~ or home/) 
  Robustified main loop a bit and fixed some error message to be clearer
  Fixed some bugs with timeouts.  However, the only real solution would
    be to do my own timeout multiplexing and I'm not going to do that.
  I'll live with it being a bit ugly instead.
  Added support for redirecting the client if a directory access doesn't
    contain the proper trailing slash.
  Added Martijn's path virtualization and redirection support 
* $http_group can now be a list (e.g., 'www,alt,staff')
* Added sub initgroups in site.pl
* Added sub resolve_header for getting headers out of %*_headers in mime.pl
* new in local.conf:
  Added packages auth-basic.pl virtual.pl
  Updated packages access-filter.pl
  Added variables: revdns connection_max picky_dirs redirects_ok   
  Added variables: preload_twiddles twiddle_export twiddle_prefix
  Added commands: virtualpath redirect
  Changed forms.pl support a bit
* Added `revdns' variable which allows admin to disallow IP -> hostname
  lookups because they are pretty slow.  
* Added sub redirect($url, $query, $how) (does not return)
* Greatly enchanced access-filter.  Added control based on methods, users,
  groups, ip address, networks, and/or domains.  Also, allow failure to
  generate a redirection.
* added basic authentication package
* added path virtualization and ~ expansion
* Added twiddle expansion support.
* Fixed typos with strick -> strict
* Added support for "no trailing slash" redirection (conditional on picky_dirs)
* Test index_dir regexp so only user sees the error
* Encode URL so that files with spaces and stuff like that work correct
* Delete "Content-length" if we are doing translations
    (fixed a bug with incorrect size being sent).
* added format testing to forms'emailto (so you can easily require fields)
* added a picky_dirs variable which says to disallow access to
  directories when the URL didn't have a trailing slash.  The redirects_ok
  variable will case a failure to try and redirect the user to the proper
  URL, if that isn't set it will just generate an error.
* added new variable revdns in local.conf which allows you to turn off
  DNS lookups and speed things up a bit.
* $http_group in plexus.conf can now be a list of groups ('www,staff,other')
* added an unsupported directory which contains routines sent to me by
  various people that I didn't have time to "officially" integrate into
  the release.  There is lots of good stuff in there so do check it out.
* added libplex.pl -- a library of routines for module writers:
  printable, splitquery, hostname, safeopen, open, globpat, timeout_error,
  set_timeout, clear_timeout, fhbits, error, debug, caller
* added local.conf option ``strict_lock'' to enable or disable locking
  files before they are sent.
* supports multiple servers on the same port using different
  IP Addresses via the [-h host] option (see howto/multiple-servers.txt)
* supports If-Modified-Since and Content-Length
* included cgi.pl
* included inc.pl (for supporting <INC> directives)
* better forms support (including a test mode and an emailer)
* easier configuration (well, you can at least now automatically
  change all the #!/usr/bin/perl lines to whatever you put in
  Makefile.config).  The ``make configure'' step is currently optional.
* lock around plexus.pid (so running plexus twice doesn't mess it up)
* updated documentation
* Added a basic wais.pl module (needs a little work for production use)
* Added basic pass/fail support (access-filter.pl)
* Added basic POST support (currently just emails the data)
* Added generic logger routines (log-simple.pl for file based
  logging with email for severe errors, and log-syslog.pl for
  syslog based logging).
* Fixed security hole in bookmark.pl
* &report_error is now defined in site.pl.  This routine deals with
  reporting internal_error class errors to the sysadmin.  The current
  default implementation just sends email, it should probably
  use syslog but I'm too lazy to do it.
* Log file now contains hostname instead of IP address if possible.
* Added some new security features (&safeopen) so I could remove some of the
  filename restrictions.  $query's are handled by the user now so they are
  more flexible but I added &printable to convert to a printable strings and
  &splitquery which translates %##'s and splits on + (which you can embed
  in the query using %2b).  Things are much cleaner now and as long as
  you are careful with new agents I think more secure.
* Server restart now works first time (you don't have
  to wait for the next request before it restarts).
* Extended &daemon to be able to handle more than one socket so you can
  bind to a list of sockets and &net_filter can have different restrictions
  based on which socket was connected.  This way you can have a local
  domain socket that can handle things like EXEC methods.  Anything in
  local.conf can add sockets to @sockets and it will automatically be
  managed.  Just be careful to keep you FH's unique.
* fixed bug where a timeout wasn't being cleared properly
* Added error handling and reporting routines
* Fixed some documentation bugs
* redid the &net_filter interface, which caused most of the code in
  get.pl to move into plexus so I could filter the request before
  handing it to &net_filter.
* net_filter is not defined by default so it's easy to add your own
  just by adding ``load net-filter.pl'' in local.conf
* moved all the contributed stuff (oraplex and archieplex) into ./contrib/
* added gateways.html which explains some about adding your own gateways
* more/better documentation
* merged plexus,plexus.pl,front.pl into plexus
* added new local.conf file with easier syntax for non-perl folks
* flock/fcntl switch in local.conf
* setext.pl will now run as either a converter or standalone
  it switches automatically (like magic)
* New command line for plexus:
  Usage: plexus [-c config] [-d topdir] [-i] [-l log] [-p port] [-D diag]
* Added diagnostic channel (enabled by -D option)
* moved getuid/getgid before chroot() so you don't *have* to have local files
* You can now run plexus from inetd (or stand-alone from the comamnd line)
  using the -i switch.  Also, if you want to setup the environment
  you can open the socket and chdir/chroot/whatever can call plexus with the
  `-I fd' option, where fd is the socket filedescriptor for plexus to attach
  to.  Mostly -I is used for restarting plexus.
* log file now trys to resolve IPaddr to hostname

Plexus 2.2.1
------------

* Minor bug fixes to 2.2 (mostly integrated archieplex better).

Plexus 2.2
----------

* easier to customize install directories
* removed the crusty account.pl, I think someone is working on patches
  to do this right.
* converted everything to use pacakges
* some security holes patched with .. and invalid requests in get.pl
  Thanks to Mitchell N Charity <mcharity@lcs.mit.edu>
* added support for document translation (lots of changes in dir.pl)
* added setext.pl to convert from setext (.etx) to HTML
* added better image decoding support thanks to Chris McRae
  <mcrae@ckm.ucsf.edu>.  You can now specify image decoding
  in a configuration file ($MAP_CONFIG_FILE) and you can use
  bitmasks or rectangles.  In most cases you don't have to write
  any code!  Things like bookmark are more complicated and still
  require code, but few things really need that.
* &send_file went away and was replaced with: &wrap_file, &wrap_fd,
  &raw_file, &raw_fd.   &require is certainly the only stable
  interface at this point (though I don't see &raw_fd changing again).
  &wrap_* will probably have to change again to make file translations
  work "right".
* added support for hypertext'ed man pages from pre-formatted files.
  In this initial release they are specific to bsdi man pages
  but should be easy to configure for your local system (most of the
  config options are at the top of the bsdi-man.pl file).
* added some log file summerizing scripts

Plexus 2.1
----------

* Mostly bug fixes

Plexus 2.0
----------

* Inital 2.X release
