Pull request: home: rollback serveraddresses in mobileconfig

Updates #3607.

Squashed commit of the following:

commit 1f0a970b4265a59819ec139e51c98dc9376d995b
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Thu Sep 30 13:26:49 2021 +0300

    home: rollback serveraddresses in mobileconfig
This commit is contained in:
Ainar Garipov 2021-09-30 13:42:33 +03:00
parent e178cb631f
commit a4e078271c
3 changed files with 8 additions and 41 deletions

View File

@ -15,8 +15,6 @@ and this project adheres to
### Added ### Added
- DNS server IP addresses to the `mobileconfig` API responses ([#3568],
[#3607]).
- Setting the timeout for IP address pinging in the "Fastest IP address" mode - Setting the timeout for IP address pinging in the "Fastest IP address" mode
through the new `fastest_timeout` field in the configuration file ([#1992]). through the new `fastest_timeout` field in the configuration file ([#1992]).
- Static IP address detection on FreeBSD ([#3289]). - Static IP address detection on FreeBSD ([#3289]).
@ -116,7 +114,8 @@ In this release, the schema version has changed from 10 to 12.
### Fixed ### Fixed
- Adding an IP into only one of the matching ipsets on Linux ([#3638]). - Addition of IPs into only one as opposed to all matching ipsets on Linux
([#3638]).
- Removal of temporary filter files ([#3567]). - Removal of temporary filter files ([#3567]).
- Panic when an upstream server responds with an empty question section - Panic when an upstream server responds with an empty question section
([#3551]). ([#3551]).

View File

@ -32,6 +32,10 @@ type dnsSettings struct {
ServerName string `plist:",omitempty"` ServerName string `plist:",omitempty"`
// ServerAddresses is a list IP addresses of the server. // ServerAddresses is a list IP addresses of the server.
//
// TODO(a.garipov): Allow users to set this.
//
// See https://github.com/AdguardTeam/AdGuardHome/issues/3607.
ServerAddresses []net.IP `plist:",omitempty"` ServerAddresses []net.IP `plist:",omitempty"`
} }
@ -157,19 +161,9 @@ func handleMobileConfig(w http.ResponseWriter, r *http.Request, dnsp string) {
} }
} }
dnsIPs, err := collectDNSIPs()
if err != nil {
// Don't add a lot of formatting, since the error is already
// wrapped by collectDNSIPs.
respondJSONError(w, http.StatusInternalServerError, err.Error())
return
}
d := &dnsSettings{ d := &dnsSettings{
DNSProtocol: dnsp, DNSProtocol: dnsp,
ServerName: host, ServerName: host,
ServerAddresses: dnsIPs,
} }
mobileconfig, err := encodeMobileConfig(d, clientID) mobileconfig, err := encodeMobileConfig(d, clientID)
@ -203,25 +197,3 @@ func handleMobileConfigDoH(w http.ResponseWriter, r *http.Request) {
func handleMobileConfigDoT(w http.ResponseWriter, r *http.Request) { func handleMobileConfigDoT(w http.ResponseWriter, r *http.Request) {
handleMobileConfig(w, r, dnsProtoTLS) handleMobileConfig(w, r, dnsProtoTLS)
} }
// collectDNSIPs returns a slice of IP addresses the server is listening
// on, including the addresses on all interfaces in cases of unspecified IPs but
// excluding loopback addresses.
func collectDNSIPs() (ips []net.IP, err error) {
// TODO(a.garipov): This really shouldn't be a function that parses
// a list of strings. Instead, we need a function that returns this
// data as []net.IP or []*netutil.IPPort. Maybe someday.
addrs, err := collectDNSAddresses()
if err != nil {
return nil, err
}
for _, addr := range addrs {
ip := net.ParseIP(addr)
if ip != nil && !ip.IsLoopback() {
ips = append(ips, ip)
}
}
return ips, nil
}

View File

@ -58,7 +58,6 @@ func TestHandleMobileConfigDoH(t *testing.T) {
s := mc.PayloadContent[0].DNSSettings s := mc.PayloadContent[0].DNSSettings
require.NotNil(t, s) require.NotNil(t, s)
assert.NotEmpty(t, s.ServerAddresses)
assert.Empty(t, s.ServerName) assert.Empty(t, s.ServerName)
assert.Equal(t, "https://example.org/dns-query", s.ServerURL) assert.Equal(t, "https://example.org/dns-query", s.ServerURL)
}) })
@ -104,7 +103,6 @@ func TestHandleMobileConfigDoH(t *testing.T) {
s := mc.PayloadContent[0].DNSSettings s := mc.PayloadContent[0].DNSSettings
require.NotNil(t, s) require.NotNil(t, s)
assert.NotEmpty(t, s.ServerAddresses)
assert.Empty(t, s.ServerName) assert.Empty(t, s.ServerName)
assert.Equal(t, "https://example.org/dns-query/cli42", s.ServerURL) assert.Equal(t, "https://example.org/dns-query/cli42", s.ServerURL)
}) })
@ -132,7 +130,6 @@ func TestHandleMobileConfigDoT(t *testing.T) {
s := mc.PayloadContent[0].DNSSettings s := mc.PayloadContent[0].DNSSettings
require.NotNil(t, s) require.NotNil(t, s)
assert.NotEmpty(t, s.ServerAddresses)
assert.Equal(t, "example.org", s.ServerName) assert.Equal(t, "example.org", s.ServerName)
assert.Empty(t, s.ServerURL) assert.Empty(t, s.ServerURL)
}) })
@ -179,7 +176,6 @@ func TestHandleMobileConfigDoT(t *testing.T) {
s := mc.PayloadContent[0].DNSSettings s := mc.PayloadContent[0].DNSSettings
require.NotNil(t, s) require.NotNil(t, s)
assert.NotEmpty(t, s.ServerAddresses)
assert.Equal(t, "cli42.example.org", s.ServerName) assert.Equal(t, "cli42.example.org", s.ServerName)
assert.Empty(t, s.ServerURL) assert.Empty(t, s.ServerURL)
}) })