Posted to tcl by Colin at Tue Jul 22 14:15:05 GMT 2008view pretty

#! /usr/bin/env tclsh

# Single Threaded Minimal File Server Site
lappend auto_path [pwd]	;# path to the Site.tcl file
namespace eval Site {
    variable varnish {}
    variable home [file dirname [info script]]
}

package require Site

# This is a File domain which serves simple files
# from the eponymous directory.  Each file served has an expiry
# date as indicated, which allows caching.
File docroot -root $::Site::docroot

#### Incoming - handle of incoming request
#
# This proc is called with a fully parsed incoming request.
# It uses Responder to act like tcl's [switch] command,
# but wraps errors in an appropriate HTML response.

proc Incoming {req} {
    # [Responder Incoming] provides a safe wrapper and switch-like
    # dispatcher for incoming requests.
    return [Responder Incoming $req -glob -- [dict get $req -path] {
	/ -
	/* {
	    # redirect / to /wub
	    docroot do $req
	}
    }]
}

# Start Site Server(s)
Site start