Skip to content

Commit

Permalink
Merge pull request #21 from fancyweb/feat/support-host-header
Browse files Browse the repository at this point in the history
Handle Host header
  • Loading branch information
c-kruse authored Dec 27, 2022
2 parents a2a0f9a + c4dafce commit b639826
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 7 deletions.
8 changes: 7 additions & 1 deletion cmd/http-check/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,13 @@ func executeCheck(event *types.Event) (int, error) {
if len(plugin.Headers) > 0 {
for _, header := range plugin.Headers {
headerSplit := strings.SplitN(header, ":", 2)
req.Header.Set(strings.TrimSpace(headerSplit[0]), strings.TrimSpace(headerSplit[1]))
headerKey := strings.TrimSpace(headerSplit[0])
headerValue := strings.TrimSpace(headerSplit[1])
if strings.EqualFold(headerKey, "host") {
req.Host = headerValue
continue
}
req.Header.Set(headerKey, headerValue)
}
}

Expand Down
3 changes: 2 additions & 1 deletion cmd/http-check/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,13 @@ func TestExecuteCheck(t *testing.T) {
var test = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
assert.Equal("Test Header 1 Value", r.Header.Get("Test-Header-1"))
assert.Equal("Test Header 2 Value", r.Header.Get("Test-Header-2"))
assert.Equal("foo.bar.tld", r.Host)
}))
_, err := url.ParseRequestURI(test.URL)
require.NoError(t, err)
plugin.URL = test.URL
plugin.SearchString = ""
plugin.Headers = []string{"Test-Header-1: Test Header 1 Value", "Test-Header-2: Test Header 2 Value"}
plugin.Headers = []string{"Test-Header-1: Test Header 1 Value", "Test-Header-2: Test Header 2 Value", "Host: foo.bar.tld"}
status, err := executeCheck(event)
assert.NoError(err)
assert.Equal(sensu.CheckStateOK, status)
Expand Down
8 changes: 7 additions & 1 deletion cmd/http-get/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,13 @@ func executeCheck(event *corev2.Event) (int, error) {
if len(plugin.Headers) > 0 {
for _, header := range plugin.Headers {
headerSplit := strings.SplitN(header, ":", 2)
req.Header.Set(strings.TrimSpace(headerSplit[0]), strings.TrimSpace(headerSplit[1]))
headerKey := strings.TrimSpace(headerSplit[0])
headerValue := strings.TrimSpace(headerSplit[1])
if strings.EqualFold(headerKey, "host") {
req.Host = headerValue
continue
}
req.Header.Set(headerKey, headerValue)
}
}

Expand Down
8 changes: 7 additions & 1 deletion cmd/http-json/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,13 @@ func executeCheck(event *corev2.Event) (int, error) {
if len(plugin.Headers) > 0 {
for _, header := range plugin.Headers {
headerSplit := strings.SplitN(header, ":", 2)
req.Header.Set(strings.TrimSpace(headerSplit[0]), strings.TrimSpace(headerSplit[1]))
headerKey := strings.TrimSpace(headerSplit[0])
headerValue := strings.TrimSpace(headerSplit[1])
if strings.EqualFold(headerKey, "host") {
req.Host = headerValue
continue
}
req.Header.Set(headerKey, headerValue)
}
}

Expand Down
3 changes: 2 additions & 1 deletion cmd/http-json/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ func TestExecuteCheck(t *testing.T) {
var test = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
assert.Equal("Test Header 1 Value", r.Header.Get("Test-Header-1"))
assert.Equal("Test Header 2 Value", r.Header.Get("Test-Header-2"))
assert.Equal("foo.bar.tld", r.Host)
w.WriteHeader(http.StatusOK)
_, _ = w.Write(testJSON)
}))
Expand All @@ -84,7 +85,7 @@ func TestExecuteCheck(t *testing.T) {
plugin.URL = test.URL
plugin.Query = ".number"
plugin.Expression = "== 10"
plugin.Headers = []string{"Test-Header-1: Test Header 1 Value", "Test-Header-2: Test Header 2 Value"}
plugin.Headers = []string{"Test-Header-1: Test Header 1 Value", "Test-Header-2: Test Header 2 Value", "Host: foo.bar.tld"}
status, err := executeCheck(event)
assert.NoError(err)
assert.Equal(sensu.CheckStateOK, status)
Expand Down
8 changes: 7 additions & 1 deletion cmd/http-perf/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,13 @@ func executeCheck(event *types.Event) (int, error) {
if len(plugin.Headers) > 0 {
for _, header := range plugin.Headers {
headerSplit := strings.SplitN(header, ":", 2)
req.Header.Set(strings.TrimSpace(headerSplit[0]), strings.TrimSpace(headerSplit[1]))
headerKey := strings.TrimSpace(headerSplit[0])
headerValue := strings.TrimSpace(headerSplit[1])
if strings.EqualFold(headerKey, "host") {
req.Host = headerValue
continue
}
req.Header.Set(headerKey, headerValue)
}
}

Expand Down
3 changes: 2 additions & 1 deletion cmd/http-perf/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,14 @@ func TestExecuteCheck(t *testing.T) {
assert.Equal(expectedURI, r.RequestURI)
assert.Equal("Test Header 1 Value", r.Header.Get("Test-Header-1"))
assert.Equal("Test Header 2 Value", r.Header.Get("Test-Header-2"))
assert.Equal("foo.bar.tld", r.Host)
w.WriteHeader(http.StatusOK)
_, _ = w.Write([]byte("SUCCESS"))
}))
_, err := url.ParseRequestURI(test.URL)
require.NoError(t, err)
plugin.URL = test.URL
plugin.Headers = []string{"Test-Header-1: Test Header 1 Value", "Test-Header-2: Test Header 2 Value"}
plugin.Headers = []string{"Test-Header-1: Test Header 1 Value", "Test-Header-2: Test Header 2 Value", "Host: foo.bar.tld"}
warning, _ = time.ParseDuration("2s")
critical, _ = time.ParseDuration("5s")
status, err := executeCheck(event)
Expand Down

0 comments on commit b639826

Please sign in to comment.