HTTP Proxy Client is the small set of libraries and scripts, which provides transparent access to Internet via HTTP proxy for programs, which uses TCP/IP for communication.
The list of programs includes: telnet, ftp, licq, cvs, smth else? Project implements dynamic library, that can be preloaded before program run. The library substitutes some system calls (connect(), gethostbyaddr(), gethostbyname()), with calls, which makes TCP/IP connection through HTTP proxy. This allows client programs behind HTTP proxy work with Internet without limitations.
At the moment tested on i386 Linux, i386/sparc Solaris.
The library provides the following functions as replacement for system functions:
| socket() | monitoring | 
| connect() | connect via proxy in case of external host | 
| gethostbyname() | DNS resolving | 
| gethostbyname_r()* | DNS resolving | 
| gethostbyaddr() | DNS reverse resolving | 
| gethostbyaddr_r()* | DNS reverse resolving | 
| getaddrinfo() | network address and service translation | 
Library httppcd can be used to add proxy tunneling capability to any program. All you need - is to make final link with -lhttppcd or set LD_PRELOAD to `libhttppcd.so' full path.
The package provides also aliases for common Internet tools: telnetx, ftpx, cvsx, licqx which invokes `proxed *' command.
NOTE: instead of setting LD_PRELOAD to full path of `libhttppcd.so', you can specify the path in LD_LIBRARY_PATH variable.
| .httppcrc | Environment | Description | 
|---|---|---|
| proxy host:port | HTTP_PROXY | HTTP proxy host in format <host>[:<port>]. Default port is 8080. | 
| auth user:pass | HTTP_PROXY_AUTH | HTTP proxy user and password in format <user>:<password>. | 
| log verbose|quiet | HTTP_PROXY_LOG | Driver mode: verbose quiet. | 
| libs lib1:lib2:... | HTTP_PROXY_LIBS | Libraries, separated by ':', where original functions are located. | 
| xdns dnsip | HTTP_PROXY_XDNS | External DNS server address, must be in dot notation; by default is set to isi.edu (128.9.176.32). | 
| ldns | Use local DNS resolving with native gethostbyname() prior external resolving with ADNS; disabled by default. | |
| local network/mask ... | HTTP_PROXY_LOCAL | The list of local networks in format <network>/<mask>, separated by space. | 
| extern network/mask ... | HTTP_PROXY_EXTERN | The list of external networks in format <network>/<mask>, separated by space. | 
| useragent Mozilla... | HTTP_PROXY_USERAGENT | Add to connection request header string: User-Agent: <useragent> | 
| nocache | Add to connection request header strings: Pragma: no-cache Cache-Control: no-cache | |
| keepalive | Add to connection request header string: Connection: Keep-Alive | |
| timeout 5 | HTTP_PROXY_TIMEOUT | Connection timeout in seconds. -1 wait forever. | 
Networks checking algorithm:
        httppc: <- CONNECT 195.110.124.188:80 HTTP/1.1
        httppc: -> HTTP/1.0 405 Method Not Allowed
    mean, that your proxy doesn't supports "CONNECT" and httppc will not
    work at all;