Add support for decompression of HTTP responses
authorMarcelo E. Magallon <marcelo.magallon@grafana.com>
Wed, 10 Mar 2021 14:05:14 +0000 (08:05 -0600)
committerMarcelo E. Magallon <marcelo.magallon@grafana.com>
Mon, 19 Apr 2021 22:08:57 +0000 (16:08 -0600)
commit2d378feff5bd9276f8bfd2a901a2820664b63757
tree08d8bfc8344bc97de87668750bc8f81ae92e5c7c
parent5e7494acf46c0009671fada0cc483c98d2174c03
Add support for decompression of HTTP responses

If the module configuration specifies the "compression" option
blackbox_exporter will try to decompress the response using the
specified algorithm. If the response is not compressed using that
algorithm, the probe will fail.

It validates that the "Accept-Encoding" header is either absent, or that
it specifies the same algorithm as the "compression" option. If the
"Accept-Encoding" header is present but it specifies a different
algorithm, the probe will fail.

If the compression option is *not* used, probe_http_content_length and
probe_http_uncompressed_body_length will have the same value
corresponding to the original content length. If the compression option
is used and the content can be decompressed, probe_http_content_length
will report the original content length as it currently does, and
probe_http_uncompressed_body_length will report the length of the body
after decompression as expected.

Fixes #684

Signed-off-by: Marcelo E. Magallon <marcelo.magallon@grafana.com>
CONFIGURATION.md
config/config.go
config/config_test.go
config/testdata/invalid-http-compression-mismatch.yml [new file with mode: 0644]
config/testdata/invalid-http-request-compression-reject-all-encodings.yml [new file with mode: 0644]
example.yml
go.mod
go.sum
prober/http.go
prober/http_test.go