EARL is a HTTP tunneling proxy written in Java. It uses the POST method to transfer the data. Since its datagrams are serialized objects and I noticed datagrams larger than some specific size get dropped on my local proxy the traffic overhead is rather large. The datagrams are encrypted using AES to provide privacy and obfuscation to proxy maintainers. Inbound and outbund connections are possible. I suggest you combine it with socks proxys for a comfortable setup.

A short description of the config syntax is given below. Not all options are relevant to both client and server.
A sample launch command for the server is >> java -jar /opt/earl/earl.jar /opt/earl/earl.xml s <<. The s stands for server. c Means client.

Even though the source lacks documentation as well as modularization I decided to release it under the terms of the GPL.

A short description of the parameters of the config files:

SERVER_ADDRESS & HTTP_PORT are the address and port of the server part of the tunnel.
HTTP_PROXY is the domain name of the proxy, the client connects to.

Each port forwarded by the client has the following layout:
CLIENT_LISTEN_PORT_1 is the port the client listens to. The 1 means that it belongs to the first entry.
TARGET_HOST_1 & TARGET_PORT_1 are the address and port the server forwards the connection to.

Each port forwarded by the server to the local network has the following layout:
REVERSE_CLIENT_LISTEN_PORT_1 is the por the server listens to.
REVERSE_TARGET_HOST_1 & REVERSE_TARGET_PORT_1 are the address and port the client forwards the connection to.