From 9909b6d4816d8a445bc75b52e5db9ad4798eaba9 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 8 Jul 2017 10:34:04 +0200 Subject: [PATCH] feat(backend): make swarm api endpoint admin user protected (#991) --- api/http/proxy/response.go | 5 +++++ api/http/proxy/transport.go | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/api/http/proxy/response.go b/api/http/proxy/response.go index ece319672..4208f438c 100644 --- a/api/http/proxy/response.go +++ b/api/http/proxy/response.go @@ -85,6 +85,11 @@ func rewriteResponse(response *http.Response, newResponseData interface{}, statu response.StatusCode = statusCode response.Body = body response.ContentLength = int64(len(jsonData)) + + if response.Header == nil { + response.Header = make(http.Header) + } response.Header.Set("Content-Length", strconv.Itoa(len(jsonData))) + return nil } diff --git a/api/http/proxy/transport.go b/api/http/proxy/transport.go index 29c1d6c72..76c4f43f7 100644 --- a/api/http/proxy/transport.go +++ b/api/http/proxy/transport.go @@ -59,6 +59,8 @@ func (p *proxyTransport) proxyDockerRequest(request *http.Request) (*http.Respon return p.proxyServiceRequest(request) } else if strings.HasPrefix(path, "/volumes") { return p.proxyVolumeRequest(request) + } else if strings.HasPrefix(path, "/swarm") { + return p.proxySwarmRequest(request) } return p.executeDockerRequest(request) @@ -143,6 +145,10 @@ func (p *proxyTransport) proxyVolumeRequest(request *http.Request) (*http.Respon } } +func (p *proxyTransport) proxySwarmRequest(request *http.Request) (*http.Response, error) { + return p.administratorOperation(request) +} + // restrictedOperation ensures that the current user has the required authorizations // before executing the original request. func (p *proxyTransport) restrictedOperation(request *http.Request, resourceID string) (*http.Response, error) {