updater: refactoring and set DNS server correctly

- Fix CLI operation not setting DNS server
- Fix periodic operation not setting DNS server
- Set DNS address for resolution once at start for both CLI and periodic operation
- Inject resolver to each provider instead of creating it within
- Use resolver settings on every call to `.Resolve` method, instead of passing it to constructor
- Move out minServers check from resolver
This commit is contained in:
Quentin McGaw
2022-06-11 17:41:57 +00:00
parent 1bd355ab96
commit 447a7c9891
70 changed files with 366 additions and 229 deletions

View File

@@ -39,6 +39,7 @@ import (
"github.com/qdm12/gluetun/internal/storage"
"github.com/qdm12/gluetun/internal/tun"
updater "github.com/qdm12/gluetun/internal/updater/loop"
"github.com/qdm12/gluetun/internal/updater/resolver"
"github.com/qdm12/gluetun/internal/updater/unzip"
"github.com/qdm12/gluetun/internal/vpn"
"github.com/qdm12/golibs/command"
@@ -379,7 +380,9 @@ func _main(ctx context.Context, buildInfo models.BuildInformation,
updaterLogger := logger.New(log.SetComponent("updater"))
unzipper := unzip.New(httpClient)
providers := provider.NewProviders(storage, time.Now, updaterLogger, httpClient, unzipper)
parallelResolver := resolver.NewParallelResolver(allSettings.Updater.DNSAddress.String())
providers := provider.NewProviders(storage, time.Now,
updaterLogger, httpClient, unzipper, parallelResolver)
vpnLogger := logger.New(log.SetComponent("vpn"))
vpnLooper := vpn.NewLoop(allSettings.VPN, allSettings.Firewall.VPNInputPorts,