From: Howard Stearns
Subject: personal internet proxy?
Date: 
Message-ID: <3DD82B5C.9030207@alum.mit.edu>
I want to experiment with the creation of small modules in a proxy
server that can:
    compute responses to URL get/put requests
    compute transformations of content
    dynamically add/change computational abilities

Any ideas on what to use?  I thought this might be a job for CL and
CL-HTTP but my CONSTRAINTS are:

    zero budget / non-commercial use (This is to occupy myself
                              "between gigs". I'm working off savings.)
    Windows: '98, XP, etc., not just NT (It's what I've got, and
           the result is alas only useful if I can deploy on Windows.)

I'll list now what I've considered, the desired architecture, and what
I'm really trying to do.
-------------------------------------------------

CL OPTIONS:
-----------

I couldn't get CL-HTTP to compile in the free/trial versions of Allegro
or Lispworks.  Too crippled?

I couldn't find precompiled CLisp for Windows. I've considered tracking
down some free form of Cygwin, making CLisp work with it, and then 
porting CL-HTTP to it. (Perhaps by starting with Chris Double's port of
AllegroServe for CormanLisp?)

CMUCL doesn't seem to be available for Windows, and cons.org says that
this would be hard.

Even $200 for CormanLisp is too steep right now. Besides, I gather that 
CL-HTTP doesn't run on it and I'm not certain whether AllegroStore 
(which does run on it) will meet my needs. (See more info, below.)


OTHER OPTIONS:
--------------

PLT Scheme + SXSL?

Tomcat/apache and Java? (Give up on Lisp. Probably more accepted result
anyway!)


ARCHITECTURE to be created:
---------------------------

1. Ordinary web browser user requests content through proxy.

2. Proxy interprets request according to what's loaded. Most requests 
pass through to Internet.

3. Content from Internet is parsed by proxy and interpreted according to 
what's loaded. Most (e.g., most HTML) just pass through unaltered.

4. Resulting content is displayed in browser.

* Modular in that transformation/side-effects of HTTP-get/-put and of 
HTML/XML entities can be specified separately for particular patterns, 
and composed by system.

* Side-effect of some content is to load new capabilities. (Yes, there 
are security issues. Thanks.)


CAPABILITIES of architecture for APPLICATIONS:
----------------------------------------------

Single platform for implementing:

* logging, blocking, caching and other proxy stuff, but with more 
flexible control.

* automatically amassing personal Semantic-Web metadata on your own machine

* rich content w/client-side computation by processing (mangled/cookied) 
HTTP requests directly (i.e., w/o going out to the net).

* flexible personal portals that aggregate content and provide 
additional navigation (e.g., using the metadata store, c.f. Haystack @ 
MIT) and interaction (such as annotation (c.f., Annotea/Amaya) or other 
content creation (c.f., Frontier))

* interpreting certain URLs specially. In particular, queries to a peer 
network of such personal proxies.  Subsumes instant messaging, file 
sharing, and other current P2P capabilities, but also allows highly 
customizable 'blogging/publishing, auctions, services, and other 
personal application serving regardless of DHCP addressing, etc.

From: Ng Pheng Siong
Subject: Re: personal internet proxy?
Date: 
Message-ID: <ar9hsg$onq$1@mawar.singnet.com.sg>
According to Howard Stearns  <·······@alum.mit.edu>:
> I want to experiment with the creation of small modules in a proxy
> server that can:
>     compute responses to URL get/put requests
>     compute transformations of content
>     dynamically add/change computational abilities
> 
> Any ideas on what to use?  I thought this might be a job for CL and
> CL-HTTP but my CONSTRAINTS are:
> 
>     zero budget / non-commercial use (This is to occupy myself
>                               "between gigs". I'm working off savings.)
>     Windows: '98, XP, etc., not just NT (It's what I've got, and
>            the result is alas only useful if I can deploy on Windows.)

AllegroServe on ACL non-commercial or Portable AllegroServe on LispWorks
non-commercial should be fine.

I played with the former on Win98, but only lightly. I use Portable with
CMUCL on FreeBSD.


> * automatically amassing personal Semantic-Web metadata on your own machine
> 
> * flexible personal portals that aggregate content and provide 
> additional navigation (e.g., using the metadata store, c.f. Haystack @ 
> MIT) and interaction (such as annotation (c.f., Annotea/Amaya) or other 
> content creation (c.f., Frontier))

I've been thinking about these, off-and-on. I envisage (ahem, I mean
imagine) there is some commercial potential for these in combination with
mobile ad-hoc networking.

Have fun!


-- 
Ng Pheng Siong <····@netmemetic.com> * http://www.netmemetic.com
From: Rudi Schlatte
Subject: Re: personal internet proxy?
Date: 
Message-ID: <87bs4naybj.fsf@semmel.constantly.at>
····@netmemetic.com (Ng Pheng Siong) writes:

> AllegroServe on ACL non-commercial or Portable AllegroServe on LispWorks
> non-commercial should be fine.
>
> I played with the former on Win98, but only lightly. I use Portable with
> CMUCL on FreeBSD.
>

Chris Double's port of AllegroServe is also included in the Corman
Lisp distribution, which is free for personal use.

And there's an initial rough version of clisp support in the
Portable AllegroServe CVS, although it's known to be buggy at the
moment, so should definitely not be considered as a stable platform
for anything.  (Specifically, it's untested on Windows, will not serve
binary data unless you compile clisp from CVS, and is not usable as a
web server because it will only serve one request at a time (no
multithreading in clisp).)

Regards,

Rudi
From: Rob Warnock
Subject: Re: personal internet proxy?
Date: 
Message-ID: <lLedndryU54pt0SgXTWc1g@giganews.com>
Howard Stearns  <·······@alum.mit.edu> wrote:
+---------------
| I want to experiment with the creation of small modules in a proxy
| server that can:
|     compute responses to URL get/put requests
|     compute transformations of content
|     dynamically add/change computational abilities
| 
| Any ideas on what to use?
+---------------

I'm almost reluctant to mention this, but... You might want to take a
look at Phil Karn's "httproute" <URL:http://www.ka9q.net/code/httproute/>:

	This package contains a daemon, written as a Perl script plus
	configuration file, that provides a simple HTTP router, banner
	advertisement blanker, cache and cookie cutter. You configure
	your web browser to use it as a web proxy. 

One of my play projects that I never got around to was to recreate the
same functionality in PLT Scheme, though I would now probably use CMUCL.
[Not CLISP, since one needs to handle multiple threads simultaneously
to keep performance up.]


-Rob

-----
Rob Warnock, PP-ASEL-IA		<····@rpw3.org>
627 26th Avenue			<URL:http://www.rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Earl J. Wagner
Subject: Re: personal internet proxy?
Date: 
Message-ID: <86b5952.0211182047.5fad8271@posting.google.com>
Howard Stearns <·······@alum.mit.edu> wrote in message news:<················@alum.mit.edu>...
> I want to experiment with the creation of small modules in a proxy
> server that can:
>     compute responses to URL get/put requests
>     compute transformations of content
>     dynamically add/change computational abilities
> ...

Hi. We spoke a little bit about this at the Lisp Conference in the
context of the project I'm currently working on
(http://web.media.mit.edu/~ewagner/woodstein/). I recommend you look
at WBI (http://www.almaden.ibm.com/cs/wbi/), which was the inspiration
for me to think along these lines. They have some nice demos, such as
automatically annotating every link on a page with a traffic light
indicating the ping latency. It's in Java, and it's a little buggy,
but usable for working out ideas and putting together demos.

-Earl