86 lines
2.8 KiB
HTML
86 lines
2.8 KiB
HTML
<HTML>
|
|
<HEAD>
|
|
<TITLE>The Scheme Underground Network Package</TITLE>
|
|
</HEAD>
|
|
|
|
<BODY>
|
|
<H1>The Scheme Underground Network Package</H1>
|
|
I have written a set of libraries for doing Net hacking from Scheme/scsh.
|
|
It includes:
|
|
<DL>
|
|
<DT> An smtp client library.
|
|
<DD> Forge mail from the comfort of your own Scheme process.
|
|
|
|
<DT> rfc822 header library
|
|
<DD> Read email-style headers. Useful in several contexts (smtp, http, etc.)
|
|
|
|
<DT> Simple structured HTML output library
|
|
<DD> Balanced delimiters, etc.
|
|
|
|
<DT> The SU Web server
|
|
<DD> This is a complete implementation of an HTTP 1.0 server in Scheme.
|
|
The server contains other standalone packages that may separately be of
|
|
use:
|
|
<UL>
|
|
<LI> URI and URL parsers and unparsers.
|
|
<LI> A library to help writing CGI scripts in Scheme.
|
|
<LI> Server extensions for interfacing to CGI scripts.
|
|
<LI> Server extensions for uploading Scheme code.
|
|
</UL>
|
|
The server has three main design goals:
|
|
<DL>
|
|
<DT> Extensibility
|
|
<DD> The server is in fact nothing but extensions, using a mechanism
|
|
called "path handlers" to define URL-specific services. It has a toolkit
|
|
of services that can be used as-is, extended or built upon.
|
|
User extensions have exactly the same status as the base services.
|
|
|
|
<P>
|
|
The extension mechanism allows for easy implementation of new services
|
|
without the overhead of the CGI interface. Since the server is written
|
|
on top of the Scheme shell, the full set of Unix system calls and
|
|
program tools is available to the implementor.
|
|
|
|
<DT> Mobile code
|
|
<DD> The server allows Scheme code to be uploaded for direct execution
|
|
inside the server. The server has complete control over the code,
|
|
and can safely execute it in restricted environments that do not
|
|
provide access to potentially dangerous primitives (such as the
|
|
"delete file" procedure.)
|
|
|
|
|
|
<DT> Clarity
|
|
<DD> I wrote this server to help myself understand the Web. It is voluminously
|
|
commented, and I hope it will prove to be an aid in understanding the
|
|
low-level details of the Web protocols.
|
|
</DL>
|
|
|
|
<P>
|
|
The S.U. server has the ability to upload code from Web clients and
|
|
execute that code on behalf of the client in a protected environment.
|
|
|
|
<P>
|
|
Some <A HREF="su-httpd.html">simple documentation</A> on the server
|
|
is available.
|
|
|
|
</DL>
|
|
|
|
<H2>Obtaining the system</H2>
|
|
The network code is available by
|
|
<A HREF="ftp://ftp-swiss.ai.mit.edu/pub/scsh/contrib/net/net.tar.gz">ftp</A>.
|
|
To run the server, you need our 0.4 release of
|
|
<A HREF="http://www-swiss.ai.mit.edu/scsh/scsh.html">scsh</A>
|
|
which has just been released.
|
|
|
|
Beyond actually running the server,
|
|
the separate parser libraries and other utilites may be of use as separate
|
|
modules.
|
|
|
|
<ADDRESS><A HREF="http://www.ai.mit.edu/people/shivers/">Olin Shivers</A>
|
|
/ <A HREF="plan-file">shivers@ai.mit.edu</A></ADDRESS>
|
|
|
|
</BODY>
|
|
</HTML>
|
|
|
|
|