From 66877c92d9132eb900321c24aeace14f980291b9 Mon Sep 17 00:00:00 2001 From: Eugene Burkov Date: Mon, 17 Jun 2024 19:34:46 +0300 Subject: [PATCH 1/5] Pull request 2239: 7076 Empty FSWatcher Updates #7076. Squashed commit of the following: commit 6d99de9bcd1a4882f96639cf7e54fe0f33cfbfd3 Merge: c545152fa 1c82be295 Author: Eugene Burkov Date: Mon Jun 17 18:41:49 2024 +0300 Merge branch 'master' into 7076-empty-fswatcher commit c545152fa157e52f9ac5ebf2e58fdc1a254faf91 Author: Eugene Burkov Date: Fri Jun 14 14:57:01 2024 +0300 all: imp code commit e033558d7027a40a6996c08b5125e45141192071 Author: Eugene Burkov Date: Fri Jun 14 14:39:58 2024 +0300 all: add & use empty fswatcher --- CHANGELOG.md | 5 +++++ internal/aghnet/hostscontainer.go | 3 ++- internal/aghos/fswatcher.go | 31 +++++++++++++++++++++++++++++++ internal/home/home.go | 4 +++- 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5bbaa65f..794f1220 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -49,6 +49,11 @@ NOTE: Add new changes BELOW THIS COMMENT. - Node 18 support, Node 20 will be required in future releases. +### Fixed + +- Tracking `/etc/hosts` file changes causing panics within particular + filesystems on start ([#7076]). + [#7053]: https://github.com/AdguardTeam/AdGuardHome/issues/7053 [install-script]: https://github.com/AdguardTeam/AdGuardHome/?tab=readme-ov-file#automated-install-linux-and-mac diff --git a/internal/aghnet/hostscontainer.go b/internal/aghnet/hostscontainer.go index b8e86448..9390ac45 100644 --- a/internal/aghnet/hostscontainer.go +++ b/internal/aghnet/hostscontainer.go @@ -161,7 +161,8 @@ func (hc *HostsContainer) handleEvents() { defer close(hc.updates) - ok, eventsCh := true, hc.watcher.Events() + eventsCh := hc.watcher.Events() + ok := eventsCh != nil for ok { select { case _, ok = <-eventsCh: diff --git a/internal/aghos/fswatcher.go b/internal/aghos/fswatcher.go index 9f3a6570..de95e94c 100644 --- a/internal/aghos/fswatcher.go +++ b/internal/aghos/fswatcher.go @@ -160,3 +160,34 @@ func (w *osWatcher) handleErrors() { log.Error("%s: %s", osWatcherPref, err) } } + +// EmptyFSWatcher is a no-op implementation of the [FSWatcher] interface. It +// may be used on systems not supporting filesystem events. +type EmptyFSWatcher struct{} + +// type check +var _ FSWatcher = EmptyFSWatcher{} + +// Start implements the [FSWatcher] interface for EmptyFSWatcher. It always +// returns nil error. +func (EmptyFSWatcher) Start() (err error) { + return nil +} + +// Close implements the [FSWatcher] interface for EmptyFSWatcher. It always +// returns nil error. +func (EmptyFSWatcher) Close() (err error) { + return nil +} + +// Events implements the [FSWatcher] interface for EmptyFSWatcher. It always +// returns nil channel. +func (EmptyFSWatcher) Events() (e <-chan event) { + return nil +} + +// Add implements the [FSWatcher] interface for EmptyFSWatcher. It always +// returns nil error. +func (EmptyFSWatcher) Add(_ string) (err error) { + return nil +} diff --git a/internal/home/home.go b/internal/home/home.go index 93e8e09d..fc64f376 100644 --- a/internal/home/home.go +++ b/internal/home/home.go @@ -232,7 +232,9 @@ func configureOS(conf *configuration) (err error) { func setupHostsContainer() (err error) { hostsWatcher, err := aghos.NewOSWritesWatcher() if err != nil { - return fmt.Errorf("initing hosts watcher: %w", err) + log.Info("WARNING: initializing filesystem watcher: %s; not watching for changes", err) + + hostsWatcher = aghos.EmptyFSWatcher{} } paths, err := hostsfile.DefaultHostsPaths() From 28a6c24db214678b8ba2654008133470efbd2bfc Mon Sep 17 00:00:00 2001 From: Dimitry Kolyshev Date: Tue, 18 Jun 2024 14:07:35 +0300 Subject: [PATCH 2/5] Pull request: AG-33515-upd-deps Squashed commit of the following: commit 52698fe8d64ede24f9259810b8e31bc4e5f3682a Author: Dimitry Kolyshev Date: Tue Jun 18 10:18:26 2024 +0300 all: upd deps --- go.mod | 20 ++++++++++---------- go.sum | 56 ++++++++++++++++++++++++++++---------------------------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/go.mod b/go.mod index dcfb3284..f53ddddb 100644 --- a/go.mod +++ b/go.mod @@ -4,8 +4,8 @@ go 1.22.4 require ( github.com/AdguardTeam/dnsproxy v0.71.2 - github.com/AdguardTeam/golibs v0.23.2 - github.com/AdguardTeam/urlfilter v0.18.0 + github.com/AdguardTeam/golibs v0.24.0 + github.com/AdguardTeam/urlfilter v0.19.0 github.com/NYTimes/gziphandler v1.1.1 github.com/ameshkov/dnscrypt/v2 v2.3.0 github.com/bluele/gcache v0.0.2 @@ -27,15 +27,15 @@ require ( // TODO(a.garipov): This package is deprecated; find a new one or use our // own code for that. Perhaps, use gopacket. github.com/mdlayher/raw v0.1.0 - github.com/miekg/dns v1.1.59 + github.com/miekg/dns v1.1.61 github.com/quic-go/quic-go v0.44.0 github.com/stretchr/testify v1.9.0 github.com/ti-mo/netfilter v0.5.2 go.etcd.io/bbolt v1.3.10 - golang.org/x/crypto v0.23.0 - golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 - golang.org/x/net v0.25.0 - golang.org/x/sys v0.20.0 + golang.org/x/crypto v0.24.0 + golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 + golang.org/x/net v0.26.0 + golang.org/x/sys v0.21.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 howett.net/plist v1.0.1 @@ -58,9 +58,9 @@ require ( github.com/quic-go/qpack v0.4.0 // indirect github.com/u-root/uio v0.0.0-20240224005618-d2acac8f3701 // indirect go.uber.org/mock v0.4.0 // indirect - golang.org/x/mod v0.17.0 // indirect + golang.org/x/mod v0.18.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/text v0.15.0 // indirect - golang.org/x/tools v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect + golang.org/x/tools v0.22.0 // indirect gonum.org/v1/gonum v0.15.0 // indirect ) diff --git a/go.sum b/go.sum index 332ddd62..b3f06967 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,9 @@ github.com/AdguardTeam/dnsproxy v0.71.2 h1:dFG2wga4GDdj1eI3rU2wqjQ6QGQm9MjLRb5ZzyH3Vgg= github.com/AdguardTeam/dnsproxy v0.71.2/go.mod h1:huI5zyWhlimHBhg0jt2CMinXzsEHymI+WlvxIfmfEGA= -github.com/AdguardTeam/golibs v0.23.2 h1:rMjYantwtQ39e8G4zBQ6ZLlm4s3XH30Bc9VxhoOHwao= -github.com/AdguardTeam/golibs v0.23.2/go.mod h1:o9i55Sx6v7qogRQeqaBfmLbC/pZqeMBWi015U5PTDY0= -github.com/AdguardTeam/urlfilter v0.18.0 h1:ZZzwODC/ADpjJSODxySrrUnt/fvOCfGFaCW6j+wsGfQ= -github.com/AdguardTeam/urlfilter v0.18.0/go.mod h1:IXxBwedLiZA2viyHkaFxY/8mjub0li2PXRg8a3d9Z1s= +github.com/AdguardTeam/golibs v0.24.0 h1:qAnOq7BQtwSVo7Co9q703/n+nZ2Ap6smkugU9G9MomY= +github.com/AdguardTeam/golibs v0.24.0/go.mod h1:9/vJcYznW7RlmCT/Qzi8XNZGj+ZbWfHZJmEXKnRpCAU= +github.com/AdguardTeam/urlfilter v0.19.0 h1:q7eH13+yNETlpD/VD3u5rLQOripcUdEktqZFy+KiQLk= +github.com/AdguardTeam/urlfilter v0.19.0/go.mod h1:+N54ZvxqXYLnXuvpaUhK2exDQW+djZBRSb6F6j0rkBY= github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= @@ -78,8 +78,8 @@ github.com/mdlayher/raw v0.1.0/go.mod h1:yXnxvs6c0XoF/aK52/H5PjsVHmWBCFfZUfoh/Y5 github.com/mdlayher/socket v0.2.1/go.mod h1:QLlNPkFR88mRUNQIzRBMfXxwKal8H7u1h3bL1CV+f0E= github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos= github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ= -github.com/miekg/dns v1.1.59 h1:C9EXc/UToRwKLhK5wKU/I4QVsBUc8kE6MkHBkeypWZs= -github.com/miekg/dns v1.1.59/go.mod h1:nZpewl5p6IvctfgrckopVx2OlSEHPRO/U4SYkRklrEk= +github.com/miekg/dns v1.1.61 h1:nLxbwF3XxhwVSm8g9Dghm9MHPaUZuqhPiGL+675ZmEs= +github.com/miekg/dns v1.1.61/go.mod h1:mnAarhS3nWaW+NVP2wTkYVIZyHNJ098SJZUki3eykwQ= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/onsi/ginkgo/v2 v2.17.3 h1:oJcvKpIb7/8uLpDDtnQuf18xVnwKp8DTD7DQ6gTd/MU= @@ -101,8 +101,8 @@ github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= github.com/quic-go/quic-go v0.44.0 h1:So5wOr7jyO4vzL2sd8/pD9Kesciv91zSk8BoFngItQ0= github.com/quic-go/quic-go v0.44.0/go.mod h1:z4cx/9Ny9UtGITIPzmPTXh1ULfOyWh4qGQlpnPcWmek= -github.com/shirou/gopsutil/v3 v3.23.7 h1:C+fHO8hfIppoJ1WdsVm1RoI0RwXoNdfTK7yWXV0wVj4= -github.com/shirou/gopsutil/v3 v3.23.7/go.mod h1:c4gnmoRC0hQuaLqvxnx1//VXQ0Ms/X9UnJF8pddY5z4= +github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI= +github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -114,36 +114,36 @@ github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8 github.com/ti-mo/netfilter v0.2.0/go.mod h1:8GbBGsY/8fxtyIdfwy29JiluNcPK4K7wIT+x42ipqUU= github.com/ti-mo/netfilter v0.5.2 h1:CTjOwFuNNeZ9QPdRXt1MZFLFUf84cKtiQutNauHWd40= github.com/ti-mo/netfilter v0.5.2/go.mod h1:Btx3AtFiOVdHReTDmP9AE+hlkOcvIy403u7BXXbWZKo= -github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM= -github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI= -github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYms= -github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/u-root/uio v0.0.0-20240224005618-d2acac8f3701 h1:pyC9PaHYZFgEKFdlp3G8RaCKgVpHZnecvArXvPXcFkM= github.com/u-root/uio v0.0.0-20240224005618-d2acac8f3701/go.mod h1:P3a5rG4X7tI17Nn3aOIAYr5HbIMukwXG0urG0WuL8OA= -github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= -github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= +github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.etcd.io/bbolt v1.3.10 h1:+BqfJTcCzTItrop8mq/lbzL8wSGtj94UO/3U31shqG0= go.etcd.io/bbolt v1.3.10/go.mod h1:bK3UQLPJZly7IlNmV7uVHJDxfe5aK9Ll93e/74Y9oEQ= go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= @@ -158,19 +158,19 @@ golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.1-0.20230131160137-e7d7f63158de/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= -golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.15.0 h1:2lYxjRbTYyxkJxlhC+LvJIx3SsANPdRybu1tGj9/OrQ= From 08d863dd3aa97110a20f367b7e2b632788553272 Mon Sep 17 00:00:00 2001 From: Stanislav Chzhen Date: Tue, 18 Jun 2024 14:27:25 +0300 Subject: [PATCH 3/5] Pull request 2235: 7069-fix-blocked-services Updates #7069. Squashed commit of the following: commit 0f87493966124af4fa4b28eb1f67281343dd8242 Merge: 87f06b864 28a6c24db Author: Stanislav Chzhen Date: Tue Jun 18 14:09:18 2024 +0300 Merge branch 'master' into 7069-fix-blocked-services commit 87f06b86432bba4d2e2583010784746452b7690f Merge: c2440752c 66877c92d Author: Stanislav Chzhen Date: Tue Jun 18 13:47:28 2024 +0300 Merge branch 'master' into 7069-fix-blocked-services commit c2440752c8a223e8ab2e4a519da9259d888ca06f Merge: 17a9c14e2 1c82be295 Author: Stanislav Chzhen Date: Mon Jun 17 18:42:48 2024 +0300 Merge branch 'master' into 7069-fix-blocked-services commit 17a9c14e29a38ed513a827d9b5351d66f1e6cb48 Merge: 11160bc62 bed86d57f Author: Stanislav Chzhen Date: Tue Jun 11 13:41:00 2024 +0300 Merge branch 'master' into 7069-fix-blocked-services commit 11160bc62b08fd6e984d38d5600fa62c3564668f Author: Stanislav Chzhen Date: Tue Jun 11 13:36:56 2024 +0300 all: imp docs commit 491287164d31606c93dcbeb4f1e351df0960309b Author: Stanislav Chzhen Date: Mon Jun 10 14:03:22 2024 +0300 home: imp code commit 0caf8b15797c28447039736cc9641ccddee5cac0 Author: Stanislav Chzhen Date: Mon Jun 10 13:35:54 2024 +0300 all: upd chlog commit 46f793b2591dce54a9566ccb9cb723ab5c60cd6a Author: Stanislav Chzhen Date: Mon Jun 10 13:27:22 2024 +0300 home: fix blocked services --- CHANGELOG.md | 4 ++++ internal/client/persistent.go | 3 ++- internal/home/clients.go | 7 +++++++ internal/home/clientshttp.go | 2 +- internal/home/clientshttp_internal_test.go | 2 +- 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 794f1220..284fe8bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,10 +51,14 @@ NOTE: Add new changes BELOW THIS COMMENT. ### Fixed +- Panic caused by missing user-specific blocked services object in configuration + file ([#7069]). - Tracking `/etc/hosts` file changes causing panics within particular filesystems on start ([#7076]). [#7053]: https://github.com/AdguardTeam/AdGuardHome/issues/7053 +[#7069]: https://github.com/AdguardTeam/AdGuardHome/issues/7069 +[#7076]: https://github.com/AdguardTeam/AdGuardHome/issues/7076 [install-script]: https://github.com/AdguardTeam/AdGuardHome/?tab=readme-ov-file#automated-install-linux-and-mac diff --git a/internal/client/persistent.go b/internal/client/persistent.go index 317dc72b..52f3aacc 100644 --- a/internal/client/persistent.go +++ b/internal/client/persistent.go @@ -66,7 +66,8 @@ type Persistent struct { SafeSearch filtering.SafeSearch - // BlockedServices is the configuration of blocked services of a client. + // BlockedServices is the configuration of blocked services of a client. It + // must not be nil after initialization. BlockedServices *filtering.BlockedServices Name string diff --git a/internal/home/clients.go b/internal/home/clients.go index 4f3870ec..3616cb0b 100644 --- a/internal/home/clients.go +++ b/internal/home/clients.go @@ -16,6 +16,7 @@ import ( "github.com/AdguardTeam/AdGuardHome/internal/dnsforward" "github.com/AdguardTeam/AdGuardHome/internal/filtering" "github.com/AdguardTeam/AdGuardHome/internal/querylog" + "github.com/AdguardTeam/AdGuardHome/internal/schedule" "github.com/AdguardTeam/AdGuardHome/internal/whois" "github.com/AdguardTeam/dnsproxy/proxy" "github.com/AdguardTeam/dnsproxy/upstream" @@ -261,6 +262,12 @@ func (o *clientObject) toPersistent( } } + if o.BlockedServices == nil { + o.BlockedServices = &filtering.BlockedServices{ + Schedule: schedule.EmptyWeekly(), + } + } + err = o.BlockedServices.Validate() if err != nil { return nil, fmt.Errorf("init blocked services %q: %w", cli.Name, err) diff --git a/internal/home/clientshttp.go b/internal/home/clientshttp.go index 40a91f86..fbec5c23 100644 --- a/internal/home/clientshttp.go +++ b/internal/home/clientshttp.go @@ -267,7 +267,7 @@ func copyBlockedServices( var weekly *schedule.Weekly if sch != nil { weekly = sch.Clone() - } else if prev != nil && prev.BlockedServices != nil { + } else if prev != nil { weekly = prev.BlockedServices.Schedule.Clone() } else { weekly = schedule.EmptyWeekly() diff --git a/internal/home/clientshttp_internal_test.go b/internal/home/clientshttp_internal_test.go index dc1aa87d..aa2f40fb 100644 --- a/internal/home/clientshttp_internal_test.go +++ b/internal/home/clientshttp_internal_test.go @@ -49,7 +49,7 @@ func newPersistentClient(name string) (c *client.Persistent) { Name: name, UID: client.MustNewUID(), BlockedServices: &filtering.BlockedServices{ - Schedule: &schedule.Weekly{}, + Schedule: schedule.EmptyWeekly(), }, } } From 64721409201b9368c5b6bdf105e65029059996d7 Mon Sep 17 00:00:00 2001 From: Eugene Burkov Date: Thu, 20 Jun 2024 17:34:21 +0300 Subject: [PATCH 4/5] Pull request 2241: 7075 Doc load-balancing Updates #7075. Squashed commit of the following: commit cd889bd828bcfaf71087727f169f05b69c508a45 Author: Eugene Burkov Date: Thu Jun 20 17:20:13 2024 +0300 client: imp text commit 3d51d48037bb85df5f04b6d3f83b1857253adf88 Author: Eugene Burkov Date: Wed Jun 19 13:47:48 2024 +0300 client: imp ui text --- client/src/__locales/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/__locales/en.json b/client/src/__locales/en.json index 1ffe7bf1..00c94a58 100644 --- a/client/src/__locales/en.json +++ b/client/src/__locales/en.json @@ -6,7 +6,7 @@ "upstream_parallel": "Use parallel queries to speed up resolving by querying all upstream servers simultaneously.", "parallel_requests": "Parallel requests", "load_balancing": "Load-balancing", - "load_balancing_desc": "Query one upstream server at a time. AdGuard Home uses its weighted random algorithm to pick the server so that the fastest server is used more often.", + "load_balancing_desc": "Query one upstream server at a time. AdGuard Home uses a weighted random algorithm to select servers with the lowest number of failed lookups and the lowest average lookup time.", "bootstrap_dns": "Bootstrap DNS servers", "bootstrap_dns_desc": "IP addresses of DNS servers used to resolve IP addresses of the DoH/DoT resolvers you specify as upstreams. Comments are not permitted.", "fallback_dns_title": "Fallback DNS servers", From 65b7d232ab0ce132c8a3da7eda3d753364b7ead2 Mon Sep 17 00:00:00 2001 From: Stanislav Chzhen Date: Thu, 20 Jun 2024 19:44:51 +0300 Subject: [PATCH 5/5] Pull request 2242: 7079-log-enabled Updates #7079. Squashed commit of the following: commit 477c5ed29c8066dc9cb175809572f613b2a0dfa0 Merge: d3c64e03a 647214092 Author: Stanislav Chzhen Date: Thu Jun 20 19:31:54 2024 +0300 Merge branch 'master' into 7079-log-enabled commit d3c64e03a514e39d70e6b79209be1f8cf052a25d Author: Stanislav Chzhen Date: Thu Jun 20 16:02:42 2024 +0300 home: imp docs commit 7658c9b107f109c391b6bd5407098e8e53754842 Author: Stanislav Chzhen Date: Thu Jun 20 14:17:08 2024 +0300 all: log enabled --- CHANGELOG.md | 6 ++++++ internal/home/config.go | 10 ++++++++-- internal/home/log.go | 13 +++++++++++-- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 284fe8bb..50aa2cb5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,11 @@ See also the [v0.107.52 GitHub milestone][ms-v0.107.52]. NOTE: Add new changes BELOW THIS COMMENT. --> +### Added + +- The ability to disable logging using the new `log.enabled` configuration + property ([#7079]). + ### Changed - Frontend rewritten in TypeScript. @@ -59,6 +64,7 @@ NOTE: Add new changes BELOW THIS COMMENT. [#7053]: https://github.com/AdguardTeam/AdGuardHome/issues/7053 [#7069]: https://github.com/AdguardTeam/AdGuardHome/issues/7069 [#7076]: https://github.com/AdguardTeam/AdGuardHome/issues/7076 +[#7079]: https://github.com/AdguardTeam/AdGuardHome/issues/7079 [install-script]: https://github.com/AdguardTeam/AdGuardHome/?tab=readme-ov-file#automated-install-linux-and-mac diff --git a/internal/home/config.go b/internal/home/config.go index ba9c00d9..2c15740c 100644 --- a/internal/home/config.go +++ b/internal/home/config.go @@ -32,6 +32,9 @@ const dataDir = "data" // logSettings are the logging settings part of the configuration file. type logSettings struct { + // Enabled indicates whether logging is enabled. + Enabled bool `yaml:"enabled"` + // File is the path to the log file. If empty, logs are written to stdout. // If "syslog", logs are written to syslog. File string `yaml:"file"` @@ -454,11 +457,14 @@ var config = &configuration{ }, }, Log: logSettings{ - Compress: false, - LocalTime: false, + Enabled: true, + File: "", MaxBackups: 0, MaxSize: 100, MaxAge: 3, + Compress: false, + LocalTime: false, + Verbose: false, }, OSConfig: &osConfig{}, SchemaVersion: configmigrate.LastSchemaVersion, diff --git a/internal/home/log.go b/internal/home/log.go index efc90d3f..fd18d1ec 100644 --- a/internal/home/log.go +++ b/internal/home/log.go @@ -21,7 +21,9 @@ func configureLogger(opts options) (err error) { ls := getLogSettings(opts) // Configure logger level. - if ls.Verbose { + if !ls.Enabled { + log.SetLevel(log.OFF) + } else if ls.Verbose { log.SetLevel(log.DEBUG) } @@ -91,7 +93,14 @@ func getLogSettings(opts options) (ls *logSettings) { // separate method in order to configure logger before the actual configuration // is parsed and applied. func readLogSettings() (ls *logSettings) { - conf := &configuration{} + // TODO(s.chzhen): Add a helper function that returns default parameters + // for this structure and for the global configuration structure [config]. + conf := &configuration{ + Log: logSettings{ + // By default, it is true if the property does not exist. + Enabled: true, + }, + } yamlFile, err := readConfigFile() if err != nil {