1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- 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
- }
|