Skip to content

Commit

Permalink
fix: custom Host header.
Browse files Browse the repository at this point in the history
  • Loading branch information
ISNing committed May 3, 2024
1 parent de61ac8 commit 4c4ea85
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 11 deletions.
7 changes: 6 additions & 1 deletion pkg/handler/deleter/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package deleter

import (
"net/http"
"strings"

"github.com/tomMoulard/htransformation/pkg/types"
)
Expand All @@ -17,5 +18,9 @@ func Handle(rw http.ResponseWriter, req *http.Request, rule types.Rule) {
return
}

req.Header.Del(rule.Header)
if strings.EqualFold(rule.Header, "Host") {
req.Host = ""
} else {
req.Header.Del(rule.Header)
}
}
6 changes: 5 additions & 1 deletion pkg/handler/join/join.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,11 @@ func Handle(rw http.ResponseWriter, req *http.Request, rule types.Rule) {
return
}

req.Header.Set(rule.Header, newHeaderVal)
if strings.EqualFold(rule.Header, "Host") {
req.Host = newHeaderVal
} else {
req.Header.Set(rule.Header, newHeaderVal)
}
}

// getValue checks if prefix exists, the given prefix is present,
Expand Down
13 changes: 11 additions & 2 deletions pkg/handler/rename/rename.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"fmt"
"net/http"
"regexp"
"strings"

"github.com/tomMoulard/htransformation/pkg/types"
)
Expand All @@ -29,14 +30,22 @@ func Handle(rw http.ResponseWriter, req *http.Request, rule types.Rule) {
if rule.SetOnResponse {
rw.Header().Del(headerName)
} else {
req.Header.Del(headerName)
if strings.EqualFold(rule.Header, "Host") {
req.Host = ""
} else {
req.Header.Del(headerName)
}
}

for _, val := range headerValues {
if rule.SetOnResponse {
rw.Header().Set(rule.Value, val)
} else {
req.Header.Set(rule.Value, val)
if strings.EqualFold(rule.Value, "Host") {
req.Host = val
} else {
req.Header.Set(rule.Value, val)
}
}
}
}
Expand Down
27 changes: 21 additions & 6 deletions pkg/handler/rewrite/rewrite.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,14 @@ func Handle(rw http.ResponseWriter, req *http.Request, rule types.Rule) {
continue
}

if rule.SetOnResponse {
switch {
case rule.SetOnResponse:
rw.Header().Del(headerName)
} else {

case strings.EqualFold(headerName, "Host"):
req.Host = ""

default:
req.Header.Del(headerName)
}

Expand All @@ -48,9 +53,14 @@ func Handle(rw http.ResponseWriter, req *http.Request, rule types.Rule) {
captures := ruleValueRegexp.FindStringSubmatch(headerValue)

if len(captures) == 0 || captures[0] == "" {
if rule.SetOnResponse {
switch {
case rule.SetOnResponse:
rw.Header().Set(rule.Header, replacedHeaderValue)
} else {

case strings.EqualFold(headerName, "Host"):
req.Host = headerValue

default:
req.Header.Set(headerName, headerValue)
}

Expand All @@ -62,9 +72,14 @@ func Handle(rw http.ResponseWriter, req *http.Request, rule types.Rule) {
replacedHeaderValue = strings.ReplaceAll(replacedHeaderValue, placeholder, capture)
}

if rule.SetOnResponse {
switch {
case rule.SetOnResponse:
rw.Header().Add(rule.Header, replacedHeaderValue)
} else {

case strings.EqualFold(headerName, "Host"):
req.Host = replacedHeaderValue

default:
req.Header.Add(headerName, replacedHeaderValue)
}
}
Expand Down
7 changes: 6 additions & 1 deletion pkg/handler/set/set.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package set

import (
"net/http"
"strings"

"github.com/tomMoulard/htransformation/pkg/types"
)
Expand All @@ -21,5 +22,9 @@ func Handle(rw http.ResponseWriter, req *http.Request, rule types.Rule) {
return
}

req.Header.Set(rule.Header, rule.Value)
if strings.EqualFold(rule.Header, "Host") {
req.Host = rule.Value
} else {
req.Header.Set(rule.Header, rule.Value)
}
}

0 comments on commit 4c4ea85

Please sign in to comment.