Go to file
Pünkösd Marcell 18dd8418a6 Added missing dependency for sentry stuffs 2020-11-27 20:29:42 +01:00
caff_previewer_wrapper Fixed configurations 2020-11-27 19:03:11 +01:00
.gitignore Initial commit 2020-11-27 05:44:32 +01:00
.travis.yml Added .travis.yml 2020-11-27 06:20:54 +01:00
Dockerfile Simplified docker file 2020-11-27 18:10:54 +01:00
README.md Create README.md 2020-11-27 19:02:44 +01:00
requirements.txt Added missing dependency for sentry stuffs 2020-11-27 20:29:42 +01:00

README.md

CAFF Previewer Wrapper

This is a simple wrapper written in Python/Flask that places a very simple HTTP interface in front of the CAFF Previewer with PNG conversion capabilites provided by ImageMagick.

Endpoint

CAFF Previewer Wrapper exposes a single endpoint only:

POST /preview

This endpoint expects a single CAFF file to be posted, and in response it returns a single png file. The raw CAFF file contents is expected in application/octet-stream style without any extra encapsulation.

Possible response codes:

  • 200: Conversion went fine. The response body should be image/png and the integrity headers are set.
  • 400: CAFF Format violation
  • 413: Request body length is larger than the configured maximum.
  • 500: Something went terribly wrong during the creation of the preview. You should check server logs.

Configure

CAFF Previewer Wrapper can be configured using environmental variables. Currently the following set of envvars are supported:

  • CAFF_PREVIEWER_BINARY: The location of the caff_previewer binary (default: /usr/local/bin/caff_previewer)
  • IMAGEMAGICK_CONVERT_BINARY: The location of ImageMagick's convert binary (default: /usr/bin/convert)
  • CONVERSION_TIMEOUT: Timeout for running each converter binary in seconds (If they do not finish in this timeframe they will be killed and an internal server error will be reported) (default: 30)
  • RECIEVE_CHUNKSIZE: Chunk size for writing file to disk and calculating md5 sum. There is really no point tuning this value in most cases. (default: 4096)
  • MAX_RECIEVE_SIZE: Maximum body length to be accepted in bytes. Exceeding results in 413 error. Check is based on the actual size recieved, the Content-length header is currently ignored (default: 536870912 = 512 MB)
  • SENTRY_DSN: Sentry DSN. Not setting it disables sentry integration (default not set)
  • RELEASE_ID: Sentry release (default: test)
  • RELEASEMODE: Sentry environment (default: dev)

Integrity checking

CAFF Previewer Wrapper provides two headers in the response that can be used to check the integrity of transfered files:
X-request-checksum and X-response-checksum. The former provides an md5 checksum of the recieved file. The later is the md5 checksum of the converted file.

Building docker image

In order for this image to be built with the caff_previewer binary included, it extracts the binary of the prebuilt caff_previewer image. ImageMagick is installed during build time.

ImageMagick and upside-down images

For some reason different versions/builds of ImageMagick does not properly recognize the origin point of the TGA file saved by caff_previewer (See.: http://www.imagemagick.org/discourse-server/viewtopic.php?t=34757). To work around this issue the argument -auto-orient altrough in some versions this might cause the image to appear upside-down instead, it works with the image-magick version bundled in the docker image.