diff --git a/imaginary.go b/imaginary.go index b2d972a..f9c1e84 100644 --- a/imaginary.go +++ b/imaginary.go @@ -38,7 +38,7 @@ var ( aCertFile = flag.String("certfile", "", "TLS certificate file path") aKeyFile = flag.String("keyfile", "", "TLS private key file path") aAuthorization = flag.String("authorization", "", "Defines a constant Authorization header value passed to all the image source servers. -enable-url-source flag must be defined. This overwrites authorization headers forwarding behavior via X-Forward-Authorization") - aCustomHeaders = flag.String("forward-headers", "", "Forwards custom headers to the image source server. -enable-url-source flag must be defined.") + aForwardHeaders = flag.String("forward-headers", "", "Forwards custom headers to the image source server. -enable-url-source flag must be defined.") aPlaceholder = flag.String("placeholder", "", "Image path to image custom placeholder to be used in case of error. Recommended minimum image size is: 1200x1200") aDisableEndpoints = flag.String("disable-endpoints", "", "Comma separated endpoints to disable. E.g: form,crop,rotate,health") aHTTPCacheTTL = flag.Int("http-cache-ttl", -1, "The TTL in seconds") @@ -146,7 +146,7 @@ func main() { HTTPReadTimeout: *aReadTimeout, HTTPWriteTimeout: *aWriteTimeout, Authorization: *aAuthorization, - CustomHeaders: parseCustomHeaders(*aCustomHeaders), + ForwardHeaders: parseForwardHeaders(*aForwardHeaders), AllowedOrigins: parseOrigins(*aAllowedOrigins), MaxAllowedSize: *aMaxAllowedSize, } @@ -268,14 +268,14 @@ func checkHTTPCacheTTL(ttl int) { } } -func parseCustomHeaders(customHeaders string) []string { +func parseForwardHeaders(forwardHeaders string) []string { var headers []string - if customHeaders == "" { + if forwardHeaders == "" { return headers } - for _, header := range strings.Split(customHeaders, ",") { + for _, header := range strings.Split(forwardHeaders, ",") { if header != "" { - headers = append(headers, header) + headers = append(headers, strings.TrimSpace(header)) } } return headers diff --git a/server.go b/server.go index 63d466f..6e35ca9 100644 --- a/server.go +++ b/server.go @@ -33,7 +33,7 @@ type ServerOptions struct { KeyFile string Authorization string Placeholder string - CustomHeaders []string + ForwardHeaders []string PlaceholderImage []byte Endpoints Endpoints AllowedOrigins []*url.URL diff --git a/source.go b/source.go index 03d3af8..572e6aa 100644 --- a/source.go +++ b/source.go @@ -13,7 +13,7 @@ type SourceConfig struct { Authorization string MountPath string Type ImageSourceType - CustomHeaders []string + ForwardHeaders []string AllowedOrigins []*url.URL MaxAllowedSize int } @@ -39,7 +39,7 @@ func LoadSources(o ServerOptions) { Authorization: o.Authorization, AllowedOrigins: o.AllowedOrigins, MaxAllowedSize: o.MaxAllowedSize, - CustomHeaders: o.CustomHeaders, + ForwardHeaders: o.ForwardHeaders, }) } } diff --git a/source_http.go b/source_http.go index 947b9a2..c3840e2 100644 --- a/source_http.go +++ b/source_http.go @@ -86,8 +86,8 @@ func (s *HTTPImageSource) setAuthorizationHeader(req *http.Request, ireq *http.R } } -func (s *HTTPImageSource) setCustomHeaders(req *http.Request, ireq *http.Request) { - headers := s.Config.CustomHeaders +func (s *HTTPImageSource) setForwardHeaders(req *http.Request, ireq *http.Request) { + headers := s.Config.ForwardHeaders for _, header := range headers { if header != "" && ireq.Header.Get(header) != "" && req.Header.Get(header) == "" { req.Header.Set(header, ireq.Header.Get(header)) @@ -104,8 +104,8 @@ func newHTTPRequest(s *HTTPImageSource, ireq *http.Request, method string, url * req.Header.Set("User-Agent", "imaginary/"+Version) req.URL = url - if len(s.Config.CustomHeaders) != 0 { - s.setCustomHeaders(req, ireq) + if len(s.Config.ForwardHeaders) != 0 { + s.setForwardHeaders(req, ireq) } // Forward auth header to the target server, if necessary diff --git a/source_http_test.go b/source_http_test.go index 1620279..e558065 100755 --- a/source_http_test.go +++ b/source_http_test.go @@ -134,13 +134,13 @@ func TestHttpImageSourceForwardHeaders(t *testing.T) { r, _ := http.NewRequest(http.MethodGet, "http://foo/bar?url=http://bar.com", nil) r.Header.Set(header, "foobar") - source := &HTTPImageSource{&SourceConfig{CustomHeaders: cases}} + source := &HTTPImageSource{&SourceConfig{ForwardHeaders: cases}} if !source.Matches(r) { t.Fatal("Cannot match the request") } oreq := &http.Request{Header: make(http.Header)} - source.setCustomHeaders(oreq, r) + source.setForwardHeaders(oreq, r) if oreq.Header.Get(header) != "foobar" { t.Fatal("Missmatch custom header") @@ -159,7 +159,7 @@ func TestHttpImageSourceNotForwardHeaders(t *testing.T) { r, _ := http.NewRequest(http.MethodGet, "http://foo/bar?url="+url.String(), nil) r.Header.Set("Not-Forward", "foobar") - source := &HTTPImageSource{&SourceConfig{CustomHeaders: cases}} + source := &HTTPImageSource{&SourceConfig{ForwardHeaders: cases}} if !source.Matches(r) { t.Fatal("Cannot match the request") } @@ -182,7 +182,7 @@ func TestHttpImageSourceForwardedHeadersNotOverride(t *testing.T) { r, _ := http.NewRequest(http.MethodGet, "http://foo/bar?url="+url.String() , nil) r.Header.Set("Authorization", "foobar") - source := &HTTPImageSource{&SourceConfig{Authorization: "ValidAPIKey", CustomHeaders: cases}} + source := &HTTPImageSource{&SourceConfig{Authorization: "ValidAPIKey", ForwardHeaders: cases}} if !source.Matches(r) { t.Fatal("Cannot match the request") } @@ -205,7 +205,7 @@ func TestHttpImageSourceCaseSensitivityInForwardedHeaders(t *testing.T) { r, _ := http.NewRequest(http.MethodGet, "http://foo/bar?url="+url.String(), nil) r.Header.Set("x-custom", "foobar") - source := &HTTPImageSource{&SourceConfig{CustomHeaders: cases}} + source := &HTTPImageSource{&SourceConfig{ForwardHeaders: cases}} if !source.Matches(r) { t.Fatal("Cannot match the request") } @@ -224,13 +224,13 @@ func TestHttpImageSourceEmptyForwardedHeaders(t *testing.T) { r, _ := http.NewRequest(http.MethodGet, "http://foo/bar?url="+url.String(), nil) - source := &HTTPImageSource{&SourceConfig{CustomHeaders: cases}} + source := &HTTPImageSource{&SourceConfig{ForwardHeaders: cases}} if !source.Matches(r) { t.Fatal("Cannot match the request") } - if len(source.Config.CustomHeaders) != 0 { - t.Log(source.Config.CustomHeaders) + if len(source.Config.ForwardHeaders) != 0 { + t.Log(source.Config.ForwardHeaders) t.Fatal("Setted empty custom header") }