From 4605e7c90e509be2a7117dfee282a6b34f3e921c Mon Sep 17 00:00:00 2001 From: Stanislav Chzhen Date: Wed, 21 Feb 2024 13:04:58 +0300 Subject: [PATCH] Pull request 2153: 6610-hostsfile-enabled Updates #6610. Squashed commit of the following: commit 13522f0768fe0a4f6abe3fc82ffb7ddf3f4df9bf Merge: befa3bd1d 6fd0a624c Author: Stanislav Chzhen Date: Wed Feb 21 12:53:08 2024 +0300 Merge branch 'master' into 6610-hostsfile-enabled commit befa3bd1dedcd2853ef299c06d5c14c9ed7f2c84 Author: Stanislav Chzhen Date: Mon Feb 19 15:56:20 2024 +0300 all: upd chlog commit c1954306fe7c4d7af164f599b298374ab983216f Author: Stanislav Chzhen Date: Thu Feb 15 20:52:52 2024 +0300 home: hostsfile enabled --- CHANGELOG.md | 3 +++ internal/home/config.go | 11 ++++++++--- internal/home/home.go | 2 +- internal/home/options.go | 12 +++++++----- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fc8b003..e3c03584 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,8 @@ NOTE: Add new changes BELOW THIS COMMENT. ### Added +- Ability to disable the use of system hosts file information for query + resolution ([#6610]). - Ability to define custom directories for storage of query log files and statistics ([#5992]). - Context menu item in the Query Log to add a Client to the Persistent client @@ -66,6 +68,7 @@ NOTE: Add new changes BELOW THIS COMMENT. - Go 1.20 support, as it has reached end of life. [#5992]: https://github.com/AdguardTeam/AdGuardHome/issues/5992 +[#6610]: https://github.com/AdguardTeam/AdGuardHome/issues/6610 [#6679]: https://github.com/AdguardTeam/AdGuardHome/issues/6679 [#6711]: https://github.com/AdguardTeam/AdGuardHome/issues/6711 diff --git a/internal/home/config.go b/internal/home/config.go index 17a5661d..1619d083 100644 --- a/internal/home/config.go +++ b/internal/home/config.go @@ -232,6 +232,10 @@ type dnsConfig struct { // ServePlainDNS defines if plain DNS is allowed for incoming requests. ServePlainDNS bool `yaml:"serve_plain_dns"` + + // HostsFileEnabled defines whether to use information from the system hosts + // file to resolve queries. + HostsFileEnabled bool `yaml:"hostsfile_enabled"` } type tlsConfigSettings struct { @@ -349,9 +353,10 @@ var config = &configuration{ // was later increased to 300 due to https://github.com/AdguardTeam/AdGuardHome/issues/2257 MaxGoroutines: 300, }, - UpstreamTimeout: timeutil.Duration{Duration: dnsforward.DefaultTimeout}, - UsePrivateRDNS: true, - ServePlainDNS: true, + UpstreamTimeout: timeutil.Duration{Duration: dnsforward.DefaultTimeout}, + UsePrivateRDNS: true, + ServePlainDNS: true, + HostsFileEnabled: true, }, TLS: tlsConfigSettings{ PortHTTPS: defaultPortHTTPS, diff --git a/internal/home/home.go b/internal/home/home.go index 22f6130c..90949f07 100644 --- a/internal/home/home.go +++ b/internal/home/home.go @@ -361,7 +361,7 @@ func setupDNSFilteringConf(conf *filtering.Config) (err error) { conf.EtcHosts = Context.etcHosts // TODO(s.chzhen): Use empty interface. - if Context.etcHosts == nil { + if Context.etcHosts == nil || !config.DNS.HostsFileEnabled { conf.EtcHosts = nil } diff --git a/internal/home/options.go b/internal/home/options.go index d32aaa1c..35f26303 100644 --- a/internal/home/options.go +++ b/internal/home/options.go @@ -270,15 +270,17 @@ var cmdLineOpts = []cmdLineOpt{{ log.Info( "warning: --no-etc-hosts flag is deprecated " + "and will be removed in the future versions; " + - "set clients.runtime_sources.hosts in the configuration file to false instead", + "set clients.runtime_sources.hosts and dns.hostsfile_enabled " + + "in the configuration file to false instead", ) return nil, nil }, - serialize: func(o options) (val string, ok bool) { return "", o.noEtcHosts }, - description: "Deprecated: use clients.runtime_sources.hosts instead. Do not use the OS-provided hosts.", - longName: "no-etc-hosts", - shortName: "", + serialize: func(o options) (val string, ok bool) { return "", o.noEtcHosts }, + description: "Deprecated: use clients.runtime_sources.hosts and dns.hostsfile_enabled " + + "instead. Do not use the OS-provided hosts.", + longName: "no-etc-hosts", + shortName: "", }, { updateWithValue: nil, updateNoValue: func(o options) (options, error) { o.localFrontend = true; return o, nil },