diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0db66e34..b9787236 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,7 @@ jobs: cache: pip - name: Set up Node.js - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e #v6.4.0 + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 #v7.0.0 with: node-version: "${{ env.NODE }}" cache: npm diff --git a/.github/workflows/stale_pr.yml b/.github/workflows/stale_pr.yml index 632dcf1f..4024bc89 100644 --- a/.github/workflows/stale_pr.yml +++ b/.github/workflows/stale_pr.yml @@ -16,7 +16,7 @@ jobs: pull-requests: write steps: - - uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 #v10.3.0 + - uses: actions/stale@1e223db275d687790206a7acac4d1a11bd6fe629 #v10.4.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} # Do not automatically mark PR/issue as stale diff --git a/docs/ftldns/signals.md b/docs/ftldns/signals.md index bb345e45..cb5dbede 100644 --- a/docs/ftldns/signals.md +++ b/docs/ftldns/signals.md @@ -1,6 +1,6 @@ You can influence FTL by sending signals to the process. There are various signals supported to trigger specific actions, described below. -# Reload everything using `SIGHUP` +## Reload everything using `SIGHUP` When FTL receives a `SIGHUP`, it clears the entire DNS cache, and then @@ -29,7 +29,7 @@ When FTL receives a `SIGHUP`, it clears the entire DNS cache, and then - The blocking cache (storing if a domain has already been analyzed and what the result was) is cleared. - If `DEBUG_CAPS` is enabled, the current set of available capabilities is logged. -# Real-time (RT) signals +## Real-time (RT) signals While `SIGHUP` updates/flushes almost everything, such a massive operation is often not necessary. Hence, we added several small real-time signals available for fine-grained control of what FTL does. When you see `SIGHUP` as a "big gun", the real-time signals are rather the "scalpel" to serve rather specific needs. @@ -50,7 +50,7 @@ For the signals described below, we recommend using the exact signal number desc sudo pkill -SIG35 pihole-FTL ``` -## Real-time signal 0 (35) +### Real-time signal 0 (35) This signal does: @@ -64,30 +64,54 @@ The most important difference to `SIGHUP` is that the DNS cache itself is **not* This is the preferred signal to be used after manipulating the `gravity.db` database manually as it reloads only what is needed in this case. -## Real-time signal 1 (36) +### Real-time signal 1 (36) *Reserved* - Currently ignored -## Real-time signal 2 (37) +### Real-time signal 2 (37) *Reserved* - Used for internal signaling that a fork or thread crashed and needs to inform the main process to shut down, storing the last (valid) queries still into the long-term database. -## Real-time signal 3 (38) +### Real-time signal 3 (38) Reimport alias-clients from the database and recompute affected client statistics. -## Real-time signal 4 (39) +### Real-time signal 4 (39) Re-resolve all clients and forward destination hostnames. This forces refreshing hostnames as in that the usual "resolve only recently active clients" condition is ignored. The re-resolution adheres to the specified `REFRESH_HOSTNAMES` config option meaning that this option may not try to resolve all hostnames. -## Real-time signal 5 (40) +### Real-time signal 5 (40) Re-parse ARP/neighbour-cache now to update the Network table now -## Real-time signal 6 (41) +### Real-time signal 6 (41) *reserved* - Signal used internally to terminate the embedded `dnsmasq`. Please do not use this signal to prevent misbehaviour. -## Real-time signal 7 (42) +### Real-time signal 7 (42) Scan binary search lookup tables for hash collisions and report if any are found. This is a debugging signal and not meaningful production. Scanning the lookup tables is a time-consuming operation and may stall DNS resolution for a while on low-end devices. + +## `dnsmasq` signals + +`pihole-FTL` passes the following signals through to its embedded `dnsmasq` thread, where they behave as documented in [`man dnsmasq`](https://dnsmasq.org/docs/dnsmasq-man.html). + +### `SIGHUP` + +`dnsmasq`'s behavior with `SIGHUP` is already included in the [`SIGHUP` section above](#reload-everything-using-sighup). + +### `SIGUSR1` + +`SIGUSR1` causes `dnsmasq` to write its cache usage statistics to the log and dump the current cache content (names and addresses). The cache dump output is described in detail on the [cache dump page](cache_dump.md). + +```bash +sudo killall -USR1 pihole-FTL +``` + +### `SIGUSR2` + +When logging directly to a file (configured via [`files.log.dnsmasq`](configfile.md#dnsmasq), default `/var/log/pihole/pihole.log`), `SIGUSR2` causes `pihole-FTL` to close and reopen the log file. This is commonly used for [logrotate](https://github.com/pi-hole/pi-hole/blob/master/advanced/Templates/logrotate). + +```bash +sudo killall -USR2 pihole-FTL +``` diff --git a/package-lock.json b/package-lock.json index 6d41fb86..63f70dc0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "CC-BY-SA-4.0", "devDependencies": { "linkinator": "^7.6.1", - "markdownlint-cli2": "0.23.0" + "markdownlint-cli2": "0.23.1" } }, "node_modules/@nodelib/fs.scandir": { @@ -126,9 +126,9 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", + "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", "dev": true, "license": "MIT", "dependencies": { @@ -434,9 +434,9 @@ } }, "node_modules/globby": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.0.tgz", - "integrity": "sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==", + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.1.tgz", + "integrity": "sha512-JmsqJalahxxgW8V2ecSQ2G7UjPlI9cpKdrkG9KoNiXhd/YslXOTEB0cViENWUznuovIuNT+FkMbraDGjr4FCUg==", "dev": true, "license": "MIT", "dependencies": { @@ -488,9 +488,9 @@ } }, "node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz", + "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==", "dev": true, "license": "MIT", "engines": { @@ -592,9 +592,9 @@ } }, "node_modules/js-yaml": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.2.0.tgz", - "integrity": "sha512-YeLUMlvR4Ou1B119LIaM0r65JvbOBooJDc9yEu0dClb/uSC5P4FrLU8OCCz/HXWvtPoIrR0dRzABTjo1sTN9Bw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.2.1.tgz", + "integrity": "sha512-zfLtNfQqxVqq3uaTqSkh4x4hZw3KHobGUA0fJUj4wawW8bsQLTVqpHdXSIzidh7o+4lEW36tANuAGdaFx6Zgnw==", "dev": true, "funding": [ { @@ -704,9 +704,9 @@ } }, "node_modules/markdown-it": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz", - "integrity": "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", + "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", "dev": true, "funding": [ { @@ -721,8 +721,8 @@ "license": "MIT", "dependencies": { "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.1", + "entities": "^4.5.0", + "linkify-it": "^5.0.2", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" @@ -732,9 +732,9 @@ } }, "node_modules/markdownlint": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.41.0.tgz", - "integrity": "sha512-xMUI3ChBuRuxuLF4ENvCZyS8z/+Jly1coUcZwErKLIB3sDj7ojpaTBa1e9YVPhSN4jGEIjYGQCldbTJS/hqS+A==", + "version": "0.41.1", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.41.1.tgz", + "integrity": "sha512-qHKeU2E1bdyNAT077go2FVTNXvYcktN5IHtF6XyeD1l0PClxzSp2tUApAV14ORI8DGX4H9bNKZEzelZp4qn8IA==", "dev": true, "license": "MIT", "dependencies": { @@ -756,18 +756,18 @@ } }, "node_modules/markdownlint-cli2": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.23.0.tgz", - "integrity": "sha512-1nmgQmU/ZTMRVwYCDs7i1HI3zfBISnT2NNRv+9V01oOLZbAtqL+a7tldpPhBWBVBten3FqhMCGV6EUh9McqutQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.23.1.tgz", + "integrity": "sha512-20JPI5W+HpV1OA+pUM712wgvL4GzYNUvbmhLU8KlEYJ1kCDx4soZ4/Xqd+WkLrPTOKMAn8SfO3zYFrK8GLlwQg==", "dev": true, "license": "MIT", "dependencies": { - "globby": "16.2.0", - "js-yaml": "5.2.0", + "globby": "16.2.1", + "js-yaml": "5.2.1", "jsonc-parser": "3.3.1", "jsonpointer": "5.0.1", - "markdown-it": "14.2.0", - "markdownlint": "0.41.0", + "markdown-it": "14.3.0", + "markdownlint": "0.41.1", "markdownlint-cli2-formatter-default": "0.0.6", "micromatch": "4.0.8", "smol-toml": "1.7.0" diff --git a/package.json b/package.json index b2b3183f..4e156605 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,6 @@ }, "devDependencies": { "linkinator": "^7.6.1", - "markdownlint-cli2": "0.23.0" + "markdownlint-cli2": "0.23.1" } } diff --git a/requirements.txt b/requirements.txt index a31af49d..e2efff0a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ mkdocs==1.6.1 mkdocs-git-revision-date-localized-plugin==1.5.3 -mkdocs-material==9.7.6 +mkdocs-material==9.7.7 mkdocs-redirects==1.2.3 markdown-include==0.8.1