fastcgi/example.scm

69 lines
2.5 KiB
Scheme

;;;
;;; Copyright (c) 2006, Alex Drummond <a.drummond@ucl.ac.uk>
;;; All rights reserved.
;;;
;;; Redistribution and use in source and binary forms, with or without
;;; modification, are permitted provided that the following conditions
;;; are met:
;;;
;;; * Redistributions of source code must retain the above copyright
;;; notice, this list of conditions and the following disclaimer.
;;; * Redistributions in binary form must reproduce the above
;;; copyright notice, this list of conditions and the following
;;; disclaimer in the documentation and/or other materials provided
;;; with the distribution.
;;; * The name of the author(s) may not be used to endorse or promote
;;; products derived from this software without specific prior
;;; written permission.
;;;
;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
;;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
;;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
;;; FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
;;; COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
;;; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
;;; BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
;;; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
;;; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
;;; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
;;; ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
;;; POSSIBILITY OF SUCH DAMAGE.
;;;
(import fastcgi)
(fcgi-accept-loop
"/tmp/fastcgi-socket-0"
0
(lambda (in out err env)
(out "Content-type: text/html\r\n\r\n")
(out "<html><body>")
;; Look up the value of the SERVER_NAME environment variable
;; and print it.
(out "<b>This server is: </b>")
(out (env "SERVER_NAME" "[unknown]"))
(out "<br><br>")
;; Print the name and value of every environment variable.
(out "<table><tr><th align=\"left\">Variable</th>")
(out "<th align=\"left\")>Value</th></tr>")
(for-each
(lambda (k/v)
(out "<tr><td>")
(out (car k/v))
(out "</td><td>")
(out (cdr k/v))
(out "</td></tr>"))
(env))
(out "</table>")
(out "<br><br>")
;; Print POST data, if there is any.
(let ((post-data (fcgi-get-post-data in env)))
(when post-data
(out "The following post data was given:<br>")
(out post-data)))
(out "</body></html>")))