* Grumpy's changelog * What's new in v0.21 [07 Feb 2011]: - Removed gopher support from Grumpy (gopher support forked into the Motsognir project), - Added support for serving very big files (up to 8EiB - was: 2GiB max), - Added basic support for automatic language detection (with redirection to another ressource). What's new in v0.20 [16 Mar 2010]: - The URL-encoding/decoding function handles the quote character (%22) properly now, - Added a specific protection against Slowloris-like attacks, - Added the possibility to block specific file types when requested from a referer different than the host (usually known as "bandwidth stealing"), - Added new MIME types auto-detection: text/calendar, text/x-vcard, text/html, text/x-perl, text/x-sh, text/x-csh, text/x-ksh, image/vnd.djvu, application/vnd.kde.kword, application/x-bittorrent, - When executing a gopher CGI script, Grumpy sets the SERVER_PORT variable, - Added support for Content-MD5 HTTP header on "200" responses (no MD5 on partial downloads), - Outputting a 416 error (Range Request Not Satisfiable) when requested range start is greater than the requested file's size, - Fixed a bug in range requests handling (the returned ressource's size was always "0"). What's new in v0.19 [08 Jul 2009]: - The DocType declaration of the HTML file provided to gopher clients dumbly following a non-gopher URL has been changed from XHTML 1.0 to HTML 3.2, and a refresh time of 10 seconds has been added, - Added support for CGI-style scripts to the gopher server, - CGI line terminators are CR/LF now (were: LF), - Added MIME support for HTTP content-type declarations (over 60 MIME types are detected automatically). What's new in v0.18 [26 Jul 2009]: - Added a handler for gopher URL links ("URL:"), which provides a follow-page to dumb gopher clients, - General cleaning of the generated directory listing's html code, - Added a new configuration token "DirListCSS", which allows to specify a custom CSS style for HTML directory listings, - Added new configuration tokens "HttpLogFile" and "GopherLogFile", which allows to specify specific log files for HTTP and Gopher events (before, all logs were written to "/var/log/grumpy.log" on Linux, and ".\grumpy.log" on Windows), - Directory listings (html) do not generate recursive ("..") links for parent directories anymore (absolute paths are generated instead), - Added support for percent-encoded UTF-8 HTTP requests (requires a UTF-8 filesystem). What's new in v0.17b [15 Apr 2009]: - Fixed a serious bug in the Gopher module (after having processed the Gopher request, Grumpy wasn't closing the connection, and processed that request again via the HTTP engine). What's new in v0.17 [02 Apr 2009]: - Grumpy is able to ban HTTP requests by their User-Agent, - The source code has been optimized to allow a Windows port version, - UTF-8 BOM headers (if any) are handled correctly in all configuration files, - Fixed a serious bug in the URL %-decoder (could cause Grumpy to loop indefinetely in specific conditions), - The security module is checking any %-encoded requests a bit deeper, - Directory listings are buffered now (thus are transmitted faster), and contain a content-length declaration, - Any http request containging an asterisk in the filename (like "/boo*") is answered with a 404 Not Found, - Http requests containing two or more "?" chars are rejected by the security module, - Gopher requests containing at least one "?" or "*" chars are rejected by the gopher's security module, - If a specific port was used to access Grumpy, the http directory listing will display it (extracted from the "Host" header), - All returned http error pages have a content-length declaration in their header now, - Columns "Date / Time" and "Size" of any HTTP directory listing are not wrapable anymore (spaces won't be breaked), - HTTP directory listings aren't using deprecated html statements anymore (the produced html code is entirely style-based now), - The parser for descript.ion files has been optimized (much faster now), - Added a brute-force protection for HTTP auth attempts (responses to false credentials are delayed for 2 seconds each time), - Range specifications of HTTP requests using units different than "bytes" are ignored, - Connections durations are written to the log file. What's new in v0.16 [26 Feb 2009]: - Any gopher request is truncated at its first TAB (if any found), - Gopher requests coming to the server are now checked against some security rules, - When returning a text file, the gopher server is replacing all "." (dot-CR/LF) lines by ". " (dot-space-CR/LF), - Added the possiblity to create gopher links through *.gopherlink files, - Added support for the "P" gopher filetype (for *.pdf files), - Added support for gophermaps, overwritting gopher directory listings (requires a grumpy.gophermap file in the directory), - Gopher directory's description (found in the "." entry of its descript.ion file) are wrapped if longer than 70 characters, - Gopher directory listings are sorted by entries' descriptions (was: by entries' selectors), - When geting a CONNECT HTTP request, the server answers with a 501 ("not implemented") code, - The HTTP server may serve some additional (customizable) headers: x-powered-by, x-hosted-by, x-server-admin, x-disclaimer, - HTTP responses contain a "Last-Modified" header (whenever possible), - The