registry: allow mirror path prefix in config

Path prefixes were originally disallowed in the `--registry-mirrors`
option because the /v1 endpoint was assumed to be at the root of the
URI. This is no longer the case in v2.

Close #36598

Signed-off-by: Régis Behmo <regis@behmo.com>
This commit is contained in:
Régis Behmo 2023-10-05 10:42:37 +02:00
parent bc2c8279de
commit c587ba3422
2 changed files with 5 additions and 5 deletions

View file

@ -330,8 +330,8 @@ func ValidateMirror(val string) (string, error) {
if uri.Scheme != "http" && uri.Scheme != "https" { if uri.Scheme != "http" && uri.Scheme != "https" {
return "", invalidParamf("invalid mirror: unsupported scheme %q in %q", uri.Scheme, uri) return "", invalidParamf("invalid mirror: unsupported scheme %q in %q", uri.Scheme, uri)
} }
if (uri.Path != "" && uri.Path != "/") || uri.RawQuery != "" || uri.Fragment != "" { if uri.RawQuery != "" || uri.Fragment != "" {
return "", invalidParamf("invalid mirror: path, query, or fragment at end of the URI %q", uri) return "", invalidParamf("invalid mirror: query or fragment at end of the URI %q", uri)
} }
if uri.User != nil { if uri.User != nil {
// strip password from output // strip password from output

View file

@ -142,21 +142,21 @@ func TestValidateMirror(t *testing.T) {
"https://127.0.0.1", "https://127.0.0.1",
"http://127.0.0.1:5000", "http://127.0.0.1:5000",
"https://127.0.0.1:5000", "https://127.0.0.1:5000",
"http://mirror-1.example.com/v1/",
"https://mirror-1.example.com/v1/",
} }
invalid := []string{ invalid := []string{
"!invalid!://%as%", "!invalid!://%as%",
"ftp://mirror-1.example.com", "ftp://mirror-1.example.com",
"http://mirror-1.example.com/?q=foo", "http://mirror-1.example.com/?q=foo",
"http://mirror-1.example.com/v1/",
"http://mirror-1.example.com/v1/?q=foo", "http://mirror-1.example.com/v1/?q=foo",
"http://mirror-1.example.com/v1/?q=foo#frag", "http://mirror-1.example.com/v1/?q=foo#frag",
"http://mirror-1.example.com?q=foo", "http://mirror-1.example.com?q=foo",
"https://mirror-1.example.com#frag", "https://mirror-1.example.com#frag",
"https://mirror-1.example.com/#frag", "https://mirror-1.example.com/#frag",
"http://foo:bar@mirror-1.example.com/", "http://foo:bar@mirror-1.example.com/",
"https://mirror-1.example.com/v1/", "https://mirror-1.example.com/v1/#frag",
"https://mirror-1.example.com/v1/#",
"https://mirror-1.example.com?q", "https://mirror-1.example.com?q",
} }