SERVER_SOFTWARE
The type and version of the web server passing on this CGI request
Execute a persistent framerd "servlet" to handle cgi requests
fdservlet filename
socket
[nthreads]
When started, this program opens up a Unix domain socket in the file socket to be used to communicate with the program. It then starts a number of threads to respond to CGI requests issued on this socket. To initiate a CGI request, a client (typically the mod_fdserv module) makes a connection to the designated socket and gets back a communications socket. It then sends a slotmap (represented as a DType) across the socket. This slotmap is processed by fdservlet to extract special fields such as form variables, uploaded files, and individual cookies. It then generates a response based on the content of the specified filename
If the file is an FDXML file, it is interpreted and sent to the client in response to any request. If it is an FDCGI file, it may be handled in one of two ways. First, if it defines a procedure (main), this procedure will be called to respond to requests. Otherwise, all of the expressions in the file are executed, in order, to respond to each request.
If the file filename changes between requests, it is reloaded. In addition, any file loaded by an FDXML file will be reloaded if it changes.
When compiled without multithreading, fdservlet still works, but will process only one request at a time, offering persistence but not parallelism.
The procedure (CGI-DATA) returns the slotmap describing the current request. The special form (CGI-INIT vars... ) binds each var to the string or list of strings passed under the name var. The special form (CGI-VAR vars... ) does the exact same thing except that the strings strings are passed to the lisp parser (so the string "3" is converted to the number 3) and the lists are converted into choices of these parsed values.
The following variables are typically bound and accessible through these mechanisms, as well as any form variables or cookies received with the request.
SERVER_SOFTWARE
The type and version of the web server passing on this CGI request
SERVER_NAME
The name of the server passing on the request
SERVER_PORT
The port on which the server is listening
SCRIPT_NAME
The name of the script being run
HTTP_REFERER
If provided, this is the document from which this script was invoked
HTTP_USER_AGENT
The kind of program making the request, often the web browser being used by the human requestor
REMOTE_IDENT
Rarely provided, this is an identifier of the individual making the reauest
REMOTE_HOST
This is the hostname of the machine from which the request apparently originated.
REMOTE_ADDR
This is the IP address (dd.dd.dd.dd) of the machine from which the request apparently originated.
PATH_INFO
This is the part of the URL which occurs after the script name but before any parameters
DOCUMENT_ROOT
This is the document root
PATH_TRANSLATED
This is the local file to which this request was translated
AUTH_TYPE
This describes how the user authenticated her/him/itself.
REMOTE_USER
This describes who the user authenticated her/him/itself as.
HTTP_COOKIE
This is the "cookie" passed with this request. The individual components of this cookie are separated out into separate fields in the CGI-DATA slotmap
SERVER_HOST
This is host on which the server is running. This will differ from SERVER_NAME only if virtual hosts are being used
HTTPS
This is true if the connection with client is a secure (SSL) connection.
HTTP_ACCEPT
HTTP_ACCEPT_CHARSET
HTTP_ACCEPT_ENCODING
HTTP_ACCEPT_LANGUAGE
REQUEST_METHOD
This is the request method. Only GET and POST are currently handled
CONTENT_TYPE
This is the mime time of any data sent with the request
CONTENT_LENGTH
This is the number of bytes of data sent along with the request
QUERY_STRING
This is the query string passed with the request. If it provides form variables (common when the REQUEST_METHOD is GET), these variables are each broken out and assigned to the slotmap.
POST_DATA
This is the actual data sent along with the request. If the mime type is a text type, this is a string; otherwise, it is a packet. If the post data contains form variables (either url-encoded or mime-encoded), these are broken out
PARSED_POST
When the posted data is a multi-part mime document, this is the parsed document.
$Id: fdservlet.1,v 1.1 2002/05/29 18:38:01 haase Exp $