Consider proxy configuration `*,/test/(.*),https://dest/$1`.
When reproxy accepts a request with URL encoded path, i.e.
'/test/a%205%25%20b/' which the encoded form of '/test/a 5% b',
it is using request.URL.Path which is already URL decoded by Golang.
This causes an error in proxy.go while it is trying to validate the
destination with `url.Parse(match.Destination)` as, strictly speaking,
destination URL is not a valid URL anymore, it is `https://target-dest/a 5% b`.
With this fix, the original escaped URL stays as is, correctly passes
the validation and then it is up to destination server to URL decode and
correctly handle the URL.
Main consideration is backward compatibility. example.com should be treated as an exact
match, where possible. So current order is: exact host, regex host, * or "".
Regex matches are cached for better performance, cache is invalidated once mappings are refreshed.
In some cases proxy should sanitize incoming headers. --drop-header and $DROP_HEADERS set list of headers (keys) and those headers removed from the request.
This is an attempt to address #108
Instead of dedicated support of header`s removal it allows to return a flag indicating plugin's full control over headers. With this flag set, the conductor won't mix response headers with originals but rather will count on a plugin to provide all the headers.
* wip
* resolve merge artifacts
* full coverage for conductor
* wire plugin conductor to main and proxy
* wip, with separate match handler
* split matching logic with another handler, add initial docs
* move parts of proxy to handlers, add tests
* add headers in to be sent to proxied url
* merged from master
* add example with docker compose
* supress excesive debug reporting 0-9 disabled in docker
* add plugin tests
* randomize test port
* lint: minor warns
* lint: err shadow
* support reproxy.N.something labels for docker #78
* lint: suppress false positive
* update linter in ci
* update readme
* add test for failed container parse