information about this package can be found in the README. here is a html-version of the README:
works in theory, but not that useful since _sending_ requests with chunked bodies seems to be unimplemented by populair proxies...
tunnel a tcp connection through http.
the idea is to run a special httpd on a machine that has normal internet access. a http client will connect to that httpd, perhaps from behind a firewall. the client will make a POST request in "chunked" transfer-encoding mode, a header "destination" indicates the address the special httpd should connect the client to. whenever the clients tcp connection sends data, a chunk with that data is sent over the chunked POST connection. the remote server does the same, so responds in "chunked" transfer-encoding. keep-alive messages are sent by both ends to make sure proxies do not think the connections are idle and shut them down. keep-alive messages are 1-byte chunks (content ignored), for all other chunks the first byte is the same as for a keep-alive message and must be ignored.
this scheme works when there is no proxy forwarding the http request/response. a chunked post seems legitimate when reading the rfc. however, it seems the proxies tested (squid, polipo, tinyproxy) cannot handle chunked posts. i see no reason why they shouldn't.
get the latest version at:
http://www.ueber.net/code/r/httptun
first, make sure you have "web" installed, see http://www.ueber.net/code/r/web.
make sure you have $ROOT set, then run "mk" to compile and "mk install" to install the files.
when building from within inferno, insert SYSHOST=Inferno and ROOT= in the mk invocations to override the values in the mkconfig.
example usage:
this code is in the public domain, written by mechiel lukkien, reachable at mechiel@ueber.net or mechiel@xs4all.nl.
to clone & pull:
hg clone http://www.ueber.net/hgsrv/httptun/
hg clone static-http://www.ueber.net/who/mjl/hg/httptun/
download a snapshot of the latest version: httptun-3.tgz.
the files in the latest revision can be found at /hg/httptun/files/tip/. a specific revision can be access by replacing "tip" with the revision number, (partial) nodeid or tag name. a few direct links to useful files in the latest revision:
| rev | nodeid | when | diff | why |
|---|---|---|---|---|
| 3 | b52b56ded5a2 | 6 weeks | diff | add mkconfig, mention it in README. |
| 2 | 2d245ea0f0d0 | 17 months | diff | put more info in README, adjust it to textmangle, and make the pro... |
| 1 | fb91306f8538 | 19 months | diff | fix mkfiles for /man & /module |
| 0 | 3765bdaa9bc9 | 2 years | - | welcome httptun, tunnel tcp over http. unfortunately, it is usele... |