From 730c1115ceecfa28c786ef032ebc55629dad37f6 Mon Sep 17 00:00:00 2001 From: andres-portainer <91705312+andres-portainer@users.noreply.github.com> Date: Mon, 14 Apr 2025 17:46:40 -0300 Subject: [PATCH] fix(proxy): remove code duplication BE-11627 (#644) --- api/http/proxy/factory/agent.go | 5 ++--- api/http/proxy/factory/azure.go | 2 +- api/http/proxy/factory/docker.go | 2 +- api/http/proxy/factory/gitlab.go | 2 +- api/http/proxy/factory/kubernetes.go | 6 +++--- api/http/proxy/factory/reverse_proxy.go | 2 +- 6 files changed, 9 insertions(+), 10 deletions(-) diff --git a/api/http/proxy/factory/agent.go b/api/http/proxy/factory/agent.go index bd08efd6c..60323a195 100644 --- a/api/http/proxy/factory/agent.go +++ b/api/http/proxy/factory/agent.go @@ -52,7 +52,7 @@ func (factory *ProxyFactory) NewAgentProxy(endpoint *portainer.Endpoint) (*Proxy endpointURL.Scheme = "https" } - proxy := newSingleHostReverseProxyWithHostHeader(endpointURL) + proxy := NewSingleHostReverseProxyWithHostHeader(endpointURL) proxy.Transport = agent.NewTransport(factory.signatureService, httpTransport) @@ -63,8 +63,7 @@ func (factory *ProxyFactory) NewAgentProxy(endpoint *portainer.Endpoint) (*Proxy Port: 0, } - err = proxyServer.start() - if err != nil { + if err := proxyServer.start(); err != nil { return nil, errors.Wrap(err, "failed starting proxy server") } diff --git a/api/http/proxy/factory/azure.go b/api/http/proxy/factory/azure.go index eba2fbd6a..e210dec2a 100644 --- a/api/http/proxy/factory/azure.go +++ b/api/http/proxy/factory/azure.go @@ -15,7 +15,7 @@ func newAzureProxy(endpoint *portainer.Endpoint, dataStore dataservices.DataStor return nil, err } - proxy := newSingleHostReverseProxyWithHostHeader(remoteURL) + proxy := NewSingleHostReverseProxyWithHostHeader(remoteURL) proxy.Transport = azure.NewTransport(&endpoint.AzureCredentials, dataStore, endpoint) return proxy, nil } diff --git a/api/http/proxy/factory/docker.go b/api/http/proxy/factory/docker.go index e558bebb9..31d183c9b 100644 --- a/api/http/proxy/factory/docker.go +++ b/api/http/proxy/factory/docker.go @@ -72,7 +72,7 @@ func (factory *ProxyFactory) newDockerHTTPProxy(endpoint *portainer.Endpoint) (h return nil, err } - proxy := newSingleHostReverseProxyWithHostHeader(endpointURL) + proxy := NewSingleHostReverseProxyWithHostHeader(endpointURL) proxy.Transport = dockerTransport return proxy, nil } diff --git a/api/http/proxy/factory/gitlab.go b/api/http/proxy/factory/gitlab.go index cbe28411c..7c1ae96e3 100644 --- a/api/http/proxy/factory/gitlab.go +++ b/api/http/proxy/factory/gitlab.go @@ -13,7 +13,7 @@ func newGitlabProxy(uri string) (http.Handler, error) { return nil, err } - proxy := newSingleHostReverseProxyWithHostHeader(url) + proxy := NewSingleHostReverseProxyWithHostHeader(url) proxy.Transport = gitlab.NewTransport() return proxy, nil } diff --git a/api/http/proxy/factory/kubernetes.go b/api/http/proxy/factory/kubernetes.go index 0a74fa3f2..eceee181a 100644 --- a/api/http/proxy/factory/kubernetes.go +++ b/api/http/proxy/factory/kubernetes.go @@ -43,7 +43,7 @@ func (factory *ProxyFactory) newKubernetesLocalProxy(endpoint *portainer.Endpoin return nil, err } - proxy := newSingleHostReverseProxyWithHostHeader(remoteURL) + proxy := NewSingleHostReverseProxyWithHostHeader(remoteURL) proxy.Transport = transport return proxy, nil @@ -73,7 +73,7 @@ func (factory *ProxyFactory) newKubernetesEdgeHTTPProxy(endpoint *portainer.Endp } endpointURL.Scheme = "http" - proxy := newSingleHostReverseProxyWithHostHeader(endpointURL) + proxy := NewSingleHostReverseProxyWithHostHeader(endpointURL) proxy.Transport = kubernetes.NewEdgeTransport(factory.dataStore, factory.signatureService, factory.reverseTunnelService, endpoint, tokenManager, factory.kubernetesClientFactory) return proxy, nil @@ -104,7 +104,7 @@ func (factory *ProxyFactory) newKubernetesAgentHTTPSProxy(endpoint *portainer.En return nil, err } - proxy := newSingleHostReverseProxyWithHostHeader(remoteURL) + proxy := NewSingleHostReverseProxyWithHostHeader(remoteURL) proxy.Transport = kubernetes.NewAgentTransport(factory.signatureService, tlsConfig, tokenManager, endpoint, factory.kubernetesClientFactory, factory.dataStore) return proxy, nil diff --git a/api/http/proxy/factory/reverse_proxy.go b/api/http/proxy/factory/reverse_proxy.go index 93d22f94d..fdee70c4d 100644 --- a/api/http/proxy/factory/reverse_proxy.go +++ b/api/http/proxy/factory/reverse_proxy.go @@ -10,7 +10,7 @@ import ( // newSingleHostReverseProxyWithHostHeader is based on NewSingleHostReverseProxy // from golang.org/src/net/http/httputil/reverseproxy.go and merely sets the Host // HTTP header, which NewSingleHostReverseProxy deliberately preserves. -func newSingleHostReverseProxyWithHostHeader(target *url.URL) *httputil.ReverseProxy { +func NewSingleHostReverseProxyWithHostHeader(target *url.URL) *httputil.ReverseProxy { targetQuery := target.RawQuery director := func(req *http.Request) { req.URL.Scheme = target.Scheme