v2.0.0-rc9

kaifcodec/user-scannerv2.0.0-rc9Nov 5, 2025by qdm12

AI Summary

This release focuses on stability improvements, including fixing port listening (non-53), optimizing memory usage in filters, and updating the Go and Alpine environments. It also reinstates the 'plain' upstream type.

Key Highlights

  • Listening on ports other than 53 now works correctly.
  • Re-added 'plain' upstream type for debugging and Gluetun.
  • Private DNS servers prioritized for local resolution middleware.
  • Go upgraded from 1.23 to 1.25 and Alpine from 3.20 to 3.22.
  • Map filter optimized to filter by IP version.

New Features

  • Round trip duration added to error messages in pkg/exchanger.
  • pkg/middlewares/filter/mapfilter optimized for IP version filtering.
  • pkg/middlewares/localdns now only uses DNS servers with private IP addresses.
  • pkg/nameserver now detects both private and public DNS servers on Windows.
  • Blockbuilder skips malformed hostnames instead of returning an error.

Full Release Notes

## Features

- Re-add "plain" upstream type (needed for debugging and Gluetun)
- pkg/exchanger: add round trip duration to error message
- pkg/middlewares/filter/mapfilter
  - map filter by IP version to reduce memory usage

## Fixes

- Listening on another port than 53 now works
- lowercase all question Name field to avoid any oddities
- internal/dns: loop fixed to handle error before subsequent start completes (fixing whole program being stuck at starting steps)
- do not modify system wide nameservers on Unix systems to avoid permission issues
- internal/support/ipv6:
  - try both cloudflare and google in case one is not available (hum hum cloudflare)
  - detection failure logged as warning not error
- pkg/blockbuilder: skip malformed hostnames instead of returning an error
- pkg/middlewares/localdns:
  - only use DNS servers with a private IP address
  - lowercase all fqdns before checking for locality
- pkg/middlewares/filter/mapfilter
  - blocked ip prefixes metric fixed
- pkg/nameserver: get both private and public DNS servers on Windows

## Maintenance

- pkg/dot: revert to use `tls.Client` and finer steps for more control
- pkg/blockbuilder: optimized code scanning big files line by line
- bump Go from 1.23 to 1.25
- upgrade linter to v2.4.0
- Dependencies
  - bump qdm12/goservices to 6bee97bd4978 in order to have the httpserver handler context cancelation feature
- CI
  - bump actions/setup-go from v2 to v6
  - use Go version from go.mod
  - bump Alpine from 3.20 to 3.22
  - pull container images at build time from ghcr.io when possible
- disable package comments requirement warning in dev container
- upgrade dev container to v0.21 
  - Go upgraded from 1.23 to 1.25
  - golangci-lint upgraded to v2.4.0
  - Alpine upgraded from 3.20 to 3.22
  - Disable package comment requirement by gopls' staticcheck
  - Pull container image from ghcr.io