Wapp

What Wapp
Where https://wapp.tcl.tk/
Description A lightweight, secure web microframework in a single source file. Serves HTTP/1.1 directly, but supports CGI and SCGI as well. Aims for a small, easy-to-learn user API.
Prerequisites Tcl 8.6
Updated 2019-10-15
Author drh
License 2-clause BSD

Download

fossil clone https://wapp.tcl.tk/ wapp.fossil
mkdir wapp
cd wapp
fossil open ../wapp.fossil
tclsh tests/test01.tcl

or see other alternatives at https://wapp.tcl.tk/index.html/doc/trunk/docs/download.md

See also

Discussion

DEC And you get hold of it by......?

AM See the link above

DEC Which one?, No simple zip file then.. EMJ Again, see above, particularly the "other alternatives" link.

The following code excerpt results in no image being shown in browser. However, when I bring up the text view of the HTML (via ctrl-U on Chrome browser) and click the link from there, the image shows up. Why does the image not show up through wapp-default? 'Hello' prints as expected. Thanks in advance, Doug. (I replaced the real domain with example.com)

#!/usr/bin/tclsh
source <full_path>/lib/wapp/wapp.tcl

proc wapp-default {
   wapp-subst {
       <img src="http://www.example.com/IMG_1870.JPG" style="width:75%">
       <br><b>Hello</b> World!
   }
}
wapp-start

dbohdan 2018-03-27: That's a consequence of Wapp's default Content Security Policy . (One of Wapp's design goals is to be secure by default , so the default policy is as strict as possible.) You can use curl -v and your Web browser's Console [L1 ] [L2 ] to debug the Content Security Policy.

Here is an example of how you can configure the Content Security Policy to allow images from a certain host:

#! /usr/bin/env tclsh
source wapp.tcl

proc wapp-default {} {
    wapp-content-security-policy \
        {default-src 'self'; img-src 'self' https://picsum.photos}
    wapp-subst {
        <!doctype html>
        <img src="https://picsum.photos/450/300" style="width:75%">
        <br><b>Hello</b> World!
    }
}
wapp-start $::argv