sunet/scheme/httpd/server.scm

52 lines
1.3 KiB
Scheme
Raw Normal View History

#!/bin/sh
IFS=" "
exec scsh -lm ../packages.scm -dm -o http-top -e top -s "$0" "$@"
2000-09-26 10:35:26 -04:00
!#
;;; Scheme Underground Web Server -*- Scheme -*-
;;; Olin Shivers
;;; To compile as a heap-image:
;;; ,open http-top
;;; (dump-scsh-program top "server")
;;; then insert a #! trigger.
(define-structure http-top (export top)
(open httpd-core
httpd-make-options
2001-10-08 13:37:30 -04:00
cgi-server
2000-09-26 10:35:26 -04:00
httpd-basic-handlers
2001-10-08 13:37:30 -04:00
seval-handler
2000-09-26 10:35:26 -04:00
scsh
scheme)
(begin
;; Kitchen-sink request handler.
2000-09-26 10:35:26 -04:00
(define rh
2000-09-26 10:35:26 -04:00
(alist-path-dispatcher
`(("h" . ,(home-dir-handler "public_html"))
("seval" . ,seval-handler)
("cgi-bin" . ,(cgi-handler "/usr/local/etc/httpd/cgi-bin")))
2002-08-27 05:45:05 -04:00
(tilde-home-dir-handler "public_html"
(rooted-file-handler "/usr/local/etc/httpd/htdocs"))))
2000-09-26 10:35:26 -04:00
;; Crank up a server on port 8001, first resetting our identity to
;; user "nobody". Initialise the request-invariant part of the CGI
;; env before starting.
(define (top args)
(display "We be jammin, now.\n") (force-output)
(cond ((zero? (user-uid))
2002-09-05 04:55:58 -04:00
(set-gid (->gid "nobody"))
(set-uid (->uid "nobody"))))
;; invariant environment is know initilialized by cgi-handler itself
;; (initialise-request-invariant-cgi-env)
(httpd (with-request-handler
rh
(with-port
8001
(with-root-directory "/usr/local/etc/httpd")))))))