utnld

SourceForge.net Logo

Last update: 2006-01-29

About

utnld is meant to be a set of utilities to facilitate any type of tunneling in general. It will consist of a daemon plus command-line tools. I am also considering writing a LD_PRELOAD wrapper which overrides the socket API to allow very easy capturing of a program's socket activity. At first support for TCP and HTTP CONNECT proxies will be written to allow me to check e-mail from behind a restrictive firewall.

Status

The program is very early in development. As of now I have designed and written the general interface for all the types of nodes. I've written a stream source node, a ring buffer and a poll handler. I haven't put the sources in CVS yet, but they can be downloaded in a tarball from the file releases.

Dependencies

First of all, the program is written under Linux. It should probably run under other types of UNIX as well. After it has become more mature, I will think about porting it to Windows.

At the moment there is only one library dependency - glib-2.0. Please note that it is completely independent from GTK. This library only provides useful C routines and data structures such as AVL trees or resizable arrays - that's what I'm using it for.

Technical details

An established tunnel consists of two pipes, one in each direction. Each pipe consists of nodes, of which there are three types: a source node, a destination node and chain nodes in between. Each node is related to a specific task.

This design should make it easy to, for example, add SSL to a program which doesn't support it on its own, or filter data based on content.

The next step will be to write the tunnel glue code, listeners, which will accept connections in the daemon and produce source nodes, connectors which will produce destination nodes, and the specific types of nodes themselves.

Here is a nice diagram of the basic node interfaces (no, it's not UML, it's just something to help me visualize what my "class" layout looks like):

Node design diagram

Well, actually this isn't very detailed, you'll have to look at the source after all if you're interested ;-)

Download

Look in the file releases.

Contact

Email: unavowed at vexillium org