Skip to content

[major] Prefer multi-layer routing for v2#99

Merged
joecorall merged 1 commit into
mainfrom
major-v2-multilayer-routing
Jun 24, 2026
Merged

[major] Prefer multi-layer routing for v2#99
joecorall merged 1 commit into
mainfrom
major-v2-multilayer-routing

Conversation

@joecorall

@joecorall joecorall commented Jun 24, 2026

Copy link
Copy Markdown
Member

Breaking changes

  • Requires Traefik v3.6 or newer so deployments can use multi-layer routing parentRefs.

  • Removes ipv4subnetMask, ipv6subnetMask, and rateLimit. Given the distributed nature of bots these config values have become additional config/logic that adds no real value. Most crawlers at this point are issuing a small amount of requests per IP across a wide range of subnets.

  • Removes enableStateReconciliation and all state reconciliation code. persistentStateFile is now restart persistence only, not multi-instance coordination. This functionality is superseded by Multi-Layer Routing, which is the preferred multi-service protection model: attach captcha-protect to one parent router and route accepted traffic through child routers.

Implementation notes

  • Adds first-class CI coverage for the documented file-provider multi-layer routing config across Traefik v3.6, v3.7, and latest.

  • Drops older Traefik integration targets below v3.6.

  • Keeps Docker label smoke coverage for single-router provider configuration.

  • Updates README and plugin metadata for the v2 behavior and Traefik baseline.

Closes #95

@libops libops deleted a comment from github-actions Bot Jun 24, 2026
@joecorall joecorall force-pushed the major-v2-multilayer-routing branch from fd81787 to 5b22073 Compare June 24, 2026 11:58
Breaking changes:

- Requires Traefik v3.6 or newer so deployments can use multi-layer routing parentRefs.

- Removes `ipv4subnetMask`, `ipv6subnetMask`, and `rateLimit`. Given the distributed nature of bots these config values have become additional config/logic that adds no real value. Most crawlers at this point are issuing a small amount of requests per IP across a wide range of subnets.

- Removes `enableStateReconciliation` and all state reconciliation code. `persistentStateFile` is now restart persistence only, not multi-instance coordination.

- Makes Traefik multi-layer routing the preferred multi-service protection model: attach captcha-protect to one parent router and route accepted traffic through child routers.

Implementation notes:

- Adds first-class CI coverage for the documented file-provider multi-layer routing config across Traefik v3.6, v3.7, and latest.

- Drops older Traefik integration targets below v3.6.

- Keeps Docker label smoke coverage for single-router provider configuration.

- Updates README and plugin metadata for the v2 behavior and Traefik baseline.

Closes #95
@joecorall joecorall force-pushed the major-v2-multilayer-routing branch from 5b22073 to eaebac8 Compare June 24, 2026 11:59
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.10526% with 3 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
internal/state/state.go 70.00% 0 Missing and 3 partials ⚠️
Files with missing lines Coverage Δ
main.go 81.18% <100.00%> (-2.40%) ⬇️
internal/state/state.go 68.71% <70.00%> (-0.26%) ⬇️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@joecorall joecorall merged commit 8fcd1be into main Jun 24, 2026
7 checks passed
@joecorall joecorall deleted the major-v2-multilayer-routing branch June 24, 2026 18:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Traefik captcha-plugin memory use

2 participants