The c-icap project




About

c-icap is an implementation of an ICAP server. If you want to learn more about the Internet Content Adaptation Protocol (ICAP), visit the following sites:

Also visit the c-icap page at my personal site.

The implementation of c-icap was started from scratch. An alternative approach would be implementing a module for the ICAP protocol (e.g., as an HTTP module or an HTTP proxy module) on top of the Apache Web server. The latter approach would have the advantage of using server modules that are extremely stable as well as using other useful modules implemented on top of the Apache Web server, for example, SSL, MIME, loggers and filters. However, writing the server from scratch would result in a simple and more autonomous ICAP server.

c-icap can be used with HTTP proxies that support the ICAP protocol. Most of the comercial HTTP proxies must support ICAP pcotocol. The open source Squid 3.0 proxy server supports the ICAP protocol too. Also you can use the Shweby proxy server, which operates very well with the ICAP protocol.

c-icap supports request and response modification, "preview" functionality (preview of requests) and "204 No Content"(No modification needed) responses. It also supports the addition of services which are responsible for content modifications. Currently, services can be implemented only in C/C++. In the future, I am planning to implement Perl and Java service handlers which will allow services written in Perl or Java.

c-icap allows the addition of modules, which can extend its functionality and services. For instance, such modules can be loggers, authenticators and authentication methods or access controlers.

Currently, only two services exist: the echo service and an antivirus service based on ClamAV. Looking into the code of these services can help you understand how services are created in a c-icap server. c-icap is reasonably stable. Tests with several thousands of requests of echo and antivirus services were successfully passed. However, c-icap is still under development and is subject to changes. For example, function names and configuration parameters may be modified, include files will be merged, and several new features will be added. In other words, you should only use it for experimentation purposes.

The main development of c-icap has been done under Linux (SUSE 10.2) and tested under Solaris 10prev52 and FreeBSD 6.x. Some preliminary work has been completed on porting the software to Win32 platforms for Cygwin and MSVC++.



© Tsantilas Christos, email: chtsanti at users dot sourceforge dot net