This Software is an eCAP adapter for HTTP compression with GZIP and DEFLATE. This is fully re-worked in C++11, improved and bugfixed production version, based on Constantin Rack's https://github.com/c-rack/squid-ecap-gzip adapter
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
acinclude
cfgaux
m4
src
.gitattributes
AUTHORS
COPYING
CREDITS
ChangeLog
INSTALL
LICENSE
Makefile.am
Makefile.in
NEWS
NOTICE
README
README.md
acinclude.m4
aclocal.m4
bootstrap.sh
configure
configure.ac
create_logs.sh

README.md

This Software is an eCAP adapter for HTTP compression with GZIP and DEFLATE.

INSTALLATION

The adapter will be installed in /usr/local/lib/ by default.

The libecap library is required to build and use these adapters. You can get the library from http://www.e-cap.org/. The adapter can be built and installed from source, usually by running:

    % ./configure 'CXXFLAGS=-O2 -m32 -mtune=native -pipe' 'LDFLAGS=-L/usr/local/lib'

	or

    % ./configure 'CXXFLAGS=-O2 -m64 -mtune=native -pipe' 'LDFLAGS=-L/usr/local/lib'

    % make
    % make install-strip

Note: LDFLAGS should point on libecap directory.

CONFIGURATION

Adapter versions starting 1.5.0 configures via ecap_service arguments in squid.conf.

Supported configuration parameters:

* maxsize (default 16777216 bytes, i.e. 16 Mb) - maximum compressed file size
* level (default is 6, valid range 0-9) - gzip/deflate global compression level
* errlogname (default path/filename is /var/log/ecap_gzip_err.log)	- arbitrary error log name.
* complogname (default path/filename is /var/log/ecap_gzip_comp.log)	- arbitrary compression log name.
* errlog (default is 0, default path/filename is /var/log/ecap_gzip_err.log) 	- error log
* complog (default is 0, default path/filename is /var/log/ecap_gzip_comp.log)	- compression log

Note: errlogname/complogname should be specify with full path and file name. Directory(-ies) should have write permission for proxy. If file(s) exists - it will appends. It not exists - will be created.

Adapter logging disabled by default. To enable error log specify errlog=1. To enable compression log specify complog=1. Proxy must have permissions to write.

Note: When configuration parameters has any error in specifications, adapter starts with defaults. If error log exists, diagnostics message will be write.

Example:

ecap_enable on
acl gzipmimes rep_mime_type -i "/usr/local/squid/etc/acl.gzipmimes"
loadable_modules /usr/local/lib/ecap_adapter_gzip.so
ecap_service gzip_service respmod_precache ecap://www.thecacheworks.com/ecap_gzip_deflate [maxsize=16777216] [level=6] [errlog=0] [complog=0] bypass=off
adaptation_access gzip_service allow gzipmimes

acl.gzipmimes contents:

# Note: single "/" produces error in simulators,
#       but works in squid's regex
^application/atom+xml
^application/dash+xml
^application/javascript
^application/json
^application/ld+json
^application/manifest+json
^application/opensearchdescription+xml
^application/rdf+xml
^application/rss+xml
^application/schema+json
^application/soap+xml
^application/vnd.apple.installer+xml
^application/vnd.apple.mpegurl
^application/vnd.geo+json
^application/vnd.google-earth.kml+xml
^application/vnd.mozilla.xul+xml
^application/x-apple-plist
^application/x-javascript
^application/x-mpegurl
^application/x-ns-proxy-autoconfig
^application/x-protobuffer
^application/x-web-app-manifest+json
^application/x-www-form-urlencoded
^application/xop+xml
^application/xhtml+xml
^application/xml
^application/x-yaml
^application/x-cdf
^application/txt
^application/x-sdch-dictionary
^application/x-steam-manifest
^audio/x-mpegurl
^image/svg+xml
^image/x-icon
^text/.*
^video/abst
^video/vnd.mpeg.dash.mpd

NOTES

Due to performance reasons, all mime checks executes only once outside adapter, at proxy level. So, be careful when choose what mime types will be pass into adapter.

Also, HTTP/200 status now checks directly inside adapter. So, this rule:

acl HTTP_STATUS_OK http_status 200
adaptation_access gzip_service allow HTTP_STATUS_OK

is no longer required.

Also be careful with text/plain mime-type. For some reasons you may be required to remove it from acl, because of sometimes plain text files can be inadequately big and and can overload the CPU during decompression. In this case specify "maxsize" which fit you requirements.

** Adapter requires c++11 - compatible C++ compiler to build. **

ADDITIONAL DOCUMENTATION

For eCAP documentation, the libecap library implementation, and support information, please visit the eCAP project web site: http://www.e-cap.org/

For original eCAP GZIP adapter documentation and support, please visit: https://github.com/c-rack/squid-ecap-gzip