DustMote with Snit

What DustMote-Snit
Where https://github.com/tclssg/tclssg/tree/master/lib/dustmote-snit/
Description An extended version of the DustMote web server wrapped in a Snit type.
Platforms *BSD, Linux, macOS, Windows
Prerequisites Tcl 8.5 or newer, Tcllib, optionally TclTLS 1.6.7 or newer for HTTPS.
Updated 2020-09-08 (v0.18.0)
License Public domain (like DustMote itself)
Contact dbohdan

DustMote-Snit is developed as part of Tclssg. It adds the following new features to DustMote:

  • Basic logging (to stdout);
  • Content-Type;
  • Custom route handlers;
  • Directory listings;
  • Path jailing (albeit not seriously tested for security);
  • Content-Range (resumed transfers);
  • TLS support;
  • Every server is a Snit object;
  • Multiple servers can run in the same Tcl interpreter;
  • When run as the main script:
    • Command line options are processed to configure the server;
    • The server can be reloaded by accessing /reload and shut down by accessing /quit.

Known bugs and limitations:

  • Canceled transfers are not logged correctly.
  • Security: consider DustMote-Snit insecure and do not let it run unsupervised where you don't know who might access it.

Usage (from the command line)

usage: ./dustmote-snit.tcl -root value ?-host localhost? ?-port 8080? ?-default index.html? ?-verbose 1? ?-dirlists 1? ?-certfile public.pem? ?-keyfile private.pem? ?-tls 0?

You can use the following shell command to generate a set of temporary SSL certificates with OpenSSL:

openssl req -x509 -newkey rsa:2048 -nodes -keyout private.pem -out public.pem -subj '/CN=localhost' -days 1

Discussion

See also