From eb3b35b9b0cc55fb8464d9b0662e6b94aafc54cc Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Mon, 17 Aug 2020 22:19:56 -0700 Subject: Fix gitlab-shell not handling relative URLs over UNIX sockets From https://gitlab.com/gitlab-org/omnibus-gitlab/-/merge_requests/4498#note_397401883, if you specify a relative path such as: ``` external_url 'http://gitlab.example.com/gitlab' ``` gitlab-shell doesn't have a way to pass the `/gitlab` to the host. For example, let's say we have: ``` gitlab_url: "http+unix://%2Fvar%2Fopt%2Fgitlab%2Fgitlab-workhorse%2Fsocket" ``` If we have `/gitlab` as the relative path, how do we specify what is the UNIX socket path and what is the relative path? If we specify: ``` gitlab_url: "http+unix:///var/opt/gitlab/gitlab-workhorse.socket/gitlab ``` This is ambiguous. Is the socket in `/var/opt/gitlab/gitlab-workhorse.socket/gitlab` or in `/var/opt/gitlab/gitlab-workhorse.socket`? To fix this, this merge request adds an optional `gitlab_relative_url_root` config parameter: ``` gitlab_url: "http+unix://%2Fvar%2Fopt%2Fgitlab%2Fgitlab-workhorse%2Fsocket" gitlab_relative_url_root: /gitlab ``` This is only used with UNIX domain sockets to disambiguate the socket and base URL path. If `gitlab_url` uses `http://` or `https://`, then `gitlab_relative_url_root` is ignored. Relates to https://gitlab.com/gitlab-org/gitlab-shell/-/issues/476 --- client/httpclient_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'client/httpclient_test.go') diff --git a/client/httpclient_test.go b/client/httpclient_test.go index 1f0a4ed..fce0cd5 100644 --- a/client/httpclient_test.go +++ b/client/httpclient_test.go @@ -17,7 +17,7 @@ import ( func TestReadTimeout(t *testing.T) { expectedSeconds := uint64(300) - client := NewHTTPClient("http://localhost:3000", "", "", false, expectedSeconds) + client := NewHTTPClient("http://localhost:3000", "", "", "", false, expectedSeconds) require.NotNil(t, client) assert.Equal(t, time.Duration(expectedSeconds)*time.Second, client.Client.Timeout) @@ -96,7 +96,7 @@ func TestEmptyBasicAuthSettings(t *testing.T) { func setup(t *testing.T, username, password string, requests []testserver.TestRequestHandler) (*GitlabNetClient, func()) { url, cleanup := testserver.StartHttpServer(t, requests) - httpClient := NewHTTPClient(url, "", "", false, 1) + httpClient := NewHTTPClient(url, "", "", "", false, 1) client, err := NewGitlabNetClient(username, password, "", httpClient) require.NoError(t, err) -- cgit v1.2.1