Merge in DNS/adguard-home from AGDNS-2743-aghuser-session to master Squashed commit of the following: commit 74fd4bc11eaf784880855fa2c710a747428db146 Merge: 844e865f67d479babaAuthor: Stanislav Chzhen <s.chzhen@adguard.com> Date: Fri Apr 18 18:14:36 2025 +0300 Merge branch 'master' into AGDNS-2743-aghuser-session commit 844e865f647efb4de7f057c392894c8f65bab422 Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Fri Apr 18 15:18:44 2025 +0300 aghuser: imp fmt commit 584288e0a3ddbe6d7ae31c80c22b8f397cfd0cae Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Thu Apr 17 20:16:54 2025 +0300 aghuser: imp tests commit ea4c8735585f6d30d6dedf2a40a8dd6b07609d07 Merge: c3fd8fe5e3521e8ed9Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Thu Apr 17 20:10:06 2025 +0300 Merge branch 'master' into AGDNS-2743-aghuser-session commit c3fd8fe5eabaf2022a971197c018e140c254006d Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Thu Apr 17 15:23:45 2025 +0300 aghuser: imp tests commit dfd9aba337227a8d3edc6f5a68f3f039afd1ca0b Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Wed Apr 16 21:40:14 2025 +0300 aghuser: imp code commit b6e75223bf7960f3a2e94c1a3ed7cc33539b9806 Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Mon Apr 14 21:49:20 2025 +0300 aghuser: imp code commit 56d6f9d478eec399c376992ffb0f1ca5b797986d Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Fri Apr 11 16:58:11 2025 +0300 aghuser: user db commit 6fdc2f60bf7f93e72d917abb12af8e4867143b6d Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Thu Apr 10 14:11:22 2025 +0300 all: upd scripts commit 575946756f3f622360c5feafe3e721eee010e230 Merge: 7e1fac4ec1cc6c00e4Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Thu Apr 10 14:05:46 2025 +0300 Merge branch 'master' into AGDNS-2743-aghuser-session commit 7e1fac4ecb1bde0013bca3f6b64e82d81a78c9c3 Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Thu Apr 10 14:05:35 2025 +0300 aghuser: session storage commit acfb040f0bdff501c7304ea100b9faf1c07291ae Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Tue Apr 8 15:54:24 2025 +0300 aghuser: session
AdGuard Home scripts
hooks/: Git hooks
Usage
Run make init from the project root.
querylog/: Query Log Helpers
Usage
-
npm install: install dependencies. Run this first. -
npm run anonymize <source> <dst>: read the query log from the<source>and write anonymized version to<dst>.
make/: Makefile scripts
The release channels are: development (the default), edge, beta, and release. If verbosity levels aren’t documented here, there are only two: 0, don’t print anything, and 1, be verbose.
build-docker.sh: Build a multi-architecture Docker image
Required environment:
-
CHANNEL: release channel, see above. -
DIST_DIR: the directory where a release has previously been built. -
REVISION: current Git revision. -
VERSION: release version.
Optional environment:
-
DOCKER_IMAGE_NAME: the name of the resulting Docker container. By default it’sadguardhome-dev. -
DOCKER_OUTPUT: the--outputparameters. By default they aretype=image,name=${DOCKER_IMAGE_NAME},push=false. -
SUDO: allow users to usesudoordoaswithdocker. By default none is used.
build-release.sh: Build a release for all platforms
Required environment:
-
CHANNEL: release channel, see above. -
GPG_KEYandGPG_KEY_PASSPHRASE: data forgpg. Only required ifSIGNis1.
Optional environment:
-
ARCHandOS: space-separated list of architectures and operating systems for which to build a release. For example, to build only for 64-bit ARM and AMD on Linux and Darwin:make ARCH='amd64 arm64' OS='darwin linux' … build-releaseThe default value is
'', which means build everything. -
DIST_DIR: the directory to build a release into. The default value isdist. -
GO: set an alternative name for the Go compiler. -
SIGN:0to not sign the resulting packages,1to sign. The default value is1. -
VERBOSE:1to be verbose,2to also print environment. This script callsgo-build.shwith the verbosity level one level lower, so to get verbosity level2ingo-build.sh, set this to3when callingbuild-release.sh. -
VERSION: release version. Will be set byversion.shif it is unset or if it has the defaultMakefilevalue ofv0.0.0.
We’re using Go’s forward compatibility mechanism for updating the Go version. This means that if your go version is 1.21+ but is different from the one required by AdGuard Home, the go tool will automatically download the required version.
If you want to use the version installed on your builder, run:
go get go@$YOUR_VERSION
go mod tidy
and call make with GOTOOLCHAIN=local.
go-bench.sh: Run backend benchmarks
Optional environment:
-
GO: set an alternative name for the Go compiler. -
TIMEOUT_FLAGS: set timeout flags for tests. The default value is--timeout=30s. -
VERBOSE: verbosity level.1shows every command that is run and every Go package that is processed.2also shows subcommands and environment. The default value is0, don’t be verbose.
go-build.sh: Build the backend
Optional environment:
-
GOAMD64: architectural level for AMD64. The default value isv1. -
GOARM: ARM processor options for the Go compiler. -
GOMIPS: ARM processor options for the Go compiler. -
GO: set an alternative name for the Go compiler. -
OUT: output binary name. -
PARALLELISM: set the maximum number of concurrently run build commands (that is, compiler, linker, etc.). -
SOURCE_DATE_EPOCH: the standardized environment variable for the Unix epoch time of the latest commit in the repository. If set, overrides the default obtained from Git. Useful for reproducible builds. -
VERBOSE: verbosity level.1shows every command that is run and every Go package that is processed.2also shows subcommands and environment. The default value is0, don’t be verbose. -
VERSION: release version. Will be set byversion.shif it is unset or if it has the defaultMakefilevalue ofv0.0.0.
Required environment:
CHANNEL: release channel, see above.
go-deps.sh: Install backend dependencies
Optional environment:
-
GO: set an alternative name for the Go compiler. -
VERBOSE: verbosity level.1shows every command that is run and every Go package that is processed.2also shows subcommands and environment. The default value is0, don’t be verbose.
go-fuzz.sh: Run backend fuzz tests
Optional environment:
-
GO: set an alternative name for the Go compiler. -
FUZZTIME_FLAGS: set fuss flags for tests. The default value is--fuzztime=20s. -
TIMEOUT_FLAGS: set timeout flags for tests. The default value is--timeout=30s. -
VERBOSE: verbosity level.1shows every command that is run and every Go package that is processed.2also shows subcommands and environment. The default value is0, don’t be verbose.
go-lint.sh: Run backend static analyzers
Don’t forget to run make go-tools once first!
Optional environment:
-
EXIT_ON_ERROR: if set to0, don’t exit the script after the first encountered error. The default value is1. -
GO: set an alternative name for the Go compiler. -
VERBOSE: verbosity level.1shows every command that is run.2also shows subcommands. The default value is0, don’t be verbose.
go-test.sh: Run backend tests
Optional environment:
-
GO: set an alternative name for the Go compiler. -
RACE: set to0to not use the Go race detector. The default value is1, use the race detector. -
TIMEOUT_FLAGS: set timeout flags for tests. The default value is--timeout=30s. -
VERBOSE: verbosity level.1shows every command that is run and every Go package that is processed.2also shows subcommands. The default value is0, don’t be verbose.
go-tools.sh: Install backend tooling
Installs the Go static analysis and other tools into ${PWD}/bin. Either add ${PWD}/bin to your $PATH before all other entries, or use the commands directly, or use the commands through make (for example, make go-lint).
Optional environment:
GO: set an alternative name for the Go compiler.
version.sh: Generate And Print The Current Version
Required environment:
CHANNEL: release channel, see above.
snap/: Snapcraft scripts
build.sh
Builds the Snapcraft packages from the binaries created by download.sh.
download.sh
Downloads the binaries to pack them into Snapcraft packages.
Required environment:
CHANNEL: release channel, see above.
upload.sh
Uploads the Snapcraft packages created by build.sh.
Required environment:
-
SNAPCRAFT_CHANNEL: Snapcraft release channel:edge,beta, orcandidate. -
SNAPCRAFT_STORE_CREDENTIALS: Credentials for Snapcraft store.
Optional environment:
SNAPCRAFT_CMD: Overrides the Snapcraft command. Default:snapcraft.
translations/: Twosky Integration Script
Usage
-
go run ./scripts/translations help: print usage. -
go run ./scripts/translations download [-n <count>]: download and save all translations.nis optional flag where count is a number of concurrent downloads. -
go run ./scripts/translations upload: upload the baseenlocale. -
go run ./scripts/translations summary: show the current locales summary. -
go run ./scripts/translations unused: show the list of unused strings. -
go run ./scripts/translations auto-add: add locales with additions to the git and restore locales with deletions.
After the download you’ll find the output locales in the client/src/__locales/ directory.
Optional environment:
-
DOWNLOAD_LANGUAGES: set a list of specific languages todownload. For examplear be bg. If it set toblockerthen script will download only those languages, which need to be fully translated (de en es fr it ja ko pt-br pt-pt ru zh-cn zh-tw). -
UPLOAD_LANGUAGE: set an alternative language forupload. -
TWOSKY_URI: set an alternative URL fordownloadorupload. -
TWOSKY_PROJECT_ID: set an alternative project ID fordownloadorupload.
companiesdb/: Whotracks.me database converter
A simple script that downloads and updates the companies DB in the client code from the repo.
Usage
sh ./scripts/companiesdb/download.sh
blocked-services/: Blocked-services updater
A simple script that downloads and updates the blocked services index from AdGuard’s Hostlists Registry.
Optional environment:
URL: the URL of the index file. By default it’shttps://adguardteam.github.io/HostlistsRegistry/assets/services.json.
Usage
go run ./scripts/blocked-services/main.go
vetted-filters/: Vetted-filters updater
Similar to the one above, a script that downloads and updates the vetted filtering list data from AdGuard’s Hostlists Registry.
Optional environment:
URL: the URL of the index file. By default it’shttps://adguardteam.github.io/HostlistsRegistry/assets/filters.json.
Usage
go run ./scripts/vetted-filters/main.go