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>
(cherry picked from commit c587ba3422)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Régis Behmo 2023-10-05 10:42:37 +02:00 committed by Sebastiaan van Stijn
parent f5c7673ff8
commit 3d8f7d0683
No known key found for this signature in database
GPG key ID: 76698F39D527CE8C
2 changed files with 5 additions and 5 deletions

View file

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

View file

@ -142,21 +142,21 @@ func TestValidateMirror(t *testing.T) {
"https://127.0.0.1",
"http://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!://%as%",
"ftp://mirror-1.example.com",
"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#frag",
"http://mirror-1.example.com?q=foo",
"https://mirror-1.example.com#frag",
"https://mirror-1.example.com/#frag",
"http://foo:bar@mirror-1.example.com/",
"https://mirror-1.example.com/v1/",
"https://mirror-1.example.com/v1/#",
"https://mirror-1.example.com/v1/#frag",
"https://mirror-1.example.com?q",
}