@cryptotaxi247 / kubo / commits / b6a1ba961

create custom resolvers from config

vyzo committed Apr 12, 2021 at 14:01 UTC b6a1ba9617a1667df806e15fe7b809074c423f39
1 file changed +18 -2
core/node/dns.go
+18 -2
@@ -1,11 +1,27 @@
1 package node
2
3 import (
4 + "fmt"
5 + "strings"
6 +
7 config "github.com/ipfs/go-ipfs-config"
8 + doh "github.com/libp2p/go-doh-resolver"
9 madns "github.com/multiformats/go-multiaddr-dns"
10 )
11
12 func DNSResolver(cfg *config.Config) (*madns.Resolver, error) {
9 - // TODO custom resolvers from config
10 - return madns.DefaultResolver, nil
13 + var opts []madns.Option
14 + if url := cfg.DNS.DefaultResolver; url != "" {
15 + if !strings.HasPrefix(url, "https://") {
16 + return nil, fmt.Errorf("invalid default resolver url: %s", url)
17 + }
18 + opts = append(opts, madns.WithDefaultResolver(doh.NewResolver(url)))
19 + }
20 + for domain, url := range cfg.DNS.CustomResolvers {
21 + if !strings.HasPrefix(url, "https://") {
22 + return nil, fmt.Errorf("invalid domain resolver url for %s: %s", domain, url)
23 + }
24 + opts = append(opts, madns.WithDomainResolver(domain, doh.NewResolver(url)))
25 + }
26 + return madns.NewResolver(opts...)
27 }