Commit Graph

224 Commits

Author SHA1 Message Date
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
nikolay.bystritskiy
bfe5f3fdbf fix ticker, variable names and unnecessary if in Service.Match 2021-05-16 14:17:50 -05:00
nikolay.bystritskiy
e02ddaf256 fix linter warning 2021-05-16 14:17:50 -05:00
nikolay.bystritskiy
49515e307c update health state not sorting or reordering mappers 2021-05-16 14:17:50 -05:00
nikolay.bystritskiy
7bbb7073ba unittest, typos 2021-05-16 14:17:50 -05:00
nikolay.bystritskiy
973d6c9a14 add automatic health-checker 2021-05-16 14:17:50 -05:00
Umputun
f6f26a4807 add log for enabled options 2021-05-14 22:14:49 -05:00
Umputun
3dd986ba16 lint: silly thing 2021-05-14 22:03:16 -05:00
Umputun
b79a9faf3c support size units #71 2021-05-14 22:01:27 -05:00
Umputun
aee7e8a57e revert to stable go-pgz/rest, switch size limiter to local implementation #71 2021-05-14 16:17:52 -05:00
Umputun
137cf692c4 switch to master go-pkgz/rest #71 2021-05-14 13:47:44 -05:00
Umputun
d982796e58 simplify consul client a little bit 2021-05-13 02:00:13 -05:00
Negasus
01ae284390 add nolint:prealloc 2021-05-13 01:14:04 -05:00
Negasus
738c3baf6c add consul catalog provider 2021-05-13 01:14:04 -05:00
Umputun
a93bd40f8a treat 0 max request size limit as unlimited 2021-05-12 21:54:41 -05:00
Umputun
25ee73d8d6 set X-Forwarded-Host to orid host, drop X-Origin-Host #67 2021-05-10 03:50:00 -05:00
Umputun
a73a16c12b wait till fqdn avail for ssl auto #63 2021-05-05 01:41:23 -05:00
Umputun
211fe15b8f add autocert details log 2021-05-04 12:51:07 -05:00
Umputun
5c1ab356cc fix default ssk port selection 2021-05-03 21:52:08 -05:00
Umputun
4c051ca37f
detect in-container and set listen address to 0.0.0.0 (#62)
* detect in-container and set listen to 0.0.0.0

* simplify default address logic

don't change if user defined, use 127.0.0.1:8080 for non-docker and 0.0.0.0:8080 for in-docker only if nothing set

* add dynamic default to redir http port

* add docs about dynamic defaults

* add ssl example

* lint: params warn
2021-05-03 21:40:21 -05:00
Umputun
3eba72cbff extend health chek to make sure all pings called 2021-05-02 12:52:29 -05:00
Umputun
5743109210
Nice error (#61)
* add support of html error reporting with custom templates

* typo

* formatting

* better template load error msg
2021-04-30 04:03:36 -05:00
Umputun
06e78b81d4 extend no match WARN 2021-04-28 14:47:53 -05:00
Umputun
9b9d64894d reproxy.port to enable container 2021-04-28 14:37:11 -05:00
Umputun
2670144e8a add support of docker route prefix 2021-04-28 14:00:38 -05:00
Umputun
69bb10d42f fix default docker dest to include container 2021-04-28 13:40:59 -05:00
Umputun
1ff45cc2ca add integration test over https 2021-04-27 02:50:45 -05:00
Umputun
604391e55e extend tests for tricky cases 2021-04-27 01:57:04 -05:00
Umputun
66eb3ffe4a support d units in cache duration 2021-04-27 01:40:46 -05:00
Umputun
a4cffbe922
Mime cache (#59)
* support different caching duration for different mime types #58

* extract main code to run func

* lint: err shadowing
2021-04-26 18:51:48 -05:00
Umputun
9a7a92fc41 make deadlock test on health handler more realistic 2021-04-24 04:03:29 -05:00
Umputun
efded2cf5e flip order in docker proxy+static labels #55
we want proxy rule to have priority over assets rule
2021-04-23 04:05:14 -05:00
Umputun
c590c3246d
Assets cache (#54)
* add caching control for assets
* regen site
2021-04-23 02:02:36 -05:00
Nikita Vasiliev
ef8298bb9c Test to catch a deadlock in healthHandler() 2021-04-21 17:30:34 -05:00
Nikita Vasiliev
38af32f37c Fix a deadlock 2021-04-21 17:30:34 -05:00
Umputun
4c79c3b239 rename endpoint to /metrics 2021-04-21 01:28:07 -05:00
Umputun
f16d92b774 lint: minor warns 2021-04-20 19:22:46 -05:00
Umputun
aef3040b60 fix tests regression 2021-04-20 19:22:46 -05:00
Umputun
8ea0052228 implement basic support of metrics via mgmt server #35 2021-04-20 19:22:46 -05:00
Umputun
3499836b90 fix typo in help msg 2021-04-19 03:25:59 -05:00
Umputun
f7b24e1058 fix health counts calculation 2021-04-17 23:41:44 -05:00
Umputun
1695532aa5 add ping test 2021-04-17 23:32:54 -05:00
Umputun
f246618622 don't health check asset mappers 2021-04-17 23:28:12 -05:00
Umputun
afbcc6c7bb removed unneded atomic in health check 2021-04-17 23:24:41 -05:00
Umputun
e8988bacc6 extend main test 2021-04-17 23:17:05 -05:00
Umputun
f304a2f0e6 add total number of services to health error 2021-04-17 23:06:48 -05:00
Umputun
1aa89cfbd6 fix docker resp struct 2021-04-17 22:55:32 -05:00
Timofey
e7121846da Handle docker API errors 2021-04-17 22:37:32 -05:00
Timofey
813ed6df3d Set minimal supported docker version 2021-04-17 22:37:32 -05:00
Umputun
bbbd24dd53 fix missing url.Host forward 2021-04-17 13:11:10 -05:00
Umputun
0a9051d528 lint: unneeded fmt 2021-04-17 02:36:49 -05:00
Umputun
2b492d840a fix tests 2021-04-17 02:35:23 -05:00
Umputun
ee4f8919e1 allow docker to provide static with proxy at the same time #27 2021-04-17 02:17:23 -05:00
Umputun
6ad288afd0 drop docker api version 2021-04-17 02:16:43 -05:00
Umputun
b667720cc3 suppress messages on docker events check 2021-04-16 17:36:57 -05:00
Timofey
7f991b1e18 Refactor
Thx for the feedback.

* Add missing test
* Decouple containerInfo from docker client
* Move refresh interval var to `Docker`
* Minor things
2021-04-16 17:30:54 -05:00
Timofey
76be67d39c Detect changes in running containers
* Naive attempt to detect changes based on container metadata
* And my best effort to test it
2021-04-16 17:30:54 -05:00
Timofey
a91fb6816f Invoke Docker API directly
* Remove third-party docker client dependency
* Simplify code and tests

Might need to run `go mod tidy` and `go mod vendor` afterwards
2021-04-16 17:30:54 -05:00
Umputun
8dca98c6b3 don't resort rules for file provider inside the server #37 2021-04-16 11:10:07 -05:00
Umputun
8cf4b9063d
Multiple static location (#36)
* add isStatic flag to mapper, implement for file and static providers

* handle static match response as a special case

* move assets conversion to load time

* rename static to assets everywhere for consistency

* don't overwride asset param in url mapper

* add documentation about assets mode

* add tests
2021-04-16 02:49:00 -05:00
Vladimir Garvardt
66610ef491 Replaced github.com/pkg/errors with stdlib errors wrap 2021-04-14 11:44:20 -05:00
Konstantin Alikhanov
c5200e0a1a Fixing type error in SSL Static mode 2021-04-14 11:08:17 -05:00
Umputun
47d802679d sort mappers in the list 2021-04-14 02:47:35 -05:00