feat: add RFC 7239 Forwarded header support for client IP parsing#1941
feat: add RFC 7239 Forwarded header support for client IP parsing#1941
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1941 +/- ##
==========================================
+ Coverage 90.20% 90.22% +0.01%
==========================================
Files 90 90
Lines 6445 6473 +28
==========================================
+ Hits 5814 5840 +26
- Misses 492 493 +1
- Partials 139 140 +1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull Request Overview
This PR adds support for parsing the RFC 7239 Forwarded header to extract client IP addresses, enhancing the existing HTTPClientIP function. The implementation prioritizes the standardized Forwarded header over the legacy X-Forwarded-For header, aligning with modern HTTP proxy standards.
Key Changes
- Implements RFC 7239 Forwarded header parsing with support for IPv4, IPv6, ports, and multiple proxy hops
- Prioritizes Forwarded header over X-Forwarded-For with proper fallback behavior
- Adds comprehensive test coverage including edge cases for various header formats
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| util/http.go | Adds parseForwardedHeader and extractIPFromForValue helper functions to parse RFC 7239 headers, and updates HTTPClientIP to check Forwarded header first |
| util/http_test.go | Adds 16 new test cases covering IPv4/IPv6 formats, quoted values, ports, multiple entries, obfuscated identifiers, and header priority scenarios |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
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 ([#​1941](0xERR0R/blocky#1941)) ([@​0xERR0R](https://github.com/0xERR0R)) - [`011e3eb`](0xERR0R/blocky@011e3eb): feat: implement DNS64 support ([#​1933](0xERR0R/blocky#1933)) ([@​0xERR0R](https://github.com/0xERR0R)) - [`e199445`](0xERR0R/blocky@e199445): feat: improve IP parsing from X-Forwarded-For header ([#​1940](0xERR0R/blocky#1940)) ([@​0xERR0R](https://github.com/0xERR0R)) ##### Bug fixes - [`257fe07`](0xERR0R/blocky@257fe07): fix: Incorrect rate data shown on Grafana dashboards ([#​1948](0xERR0R/blocky#1948)) ([@​mattdy](https://github.com/mattdy)) - [`1a4d22d`](0xERR0R/blocky@1a4d22d): fix: db automigration with timescaledb ([#​1975](0xERR0R/blocky#1975)) ([@​manofthepeace](https://github.com/manofthepeace)) - [`9874212`](0xERR0R/blocky@9874212): fix: use context based versions of net.Listen and net.Dial ([#​1952](0xERR0R/blocky#1952)) ([@​sonjek](https://github.com/sonjek)) ##### Build and dependencies - [`fe67404`](0xERR0R/blocky@fe67404): build(deps): bump actions/checkout from 5 to 6 ([#​1943](0xERR0R/blocky#1943)) ([@​dependabot](https://github.com/dependabot)\[bot]) - [`4752061`](0xERR0R/blocky@4752061): build(deps): bump actions/download-artifact from 6 to 7 ([#​1961](0xERR0R/blocky#1961)) ([@​dependabot](https://github.com/dependabot)\[bot]) - [`d459311`](0xERR0R/blocky@d459311): build(deps): bump actions/download-artifact from 7 to 8 ([#​2000](0xERR0R/blocky#2000)) ([@​dependabot](https://github.com/dependabot)\[bot]) - [`fa1614b`](0xERR0R/blocky@fa1614b): build(deps): bump actions/upload-artifact from 5 to 6 ([#​1960](0xERR0R/blocky#1960)) ([@​dependabot](https://github.com/dependabot)\[bot]) - [`11b6f92`](0xERR0R/blocky@11b6f92): build(deps): bump actions/upload-artifact from 6 to 7 ([#​1998](0xERR0R/blocky#1998)) ([@​dependabot](https://github.com/dependabot)\[bot]) - [`e83805c`](0xERR0R/blocky@e83805c): build(deps): bump filippo.io/edwards25519 from 1.1.0 to 1.1.1 ([#​1992](0xERR0R/blocky#1992)) ([@​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 ([#​1976](0xERR0R/blocky#1976)) ([@​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 ([#​1978](0xERR0R/blocky#1978)) ([@​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 ([#​1996](0xERR0R/blocky#1996)) ([@​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 ([#​1987](0xERR0R/blocky#1987)) ([@​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 ([#​1972](0xERR0R/blocky#1972)) ([@​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 ([#​1985](0xERR0R/blocky#1985)) ([@​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 ([#​1959](0xERR0R/blocky#1959)) ([@​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 ([#​1968](0xERR0R/blocky#1968)) ([@​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 ([#​1977](0xERR0R/blocky#1977)) ([@​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 ([#​1956](0xERR0R/blocky#1956)) ([@​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 ([#​1966](0xERR0R/blocky#1966)) ([@​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 ([#​1970](0xERR0R/blocky#1970)) ([@​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 ([#​1981](0xERR0R/blocky#1981)) ([@​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 ([#​1955](0xERR0R/blocky#1955)) ([@​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 ([#​1967](0xERR0R/blocky#1967)) ([@​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 ([#​1982](0xERR0R/blocky#1982)) ([@​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 ([#​1974](0xERR0R/blocky#1974)) ([@​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 ([#​1953](0xERR0R/blocky#1953)) ([@​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 ([#​1939](0xERR0R/blocky#1939)) ([@​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 ([#​1957](0xERR0R/blocky#1957)) ([@​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 ([#​1971](0xERR0R/blocky#1971)) ([@​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 ([#​1988](0xERR0R/blocky#1988)) ([@​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 ([#​1997](0xERR0R/blocky#1997)) ([@​dependabot](https://github.com/dependabot)\[bot]) ##### Misc - [`439e99b`](0xERR0R/blocky@439e99b): Add Blocky Visor to web UIs section in installation.md ([#​1993](0xERR0R/blocky#1993)) ([@​JCHHeilmann](https://github.com/JCHHeilmann)) - [`ced469f`](0xERR0R/blocky@ced469f): refactor: centralize DNS response creation logic with helper functions ([#​1942](0xERR0R/blocky#1942)) ([@​0xERR0R](https://github.com/0xERR0R)) - [`3075c38`](0xERR0R/blocky@3075c38): refactor: clean up obsolete Go syntax ([#​1951](0xERR0R/blocky#1951)) ([@​sonjek](https://github.com/sonjek)) - [`9fe42a8`](0xERR0R/blocky@9fe42a8): refactor: simplify code for improved readability and maintainability ([#​1945](0xERR0R/blocky#1945)) ([@​0xERR0R](https://github.com/0xERR0R)) - [`6581668`](0xERR0R/blocky@6581668): refactor: use mockery for mocks ([#​1944](0xERR0R/blocky#1944)) ([@​0xERR0R](https://github.com/0xERR0R)) - [`55ab95e`](0xERR0R/blocky@55ab95e): test(metrics): Prometheus metrics ([#​1868](0xERR0R/blocky#1868)) ([@​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 ([#​1941](0xERR0R/blocky#1941)) ([@​0xERR0R](https://github.com/0xERR0R)) - [`011e3eb`](0xERR0R/blocky@011e3eb): feat: implement DNS64 support ([#​1933](0xERR0R/blocky#1933)) ([@​0xERR0R](https://github.com/0xERR0R)) - [`e199445`](0xERR0R/blocky@e199445): feat: improve IP parsing from X-Forwarded-For header ([#​1940](0xERR0R/blocky#1940)) ([@​0xERR0R](https://github.com/0xERR0R)) ##### Bug fixes - [`257fe07`](0xERR0R/blocky@257fe07): fix: Incorrect rate data shown on Grafana dashboards ([#​1948](0xERR0R/blocky#1948)) ([@​mattdy](https://github.com/mattdy)) - [`1a4d22d`](0xERR0R/blocky@1a4d22d): fix: db automigration with timescaledb ([#​1975](0xERR0R/blocky#1975)) ([@​manofthepeace](https://github.com/manofthepeace)) - [`9874212`](0xERR0R/blocky@9874212): fix: use context based versions of net.Listen and net.Dial ([#​1952](0xERR0R/blocky#1952)) ([@​sonjek](https://github.com/sonjek)) ##### Build and dependencies - [`fe67404`](0xERR0R/blocky@fe67404): build(deps): bump actions/checkout from 5 to 6 ([#​1943](0xERR0R/blocky#1943)) ([@​dependabot](https://github.com/dependabot)\[bot]) - [`4752061`](0xERR0R/blocky@4752061): build(deps): bump actions/download-artifact from 6 to 7 ([#​1961](0xERR0R/blocky#1961)) ([@​dependabot](https://github.com/dependabot)\[bot]) - [`d459311`](0xERR0R/blocky@d459311): build(deps): bump actions/download-artifact from 7 to 8 ([#​2000](0xERR0R/blocky#2000)) ([@​dependabot](https://github.com/dependabot)\[bot]) - [`fa1614b`](0xERR0R/blocky@fa1614b): build(deps): bump actions/upload-artifact from 5 to 6 ([#​1960](0xERR0R/blocky#1960)) ([@​dependabot](https://github.com/dependabot)\[bot]) - [`11b6f92`](0xERR0R/blocky@11b6f92): build(deps): bump actions/upload-artifact from 6 to 7 ([#​1998](0xERR0R/blocky#1998)) ([@​dependabot](https://github.com/dependabot)\[bot]) - [`e83805c`](0xERR0R/blocky@e83805c): build(deps): bump filippo.io/edwards25519 from 1.1.0 to 1.1.1 ([#​1992](0xERR0R/blocky#1992)) ([@​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 ([#​1976](0xERR0R/blocky#1976)) ([@​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 ([#​1978](0xERR0R/blocky#1978)) ([@​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 ([#​1996](0xERR0R/blocky#1996)) ([@​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 ([#​1987](0xERR0R/blocky#1987)) ([@​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 ([#​1972](0xERR0R/blocky#1972)) ([@​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 ([#​1985](0xERR0R/blocky#1985)) ([@​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 ([#​1959](0xERR0R/blocky#1959)) ([@​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 ([#​1968](0xERR0R/blocky#1968)) ([@​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 ([#​1977](0xERR0R/blocky#1977)) ([@​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 ([#​1956](0xERR0R/blocky#1956)) ([@​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 ([#​1966](0xERR0R/blocky#1966)) ([@​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 ([#​1970](0xERR0R/blocky#1970)) ([@​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 ([#​1981](0xERR0R/blocky#1981)) ([@​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 ([#​1955](0xERR0R/blocky#1955)) ([@​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 ([#​1967](0xERR0R/blocky#1967)) ([@​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 ([#​1982](0xERR0R/blocky#1982)) ([@​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 ([#​1974](0xERR0R/blocky#1974)) ([@​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 ([#​1953](0xERR0R/blocky#1953)) ([@​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 ([#​1939](0xERR0R/blocky#1939)) ([@​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 ([#​1957](0xERR0R/blocky#1957)) ([@​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 ([#​1971](0xERR0R/blocky#1971)) ([@​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 ([#​1988](0xERR0R/blocky#1988)) ([@​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 ([#​1997](0xERR0R/blocky#1997)) ([@​dependabot](https://github.com/dependabot)\[bot]) ##### Misc - [`439e99b`](0xERR0R/blocky@439e99b): Add Blocky Visor to web UIs section in installation.md ([#​1993](0xERR0R/blocky#1993)) ([@​JCHHeilmann](https://github.com/JCHHeilmann)) - [`ced469f`](0xERR0R/blocky@ced469f): refactor: centralize DNS response creation logic with helper functions ([#​1942](0xERR0R/blocky#1942)) ([@​0xERR0R](https://github.com/0xERR0R)) - [`3075c38`](0xERR0R/blocky@3075c38): refactor: clean up obsolete Go syntax ([#​1951](0xERR0R/blocky#1951)) ([@​sonjek](https://github.com/sonjek)) - [`9fe42a8`](0xERR0R/blocky@9fe42a8): refactor: simplify code for improved readability and maintainability ([#​1945](0xERR0R/blocky#1945)) ([@​0xERR0R](https://github.com/0xERR0R)) - [`6581668`](0xERR0R/blocky@6581668): refactor: use mockery for mocks ([#​1944](0xERR0R/blocky#1944)) ([@​0xERR0R](https://github.com/0xERR0R)) - [`55ab95e`](0xERR0R/blocky@55ab95e): test(metrics): Prometheus metrics ([#​1868](0xERR0R/blocky#1868)) ([@​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>
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 ([#​1941](0xERR0R/blocky#1941)) ([@​0xERR0R](https://github.com/0xERR0R)) - [`011e3eb`](0xERR0R/blocky@011e3eb): feat: implement DNS64 support ([#​1933](0xERR0R/blocky#1933)) ([@​0xERR0R](https://github.com/0xERR0R)) - [`e199445`](0xERR0R/blocky@e199445): feat: improve IP parsing from X-Forwarded-For header ([#​1940](0xERR0R/blocky#1940)) ([@​0xERR0R](https://github.com/0xERR0R)) ##### Bug fixes - [`257fe07`](0xERR0R/blocky@257fe07): fix: Incorrect rate data shown on Grafana dashboards ([#​1948](0xERR0R/blocky#1948)) ([@​mattdy](https://github.com/mattdy)) - [`1a4d22d`](0xERR0R/blocky@1a4d22d): fix: db automigration with timescaledb ([#​1975](0xERR0R/blocky#1975)) ([@​manofthepeace](https://github.com/manofthepeace)) - [`9874212`](0xERR0R/blocky@9874212): fix: use context based versions of net.Listen and net.Dial ([#​1952](0xERR0R/blocky#1952)) ([@​sonjek](https://github.com/sonjek)) ##### Build and dependencies - [`fe67404`](0xERR0R/blocky@fe67404): build(deps): bump actions/checkout from 5 to 6 ([#​1943](0xERR0R/blocky#1943)) ([@​dependabot](https://github.com/dependabot)\[bot]) - [`4752061`](0xERR0R/blocky@4752061): build(deps): bump actions/download-artifact from 6 to 7 ([#​1961](0xERR0R/blocky#1961)) ([@​dependabot](https://github.com/dependabot)\[bot]) - [`d459311`](0xERR0R/blocky@d459311): build(deps): bump actions/download-artifact from 7 to 8 ([#​2000](0xERR0R/blocky#2000)) ([@​dependabot](https://github.com/dependabot)\[bot]) - [`fa1614b`](0xERR0R/blocky@fa1614b): build(deps): bump actions/upload-artifact from 5 to 6 ([#​1960](0xERR0R/blocky#1960)) ([@​dependabot](https://github.com/dependabot)\[bot]) - [`11b6f92`](0xERR0R/blocky@11b6f92): build(deps): bump actions/upload-artifact from 6 to 7 ([#​1998](0xERR0R/blocky#1998)) ([@​dependabot](https://github.com/dependabot)\[bot]) - [`e83805c`](0xERR0R/blocky@e83805c): build(deps): bump filippo.io/edwards25519 from 1.1.0 to 1.1.1 ([#​1992](0xERR0R/blocky#1992)) ([@​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 ([#​1976](0xERR0R/blocky#1976)) ([@​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 ([#​1978](0xERR0R/blocky#1978)) ([@​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 ([#​1996](0xERR0R/blocky#1996)) ([@​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 ([#​1987](0xERR0R/blocky#1987)) ([@​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 ([#​1972](0xERR0R/blocky#1972)) ([@​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 ([#​1985](0xERR0R/blocky#1985)) ([@​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 ([#​1959](0xERR0R/blocky#1959)) ([@​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 ([#​1968](0xERR0R/blocky#1968)) ([@​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 ([#​1977](0xERR0R/blocky#1977)) ([@​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 ([#​1956](0xERR0R/blocky#1956)) ([@​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 ([#​1966](0xERR0R/blocky#1966)) ([@​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 ([#​1970](0xERR0R/blocky#1970)) ([@​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 ([#​1981](0xERR0R/blocky#1981)) ([@​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 ([#​1955](0xERR0R/blocky#1955)) ([@​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 ([#​1967](0xERR0R/blocky#1967)) ([@​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 ([#​1982](0xERR0R/blocky#1982)) ([@​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 ([#​1974](0xERR0R/blocky#1974)) ([@​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 ([#​1953](0xERR0R/blocky#1953)) ([@​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 ([#​1939](0xERR0R/blocky#1939)) ([@​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 ([#​1957](0xERR0R/blocky#1957)) ([@​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 ([#​1971](0xERR0R/blocky#1971)) ([@​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 ([#​1988](0xERR0R/blocky#1988)) ([@​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 ([#​1997](0xERR0R/blocky#1997)) ([@​dependabot](https://github.com/dependabot)\[bot]) ##### Misc - [`439e99b`](0xERR0R/blocky@439e99b): Add Blocky Visor to web UIs section in installation.md ([#​1993](0xERR0R/blocky#1993)) ([@​JCHHeilmann](https://github.com/JCHHeilmann)) - [`ced469f`](0xERR0R/blocky@ced469f): refactor: centralize DNS response creation logic with helper functions ([#​1942](0xERR0R/blocky#1942)) ([@​0xERR0R](https://github.com/0xERR0R)) - [`3075c38`](0xERR0R/blocky@3075c38): refactor: clean up obsolete Go syntax ([#​1951](0xERR0R/blocky#1951)) ([@​sonjek](https://github.com/sonjek)) - [`9fe42a8`](0xERR0R/blocky@9fe42a8): refactor: simplify code for improved readability and maintainability ([#​1945](0xERR0R/blocky#1945)) ([@​0xERR0R](https://github.com/0xERR0R)) - [`6581668`](0xERR0R/blocky@6581668): refactor: use mockery for mocks ([#​1944](0xERR0R/blocky#1944)) ([@​0xERR0R](https://github.com/0xERR0R)) - [`55ab95e`](0xERR0R/blocky@55ab95e): test(metrics): Prometheus metrics ([#​1868](0xERR0R/blocky#1868)) ([@​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>
related to #1938
adds support for "Forwarded" header (RFC 7239)