Skip to content

Add ark-429-autoban plugin (v0.1.1, re-submission of #77 after security fixes) - #85

Merged
LTbinglingfeng merged 1 commit into
router-for-me:mainfrom
wyx1818:add-ark-429-autoban
Sep 7, 2026
Merged

Add ark-429-autoban plugin (v0.1.1, re-submission of #77 after security fixes)#85
LTbinglingfeng merged 1 commit into
router-for-me:mainfrom
wyx1818:add-ark-429-autoban

Conversation

@wyx1818

@wyx1818 wyx1818 commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Plugin

Field Value
id ark-429-autoban
repository https://github.com/wyx1818/ark-429-autoban
latest release v0.1.1
license MIT

Re-submission of #77 (closed during the security audit) with the audit feedback fully addressed in wyx1818/ark-429-autoban#1:

  • All dynamic state and mutation endpoints (/bans, /unban, /unban-all, /reload-config) moved from the unauthenticated /v0/resource/plugins/ route family to authenticated management routes under /v0/management/plugins/ark-429-autoban/, protected by the CPA Management Key middleware.
  • /v0/resource/plugins/ now serves passive static assets only (status page, css, js).
  • The status page auto-detects the management key from the host management panel (CPA built-in panel and CPA-Manager-Plus are both supported) and sends `Authorization: *** on all dynamic requests; a visible key input with localStorage fallback is provided for standalone use.

What it does

ark-429-autoban is a Scheduler + UsagePlugin for CLIProxyAPI that auto-isolates Volcano Engine ARK API keys on HTTP 429.

When an ARK key returns 429 (quota exhaustion or server overload), the plugin parses the reset time from the response body and temporarily removes that key from the scheduler candidate pool. The key is automatically re-enabled once its reset time passes - no timers needed, ban expiry is checked lazily on each scheduler pick. Bans are also persisted to a JSON file and restored on CPA restart.

Release evidence (v0.1.1)

The v0.1.1 release is published, non-draft, and non-prerelease.

Published assets:

  • ark-429-autoban_0.1.1_linux_amd64.zip
  • checksums.txt

Checksum verification:

ac441a0f3a872a08d70d723a3a6655e1cdeca792294c48ec9b42ac433454bab5  ark-429-autoban_0.1.1_linux_amd64.zip

The ZIP contains exactly one correctly named dynamic library at its root:

ark-429-autoban_0.1.1_linux_amd64.zip -> ark-429-autoban.so

Validation

  • registry.json parses successfully
  • Plugin ID satisfies the registry ID rules and is unique
  • Repository URL matches the required https://github.com/{owner}/{repo} format
  • version field omitted so CPA resolves the latest release tag
  • Release tag follows v<version> format (v0.1.1)
  • Checksum verified with sha256sum -c checksums.txt
  • ZIP root contains only ark-429-autoban.so
  • git diff --check passes
  • This PR changes only registry.json (adds one entry, no modifications to existing entries)

@LTbinglingfeng
LTbinglingfeng merged commit 96882fa into router-for-me:main Sep 7, 2026
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.

2 participants