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
}