This contains changelog up to 1.4. There are no changelogs from 1.4 until 3.0. 2012-12-02 Kim Holviala * Released version 1.4 * Added logcheck ignore file for Debian * Fixed compile without HAVE_SHMEM * Autogenerated caps.txt now works without SHMEM * Support for Haiku R1 (make && make install works) * CGIs now have $LOCAL_ADDR * Debian package no longer depends on lsb-release * CPU type is now properly detected on AIX * Makefile supports cross-compiling (CC & HOSTCC) * Option -nr disables root user checking (for debugging) * Platform detection for Linux/mips boards (routers) * Fixes for OpenBSD (thanks to Brian Callahan) * Last remaining sprintf() replaced with snprintf() * max() is no longer a function but a #define * Clang fixes (thanks to Jacob Dahl Pind) * Removed system-info.sh & dmidecode from Debian package 2012-06-12 Kim Holviala * Released version 1.3 * Support for headerless HTTP/0.9 * Code cleanups * Platform probing now knows about RedHat and Slackware * lsb_release no longer gets called if it doesn't exist (bugreport from Jacob Dahl Pind) * Changed menu errors from type "i" text to type "3" (bugreport from Damien Carol) * Removed the special OSX Carbonized build * Fixed a bug in menu.c: popen() needs pclose() * Fixed a off-by-one in gopher_filetype() * Changed the filetype of documents (doc/ps/pdf) to "d" 2012-05-04 Kim Holviala * Released version 1.2 (finally...) * On the fly selector rewriting (like Apache mod_rewrite) * Gophertags are properly converted to output charset * Server admin email can be specified for caps.txt * Server location for caps.txt * Split options.c from gophernicus.c * Removed support for Gopher over HTTP proxies * Hack to make "gopher example.com" work (UMN gopher client assumes gopher+ which we don't support) 2010-12-01 Kim Holviala * Released version 1.1 * Content-based detection of gif/png/jpg/ps/pdf/html/gz * Gophermap virtual host list (%) only lists FQDNs * Serve out caps.txt from a file if it exists * Option -na disables autogenerated caps.txt * Changed option -l to -b (show BSD license) * Changed option -m to -l (log to file) * README and LICENSE weren't zero-terminated strings (duh) * Querying /server-status no longer updates statistics (because Munin statistics collection was being throttled) * Internal charset variables are now enums and not strings 2010-10-05 Kim Holviala * Released version 1.0 * Support for caps.txt as suggested by Cameron Kaiser * Support for gophertags (lifted from Bucktooth) * HTTP requests are redirected to a public gopher proxy * Allow directories named "gophermap" and "gophertag" (only files are special) * Removed duplicate call to strniconv() * A few ENABLE_STRICT_RFC1436 additions * Much more descriptive error logging * Self references /./ are removed from request * Apache-compatible file logging in combined log format (-m) * FIFOs in directories no longer crash the server (duh!) * Support for Mac OS X (tested with 10.5 on Intel) * Reworked Makefile with platform-specific build targets * Fixed a call to dirname(path) (don't assume it modifies path) * Makefile installer now supports xinetd and launchd * Makefile installer installs default /var/gopher/gophermap and links the document directory as /docs/ * Added SERVER_ARCH, SERVER_VERSION and SERVER_DESCRIPTION to CGI env variables * Fixed a segfault where shm was used uninitialized (duh!) * Generate native Debian/Ubuntu package with "make deb" * platform() now tries to figure out Linux distribution * platform() knows about Linux ARM boards * Added argument -nm (No shared Memory) for debugging * Fixed AIX make glitch when compiling bin2c (bug in make?) * Changed the name of the project from "Gophernicus Server" to plain "Gophernicus" * Menus without footer (-nf) were missing the dot at the end * Footer message is now right-aligned * server-status and caps.txt requests now update sessions * Compile-time option ENABLE_AUTOHIDING hides manually listed resources from generated menus (to prevent double listings) 2010-07-03 Kim Holviala * Released version 0.9 * Added option to disable HTTP-style query strings * Fixed a regression where some binary files were served out as text (which broke them) * BinHex files are now mapped to filetype 4 * Disabling vhosting disables sessions (mostly) 2010-04-30 Kim Holviala * Released version 0.8 * Security bug in hURL handler fixed * Error pages are now correctly generated for type 'h' * Menu error page more compatible with clients * New macro sstrncmp() compares without explicit sizeof() * Removed all traces of gopher++ protocol (extra headers) as it just didn't work with older (circa '92) servers * Added option to disable automatic menu headers (titles) * Do a chdir() to the resource dir before doing anything * Double-slashes were slashed in QUERY_STRING by accident * Relative links to external hosts work properly in gophermap * Gophermaps can include other gophermaps with =/path/to/file * Executable gophermaps are parsed just like static ones 2010-04-13 Kim Holviala * Released version 0.7 * This release is feature complete, no new features in sight * Support for NetBSD (a typo prevented building - duh) * Replaced the poorly-working scandir() with opendir/qsort * Directory listings (menus) are limited to 1024 entries * Changed the filetype of movies from "v" to ";" (which sucks) * Fixed a compatibility issue with bucktooth gophermaps * Finally wrote decent documentation (README and INSTALL) 2010-04-11 Kim Holviala * Released version 0.6 * platform() results are kept in shared memory * Support for AIX 5.1 and newer * IPv4-in-IPv6 prefix ::ffff: is removed from remote_addr * Replaced install(1) with the install-sh script * /server-status CPULoad can be parsed from /usr/bin/uptime * Replaced text2c/hexdump with bin2c.c (less dependencies) * Files with extension .q (type 7 query) are considered CGIs * Filetype handling completely rewritten * Configurable gopher filetypes using the "-e ext=X" argument * Per-directory filetype overrides in gophermaps with ":ext=X" * Refuse to serve out gophermaps (why didn't I catch this before?) * Cleaned up main() * Output filters - run files through an external program (php!) 2010-04-05 Kim Holviala * Released version 0.5 * Code tested to work on 32-bit Linux/armv5tel * Filetype 7 query errors are now handled properly * HTTP-style query string overrides type 7 query * Protocol detection (0/+/++) works properly * gopher++ extra headers parsed correctly * gopher++ works ok with a patched NSCA Mosaic! * ISO-8859-1 (Latin-1) output * Full UTF-8 output support (without widechars) * Gophermaps are converted to output charset * All type 0 output is converted to output charset * All charset conversions can be disabled with option -no * !Titles in gophermaps are converted to gopher menu titles * Automatically generates gopher title resources for menus * Compile-time option to strictly adhere to RFC 1436 * Compile-time option to disable all gopher++ support 2010-03-29 Kim Holviala * Released version 0.4 * Renamed the project to "Gophernicus Server" * Major rewrite with much cleaner code * Changed all strncpy's to the OpenBSD strlcpy * Server can guess the request type (menu/text/binary) * Errors are formatted for current filetype (menu/text) * Errors for images (types g&I) are outputted as an image * /~luser (/home/luser/public_gopher) must be owned by luser * Configurable output width for menus * Files are outputted using sendfile() if available * Locale forced to POSIX for strftime() * Filetype '-' in gophermaps hides files * Gopher+ requests are now handled gracefully * Relative selectors in gophemaps work * Filesizes in menus are now human-readable (KB/MB/GB etc) * Refuse to serve world-writeable content * Support for Apache-style /server-status * HTTP requests for /server-status work (munin monitoring ftw!) * Session tracking using shared memory * Referer support for CGIs * Replaced iconv() with own charset conversion routine * Automatic throttling for users who hit the server too much * Replaced static compile-time uname with uname() * Support for virtual hosting (with gopher0 no less!) 2010-01-07 Kim Holviala * Released version 0.3 * Automatic detection of text vs. binary filetype for files which have no (known) suffix * hURL redirect pages now respect -f (no footer) option * IPv6 support for logging & CGI REMOTE_ADDR * Inline gophermaps * Removed support for relative resource names in gophermaps * Support for virtual userdirs (~user -> /home/user/public_gopher) * Automatic listing of userdirs in gophermap * Redirect accidental http requests to gopher * License included in the binary -> install no longer installs docs * Changed command line options (I was running out of arg letters...) * Debug to syslog with '-d' option 2010-01-02 Kim Holviala * Released version 0.2 * Logging to syslog * Support for gophermaps * Support for executable gophermaps * Support for CGI scripts * Support for type 7 search queries * Support for hURL redirect pages * Support for non-ASCII resource/file names (tested with UTF-8) * Support for both %hex and #octal request encodings * Try to get server hostname from $HOSTNAME or gethostname() * Basic support for different platforms via HAVE_XX defines 2009-12-30 Kim Holviala * Released version 0.1 * Basic rfc1436 functionality works * Fancy menus with file dates & sizes * Options via command line (with sensible defaults) 2009-12-28 Kim Holviala * Started coding kgopherd * Trying to remember how "C" works...