forked from SW/traefik
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f482e5e84a | ||
|
|
447c3567b4 | ||
|
|
3c5e6fe7f8 | ||
|
|
bf4a578bbb |
10
CHANGELOG.md
10
CHANGELOG.md
@@ -1,3 +1,13 @@
|
||||
## [v2.4.2](https://github.com/traefik/traefik/tree/v2.4.2) (2021-02-02)
|
||||
[All Commits](https://github.com/traefik/traefik/compare/v2.4.1...v2.4.2)
|
||||
|
||||
**Bug fixes:**
|
||||
- **[acme]** Fix the redirect entrypoint default priority ([#7851](https://github.com/traefik/traefik/pull/7851) by [jbdoumenjou](https://github.com/jbdoumenjou))
|
||||
- **[middleware]** Fix the infinite loop in forwarded header middleware. ([#7847](https://github.com/traefik/traefik/pull/7847) by [ldez](https://github.com/ldez))
|
||||
|
||||
**Documentation:**
|
||||
- Fix the static configuration generation for environment variables ([#7849](https://github.com/traefik/traefik/pull/7849) by [jbdoumenjou](https://github.com/jbdoumenjou))
|
||||
|
||||
## [v2.4.1](https://github.com/traefik/traefik/tree/v2.4.1) (2021-02-01)
|
||||
[All Commits](https://github.com/traefik/traefik/compare/v2.4.0...v2.4.1)
|
||||
|
||||
|
||||
@@ -135,10 +135,10 @@ Default certificate resolver for the routers linked to the entry point.
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_HTTP_TLS_DOMAINS`:
|
||||
Default TLS domains for the routers linked to the entry point.
|
||||
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_HTTP_TLS_DOMAINS[n]_MAIN`:
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_HTTP_TLS_DOMAINS_n_MAIN`:
|
||||
Default subject name.
|
||||
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_HTTP_TLS_DOMAINS[n]_SANS`:
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_HTTP_TLS_DOMAINS_n_SANS`:
|
||||
Subject alternative names.
|
||||
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_HTTP_TLS_OPTIONS`:
|
||||
|
||||
@@ -64,7 +64,12 @@ THIS FILE MUST NOT BE EDITED BY HAND
|
||||
continue
|
||||
}
|
||||
|
||||
w.writeln("`" + prefix + strings.ReplaceAll(flat.Name, "[0]", "[n]") + "`: ")
|
||||
if prefix == "" {
|
||||
w.writeln("`" + prefix + strings.ReplaceAll(flat.Name, "[0]", "_n") + "`: ")
|
||||
} else {
|
||||
w.writeln("`" + prefix + strings.ReplaceAll(flat.Name, "[0]", "[n]") + "`: ")
|
||||
}
|
||||
|
||||
if flat.Default == "" {
|
||||
w.writeln(flat.Description)
|
||||
} else {
|
||||
|
||||
@@ -71,7 +71,7 @@ type RedirectEntryPoint struct {
|
||||
func (r *RedirectEntryPoint) SetDefaults() {
|
||||
r.Scheme = "https"
|
||||
r.Permanent = true
|
||||
r.Priority = math.MaxInt32
|
||||
r.Priority = math.MaxInt32 - 1
|
||||
}
|
||||
|
||||
// TLSConfig is the default TLS configuration for all the routers associated to the concerned entry point.
|
||||
|
||||
@@ -104,9 +104,10 @@ func isWebsocketRequest(req *http.Request) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
h = h[pos:]
|
||||
h = h[pos+1:]
|
||||
}
|
||||
}
|
||||
|
||||
return containsHeader(connection, "upgrade") && containsHeader(upgrade, "websocket")
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package forwardedheaders
|
||||
import (
|
||||
"crypto/tls"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
@@ -299,3 +300,71 @@ func TestServeHTTP(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_isWebsocketRequest(t *testing.T) {
|
||||
testCases := []struct {
|
||||
desc string
|
||||
connectionHeader string
|
||||
upgradeHeader string
|
||||
assert assert.BoolAssertionFunc
|
||||
}{
|
||||
{
|
||||
desc: "connection Header multiple values middle",
|
||||
connectionHeader: "foo,upgrade,bar",
|
||||
upgradeHeader: "websocket",
|
||||
assert: assert.True,
|
||||
},
|
||||
{
|
||||
desc: "connection Header multiple values end",
|
||||
connectionHeader: "foo,bar,upgrade",
|
||||
upgradeHeader: "websocket",
|
||||
assert: assert.True,
|
||||
},
|
||||
{
|
||||
desc: "connection Header multiple values begin",
|
||||
connectionHeader: "upgrade,foo,bar",
|
||||
upgradeHeader: "websocket",
|
||||
assert: assert.True,
|
||||
},
|
||||
{
|
||||
desc: "connection Header no upgrade",
|
||||
connectionHeader: "foo,bar",
|
||||
upgradeHeader: "websocket",
|
||||
assert: assert.False,
|
||||
},
|
||||
{
|
||||
desc: "connection Header empty",
|
||||
connectionHeader: "",
|
||||
upgradeHeader: "websocket",
|
||||
assert: assert.False,
|
||||
},
|
||||
{
|
||||
desc: "no header values",
|
||||
connectionHeader: "foo,bar",
|
||||
upgradeHeader: "foo,bar",
|
||||
assert: assert.False,
|
||||
},
|
||||
{
|
||||
desc: "upgrade header multiple values",
|
||||
connectionHeader: "upgrade",
|
||||
upgradeHeader: "foo,bar,websocket",
|
||||
assert: assert.True,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range testCases {
|
||||
test := test
|
||||
t.Run(test.desc, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
req := httptest.NewRequest(http.MethodGet, "http://localhost", nil)
|
||||
|
||||
req.Header.Set(connection, test.connectionHeader)
|
||||
req.Header.Set(upgrade, test.upgradeHeader)
|
||||
|
||||
ok := isWebsocketRequest(req)
|
||||
|
||||
test.assert(t, ok)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,11 +4,11 @@ RepositoryName = "traefik"
|
||||
OutputType = "file"
|
||||
FileName = "traefik_changelog.md"
|
||||
|
||||
# example new bugfix v2.4.1
|
||||
# example new bugfix v2.4.2
|
||||
CurrentRef = "v2.4"
|
||||
PreviousRef = "v2.4.0"
|
||||
PreviousRef = "v2.4.1"
|
||||
BaseBranch = "v2.4"
|
||||
FutureCurrentRefName = "v2.4.1"
|
||||
FutureCurrentRefName = "v2.4.2"
|
||||
|
||||
ThresholdPreviousRef = 10
|
||||
ThresholdCurrentRef = 10
|
||||
|
||||
Reference in New Issue
Block a user