@@ -10,6 +10,8 @@ import (
1010 "strings"
1111 "time"
1212
13+ "github.com/qdm12/dns/v2/pkg/doh"
14+ dnsprovider "github.com/qdm12/dns/v2/pkg/provider"
1315 "github.com/qdm12/gluetun/internal/configuration/settings"
1416 "github.com/qdm12/gluetun/internal/constants"
1517 "github.com/qdm12/gluetun/internal/constants/providers"
@@ -38,12 +40,12 @@ type UpdaterLogger interface {
3840func (c * CLI ) Update (ctx context.Context , args []string , logger UpdaterLogger ) error {
3941 options := settings.Updater {}
4042 var endUserMode , maintainerMode , updateAll bool
41- var csvProviders , ipToken , protonUsername , protonEmail , protonPassword string
43+ var dnsServer , csvProviders , ipToken , protonUsername , protonEmail , protonPassword string
4244 flagSet := flag .NewFlagSet ("update" , flag .ExitOnError )
4345 flagSet .BoolVar (& endUserMode , "enduser" , false , "Write results to /gluetun/servers.json (for end users)" )
4446 flagSet .BoolVar (& maintainerMode , "maintainer" , false ,
4547 "Write results to ./internal/storage/servers.json to modify the program (for maintainers)" )
46- flagSet .StringVar (& options . DNSAddress , "dns" , "8.8.8.8 " , "DNS resolver address to use" )
48+ flagSet .StringVar (& dnsServer , "dns" , "" , "no longer used, your DNS will use DoH with Cloudflare and Google " )
4749 const defaultMinRatio = 0.8
4850 flagSet .Float64Var (& options .MinRatio , "minratio" , defaultMinRatio ,
4951 "Minimum ratio of servers to find for the update to succeed" )
@@ -58,6 +60,10 @@ func (c *CLI) Update(ctx context.Context, args []string, logger UpdaterLogger) e
5860 return err
5961 }
6062
63+ if dnsServer != "" {
64+ logger .Warn ("The -dns flag is no longer used, your DNS will use DoH with Cloudflare and Google" )
65+ }
66+
6167 if ! endUserMode && ! maintainerMode {
6268 return fmt .Errorf ("%w" , ErrModeUnspecified )
6369 }
@@ -97,10 +103,21 @@ func (c *CLI) Update(ctx context.Context, args []string, logger UpdaterLogger) e
97103 return fmt .Errorf ("creating servers storage: %w" , err )
98104 }
99105
106+ dohSettings := doh.Settings {
107+ UpstreamResolvers : []dnsprovider.Provider {
108+ dnsprovider .Cloudflare (),
109+ dnsprovider .Google (),
110+ },
111+ }
112+ dnsDialer , err := doh .New (dohSettings )
113+ if err != nil {
114+ return fmt .Errorf ("creating DoH dialer: %w" , err )
115+ }
116+
100117 const clientTimeout = 10 * time .Second
101118 httpClient := & http.Client {Timeout : clientTimeout }
102119 unzipper := unzip .New (httpClient )
103- parallelResolver := resolver .NewParallelResolver (options . DNSAddress )
120+ parallelResolver := resolver .NewParallelResolver (dnsDialer )
104121 nameTokenPairs := []api.NameToken {
105122 {Name : string (api .IPInfo ), Token : ipToken },
106123 {Name : string (api .IP2Location )},
0 commit comments