/* +----------------------------------------------------------------------------+ | FILE: CHANGES | | QstatList | | Copyright (C) 2000 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 4.1: * The GD Graphics library that produces pseudo-GIF format image files (version 1.3) is no longer being distributed due to patent problems with the GIF image format. * Changed from GIFGraf to GD::Graph support. Statistics graphs are now written out as PNGs. * Changed all graphics to JPEGs and PNGs. * Added "PREV" and "NEXT" jump tabs to top of table. Added jump to the top of the table from the bottom. * Fixed the The Robots META tag that's inserted in the HTML output to disallow Web bots from following or indexing the pages. * Fixed parsing error in qstatwrap.cgi for Unreal Tournament servers. Also fixed negative frags parse errors in qstatwrap.cgi for Tribes and Unreal servers. Thanks to Andrea Whitlock for providing a report with a fix. * Added link for unreal:// URLs to server listings and detail reports. Thanks again to Andrea Whitlock for the suggestion. * Fixed HTML table formatting error in html.pl with the "Jump to Bottom of Table" table when not accompanied by "prev" or "next" buttons. * Removed "Server Type", "qport", and "hport" from "Key to List" text. * "Unknown" map icon for Unreal donated by Andrea Whitlock. Changes in version 4.0: * Added QStat 2.3g support. * Added support for Heretic II and Kingpin servers. * Fixed problem with addqserver.cgi not properly assigning server locations. Thank you to Shill for pointing this one out. * Added Javascript trick to addqserver.cgi script to fill in the default port for each server type. Leaving the entry for server port blank will still have the script assume the appropriate default port, however. * Changed document type to HTML 4.01 Transitional, added link to W3C HTML validation service. Fixed a bunch of HTML errors. * Installer no longer strips the debugging output from the utilities, which was rendering the debug command-line switch useless. * Moved around the server color choices again. * Minor cosmetic changes to installer. * Changed the generated link from the server listing pages to qstatwrap.cgi to save the trouble of having a Webserver-generated redirect get sent back to the client. * Updated documentation. Changes in version 3.9 (Internal Version): * Added QStat 2.3f+ BETA support. NOTE: Unreal support in QStat was changed to automatically add one to the port number to find the query port. This means that list.dat files created by versions of QstatList previous to this release will need to have the port numbers of Unreal servers in the list.dat file deincremented by one or those servers will always be listed as unresponsive and will eventualy time out and be removed from the list (which is quite natural, since QstatList will be querying the wrong port). * Shogo and Unreal servers now return Quakeworld-style server responses. * Added additional Q3A map support (ThreeWave CTF and AntiLogic maps). * Added per-servertype "unknown" map icon support to qstatwrap. * Removed the "Type" column in the main server listing to save horizontal space (it was redundant information anyway). * Fixed minor formatting error on the stats page. * Reduced maximum number of DNS lookups for a single run to 64 (down from 128). Changes in version 3.8 (Internal Version): * Fixed error where entires were not timing out of the database. Thanks to Shill for reporting this one. * Fixed problem with install.pl not creating stats.log when statistics gathering is enabled. * Fixed "no Total at /GIFgraph/pie.pm line 220." error when running against zero total servers. * Changed to passing no list to subroutines, rather than passing a NULL list. * Changed the install program to attempt to use a slimmer (and more likely to work) method to determine the fully-qualified domain name. * Added Quake 3 Arena map support to qstatwrap. * Reduced maximum number of DNS lookups for a single run to 128 (down from 256). DNS lookups take a gross majority of the time involved in a run. Changes in version 3.7: * Added QStat 2.3d BETA support. * Added BFRIS server support. * Added Tribes server support. * Added Quake III server support. * Added the $GRAPH_COLUMNS variable to stats.pl to control how many columns of graphs are created on the statistics pages. * Added $ALWAYS_GUESS_UNKOWN_LOC variable to qstatlist; it selects whether QstatList attempts to make a guess at the location of hosts with "Unknown" or null location fields. * Master servers are now listed separately in the "jump bar" header at the top of the server listings pages. * Updated documentation. Changes in version 3.6: * Added QStat 2.3a BETA support. * Fixed problem with servers that had null-string hostnames not being processed properly. Thanks to kAmALA for the heads-up. * Changed $QUERY_QMASTER to $QUERY_MASTER and $PRESERVE_QMASTER to $PRESERVE_MASTER, since QstatList can now query more than just Quake Masters. * Added Half-Life Master server support. * Internal changes to addqserver.cgi script. * Maps are now kept in subdirectories under the main maps/ subdir. This required a change to the install.pl script. * Map names in maps.pl are now keyed to server type. * QstatList now attempts to interpret the location server variable, based on Stomped's regions. The table is located in the domains.pl file. * Installer now backs up qstatlist.conf to "qstatlist.conf.bak", instead of "qstatlist.conf.old". * Rules responses after a unexpected response are now discarded. * Added Shogo server support. * Added Half-Life map thumbnails and titles. * The installer now uses a better test to detect DB_FILE support. Previous versions of the installer were prone to incorrectly reporting DB_FILE support where none existed. Changes in version 3.5: * Ditched $Time variable and replaced it with $^T. * Fixed bug in statssum.pl that was referencing $Time (which was undefined); statssum.pl now properly summarized data instead of just copies the file. * The install.pl script now generates information for adding the statssum.pl script to a cron job when appropriate. * Added new DNS caching timeout values to qstatlist.src file. Default is now three weeks. * Unresponsive servers now report "No response from server since: %m/%d/%Y". * Total servers known added to statistics report. 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. * Ditched $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 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 /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 - ', 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.