I've taked Jeff Mock's code, cleaned up it, organized it, added documentation, and put it here:

http://homepage.mac.com/pauljlucas/software/rio_grande-0.9.tar.gz

The complete set of changes is:

  • Reorganized the directory structure:
    (a) Moved CGIs to a cgi-bin directory.
    (b) Moved the database out from under the web server's document root.
    (c) Moved non-CGI (e.g., ssdp) code out from under the web server.
  • Rewrote all CGIs majorly cleaning up the code.
  • Playlist support has been added to the CGIs.
  • Half of the "favourites" Rio request has been implemented: the Rio can now request "/favourites/all" and get the contents of a plain text file back.
  • The "build" CGI has been rewritten as a command-line program and also:
    (a) Now builds playlist files from directory names.
    (b) Colons are now allowed in track names.
    (c) Added optional warnings.
  • The "ssdp" daemon has been cleaned up and also:
    (a) Now takes command-line options.
    (b) If started as root, gives away its root privileges.
    (c) Added proper setting of SO_REUSEADDR socket option.
    (d) Can now alternatively run under (x)inetd.
    (e) Logging is now optional.
  • Added sample a dhcpd.conf, a (correct) httpd.conf, an NFS exports, inetd.conf, and xinetd files.
  • Removed the web interface. (Sorry, I don't care about it. I edit my MP3 files' ID3 tags using other software anyway, e.g., Apple's iTunes.)

Suggestions (including a better name) welcome.
_________________________
- Paul