when we changed the container to run as a non-root user, it broke some
imageproxy instances that were relying on the default docker user and
file permissions. Users running dockerized imageproxy with a
bind-mounted on-disk cache now need to make sure the user and file
permissions line up.
fixes#198
when parsing cache values, if the values doesn't match a recognized URL
pattern, we treat it as a filepath for an on-disk cache. However, this
doesn't appear to be working on Windows. I don't have easy access to a
Windows box to test this on, but I *think* this should fix it.
Refs #181
handle decoding and encoding bmp images with transformations. Because
this isn't a popular file format, we don't actually expose it as an
option for format transformation.
Fixes#182
this is necessary for the new environment variable support for config
values. I don't love that allowHosts is comma separated and cache is
space separated :(
use consistent values for url and key and similar calling styles
(passing values as command line arguments. Also use more utilities from
the language standard library, such as java.util.Base64.
the old nginx config was designed to prevent url canonicalization, which
is no longer a concern, and was causing problems with non-latin
characters.
Fixes#178
This makes the options string more predictable, and easier to compute by
other programs. This is primarily being done to enable signatures that
include option values (see #145).
Some misconfigured servers will fail to properly set the content-type in
the response header. In those cases, detect the content-type from the
response body.
Refs #132
If the imageproxy instance is configured to only accept certain content
types (which defaults to "image/*"), set that as the accept header on
outbound requests.
Also log more information about the outbound request when the `Verbose`
option is set, so the request headers can be seen in the logs.
Fixes#165
Refs #132
the specific denial error message reveals more about the imageproxy
configuration than it should, such as what hosts are denied. Instead,
log the full error, but return a generic message that the requested URL
is not allowed.