/*
+----------------------------------------------------------------------------+
| FILE: CHANGES                                                              |
| QstatList                                                                  |
| Copyright (C) 1999 David G. Hesprich (Dark Grue)                           |
|                                                                            |
| This program is free software; you can redistribute it and/or modify it    |
| under the terms of the GNU General Public License as published by the Free |
| Software Foundation; either version 2 of the License, or (at your option)  |
| any later version.                                                         |
| This program is distributed in the hope that it will be useful, but        |
| WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
| or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   |
| for more details.                                                          |
|                                                                            |
| You should have received a copy of the GNU General Public License along    |
| with this program; if not, write to the Free Software Foundation, Inc.,    |
| 675 Mass Ave, Cambridge, MA 02139, USA.                                    |
+----------------------------------------------------------------------------+
*/

Changes in version 3.4:

* Installer will now no longer allow the QstatList base install directory to
  be inside the distribution directory.
* Fixed install.pl Perl module selection.
* Diteched $starttime variable and replaced it with $^T.
* Updated documentation.


Changes in version 3.3:

* Added QStat v2.2b support, which adds Half-Life and Sin to the servers that
  QstatList can track.
* Fixed problem with entries never being removed even through they'd expired.
* Fixed minor typo with the HTML table headers for the server listings where
  I left a hanging </FONT> tag.
* Moved ./utils directory in the source distribution to ./util for consistency.
* Unreal servers now report maxplayers = 0 in the statistics as a design
  compromise.
* All files are now closed before a flock() call to unlock the files occurs.
  Previously, some were being unlock before a call to close() was issued.
* Added the statssum.pl script to the /util directory to do automated
  statistics log cleanup.
* install.pl now takes the '-s' command-line parameter to indicate that the
  debug CGI source files should be installed.
* Moved definition of $DNS_CACHEFILE from qstatlist.conf to dns.pl file.
* Moved definition of $PID from qstatlist.conf to qstatlist file.
* Moved definition of $TMPLIST from qstatlist.conf to qstatlist file.
* Moved definition of %COLOR from qstatlist.conf to qstatwrap.cgi file.
* Fixed DNS lookup routines in addserver.cgi that were preventing IP addresses
  from being looked up properly and consequenty broke the auto-locator routine.
* addqserver.cgi now checks the $LIST_DATA_HOLD file for submission duplicates.
* Fixed return links and lables from the addqserver.cgi page.
* Tidied up formatting of hash tables in the source.
* Updated documentation. Added Website information to README file.


Changes in version 3.2 (Internal Version):

* Changed directory permissions to be more restrictive (to prevent Web server
  from "indexing"/returning a directory for the maps and icons).
* Fixed stats.pl problem where it was referencing the wrong month "word-value"
  in the output tables. (Remeber, months start at 1, but arrays start at 0!)
* Fixed minor bugs in installer causing check for QStat binary to fail in the
  qstatlist.conf file, also added validity checks for location of Perl
  interpreter and QStat binary to the installer itself.


Changes in version 3.1:

* Fixed qstatwrap to return Master server data properly. (This feature isn't
  ordinarily used, but isn't it nice to know it works now?)
* Location now preceeds hostname in the server listing. Nonresponsive servers no
  longer obscure their location.
* Fixed addqserver.cgi back-linking to server pages.
* Preliminary "working" Unreal server support.
* Fixed problem with the statistics module that was misaligning the date data
  on the output pages. Collected data should still be fine.
* Added utils/ directory to distribution:
  + Added listbak.pl script to backup the server database with the timeout
    zeroed out.
* Fixed problem with hold file not forcing a datbase write. Thank you to Bill
  Everhart for finding this one.
* Test for the existence of the QStat binary wasn't sufficient. Fixed so it's
  checked as an executable file at the beginning of qstatlist.conf (when it's
  included) instead of separately (and wrong) in each binary.
* Added $PRESERVE_NOTDOLIST constant to qstatlist options.
* The get_data() function in qstatlist will now no longer process queries for
  servertypes not in @DOLIST.
* Updated documentation.


Changes in version 3.0:

* Changed variable name of "ip:port" data from $name to $id.
* Added $PRESERVE_QMASTER constant to qstatlist options.
* Added $DODEFAULT constant to qstatlist.conf. This is the default fallback
  listing type, and also the listing that the index gets linked to.
* Fixed Y2K bug. It's now a Y2.038K bug, which is when Perl's localtime() is
  supposed to fail. Logs are now in 4-digit year format.
* Fixed poor scoping.
* Pulled out DNS, stats, and HTML output code into separate modules.
* Re-tagged debugging code so that it can be grep'd out. Also added $DEBUG
  variable to qstatlist to ease development debugging.
* The qstatlist script now generates all the HTML output, rather than
  having a CGI script format and link it on-the-fly. Takes an
  insignificant amount of additional disk space in exchange for not having
  to start up a Perl process for every page request/user. The new code,
  contained in html.pl, also uses a more efficient algorithm to process
  the data tables into HTML.
* Cleaned up internal structuring.
* Changed the installation structure.
  + install.pl now reads defaults from the distribution qstatlist.conf first,
    then overrides those defaults with computed values and/or input from the
    user.
  + The install.pl script now re-sets the ownership and permissions on the
    DNS cache if it exists, and creates it if it doesn't.
  + CGI scripts are now installed in the <cgi-bin>/qstatlist/ directory.
  + Binaries are now installed in the $QSTATLIST_BASEDIR directory.
  + Added the $LIST_BASEDIR/stats/ directory.
* Made minor changes to fix formatting/typographical errors.
* Added HexenWorld and preliminary Unreal server support.
* The addqserver.cgi now supports adding another server at the end of the
  process. It will also remember (and link back to) the server listing that
  it was called from. The server type selected in the form will default to
  the same server type of the page it was called from.
* Added page "jump" bars to multi-page listings.
* Fixed major gaffe in the way addqserver.cgi worked. Since qstatlist only
  locks the list during reads and writes (rather than throughout the
  entire process), it was possible for a server to be added to the
  database by addqserver.cgi, only to have the database subsequently
  overwritten by qstatlist as it finished up its run. Added a holding file
  that addqserver.cgi writes into that qstatlist picks up changes from at
  the beginning of its run.
* QstatList now collects hourly, daily, and monthly statistics on servers!
  Graphs are created for number of active/total servers and active/max players
  for each server type by hour, day, and month. This requires some (easy to
  install) external Perl modules to be present, however.
* Added $COLLECT_STATS constant to qstatlist options.
* Page expiries for the HTML listing are automagically calculated from the time
  of the last run.
* Most qstatlist-only option constants now appear in qstatlist, rather than in
  the qstatlist.conf file.
* The html.pl module automatically checks for symbolic link support, then
  checks to see if the index page points to the $DODEFAULT entry point. If not,
  it rebuilds the symbolic link.
* Added new QstatList logo.
* Added Quake II Mission Pack map thumbnails and titles.
* Updated documentation.


Changes in version 2.4:

* Fixed "Unexpected response from QStat!" problem on Linux.  Thank you to
  Andreas Engvall for finding this one.
* Added additional debugging output to qstatwrap.
* Added additional commentary in source code.
* The installer will now move an existing qstatlist.conf to qstatlist.conf.old
  before copying qstatlist.conf into place.
* Split up a long line in qstatwrap.cgi that was giving me trouble with pico's
  word-wrap.
* Added the $install_debug variable to install.pl; which, if set nozero, will
  install additional executables with the debugging output enabled.
* The qstatlist executable (and qstatlist.src executable, if the debugging
  sources are installed) is now installed setuid, which is handy if you're
  testing QstatList as root and don't want (or forget) to 'su - <cronuser>',
  as this will keep the ownership of the created files all nice and proper.
* Fixed problem with get_location() always returning "Unknown".
* Added map thumbnails for the Point Release and CTF.
* Added entries for the *.ca and *.us domains to the domains.pl file.
* Untainted ampersands in the QStat response strings.


Changes in version 2.3:

* Updated documentation.
* Installer now properly installs empty list.log and list.dat files if the
  files do not already exist.
* Added QStat 2.1z BETA support.
* Changed the "Continue?" prompt for the installer to default to no.
* Fixed problem with installer not properly setting file permissions. Robert
  get credit for finding this one.
* Reworked some of the installer status messages.
* Added game info to main listing for QuakeWorld and Quake II servers.  Thanks
  to Steve Jankowski for the suggestion.
* Added Quake II Master server support.  Thank you to Steve Jankowski for
  the assistance in getting this working.
* Untainted angle brackets in the QStat response strings.
* DNS cache now converts FQDN to lower case.
* If a server admin didn't prepend "http://" to the Web page address in the
  server variables, qstatwrap will now add it.
* BODY tag changed on main link page to make the color of an followed link
  the same as a unfollowed link.
* Added DOCTYPEs to the HTML output.
* Made minor changes to the HTML output to try and keep the server list table
  width on a 640x480 screen.
* Qstatlist now only attempts to search for a location if it was able to
  resolve the IP address and the location is equal to "Unknown".
* Qstatlist will only attempt to perform a QStat query for a list if the list
  is non-empty.
* Rewrote the secure_refer() procedure in qstatwrap.
