Skip to content

refactor: centralize DNS response creation logic with helper functions#1942

Merged
0xERR0R merged 1 commit intomainfrom
refactor-response
Nov 20, 2025
Merged

refactor: centralize DNS response creation logic with helper functions#1942
0xERR0R merged 1 commit intomainfrom
refactor-response

Conversation

@0xERR0R
Copy link
Copy Markdown
Owner

@0xERR0R 0xERR0R commented Nov 20, 2025

No description provided.

@0xERR0R 0xERR0R added this to the v0.29.0 milestone Nov 20, 2025
@0xERR0R 0xERR0R requested a review from Copilot November 20, 2025 20:23
@0xERR0R 0xERR0R added the 🧰 technical debts Technical debts, refactoring label Nov 20, 2025
@codecov
Copy link
Copy Markdown

codecov bot commented Nov 20, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.16%. Comparing base (0c35f21) to head (254a16c).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1942      +/-   ##
==========================================
- Coverage   90.22%   90.16%   -0.06%     
==========================================
  Files          90       90              
  Lines        6473     6458      -15     
==========================================
- Hits         5840     5823      -17     
- Misses        493      495       +2     
  Partials      140      140              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR refactors DNS response creation logic by introducing centralized helper functions in a new model/response_helpers.go file. The refactoring improves code maintainability by standardizing how DNS responses are created across different resolver types, reducing code duplication and making the response creation pattern more explicit and consistent.

Key changes:

  • Introduced four helper functions (NewResponseWithReason, NewResponseWithAnswers, NewResponseWithRcode, NewEmptyResponse) to centralize DNS response creation patterns
  • Updated multiple resolvers to use these helpers instead of manually creating dns.Msg instances and calling SetReply/SetRcode
  • Modified createServFailResponseDNSSEC to accept *model.Request instead of *dns.Msg for consistency with the new helpers

Reviewed Changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated no comments.

Show a summary per file
File Description
model/response_helpers.go New file containing four helper functions for standardized DNS response creation with different initialization patterns
resolver/hosts_file_resolver.go Refactored to use NewResponseWithAnswers for PTR record responses and simplified resolve method to return []dns.RR instead of *dns.Msg
resolver/fqdn_only_resolver.go Replaced manual response creation with NewEmptyResponse for NXDOMAIN responses
resolver/filtering_resolver.go Replaced SetRcode pattern with NewResponseWithRcode helper
resolver/dnssec_resolver.go Updated createServFailResponseDNSSEC to accept *model.Request and use NewResponseWithRcode helper
resolver/dnssec_resolver_test.go Updated test calls to createServFailResponseDNSSEC to pass *model.Request instead of *dns.Msg
resolver/custom_dns_resolver.go Refactored to use NewResponseWithAnswers and NewResponseWithReason helpers, removing manual dns.Msg creation
resolver/blocking_resolver.go Replaced manual response creation with NewResponseWithReason helper for blocked requests

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@0xERR0R 0xERR0R merged commit ced469f into main Nov 20, 2025
26 checks passed
@0xERR0R 0xERR0R deleted the refactor-response branch November 20, 2025 20:28
alexlebens pushed a commit to alexlebens/infrastructure that referenced this pull request Feb 27, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [0xerr0r/blocky](https://github.com/0xerr0r/blocky) | minor | `v0.28.2` → `v0.29.0` |
| [ghcr.io/0xerr0r/blocky](https://github.com/0xERR0R/blocky) | minor | `v0.28.2` → `v0.29.0` |

---

### Release Notes

<details>
<summary>0xerr0r/blocky (0xerr0r/blocky)</summary>

### [`v0.29.0`](https://github.com/0xERR0R/blocky/releases/tag/v0.29.0)

[Compare Source](0xERR0R/blocky@v0.28.2...v0.29.0)

#### Changelog

##### Features

- [`0c35f21`](0xERR0R/blocky@0c35f21): feat: add RFC 7239 Forwarded header support for client IP parsing ([#&#8203;1941](0xERR0R/blocky#1941)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))
- [`011e3eb`](0xERR0R/blocky@011e3eb): feat: implement DNS64 support ([#&#8203;1933](0xERR0R/blocky#1933)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))
- [`e199445`](0xERR0R/blocky@e199445): feat: improve IP parsing from X-Forwarded-For header ([#&#8203;1940](0xERR0R/blocky#1940)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))

##### Bug fixes

- [`257fe07`](0xERR0R/blocky@257fe07): fix: Incorrect rate data shown on Grafana dashboards ([#&#8203;1948](0xERR0R/blocky#1948)) ([@&#8203;mattdy](https://github.com/mattdy))
- [`1a4d22d`](0xERR0R/blocky@1a4d22d): fix: db automigration with timescaledb ([#&#8203;1975](0xERR0R/blocky#1975)) ([@&#8203;manofthepeace](https://github.com/manofthepeace))
- [`9874212`](0xERR0R/blocky@9874212): fix: use context based versions of net.Listen and net.Dial ([#&#8203;1952](0xERR0R/blocky#1952)) ([@&#8203;sonjek](https://github.com/sonjek))

##### Build and dependencies

- [`fe67404`](0xERR0R/blocky@fe67404): build(deps): bump actions/checkout from 5 to 6 ([#&#8203;1943](0xERR0R/blocky#1943)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`4752061`](0xERR0R/blocky@4752061): build(deps): bump actions/download-artifact from 6 to 7 ([#&#8203;1961](0xERR0R/blocky#1961)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`d459311`](0xERR0R/blocky@d459311): build(deps): bump actions/download-artifact from 7 to 8 ([#&#8203;2000](0xERR0R/blocky#2000)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`fa1614b`](0xERR0R/blocky@fa1614b): build(deps): bump actions/upload-artifact from 5 to 6 ([#&#8203;1960](0xERR0R/blocky#1960)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`11b6f92`](0xERR0R/blocky@11b6f92): build(deps): bump actions/upload-artifact from 6 to 7 ([#&#8203;1998](0xERR0R/blocky#1998)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`e83805c`](0xERR0R/blocky@e83805c): build(deps): bump filippo.io/edwards25519 from 1.1.0 to 1.1.1 ([#&#8203;1992](0xERR0R/blocky#1992)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`4f62ec8`](0xERR0R/blocky@4f62ec8): build(deps): bump github.com/alicebob/miniredis/v2 from 2.35.0 to 2.36.0 ([#&#8203;1976](0xERR0R/blocky#1976)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`16644c5`](0xERR0R/blocky@16644c5): build(deps): bump github.com/alicebob/miniredis/v2 from 2.36.0 to 2.36.1 ([#&#8203;1978](0xERR0R/blocky#1978)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`36ae188`](0xERR0R/blocky@36ae188): build(deps): bump github.com/alicebob/miniredis/v2 from 2.36.1 to 2.37.0 ([#&#8203;1996](0xERR0R/blocky#1996)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`4733c6b`](0xERR0R/blocky@4733c6b): build(deps): bump github.com/breml/rootcerts from 0.3.3 to 0.3.4 ([#&#8203;1987](0xERR0R/blocky#1987)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`e4f7462`](0xERR0R/blocky@e4f7462): build(deps): bump github.com/go-chi/chi/v5 from 5.2.3 to 5.2.4 ([#&#8203;1972](0xERR0R/blocky#1972)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`f9dd4d2`](0xERR0R/blocky@f9dd4d2): build(deps): bump github.com/go-chi/chi/v5 from 5.2.4 to 5.2.5 ([#&#8203;1985](0xERR0R/blocky#1985)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`e66a29d`](0xERR0R/blocky@e66a29d): build(deps): bump github.com/miekg/dns from 1.1.68 to 1.1.69 ([#&#8203;1959](0xERR0R/blocky#1959)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`8e69355`](0xERR0R/blocky@8e69355): build(deps): bump github.com/miekg/dns from 1.1.69 to 1.1.70 ([#&#8203;1968](0xERR0R/blocky#1968)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`5e8b555`](0xERR0R/blocky@5e8b555): build(deps): bump github.com/miekg/dns from 1.1.70 to 1.1.72 ([#&#8203;1977](0xERR0R/blocky#1977)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`ef5dc97`](0xERR0R/blocky@ef5dc97): build(deps): bump github.com/onsi/ginkgo/v2 from 2.27.2 to 2.27.3 ([#&#8203;1956](0xERR0R/blocky#1956)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`670542b`](0xERR0R/blocky@670542b): build(deps): bump github.com/onsi/ginkgo/v2 from 2.27.3 to 2.27.4 ([#&#8203;1966](0xERR0R/blocky#1966)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`e062742`](0xERR0R/blocky@e062742): build(deps): bump github.com/onsi/ginkgo/v2 from 2.27.4 to 2.27.5 ([#&#8203;1970](0xERR0R/blocky#1970)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`4926d16`](0xERR0R/blocky@4926d16): build(deps): bump github.com/onsi/ginkgo/v2 from 2.27.5 to 2.28.1 ([#&#8203;1981](0xERR0R/blocky#1981)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`ca0da10`](0xERR0R/blocky@ca0da10): build(deps): bump github.com/onsi/gomega from 1.38.2 to 1.38.3 ([#&#8203;1955](0xERR0R/blocky#1955)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`567a738`](0xERR0R/blocky@567a738): build(deps): bump github.com/onsi/gomega from 1.38.3 to 1.39.0 ([#&#8203;1967](0xERR0R/blocky#1967)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`c3aab87`](0xERR0R/blocky@c3aab87): build(deps): bump github.com/onsi/gomega from 1.39.0 to 1.39.1 ([#&#8203;1982](0xERR0R/blocky#1982)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`ef79a67`](0xERR0R/blocky@ef79a67): build(deps): bump github.com/sirupsen/logrus from 1.9.3 to 1.9.4 ([#&#8203;1974](0xERR0R/blocky#1974)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`6775759`](0xERR0R/blocky@6775759): build(deps): bump github.com/spf13/cobra from 1.10.1 to 1.10.2 ([#&#8203;1953](0xERR0R/blocky#1953)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`71c39fc`](0xERR0R/blocky@71c39fc): build(deps): bump golang.org/x/crypto from 0.44.0 to 0.45.0 ([#&#8203;1939](0xERR0R/blocky#1939)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`be31648`](0xERR0R/blocky@be31648): build(deps): bump golang.org/x/net from 0.47.0 to 0.48.0 ([#&#8203;1957](0xERR0R/blocky#1957)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`a574078`](0xERR0R/blocky@a574078): build(deps): bump golang.org/x/net from 0.48.0 to 0.49.0 ([#&#8203;1971](0xERR0R/blocky#1971)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`6f3f295`](0xERR0R/blocky@6f3f295): build(deps): bump golang.org/x/net from 0.49.0 to 0.50.0 ([#&#8203;1988](0xERR0R/blocky#1988)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`6a75afb`](0xERR0R/blocky@6a75afb): build(deps): bump golang.org/x/net from 0.50.0 to 0.51.0 ([#&#8203;1997](0xERR0R/blocky#1997)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])

##### Misc

- [`439e99b`](0xERR0R/blocky@439e99b): Add Blocky Visor to web UIs section in installation.md ([#&#8203;1993](0xERR0R/blocky#1993)) ([@&#8203;JCHHeilmann](https://github.com/JCHHeilmann))
- [`ced469f`](0xERR0R/blocky@ced469f): refactor: centralize DNS response creation logic with helper functions ([#&#8203;1942](0xERR0R/blocky#1942)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))
- [`3075c38`](0xERR0R/blocky@3075c38): refactor: clean up obsolete Go syntax ([#&#8203;1951](0xERR0R/blocky#1951)) ([@&#8203;sonjek](https://github.com/sonjek))
- [`9fe42a8`](0xERR0R/blocky@9fe42a8): refactor: simplify code for improved readability and maintainability ([#&#8203;1945](0xERR0R/blocky#1945)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))
- [`6581668`](0xERR0R/blocky@6581668): refactor: use mockery for mocks ([#&#8203;1944](0xERR0R/blocky#1944)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))
- [`55ab95e`](0xERR0R/blocky@55ab95e): test(metrics): Prometheus metrics ([#&#8203;1868](0xERR0R/blocky#1868)) ([@&#8203;zeilenschubser](https://github.com/zeilenschubser))

</details>

<details>
<summary>0xERR0R/blocky (ghcr.io/0xerr0r/blocky)</summary>

### [`v0.29.0`](https://github.com/0xERR0R/blocky/releases/tag/v0.29.0)

[Compare Source](0xERR0R/blocky@v0.28.2...v0.29.0)

#### Changelog

##### Features

- [`0c35f21`](0xERR0R/blocky@0c35f21): feat: add RFC 7239 Forwarded header support for client IP parsing ([#&#8203;1941](0xERR0R/blocky#1941)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))
- [`011e3eb`](0xERR0R/blocky@011e3eb): feat: implement DNS64 support ([#&#8203;1933](0xERR0R/blocky#1933)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))
- [`e199445`](0xERR0R/blocky@e199445): feat: improve IP parsing from X-Forwarded-For header ([#&#8203;1940](0xERR0R/blocky#1940)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))

##### Bug fixes

- [`257fe07`](0xERR0R/blocky@257fe07): fix: Incorrect rate data shown on Grafana dashboards ([#&#8203;1948](0xERR0R/blocky#1948)) ([@&#8203;mattdy](https://github.com/mattdy))
- [`1a4d22d`](0xERR0R/blocky@1a4d22d): fix: db automigration with timescaledb ([#&#8203;1975](0xERR0R/blocky#1975)) ([@&#8203;manofthepeace](https://github.com/manofthepeace))
- [`9874212`](0xERR0R/blocky@9874212): fix: use context based versions of net.Listen and net.Dial ([#&#8203;1952](0xERR0R/blocky#1952)) ([@&#8203;sonjek](https://github.com/sonjek))

##### Build and dependencies

- [`fe67404`](0xERR0R/blocky@fe67404): build(deps): bump actions/checkout from 5 to 6 ([#&#8203;1943](0xERR0R/blocky#1943)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`4752061`](0xERR0R/blocky@4752061): build(deps): bump actions/download-artifact from 6 to 7 ([#&#8203;1961](0xERR0R/blocky#1961)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`d459311`](0xERR0R/blocky@d459311): build(deps): bump actions/download-artifact from 7 to 8 ([#&#8203;2000](0xERR0R/blocky#2000)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`fa1614b`](0xERR0R/blocky@fa1614b): build(deps): bump actions/upload-artifact from 5 to 6 ([#&#8203;1960](0xERR0R/blocky#1960)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`11b6f92`](0xERR0R/blocky@11b6f92): build(deps): bump actions/upload-artifact from 6 to 7 ([#&#8203;1998](0xERR0R/blocky#1998)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`e83805c`](0xERR0R/blocky@e83805c): build(deps): bump filippo.io/edwards25519 from 1.1.0 to 1.1.1 ([#&#8203;1992](0xERR0R/blocky#1992)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`4f62ec8`](0xERR0R/blocky@4f62ec8): build(deps): bump github.com/alicebob/miniredis/v2 from 2.35.0 to 2.36.0 ([#&#8203;1976](0xERR0R/blocky#1976)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`16644c5`](0xERR0R/blocky@16644c5): build(deps): bump github.com/alicebob/miniredis/v2 from 2.36.0 to 2.36.1 ([#&#8203;1978](0xERR0R/blocky#1978)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`36ae188`](0xERR0R/blocky@36ae188): build(deps): bump github.com/alicebob/miniredis/v2 from 2.36.1 to 2.37.0 ([#&#8203;1996](0xERR0R/blocky#1996)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`4733c6b`](0xERR0R/blocky@4733c6b): build(deps): bump github.com/breml/rootcerts from 0.3.3 to 0.3.4 ([#&#8203;1987](0xERR0R/blocky#1987)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`e4f7462`](0xERR0R/blocky@e4f7462): build(deps): bump github.com/go-chi/chi/v5 from 5.2.3 to 5.2.4 ([#&#8203;1972](0xERR0R/blocky#1972)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`f9dd4d2`](0xERR0R/blocky@f9dd4d2): build(deps): bump github.com/go-chi/chi/v5 from 5.2.4 to 5.2.5 ([#&#8203;1985](0xERR0R/blocky#1985)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`e66a29d`](0xERR0R/blocky@e66a29d): build(deps): bump github.com/miekg/dns from 1.1.68 to 1.1.69 ([#&#8203;1959](0xERR0R/blocky#1959)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`8e69355`](0xERR0R/blocky@8e69355): build(deps): bump github.com/miekg/dns from 1.1.69 to 1.1.70 ([#&#8203;1968](0xERR0R/blocky#1968)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`5e8b555`](0xERR0R/blocky@5e8b555): build(deps): bump github.com/miekg/dns from 1.1.70 to 1.1.72 ([#&#8203;1977](0xERR0R/blocky#1977)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`ef5dc97`](0xERR0R/blocky@ef5dc97): build(deps): bump github.com/onsi/ginkgo/v2 from 2.27.2 to 2.27.3 ([#&#8203;1956](0xERR0R/blocky#1956)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`670542b`](0xERR0R/blocky@670542b): build(deps): bump github.com/onsi/ginkgo/v2 from 2.27.3 to 2.27.4 ([#&#8203;1966](0xERR0R/blocky#1966)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`e062742`](0xERR0R/blocky@e062742): build(deps): bump github.com/onsi/ginkgo/v2 from 2.27.4 to 2.27.5 ([#&#8203;1970](0xERR0R/blocky#1970)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`4926d16`](0xERR0R/blocky@4926d16): build(deps): bump github.com/onsi/ginkgo/v2 from 2.27.5 to 2.28.1 ([#&#8203;1981](0xERR0R/blocky#1981)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`ca0da10`](0xERR0R/blocky@ca0da10): build(deps): bump github.com/onsi/gomega from 1.38.2 to 1.38.3 ([#&#8203;1955](0xERR0R/blocky#1955)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`567a738`](0xERR0R/blocky@567a738): build(deps): bump github.com/onsi/gomega from 1.38.3 to 1.39.0 ([#&#8203;1967](0xERR0R/blocky#1967)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`c3aab87`](0xERR0R/blocky@c3aab87): build(deps): bump github.com/onsi/gomega from 1.39.0 to 1.39.1 ([#&#8203;1982](0xERR0R/blocky#1982)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`ef79a67`](0xERR0R/blocky@ef79a67): build(deps): bump github.com/sirupsen/logrus from 1.9.3 to 1.9.4 ([#&#8203;1974](0xERR0R/blocky#1974)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`6775759`](0xERR0R/blocky@6775759): build(deps): bump github.com/spf13/cobra from 1.10.1 to 1.10.2 ([#&#8203;1953](0xERR0R/blocky#1953)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`71c39fc`](0xERR0R/blocky@71c39fc): build(deps): bump golang.org/x/crypto from 0.44.0 to 0.45.0 ([#&#8203;1939](0xERR0R/blocky#1939)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`be31648`](0xERR0R/blocky@be31648): build(deps): bump golang.org/x/net from 0.47.0 to 0.48.0 ([#&#8203;1957](0xERR0R/blocky#1957)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`a574078`](0xERR0R/blocky@a574078): build(deps): bump golang.org/x/net from 0.48.0 to 0.49.0 ([#&#8203;1971](0xERR0R/blocky#1971)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`6f3f295`](0xERR0R/blocky@6f3f295): build(deps): bump golang.org/x/net from 0.49.0 to 0.50.0 ([#&#8203;1988](0xERR0R/blocky#1988)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`6a75afb`](0xERR0R/blocky@6a75afb): build(deps): bump golang.org/x/net from 0.50.0 to 0.51.0 ([#&#8203;1997](0xERR0R/blocky#1997)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])

##### Misc

- [`439e99b`](0xERR0R/blocky@439e99b): Add Blocky Visor to web UIs section in installation.md ([#&#8203;1993](0xERR0R/blocky#1993)) ([@&#8203;JCHHeilmann](https://github.com/JCHHeilmann))
- [`ced469f`](0xERR0R/blocky@ced469f): refactor: centralize DNS response creation logic with helper functions ([#&#8203;1942](0xERR0R/blocky#1942)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))
- [`3075c38`](0xERR0R/blocky@3075c38): refactor: clean up obsolete Go syntax ([#&#8203;1951](0xERR0R/blocky#1951)) ([@&#8203;sonjek](https://github.com/sonjek))
- [`9fe42a8`](0xERR0R/blocky@9fe42a8): refactor: simplify code for improved readability and maintainability ([#&#8203;1945](0xERR0R/blocky#1945)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))
- [`6581668`](0xERR0R/blocky@6581668): refactor: use mockery for mocks ([#&#8203;1944](0xERR0R/blocky#1944)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))
- [`55ab95e`](0xERR0R/blocky@55ab95e): test(metrics): Prometheus metrics ([#&#8203;1868](0xERR0R/blocky#1868)) ([@&#8203;zeilenschubser](https://github.com/zeilenschubser))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNS44IiwidXBkYXRlZEluVmVyIjoiNDMuMjUuOCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4282
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
alexlebens pushed a commit to alexlebens/infrastructure that referenced this pull request Feb 27, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/0xerr0r/blocky](https://github.com/0xERR0R/blocky) | minor | `v0.28.2` → `v0.29.0` |

---

### Release Notes

<details>
<summary>0xERR0R/blocky (ghcr.io/0xerr0r/blocky)</summary>

### [`v0.29.0`](https://github.com/0xERR0R/blocky/releases/tag/v0.29.0)

[Compare Source](0xERR0R/blocky@v0.28.2...v0.29.0)

#### Changelog

##### Features

- [`0c35f21`](0xERR0R/blocky@0c35f21): feat: add RFC 7239 Forwarded header support for client IP parsing ([#&#8203;1941](0xERR0R/blocky#1941)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))
- [`011e3eb`](0xERR0R/blocky@011e3eb): feat: implement DNS64 support ([#&#8203;1933](0xERR0R/blocky#1933)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))
- [`e199445`](0xERR0R/blocky@e199445): feat: improve IP parsing from X-Forwarded-For header ([#&#8203;1940](0xERR0R/blocky#1940)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))

##### Bug fixes

- [`257fe07`](0xERR0R/blocky@257fe07): fix: Incorrect rate data shown on Grafana dashboards ([#&#8203;1948](0xERR0R/blocky#1948)) ([@&#8203;mattdy](https://github.com/mattdy))
- [`1a4d22d`](0xERR0R/blocky@1a4d22d): fix: db automigration with timescaledb ([#&#8203;1975](0xERR0R/blocky#1975)) ([@&#8203;manofthepeace](https://github.com/manofthepeace))
- [`9874212`](0xERR0R/blocky@9874212): fix: use context based versions of net.Listen and net.Dial ([#&#8203;1952](0xERR0R/blocky#1952)) ([@&#8203;sonjek](https://github.com/sonjek))

##### Build and dependencies

- [`fe67404`](0xERR0R/blocky@fe67404): build(deps): bump actions/checkout from 5 to 6 ([#&#8203;1943](0xERR0R/blocky#1943)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`4752061`](0xERR0R/blocky@4752061): build(deps): bump actions/download-artifact from 6 to 7 ([#&#8203;1961](0xERR0R/blocky#1961)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`d459311`](0xERR0R/blocky@d459311): build(deps): bump actions/download-artifact from 7 to 8 ([#&#8203;2000](0xERR0R/blocky#2000)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`fa1614b`](0xERR0R/blocky@fa1614b): build(deps): bump actions/upload-artifact from 5 to 6 ([#&#8203;1960](0xERR0R/blocky#1960)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`11b6f92`](0xERR0R/blocky@11b6f92): build(deps): bump actions/upload-artifact from 6 to 7 ([#&#8203;1998](0xERR0R/blocky#1998)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`e83805c`](0xERR0R/blocky@e83805c): build(deps): bump filippo.io/edwards25519 from 1.1.0 to 1.1.1 ([#&#8203;1992](0xERR0R/blocky#1992)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`4f62ec8`](0xERR0R/blocky@4f62ec8): build(deps): bump github.com/alicebob/miniredis/v2 from 2.35.0 to 2.36.0 ([#&#8203;1976](0xERR0R/blocky#1976)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`16644c5`](0xERR0R/blocky@16644c5): build(deps): bump github.com/alicebob/miniredis/v2 from 2.36.0 to 2.36.1 ([#&#8203;1978](0xERR0R/blocky#1978)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`36ae188`](0xERR0R/blocky@36ae188): build(deps): bump github.com/alicebob/miniredis/v2 from 2.36.1 to 2.37.0 ([#&#8203;1996](0xERR0R/blocky#1996)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`4733c6b`](0xERR0R/blocky@4733c6b): build(deps): bump github.com/breml/rootcerts from 0.3.3 to 0.3.4 ([#&#8203;1987](0xERR0R/blocky#1987)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`e4f7462`](0xERR0R/blocky@e4f7462): build(deps): bump github.com/go-chi/chi/v5 from 5.2.3 to 5.2.4 ([#&#8203;1972](0xERR0R/blocky#1972)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`f9dd4d2`](0xERR0R/blocky@f9dd4d2): build(deps): bump github.com/go-chi/chi/v5 from 5.2.4 to 5.2.5 ([#&#8203;1985](0xERR0R/blocky#1985)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`e66a29d`](0xERR0R/blocky@e66a29d): build(deps): bump github.com/miekg/dns from 1.1.68 to 1.1.69 ([#&#8203;1959](0xERR0R/blocky#1959)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`8e69355`](0xERR0R/blocky@8e69355): build(deps): bump github.com/miekg/dns from 1.1.69 to 1.1.70 ([#&#8203;1968](0xERR0R/blocky#1968)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`5e8b555`](0xERR0R/blocky@5e8b555): build(deps): bump github.com/miekg/dns from 1.1.70 to 1.1.72 ([#&#8203;1977](0xERR0R/blocky#1977)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`ef5dc97`](0xERR0R/blocky@ef5dc97): build(deps): bump github.com/onsi/ginkgo/v2 from 2.27.2 to 2.27.3 ([#&#8203;1956](0xERR0R/blocky#1956)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`670542b`](0xERR0R/blocky@670542b): build(deps): bump github.com/onsi/ginkgo/v2 from 2.27.3 to 2.27.4 ([#&#8203;1966](0xERR0R/blocky#1966)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`e062742`](0xERR0R/blocky@e062742): build(deps): bump github.com/onsi/ginkgo/v2 from 2.27.4 to 2.27.5 ([#&#8203;1970](0xERR0R/blocky#1970)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`4926d16`](0xERR0R/blocky@4926d16): build(deps): bump github.com/onsi/ginkgo/v2 from 2.27.5 to 2.28.1 ([#&#8203;1981](0xERR0R/blocky#1981)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`ca0da10`](0xERR0R/blocky@ca0da10): build(deps): bump github.com/onsi/gomega from 1.38.2 to 1.38.3 ([#&#8203;1955](0xERR0R/blocky#1955)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`567a738`](0xERR0R/blocky@567a738): build(deps): bump github.com/onsi/gomega from 1.38.3 to 1.39.0 ([#&#8203;1967](0xERR0R/blocky#1967)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`c3aab87`](0xERR0R/blocky@c3aab87): build(deps): bump github.com/onsi/gomega from 1.39.0 to 1.39.1 ([#&#8203;1982](0xERR0R/blocky#1982)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`ef79a67`](0xERR0R/blocky@ef79a67): build(deps): bump github.com/sirupsen/logrus from 1.9.3 to 1.9.4 ([#&#8203;1974](0xERR0R/blocky#1974)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`6775759`](0xERR0R/blocky@6775759): build(deps): bump github.com/spf13/cobra from 1.10.1 to 1.10.2 ([#&#8203;1953](0xERR0R/blocky#1953)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`71c39fc`](0xERR0R/blocky@71c39fc): build(deps): bump golang.org/x/crypto from 0.44.0 to 0.45.0 ([#&#8203;1939](0xERR0R/blocky#1939)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`be31648`](0xERR0R/blocky@be31648): build(deps): bump golang.org/x/net from 0.47.0 to 0.48.0 ([#&#8203;1957](0xERR0R/blocky#1957)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`a574078`](0xERR0R/blocky@a574078): build(deps): bump golang.org/x/net from 0.48.0 to 0.49.0 ([#&#8203;1971](0xERR0R/blocky#1971)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`6f3f295`](0xERR0R/blocky@6f3f295): build(deps): bump golang.org/x/net from 0.49.0 to 0.50.0 ([#&#8203;1988](0xERR0R/blocky#1988)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`6a75afb`](0xERR0R/blocky@6a75afb): build(deps): bump golang.org/x/net from 0.50.0 to 0.51.0 ([#&#8203;1997](0xERR0R/blocky#1997)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])

##### Misc

- [`439e99b`](0xERR0R/blocky@439e99b): Add Blocky Visor to web UIs section in installation.md ([#&#8203;1993](0xERR0R/blocky#1993)) ([@&#8203;JCHHeilmann](https://github.com/JCHHeilmann))
- [`ced469f`](0xERR0R/blocky@ced469f): refactor: centralize DNS response creation logic with helper functions ([#&#8203;1942](0xERR0R/blocky#1942)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))
- [`3075c38`](0xERR0R/blocky@3075c38): refactor: clean up obsolete Go syntax ([#&#8203;1951](0xERR0R/blocky#1951)) ([@&#8203;sonjek](https://github.com/sonjek))
- [`9fe42a8`](0xERR0R/blocky@9fe42a8): refactor: simplify code for improved readability and maintainability ([#&#8203;1945](0xERR0R/blocky#1945)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))
- [`6581668`](0xERR0R/blocky@6581668): refactor: use mockery for mocks ([#&#8203;1944](0xERR0R/blocky#1944)) ([@&#8203;0xERR0R](https://github.com/0xERR0R))
- [`55ab95e`](0xERR0R/blocky@55ab95e): test(metrics): Prometheus metrics ([#&#8203;1868](0xERR0R/blocky#1868)) ([@&#8203;zeilenschubser](https://github.com/zeilenschubser))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNS44IiwidXBkYXRlZEluVmVyIjoiNDMuMjUuOCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4283
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🧰 technical debts Technical debts, refactoring

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants