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>
 | |
| 
 | |
| 
 |