d43e61758a
This field was used when the code supported both "v1" and "v2" registries. We no longer support v1 registries, and the only v1 endpoint that's still used is for the legacy "search" endpoint, which does not use the APIEndpoint type. As no code is using this field, and the value will always be set to "v2", we can deprecated the Version field. I'm keeping this field for 1 release, to give notice to any potential external consumer, after which we can delete it. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
80 lines
2.4 KiB
Go
80 lines
2.4 KiB
Go
package registry // import "github.com/docker/docker/registry"
|
|
|
|
import (
|
|
"net/url"
|
|
"strings"
|
|
|
|
"github.com/docker/go-connections/tlsconfig"
|
|
)
|
|
|
|
func (s *Service) lookupV2Endpoints(hostname string) (endpoints []APIEndpoint, err error) {
|
|
ana := s.config.allowNondistributableArtifacts(hostname)
|
|
|
|
if hostname == DefaultNamespace || hostname == IndexHostname {
|
|
for _, mirror := range s.config.Mirrors {
|
|
if !strings.HasPrefix(mirror, "http://") && !strings.HasPrefix(mirror, "https://") {
|
|
mirror = "https://" + mirror
|
|
}
|
|
mirrorURL, err := url.Parse(mirror)
|
|
if err != nil {
|
|
return nil, invalidParam(err)
|
|
}
|
|
mirrorTLSConfig, err := newTLSConfig(mirrorURL.Host, s.config.isSecureIndex(mirrorURL.Host))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
endpoints = append(endpoints, APIEndpoint{
|
|
URL: mirrorURL,
|
|
Version: APIVersion2, //nolint:staticcheck // ignore SA1019 (Version is deprecated) to allow potential consumers to transition.
|
|
Mirror: true,
|
|
TrimHostname: true,
|
|
TLSConfig: mirrorTLSConfig,
|
|
})
|
|
}
|
|
endpoints = append(endpoints, APIEndpoint{
|
|
URL: DefaultV2Registry,
|
|
Version: APIVersion2, //nolint:staticcheck // ignore SA1019 (Version is deprecated) to allow potential consumers to transition.
|
|
Official: true,
|
|
TrimHostname: true,
|
|
TLSConfig: tlsconfig.ServerDefault(),
|
|
|
|
AllowNondistributableArtifacts: ana,
|
|
})
|
|
|
|
return endpoints, nil
|
|
}
|
|
|
|
tlsConfig, err := newTLSConfig(hostname, s.config.isSecureIndex(hostname))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
endpoints = []APIEndpoint{
|
|
{
|
|
URL: &url.URL{
|
|
Scheme: "https",
|
|
Host: hostname,
|
|
},
|
|
Version: APIVersion2, //nolint:staticcheck // ignore SA1019 (Version is deprecated) to allow potential consumers to transition.
|
|
AllowNondistributableArtifacts: ana,
|
|
TrimHostname: true,
|
|
TLSConfig: tlsConfig,
|
|
},
|
|
}
|
|
|
|
if tlsConfig.InsecureSkipVerify {
|
|
endpoints = append(endpoints, APIEndpoint{
|
|
URL: &url.URL{
|
|
Scheme: "http",
|
|
Host: hostname,
|
|
},
|
|
Version: APIVersion2, //nolint:staticcheck // ignore SA1019 (Version is deprecated) to allow potential consumers to transition.
|
|
AllowNondistributableArtifacts: ana,
|
|
TrimHostname: true,
|
|
// used to check if supposed to be secure via InsecureSkipVerify
|
|
TLSConfig: tlsConfig,
|
|
})
|
|
}
|
|
|
|
return endpoints, nil
|
|
}
|