12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package registry
- import (
- "net/url"
- "strings"
- "github.com/docker/go-connections/tlsconfig"
- )
- func (s *DefaultService) lookupV2Endpoints(hostname string) (endpoints []APIEndpoint, err error) {
- var cfg = tlsconfig.ServerDefault
- tlsConfig := &cfg
- if hostname == DefaultNamespace || hostname == DefaultV1Registry.Host {
- // v2 mirrors
- 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, err
- }
- mirrorTLSConfig, err := s.tlsConfigForMirror(mirrorURL)
- if err != nil {
- return nil, err
- }
- endpoints = append(endpoints, APIEndpoint{
- URL: mirrorURL,
- // guess mirrors are v2
- Version: APIVersion2,
- Mirror: true,
- TrimHostname: true,
- TLSConfig: mirrorTLSConfig,
- })
- }
- // v2 registry
- endpoints = append(endpoints, APIEndpoint{
- URL: DefaultV2Registry,
- Version: APIVersion2,
- Official: true,
- TrimHostname: true,
- TLSConfig: tlsConfig,
- })
- return endpoints, nil
- }
- tlsConfig, err = s.TLSConfig(hostname)
- if err != nil {
- return nil, err
- }
- endpoints = []APIEndpoint{
- {
- URL: &url.URL{
- Scheme: "https",
- Host: hostname,
- },
- Version: APIVersion2,
- TrimHostname: true,
- TLSConfig: tlsConfig,
- },
- }
- if tlsConfig.InsecureSkipVerify {
- endpoints = append(endpoints, APIEndpoint{
- URL: &url.URL{
- Scheme: "http",
- Host: hostname,
- },
- Version: APIVersion2,
- TrimHostname: true,
- // used to check if supposed to be secure via InsecureSkipVerify
- TLSConfig: tlsConfig,
- })
- }
- return endpoints, nil
- }
|