Commit Graph

186 Commits

Author SHA1 Message Date
Umputun
e2a40bc7a6 update rest library for proper 404 content type 2022-01-06 01:07:50 -06:00
Umputun
a963516783 switch from legacy FS functions to new constructor 2022-01-06 00:16:18 -06:00
Umputun
64f57df860 add support of custom 404 page for assets server 2022-01-06 00:16:18 -06:00
Alexey Nesterov
2e8733b152 Correctly handle URL escaped paths
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.
2021-12-06 11:00:07 -06:00
Umputun
075f66825a update linter and address all lint warns 2021-11-09 12:47:41 -06:00
Umputun
8c59be3612 implement simple on/off basic-auth for all resources
lint: err shadowing

extract htpasswd file load and add tests
2021-11-09 12:47:41 -06:00
Alexey Nesterov
184d5ba87c Support regex in host / server
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.
2021-11-04 12:00:17 -05:00
Umputun
76fa56777f add ability to drop incoming headers #108
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.
2021-09-11 14:38:56 -05:00
Umputun
c7a2308267 add OverrideHeadersIn and OverrideHeadersOut support
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.
2021-09-07 01:53:54 -05:00
Umputun
506ded3ad4 add a warning on missing configuration file for file provider 2021-08-28 12:25:07 -05:00
Umputun
d364904dd8 fix flaky tests 2021-08-12 22:31:15 -05:00
Umputun
803a076b79 fix incorrect detection of header's dbl quotes 2021-07-09 15:20:45 -05:00
Umputun
9218ad8bac simplify unnecessary complicated TestCheckHealth 2021-07-08 17:08:35 -05:00
Umputun
cd41237fa5 lint: simplify empty string check 2021-07-08 16:40:14 -05:00
Umputun
56e040b80b allow longer time to start proxy in limiter test 2021-07-08 16:32:24 -05:00
Umputun
cbe7f6f84d drop leading and trailing dbl-quotes from the headers #100 2021-07-08 16:27:42 -05:00
Umputun
207a467960
Header comma (#101)
* allow comma inside of header env list #100

* set proxy header to manually split version
2021-07-08 02:31:27 -05:00
Umputun
71039681e2
Merge pull request #97
* revendor with latest rest lib

* simplify with passThroughHandler

* add deps for throttling
2021-07-03 01:23:50 -05:00
Umputun
2eb78e0e47 fix typo in mock file name 2021-06-29 20:35:50 -05:00
Umputun
5dcb303615 fix comment typo 2021-06-26 12:12:47 -05:00
Umputun
13c70eb8e8 add health integration test 2021-06-12 13:26:42 -05:00
Umputun
503f0b6dca drop regex group in source priority sorting #89 2021-06-08 15:32:35 -05:00
Umputun
297612e7c4 add test 2021-06-08 03:53:16 -05:00
Umputun
247cf13016 fix static match / without webroot defined 2021-06-08 03:48:37 -05:00
Umputun
3fb723c8b9 fix static match on / url 2021-06-08 03:28:30 -05:00
Umputun
3497599d03 add comments and fix docs 2021-06-08 00:45:16 -05:00
Umputun
e44ca79f23 add support of spa to common assets 2021-06-07 19:16:18 -05:00
Umputun
f0049ef7ac add support of spa-like assets handling 2021-06-07 19:16:18 -05:00
Umputun
687e78e87b drop attempt to parse form in limiter, conflicts with form body 2021-06-07 16:20:23 -05:00
Umputun
fb57a6bb45 remove commented code 2021-06-07 14:54:31 -05:00
Umputun
f8f5871411 quick attempt to de-prioritize assets rules 2021-06-07 14:54:09 -05:00
Umputun
15616dfa57 longer sleep for flaky test 2021-06-06 18:20:38 -05:00
Umputun
aea74d717f
Redirect (#87)
* add @code redirect prefix

* add proxy handling for redirects #86

* add info about redirects
2021-06-06 18:13:59 -05:00
Umputun
680d988d42 change url value in final proxy to const usage 2021-06-01 04:00:38 -05:00
Umputun
56cd1205a1 clean usage of plugin context in proxy 2021-06-01 03:59:23 -05:00
Umputun
b3d222a60a quick and dirty fix for assets rules regression 2021-06-01 03:50:20 -05:00
Umputun
0b3e1d9062 warn logging on destination parser 2021-06-01 03:34:50 -05:00
Umputun
3efcd15747 add warns on static path issues 2021-06-01 03:25:35 -05:00
Umputun
7139c57766
RPC plugins support (#85)
* 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
2021-06-01 02:56:39 -05:00
Umputun
bd200a9c0a flaky main test 2021-05-29 13:40:14 -05:00
Umputun
282b4b268c add lb selector 2021-05-28 16:11:16 -05:00
Umputun
556a34f1fb allow reproxy.server to be default for numeric rules 2021-05-26 01:45:42 -05:00
Umputun
e092c7e989 allow docker rules to use external destinations 2021-05-26 00:17:45 -05:00
Umputun
1c1f9d1c3c
Docker multi routes (#80)
* support reproxy.N.something labels for docker #78

* lint: suppress false positive

* update linter in ci

* update readme

* add test for failed container parse
2021-05-25 23:48:22 -05:00
Umputun
ec300029b6 add Hijacker interface to metrics middleware response writer. Fix #79 2021-05-22 12:30:56 -05:00
Umputun
971e77b5d3 eliminate metrics middleware hit if mgmt disabled 2021-05-22 10:44:21 -05:00
Umputun
7e8dca4ccc allow skipping ping param in static provider 2021-05-20 13:14:37 -05:00
Umputun
0c1218b3eb strip fqdn spaces 2021-05-19 13:39:49 -05:00
Umputun
52e9e7a738 add more time intervals to file event tests 2021-05-18 02:31:36 -05:00
Umputun
095f4d7102
Multi match (#74)
* discovery support for multiple matches

* switch proxy matcher usage, add random selection

* fix multi-match logic

* pass match picker func

* simplify rand picker

* update health params and docs

* fix early termination on discovery multi-match

* add grouping of sorted matches in sorted result

* add mention of live check to readme
2021-05-16 18:34:51 -05:00