91 lines
1.9 KiB
HTML
91 lines
1.9 KiB
HTML
<pre>R7RS Scheme library for Common Gateway Interface
|
|
|
|
If you dont know what CGI is, in short server runs your Scheme script and
|
|
displays it's output as a webpage.
|
|
|
|
## Installation
|
|
|
|
snow-chibi --impls=$SCHEME retropikzel.cgi
|
|
|
|
|
|
## Usage example
|
|
|
|
lighttpd.conf:
|
|
|
|
var.basedir = env.PWD
|
|
server.document-root = basedir
|
|
server.port = 3000
|
|
server.modules += ("mod_cgi", "mod_dirlisting")
|
|
cgi.assign = (".scm" => basedir + "/scheme-script")
|
|
dir-listing.activate = "enable"
|
|
|
|
scheme-script:
|
|
|
|
#!/bin/sh
|
|
#exec capy --r7rs --script "$@"
|
|
#exec chibi-scheme "$@"
|
|
#exec csi -quiet -batch "$@"
|
|
#exec icyc -s "$@"
|
|
#exec gsi /home/youruser/.gambit_userlib/ "$@"
|
|
exec gosh "$@"
|
|
#exec kawa --r7rs -Dkawa.import.path=/usr/local/share/kawa/lib/*.sld "$@"
|
|
#exec loko --program "$@"
|
|
#exec mit-scheme --batch-mode --load "$@"
|
|
#exec racket -I r7rs --script "$@"
|
|
#exec sash -r7 "$@"
|
|
#exec skint "$@"
|
|
#exec stklos "$@"
|
|
#exec tr7i "$@"
|
|
|
|
hello.scm:
|
|
|
|
(import (scheme base)
|
|
(scheme write)
|
|
(retropikzel cgi))
|
|
|
|
(handle-request
|
|
'()
|
|
(lambda (request headers parameters cookies body files)
|
|
(display "Content-type: text/html
|
|
")
|
|
(display "
|
|
")
|
|
(display "Hello</br>")
|
|
(write request)))
|
|
|
|
run:
|
|
|
|
chmod +x scheme-cript
|
|
lighttpd -D -f lighttpd.conf
|
|
|
|
Then navigate with your browser to http://127.0.0.1:3000/hello.scm
|
|
|
|
|
|
## Documentation
|
|
|
|
(**handle-request** options thunk)
|
|
|
|
Options must be association list. Thunk must be procedure taking arguments:
|
|
|
|
- request
|
|
- Full request
|
|
- headers
|
|
- Request headers
|
|
- parameters
|
|
- Request parameters
|
|
- The ?foo=bar&baz=1 part parsed
|
|
- cookies
|
|
- Request cookies
|
|
- body
|
|
- Request body
|
|
- files
|
|
- Request files
|
|
|
|
Whatever thunk writes to (current-output-port) is sent back as response.
|
|
|
|
### Environment variables
|
|
|
|
**SCM_CGI_TMPDIR**
|
|
|
|
Path to where uploaded files are stored. Default is /tmp.</pre>
|