tailscale/net/dns
Aaron Klotz d818a58a77 net/dns: ensure the Windows configurator does not touch the hosts file unless the configuration actually changed
We build up maps of both the existing MagicDNS configuration in hosts
and the desired MagicDNS configuration, compare the two, and only
write out a new one if there are changes. The comparison doesn't need
to be perfect, as the occasional false-positive is fine, but this
should greatly reduce rewrites of the hosts file.

I also changed the hosts updating code to remove the CRLF/LF conversion
stuff, and use Fprintf instead of Frintln to let us write those inline.

Updates #14428

Signed-off-by: Aaron Klotz <aaron@tailscale.com>
2025-01-14 16:37:35 -05:00
..
publicdns net/dns/publicdns: remove additional information in DOH URL passed to IPv6 address generation for controlD. 2024-07-10 16:14:05 -04:00
recursive all: use Go 1.22 range-over-int 2024-04-16 15:32:38 -07:00
resolvconffile clientupdate, net/dns: fix some "tailsacle" typos 2024-04-03 21:08:25 -07:00
resolver all: illumos/solaris userspace only support 2025-01-09 14:46:23 -08:00
config.go all: add test for package comments, fix, add comments as needed 2024-07-10 09:57:00 -07:00
debian_resolvconf.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
direct_linux.go net/dns: updated gonotify dependency to v2 that supports closable context 2024-08-22 12:36:26 -07:00
direct_notlinux.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
direct_test.go clientupdate, net/dns: fix some "tailsacle" typos 2024-04-03 21:08:25 -07:00
direct_unix_test.go net/dns: ensure /etc/resolv.conf is world-readable even with a umask 2024-06-26 00:02:05 -04:00
direct.go net/dns: ensure /etc/resolv.conf is world-readable even with a umask 2024-06-26 00:02:05 -04:00
flush_default.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
flush_windows.go cmd/tailscaled, net/dns, wgengine/router: start Windows child processes with DETACHED_PROCESS when I/O is being piped 2024-06-11 11:35:26 -06:00
ini_test.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
ini.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
manager_darwin.go net/dns: support GetBaseConfig on Darwin OSS tailscaled (#13351) 2024-09-04 10:31:58 -07:00
manager_default.go all: illumos/solaris userspace only support 2025-01-09 14:46:23 -08:00
manager_freebsd.go various: create a catch-all NRPT rule when "Override local DNS" is enabled on Windows 2024-06-14 14:41:50 -05:00
manager_linux_test.go net/dns: ensure /etc/resolv.conf is world-readable even with a umask 2024-06-26 00:02:05 -04:00
manager_linux.go various: create a catch-all NRPT rule when "Override local DNS" is enabled on Windows 2024-06-14 14:41:50 -05:00
manager_openbsd.go various: create a catch-all NRPT rule when "Override local DNS" is enabled on Windows 2024-06-14 14:41:50 -05:00
manager_solaris.go all: illumos/solaris userspace only support 2025-01-09 14:46:23 -08:00
manager_tcp_test.go net/dns, health: raise health warning for failing forwarded DNS queries (#12888) 2024-07-29 13:48:46 -04:00
manager_test.go net/dns: ensure multiple hosts with the same IP address are combined into a single HostEntry 2024-06-21 13:16:49 -06:00
manager_windows_test.go net/dns: ensure the Windows configurator does not touch the hosts file unless the configuration actually changed 2025-01-14 16:37:35 -05:00
manager_windows.go net/dns: ensure the Windows configurator does not touch the hosts file unless the configuration actually changed 2025-01-14 16:37:35 -05:00
manager.go util/slicesx: add MapKeys and MapValues from golang.org/x/exp/maps 2025-01-03 10:48:31 -08:00
nm.go all: use Go 1.21's binary.NativeEndian 2025-01-13 08:31:00 -08:00
noop.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
nrpt_windows.go util/winutil/gp, net/dns: add package for Group Policy API 2024-07-08 20:37:03 -05:00
openresolv.go net/dns: log more info when openresolv commands fail 2024-02-13 20:48:54 -05:00
osconfig_test.go net/dns: fix IsZero and Equal methods on OSConfig 2024-09-05 00:05:36 -04:00
osconfig.go net/dns: fix IsZero and Equal methods on OSConfig 2024-09-05 00:05:36 -04:00
resolvconf-workaround.sh all: update copyright and license headers 2023-01-27 15:36:29 -08:00
resolvconf.go net/dns: properly detect newer debian resolvconf 2023-10-11 08:38:25 -07:00
resolvconfpath_default.go net/dns: overwrite /tmp/resolv.conf on gokrazy 2023-07-23 09:53:32 -07:00
resolvconfpath_gokrazy.go net/dns: overwrite /tmp/resolv.conf on gokrazy 2023-07-23 09:53:32 -07:00
resolvd.go net/dns: fix blank lines being added to resolv.conf on OpenBSD (#13928) 2024-10-28 08:00:48 -07:00
resolved.go health: remove SysDNSOS, add two Warnables for read+set system DNS config (#13874) 2024-10-21 13:40:43 -07:00
utf_test.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
utf.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
wsl_windows.go net/dns: ensure /etc/resolv.conf is world-readable even with a umask 2024-06-26 00:02:05 -04:00