MCPcopy Create free account
hub / github.com/SenseUnit/dumbproxy / FromURL

Function FromURL

resolver/factory.go:12–63  ·  view source on GitHub ↗
(u string)

Source from the content-addressed store, hash-verified

10)
11
12func FromURL(u string) (*net.Resolver, error) {
13begin:
14 parsed, err := url.Parse(u)
15 if err != nil {
16 return nil, err
17 }
18 host := parsed.Hostname()
19 port := parsed.Port()
20 switch scheme := strings.ToLower(parsed.Scheme); scheme {
21 case "":
22 switch {
23 case strings.HasPrefix(u, "//"):
24 u = "dns:" + u
25 default:
26 u = "dns://" + u
27 }
28 goto begin
29 case "udp", "dns":
30 if port == "" {
31 port = "53"
32 }
33 return NewPlainResolver(net.JoinHostPort(host, port)), nil
34 case "tcp":
35 if port == "" {
36 port = "53"
37 }
38 return NewTCPResolver(net.JoinHostPort(host, port)), nil
39 case "http", "https", "doh":
40 if port == "" {
41 if scheme == "http" {
42 port = "80"
43 } else {
44 port = "443"
45 }
46 }
47 if scheme == "doh" {
48 parsed.Scheme = "https"
49 u = parsed.String()
50 }
51 return dns.NewDoHResolver(u, dns.DoHAddresses(net.JoinHostPort(host, port)))
52 case "tls", "dot":
53 if port == "" {
54 port = "853"
55 }
56 hp := net.JoinHostPort(host, port)
57 return dns.NewDoTResolver(hp, dns.DoTAddresses(hp))
58 case "default":
59 return net.DefaultResolver, nil
60 default:
61 return nil, errors.New("not implemented")
62 }
63}

Callers 1

FastFromURLsFunction · 0.85

Calls 3

NewPlainResolverFunction · 0.85
NewTCPResolverFunction · 0.85
StringMethod · 0.45

Tested by

no test coverage detected