v2.0.0-rc10

BITyia/DroneSplatv2.0.0-rc10Dec 22, 2025by qdm12

Upgrading?

Release notes summary

This release candidate introduces connection pooling for DNS over TLS, adds new configuration options for health checks and rebinding protection, and refines logging behaviors. It also includes bug fixes for TLD classification, Windows IPv6 support, and dashboard updates.

Key Highlights

  • DNS over TLS now utilizes a connection pool to reuse TCP connections for better performance.
  • New configuration options `HEALTH_SERVER_ADDRESS` and `REBINDING_PROTECTION_EXEMPT_HOSTNAMES` are available.
  • Logging behavior is adjusted to debug level for common I/O timeouts and blocked elements now include reasons.
  • Fixes for local TLD classification and Windows-specific IPv6 error handling.
  • Grafana dashboard schema upgraded to version 3 with improved plain DNS section.

Breaking Changes

  • The `pkg/nameserver.GetDNSServers` method now returns `[]netip.Addr` instead of `[]netip.AddrPort`.
  • The `pkg/nameserver.GetDNSServers` method now returns an error, whereas it previously returned only the address list.

New Features

  • DNS over TLS connection pooling implementation.
  • Added `HEALTH_SERVER_ADDRESS` configuration option.
  • Added `REBINDING_PROTECTION_EXEMPT_HOSTNAMES` configuration option.
  • Middleware filter now logs blocked elements with a reason.

Full Release Notes

## Features

- DNS over TLS now uses a pool of connections to re-use TCP connections when possible (#150)
- `HEALTH_SERVER_ADDRESS` option, defaulting to `127.0.0.1:9999`
- by default log i/o timeout errors are logged at debug level because these are fairly common
- `REBINDING_PROTECTION_EXEMPT_HOSTNAMES` option
- `pkg/middlewares/filter`: log blocked elements with a reason

## Fixes

- `internal/local`: "site" and "network" TLDs are public, not local
- `pkg/middlewares/localdns`:
  - do not log request twice on errors
  - do not debug log NXDOMAIN coded responses since these happen often especially with search domains
- `internal/support/ipv6`: handle Windows error message
- Grafana dashboard plain DNS section updated

## Go API breaking changes

- `pkg/nameserver`: `GetDNSServers`
  - does not return localhost IPs if no nameserver is found 
  - returns an eventual error
  - returns []netip.Addr instead of []netip.AddrPort since it can only be an ip address without port

## Maintenance

- Grafana JSON dashboard upgraded to newer schema version 3
- Fix documentation URLs and CI links check
- bump markdownlint from v11 to v21

Related Repositories