mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-27 06:03:48 +03:00
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
2 changed files with 17 additions and 5 deletions
|
@ -146,14 +146,18 @@ func addHTTPVarsToReplacer(repl caddy.Replacer, req *http.Request, w http.Respon
|
|||
if err != nil {
|
||||
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 {
|
||||
return "", false
|
||||
}
|
||||
if idx >= len(hostLabels) {
|
||||
if idx > len(hostLabels) {
|
||||
return "", true
|
||||
}
|
||||
return hostLabels[idx], true
|
||||
return hostLabels[len(hostLabels)-idx-1], true
|
||||
}
|
||||
|
||||
// path parts
|
||||
|
|
|
@ -34,8 +34,8 @@ func TestHTTPVarReplacement(t *testing.T) {
|
|||
addHTTPVarsToReplacer(repl, req, res)
|
||||
|
||||
for i, tc := range []struct {
|
||||
input string
|
||||
expect string
|
||||
input string
|
||||
expect string
|
||||
}{
|
||||
{
|
||||
input: "{http.request.scheme}",
|
||||
|
@ -61,6 +61,14 @@ func TestHTTPVarReplacement(t *testing.T) {
|
|||
input: "{http.request.remote.port}",
|
||||
expect: "1234",
|
||||
},
|
||||
{
|
||||
input: "{http.request.host.labels.0}",
|
||||
expect: "com",
|
||||
},
|
||||
{
|
||||
input: "{http.request.host.labels.1}",
|
||||
expect: "example",
|
||||
},
|
||||
} {
|
||||
actual := repl.ReplaceAll(tc.input, "<empty>")
|
||||
if actual != tc.expect {
|
||||
|
|
Loading…
Reference in a new issue