Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a mechanism to control the sticky cookie value #216

Merged
merged 1 commit into from
Apr 29, 2021

Conversation

jbdoumenjou
Copy link
Contributor

@jbdoumenjou jbdoumenjou commented Apr 27, 2021

What does this PR do?

Add a mechanism to format the sticky cookie value.
It introduces a CookieValue interface to allow implementations to control the sticky cookie value.

There are several implementations available:

  • RawValue: no operation - keep the cookie value as it is. (used by default)
  • HashValue: hash the cookie value with a fast hash algorithm.
  • AESValue: ciphers the cookie value with an AES algorithm.
  • FallbackValue: try to apply a value transformation and fallback to another. Useful to migrate from one value to another.

Motivation

This PR is inspired by #184 and #203 and provides a flexible way to manage the cookie value and some basic implementations.

closes #184
closes #203

Additional Notes

Co-authored-by: Tom Moulard tom.moulard@traefik.io
Co-authored-by: M m@cognusion.com
Co-authored-by: Sylvain Rabot sylvain@abstraction.fr

@ldez ldez self-requested a review April 27, 2021 15:37
Copy link
Contributor

@juliens juliens left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@sylr
Copy link
Contributor

sylr commented Apr 27, 2021

I wish that you would keep our commits as we sent them so that the git history reflects the effort that both @cognusion and I put into this.

By squashing them you discard all authorship information.

@ldez
Copy link
Member

ldez commented Apr 27, 2021

The 2 PRs were not compatible and the work to merge them was more important than creating a new PR.

The 2 PRs are referenced in the PR description, and you are flagged as co-author of this PR.

And when I will merge, I will set you as co-author.

In all cases, the commits in a PR are always squashed when we merge.

@cognusion
Copy link
Contributor

I am 💯 ok with this, philosophically. I have not reviewed the commit for technical merits.

Copy link
Member

@ldez ldez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ldez ldez merged commit 99d4542 into vulcand:master Apr 29, 2021
@jbdoumenjou jbdoumenjou deleted the sticky-cookie branch April 29, 2021 08:28
@pavelmarek77
Copy link

Please may I know when this will be part of a release? Is there way to get notified?

@ldez
Copy link
Member

ldez commented Apr 29, 2021

@pavelmarek77 a release of oxy or Traefik?

For oxy, there is a tag v1.3.0.
For Traefik, you can follow traefik/traefik#8103

@pavelmarek77
Copy link

@ldez I meant Traefik. Thank you!

ericrpowers pushed a commit to aporeto-inc/oxy that referenced this pull request Jun 3, 2021
* Use gorilla DialContext (vulcand#158)

* Handle Te header when http2 (vulcand#157)

* fix: buffer error and go1.11. (vulcand#159)

* fix: buffer error and go1.11.

* chore: add go1.11 in Travis.

* review: comment.

* fix: use internal logger. (vulcand#160)

* fix: body should never be nil (vulcand#162)

* Pass host header for Websocket. (vulcand#163)

* feat: pass host header for Websocket.

* add tests.

* fix: golint. (vulcand#165)

* Flush when we have unannonced trailers (vulcand#168)

* Flush when we have unannonced trailers

* Remove 1.8, not supported in golint anymore

* add missing callback on close of hijacked connections (vulcand#175)

* Allowing sticky session's affinity cookies to be created with more options such as HttpOnly or Secure (vulcand#174)

* Ensuring the CookieOption struct's fields are exported (vulcand#179)

* ensuring the CookieOption struct's fields are exported (vulcand#174)

* dep ensuring

* Updating failing test, I should pay more attention

* dep ensuring has caused problems, reverting. Although this is really strange that dep should do this

* chore: migrate to go module. (vulcand#182)

* Update README.md

Go library change godoc to "pkg.go.dev"

* feat: add more cookie options. (vulcand#195)

* chore: update dependencies.

* feat: add more cookie options.

* chore: update travis configuration.

* Add Fallback setter on CircuitBreaker (vulcand#201)

Signed-off-by: Sylvain Rabot <sylvain@abstraction.fr>

* review.

* doc: buffer.go: s/request/response/ (vulcand#172)

* doc: typo fix /serveHTTP/serveWebSocket/s (vulcand#176)

* Make the MakeRateError delay field public so that custom RateErrHandlers can be more easily written (vulcand#206)

* fix typo (vulcand#212)

* Fix panics on ratelimit period (division by zero) (vulcand#213)

* Bump to go1.16 (vulcand#214)

* Add a mechanism to format the sticky cookie value (vulcand#216)

Co-authored-by: Tom Moulard <tom.moulard@traefik.io>
Co-authored-by: M <m@cognusion.com>
Co-authored-by: Sylvain Rabot <sylvain@abstraction.fr>

* Do not use global websocket.DefaultDialer

This change makes it so that each forward gets its own dialer rather
then all sharing the global `websocket.DefaultDialer`. It fixes the flaky
`TestWebSocketNumGoRoutine` test and allows `WebsocketTLSClientConfig` to
set a different TLS config than the one used in the http `RoundTripper`,
the TLS config in the http `RoundTripper` will still be used as a
fallback if one wasn't set by the user.

Adds the new `optSetter` `WebsocketNetDialContext` to set a custom
DialContet for WebSocket use.

-  `go test -run=TestWebSocketNumGoRoutine -count=100 ./forward` now
   passes. Removed the skip directive.
-  Closes vulcand#199
-  Closes vulcand#125

* Revert un-skipping test

* Update: Cleanup local and remote merged changes

Co-authored-by: SALLEYRON Julien <julien.salleyron@gmail.com>
Co-authored-by: Ludovic Fernandez <ldez@users.noreply.github.com>
Co-authored-by: Michael <mmatur@users.noreply.github.com>
Co-authored-by: ravilr <raviprasad_lr@yahoo.com>
Co-authored-by: Amir Keibi <gheibia@users.noreply.github.com>
Co-authored-by: colynn.liu <colynnliu@foxmail.com>
Co-authored-by: Sylvain Rabot <sylvain@abstraction.fr>
Co-authored-by: Fernandez Ludovic <lfernandez.dev@gmail.com>
Co-authored-by: colynn.liu <colynn.liu@gmail.com>
Co-authored-by: Wes Turner <50891+westurner@users.noreply.github.com>
Co-authored-by: Ben Yanke <ben@benyanke.com>
Co-authored-by: Peter C <somethingnew2-0@users.noreply.github.com>
Co-authored-by: Iman Sahebi <iman.s_sani@yahoo.com>
Co-authored-by: Douglas De Toni Machado <douglas.machado@traefik.io>
Co-authored-by: Romain <rtribotte@users.noreply.github.com>
Co-authored-by: Jean-Baptiste Doumenjou <925513+jbdoumenjou@users.noreply.github.com>
Co-authored-by: Tom Moulard <tom.moulard@traefik.io>
Co-authored-by: M <m@cognusion.com>
Co-authored-by: Clifton Kaznocha <ckaznocha@users.noreply.github.com>
Co-authored-by: Clifton Kaznocha <ckaznocha@gmail.com>
itsai220 added a commit to aporeto-inc/oxy that referenced this pull request Jul 13, 2021
* Use gorilla DialContext (vulcand#158)

* Handle Te header when http2 (vulcand#157)

* fix: buffer error and go1.11. (vulcand#159)

* fix: buffer error and go1.11.

* chore: add go1.11 in Travis.

* review: comment.

* fix: use internal logger. (vulcand#160)

* fix: body should never be nil (vulcand#162)

* Pass host header for Websocket. (vulcand#163)

* feat: pass host header for Websocket.

* add tests.

* fix: golint. (vulcand#165)

* Flush when we have unannonced trailers (vulcand#168)

* Flush when we have unannonced trailers

* Remove 1.8, not supported in golint anymore

* add missing callback on close of hijacked connections (vulcand#175)

* Allowing sticky session's affinity cookies to be created with more options such as HttpOnly or Secure (vulcand#174)

* Ensuring the CookieOption struct's fields are exported (vulcand#179)

* ensuring the CookieOption struct's fields are exported (vulcand#174)

* dep ensuring

* Updating failing test, I should pay more attention

* dep ensuring has caused problems, reverting. Although this is really strange that dep should do this

* chore: migrate to go module. (vulcand#182)

* Update README.md

Go library change godoc to "pkg.go.dev"

* feat: add more cookie options. (vulcand#195)

* chore: update dependencies.

* feat: add more cookie options.

* chore: update travis configuration.

* Add Fallback setter on CircuitBreaker (vulcand#201)

Signed-off-by: Sylvain Rabot <sylvain@abstraction.fr>

* review.

* doc: buffer.go: s/request/response/ (vulcand#172)

* doc: typo fix /serveHTTP/serveWebSocket/s (vulcand#176)

* Make the MakeRateError delay field public so that custom RateErrHandlers can be more easily written (vulcand#206)

* fix typo (vulcand#212)

* Fix panics on ratelimit period (division by zero) (vulcand#213)

* Bump to go1.16 (vulcand#214)

* Add a mechanism to format the sticky cookie value (vulcand#216)

Co-authored-by: Tom Moulard <tom.moulard@traefik.io>
Co-authored-by: M <m@cognusion.com>
Co-authored-by: Sylvain Rabot <sylvain@abstraction.fr>

* Do not use global websocket.DefaultDialer

This change makes it so that each forward gets its own dialer rather
then all sharing the global `websocket.DefaultDialer`. It fixes the flaky
`TestWebSocketNumGoRoutine` test and allows `WebsocketTLSClientConfig` to
set a different TLS config than the one used in the http `RoundTripper`,
the TLS config in the http `RoundTripper` will still be used as a
fallback if one wasn't set by the user.

Adds the new `optSetter` `WebsocketNetDialContext` to set a custom
DialContet for WebSocket use.

-  `go test -run=TestWebSocketNumGoRoutine -count=100 ./forward` now
   passes. Removed the skip directive.
-  Closes vulcand#199
-  Closes vulcand#125

* Revert un-skipping test

* Update: Cleanup local and remote merged changes

Co-authored-by: SALLEYRON Julien <julien.salleyron@gmail.com>
Co-authored-by: Ludovic Fernandez <ldez@users.noreply.github.com>
Co-authored-by: Michael <mmatur@users.noreply.github.com>
Co-authored-by: ravilr <raviprasad_lr@yahoo.com>
Co-authored-by: Amir Keibi <gheibia@users.noreply.github.com>
Co-authored-by: colynn.liu <colynnliu@foxmail.com>
Co-authored-by: Sylvain Rabot <sylvain@abstraction.fr>
Co-authored-by: Fernandez Ludovic <lfernandez.dev@gmail.com>
Co-authored-by: colynn.liu <colynn.liu@gmail.com>
Co-authored-by: Wes Turner <50891+westurner@users.noreply.github.com>
Co-authored-by: Ben Yanke <ben@benyanke.com>
Co-authored-by: Peter C <somethingnew2-0@users.noreply.github.com>
Co-authored-by: Iman Sahebi <iman.s_sani@yahoo.com>
Co-authored-by: Douglas De Toni Machado <douglas.machado@traefik.io>
Co-authored-by: Romain <rtribotte@users.noreply.github.com>
Co-authored-by: Jean-Baptiste Doumenjou <925513+jbdoumenjou@users.noreply.github.com>
Co-authored-by: Tom Moulard <tom.moulard@traefik.io>
Co-authored-by: M <m@cognusion.com>
Co-authored-by: Clifton Kaznocha <ckaznocha@users.noreply.github.com>
Co-authored-by: Clifton Kaznocha <ckaznocha@gmail.com>

Co-authored-by: Eric Powers <epowers@paloaltonetworks.com>
Co-authored-by: SALLEYRON Julien <julien.salleyron@gmail.com>
Co-authored-by: Ludovic Fernandez <ldez@users.noreply.github.com>
Co-authored-by: Michael <mmatur@users.noreply.github.com>
Co-authored-by: ravilr <raviprasad_lr@yahoo.com>
Co-authored-by: Amir Keibi <gheibia@users.noreply.github.com>
Co-authored-by: colynn.liu <colynnliu@foxmail.com>
Co-authored-by: Sylvain Rabot <sylvain@abstraction.fr>
Co-authored-by: Fernandez Ludovic <lfernandez.dev@gmail.com>
Co-authored-by: colynn.liu <colynn.liu@gmail.com>
Co-authored-by: Wes Turner <50891+westurner@users.noreply.github.com>
Co-authored-by: Ben Yanke <ben@benyanke.com>
Co-authored-by: Peter C <somethingnew2-0@users.noreply.github.com>
Co-authored-by: Iman Sahebi <iman.s_sani@yahoo.com>
Co-authored-by: Douglas De Toni Machado <douglas.machado@traefik.io>
Co-authored-by: Romain <rtribotte@users.noreply.github.com>
Co-authored-by: Jean-Baptiste Doumenjou <925513+jbdoumenjou@users.noreply.github.com>
Co-authored-by: Tom Moulard <tom.moulard@traefik.io>
Co-authored-by: M <m@cognusion.com>
Co-authored-by: Clifton Kaznocha <ckaznocha@users.noreply.github.com>
Co-authored-by: Clifton Kaznocha <ckaznocha@gmail.com>
itsai220 added a commit to aporeto-inc/oxy that referenced this pull request Aug 4, 2021
* Use gorilla DialContext (vulcand#158)

* Handle Te header when http2 (vulcand#157)

* fix: buffer error and go1.11. (vulcand#159)

* fix: buffer error and go1.11.

* chore: add go1.11 in Travis.

* review: comment.

* fix: use internal logger. (vulcand#160)

* fix: body should never be nil (vulcand#162)

* Pass host header for Websocket. (vulcand#163)

* feat: pass host header for Websocket.

* add tests.

* fix: golint. (vulcand#165)

* Flush when we have unannonced trailers (vulcand#168)

* Flush when we have unannonced trailers

* Remove 1.8, not supported in golint anymore

* add missing callback on close of hijacked connections (vulcand#175)

* Allowing sticky session's affinity cookies to be created with more options such as HttpOnly or Secure (vulcand#174)

* Ensuring the CookieOption struct's fields are exported (vulcand#179)

* ensuring the CookieOption struct's fields are exported (vulcand#174)

* dep ensuring

* Updating failing test, I should pay more attention

* dep ensuring has caused problems, reverting. Although this is really strange that dep should do this

* chore: migrate to go module. (vulcand#182)

* Update README.md

Go library change godoc to "pkg.go.dev"

* feat: add more cookie options. (vulcand#195)

* chore: update dependencies.

* feat: add more cookie options.

* chore: update travis configuration.

* Add Fallback setter on CircuitBreaker (vulcand#201)

Signed-off-by: Sylvain Rabot <sylvain@abstraction.fr>

* review.

* doc: buffer.go: s/request/response/ (vulcand#172)

* doc: typo fix /serveHTTP/serveWebSocket/s (vulcand#176)

* Make the MakeRateError delay field public so that custom RateErrHandlers can be more easily written (vulcand#206)

* fix typo (vulcand#212)

* Fix panics on ratelimit period (division by zero) (vulcand#213)

* Bump to go1.16 (vulcand#214)

* Add a mechanism to format the sticky cookie value (vulcand#216)

Co-authored-by: Tom Moulard <tom.moulard@traefik.io>
Co-authored-by: M <m@cognusion.com>
Co-authored-by: Sylvain Rabot <sylvain@abstraction.fr>

* Do not use global websocket.DefaultDialer

This change makes it so that each forward gets its own dialer rather
then all sharing the global `websocket.DefaultDialer`. It fixes the flaky
`TestWebSocketNumGoRoutine` test and allows `WebsocketTLSClientConfig` to
set a different TLS config than the one used in the http `RoundTripper`,
the TLS config in the http `RoundTripper` will still be used as a
fallback if one wasn't set by the user.

Adds the new `optSetter` `WebsocketNetDialContext` to set a custom
DialContet for WebSocket use.

-  `go test -run=TestWebSocketNumGoRoutine -count=100 ./forward` now
   passes. Removed the skip directive.
-  Closes vulcand#199
-  Closes vulcand#125

* Revert un-skipping test

* Update: Cleanup local and remote merged changes

Co-authored-by: SALLEYRON Julien <julien.salleyron@gmail.com>
Co-authored-by: Ludovic Fernandez <ldez@users.noreply.github.com>
Co-authored-by: Michael <mmatur@users.noreply.github.com>
Co-authored-by: ravilr <raviprasad_lr@yahoo.com>
Co-authored-by: Amir Keibi <gheibia@users.noreply.github.com>
Co-authored-by: colynn.liu <colynnliu@foxmail.com>
Co-authored-by: Sylvain Rabot <sylvain@abstraction.fr>
Co-authored-by: Fernandez Ludovic <lfernandez.dev@gmail.com>
Co-authored-by: colynn.liu <colynn.liu@gmail.com>
Co-authored-by: Wes Turner <50891+westurner@users.noreply.github.com>
Co-authored-by: Ben Yanke <ben@benyanke.com>
Co-authored-by: Peter C <somethingnew2-0@users.noreply.github.com>
Co-authored-by: Iman Sahebi <iman.s_sani@yahoo.com>
Co-authored-by: Douglas De Toni Machado <douglas.machado@traefik.io>
Co-authored-by: Romain <rtribotte@users.noreply.github.com>
Co-authored-by: Jean-Baptiste Doumenjou <925513+jbdoumenjou@users.noreply.github.com>
Co-authored-by: Tom Moulard <tom.moulard@traefik.io>
Co-authored-by: M <m@cognusion.com>
Co-authored-by: Clifton Kaznocha <ckaznocha@users.noreply.github.com>
Co-authored-by: Clifton Kaznocha <ckaznocha@gmail.com>

Co-authored-by: Eric Powers <epowers@paloaltonetworks.com>
Co-authored-by: SALLEYRON Julien <julien.salleyron@gmail.com>
Co-authored-by: Ludovic Fernandez <ldez@users.noreply.github.com>
Co-authored-by: Michael <mmatur@users.noreply.github.com>
Co-authored-by: ravilr <raviprasad_lr@yahoo.com>
Co-authored-by: Amir Keibi <gheibia@users.noreply.github.com>
Co-authored-by: colynn.liu <colynnliu@foxmail.com>
Co-authored-by: Sylvain Rabot <sylvain@abstraction.fr>
Co-authored-by: Fernandez Ludovic <lfernandez.dev@gmail.com>
Co-authored-by: colynn.liu <colynn.liu@gmail.com>
Co-authored-by: Wes Turner <50891+westurner@users.noreply.github.com>
Co-authored-by: Ben Yanke <ben@benyanke.com>
Co-authored-by: Peter C <somethingnew2-0@users.noreply.github.com>
Co-authored-by: Iman Sahebi <iman.s_sani@yahoo.com>
Co-authored-by: Douglas De Toni Machado <douglas.machado@traefik.io>
Co-authored-by: Romain <rtribotte@users.noreply.github.com>
Co-authored-by: Jean-Baptiste Doumenjou <925513+jbdoumenjou@users.noreply.github.com>
Co-authored-by: Tom Moulard <tom.moulard@traefik.io>
Co-authored-by: M <m@cognusion.com>
Co-authored-by: Clifton Kaznocha <ckaznocha@users.noreply.github.com>
Co-authored-by: Clifton Kaznocha <ckaznocha@gmail.com>
itsai220 added a commit to aporeto-inc/oxy that referenced this pull request Sep 2, 2021
* Fixed: Remove data race around default dialer (#6)

* Use gorilla DialContext (vulcand#158)

* Handle Te header when http2 (vulcand#157)

* fix: buffer error and go1.11. (vulcand#159)

* fix: buffer error and go1.11.

* chore: add go1.11 in Travis.

* review: comment.

* fix: use internal logger. (vulcand#160)

* fix: body should never be nil (vulcand#162)

* Pass host header for Websocket. (vulcand#163)

* feat: pass host header for Websocket.

* add tests.

* fix: golint. (vulcand#165)

* Flush when we have unannonced trailers (vulcand#168)

* Flush when we have unannonced trailers

* Remove 1.8, not supported in golint anymore

* add missing callback on close of hijacked connections (vulcand#175)

* Allowing sticky session's affinity cookies to be created with more options such as HttpOnly or Secure (vulcand#174)

* Ensuring the CookieOption struct's fields are exported (vulcand#179)

* ensuring the CookieOption struct's fields are exported (vulcand#174)

* dep ensuring

* Updating failing test, I should pay more attention

* dep ensuring has caused problems, reverting. Although this is really strange that dep should do this

* chore: migrate to go module. (vulcand#182)

* Update README.md

Go library change godoc to "pkg.go.dev"

* feat: add more cookie options. (vulcand#195)

* chore: update dependencies.

* feat: add more cookie options.

* chore: update travis configuration.

* Add Fallback setter on CircuitBreaker (vulcand#201)

Signed-off-by: Sylvain Rabot <sylvain@abstraction.fr>

* review.

* doc: buffer.go: s/request/response/ (vulcand#172)

* doc: typo fix /serveHTTP/serveWebSocket/s (vulcand#176)

* Make the MakeRateError delay field public so that custom RateErrHandlers can be more easily written (vulcand#206)

* fix typo (vulcand#212)

* Fix panics on ratelimit period (division by zero) (vulcand#213)

* Bump to go1.16 (vulcand#214)

* Add a mechanism to format the sticky cookie value (vulcand#216)

Co-authored-by: Tom Moulard <tom.moulard@traefik.io>
Co-authored-by: M <m@cognusion.com>
Co-authored-by: Sylvain Rabot <sylvain@abstraction.fr>

* Do not use global websocket.DefaultDialer

This change makes it so that each forward gets its own dialer rather
then all sharing the global `websocket.DefaultDialer`. It fixes the flaky
`TestWebSocketNumGoRoutine` test and allows `WebsocketTLSClientConfig` to
set a different TLS config than the one used in the http `RoundTripper`,
the TLS config in the http `RoundTripper` will still be used as a
fallback if one wasn't set by the user.

Adds the new `optSetter` `WebsocketNetDialContext` to set a custom
DialContet for WebSocket use.

-  `go test -run=TestWebSocketNumGoRoutine -count=100 ./forward` now
   passes. Removed the skip directive.
-  Closes vulcand#199
-  Closes vulcand#125

* Revert un-skipping test

* Update: Cleanup local and remote merged changes

Co-authored-by: SALLEYRON Julien <julien.salleyron@gmail.com>
Co-authored-by: Ludovic Fernandez <ldez@users.noreply.github.com>
Co-authored-by: Michael <mmatur@users.noreply.github.com>
Co-authored-by: ravilr <raviprasad_lr@yahoo.com>
Co-authored-by: Amir Keibi <gheibia@users.noreply.github.com>
Co-authored-by: colynn.liu <colynnliu@foxmail.com>
Co-authored-by: Sylvain Rabot <sylvain@abstraction.fr>
Co-authored-by: Fernandez Ludovic <lfernandez.dev@gmail.com>
Co-authored-by: colynn.liu <colynn.liu@gmail.com>
Co-authored-by: Wes Turner <50891+westurner@users.noreply.github.com>
Co-authored-by: Ben Yanke <ben@benyanke.com>
Co-authored-by: Peter C <somethingnew2-0@users.noreply.github.com>
Co-authored-by: Iman Sahebi <iman.s_sani@yahoo.com>
Co-authored-by: Douglas De Toni Machado <douglas.machado@traefik.io>
Co-authored-by: Romain <rtribotte@users.noreply.github.com>
Co-authored-by: Jean-Baptiste Doumenjou <925513+jbdoumenjou@users.noreply.github.com>
Co-authored-by: Tom Moulard <tom.moulard@traefik.io>
Co-authored-by: M <m@cognusion.com>
Co-authored-by: Clifton Kaznocha <ckaznocha@users.noreply.github.com>
Co-authored-by: Clifton Kaznocha <ckaznocha@gmail.com>

* fixed: forwarder did not set deadline for ws connections (#11)

* fixed: forwarder did not set deadline for ws connections

* remove debug prints

Co-authored-by: Primalmotion <primalmotion@pm.me>

Co-authored-by: Eric Powers <epowers@paloaltonetworks.com>
Co-authored-by: SALLEYRON Julien <julien.salleyron@gmail.com>
Co-authored-by: Ludovic Fernandez <ldez@users.noreply.github.com>
Co-authored-by: Michael <mmatur@users.noreply.github.com>
Co-authored-by: ravilr <raviprasad_lr@yahoo.com>
Co-authored-by: Amir Keibi <gheibia@users.noreply.github.com>
Co-authored-by: colynn.liu <colynnliu@foxmail.com>
Co-authored-by: Sylvain Rabot <sylvain@abstraction.fr>
Co-authored-by: Fernandez Ludovic <lfernandez.dev@gmail.com>
Co-authored-by: colynn.liu <colynn.liu@gmail.com>
Co-authored-by: Wes Turner <50891+westurner@users.noreply.github.com>
Co-authored-by: Ben Yanke <ben@benyanke.com>
Co-authored-by: Peter C <somethingnew2-0@users.noreply.github.com>
Co-authored-by: Iman Sahebi <iman.s_sani@yahoo.com>
Co-authored-by: Douglas De Toni Machado <douglas.machado@traefik.io>
Co-authored-by: Romain <rtribotte@users.noreply.github.com>
Co-authored-by: Jean-Baptiste Doumenjou <925513+jbdoumenjou@users.noreply.github.com>
Co-authored-by: Tom Moulard <tom.moulard@traefik.io>
Co-authored-by: M <m@cognusion.com>
Co-authored-by: Clifton Kaznocha <ckaznocha@users.noreply.github.com>
Co-authored-by: Clifton Kaznocha <ckaznocha@gmail.com>
Co-authored-by: primalmotion <208711+primalmotion@users.noreply.github.com>
Co-authored-by: Primalmotion <primalmotion@pm.me>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants