mirror of https://github.com/caddyserver/caddy.git
caddyhttp: host labels placeholders endianness from right->left
https://caddy.community/t/labeln-placeholder-endian-issue/5366 (I thought we had this before but it must have gotten lost somewhere)
This commit is contained in:
parent
bc738991b6
commit
acf7dea68f
|
@ -146,14 +146,18 @@ func addHTTPVarsToReplacer(repl caddy.Replacer, req *http.Request, w http.Respon
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", false
|
return "", false
|
||||||
}
|
}
|
||||||
hostLabels := strings.Split(req.Host, ".")
|
reqHost, _, err := net.SplitHostPort(req.Host)
|
||||||
|
if err != nil {
|
||||||
|
reqHost = req.Host // OK; assume there was no port
|
||||||
|
}
|
||||||
|
hostLabels := strings.Split(reqHost, ".")
|
||||||
if idx < 0 {
|
if idx < 0 {
|
||||||
return "", false
|
return "", false
|
||||||
}
|
}
|
||||||
if idx >= len(hostLabels) {
|
if idx > len(hostLabels) {
|
||||||
return "", true
|
return "", true
|
||||||
}
|
}
|
||||||
return hostLabels[idx], true
|
return hostLabels[len(hostLabels)-idx-1], true
|
||||||
}
|
}
|
||||||
|
|
||||||
// path parts
|
// path parts
|
||||||
|
|
|
@ -34,8 +34,8 @@ func TestHTTPVarReplacement(t *testing.T) {
|
||||||
addHTTPVarsToReplacer(repl, req, res)
|
addHTTPVarsToReplacer(repl, req, res)
|
||||||
|
|
||||||
for i, tc := range []struct {
|
for i, tc := range []struct {
|
||||||
input string
|
input string
|
||||||
expect string
|
expect string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
input: "{http.request.scheme}",
|
input: "{http.request.scheme}",
|
||||||
|
@ -61,6 +61,14 @@ func TestHTTPVarReplacement(t *testing.T) {
|
||||||
input: "{http.request.remote.port}",
|
input: "{http.request.remote.port}",
|
||||||
expect: "1234",
|
expect: "1234",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
input: "{http.request.host.labels.0}",
|
||||||
|
expect: "com",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
input: "{http.request.host.labels.1}",
|
||||||
|
expect: "example",
|
||||||
|
},
|
||||||
} {
|
} {
|
||||||
actual := repl.ReplaceAll(tc.input, "<empty>")
|
actual := repl.ReplaceAll(tc.input, "<empty>")
|
||||||
if actual != tc.expect {
|
if actual != tc.expect {
|
||||||
|
|
Loading…
Reference in New Issue