Enhance verification system with multi-provider support and alt-account detection

- Added support for multiple captcha providers including Google reCAPTCHA (v2 and v3), hCaptcha, and Cloudflare Turnstile.
- Introduced new fields in the verification configuration for selecting captcha providers and enabling alt-account detection.
- Implemented logic to handle verification attempts and flag potential alt accounts based on IP and invite code analysis.
- Updated environment configuration to include necessary keys for captcha providers.
- Enhanced the user interface to allow selection of captcha providers in the verification setup.
- Improved backend handling of verification records to store additional data related to captcha provider usage.
This commit is contained in:
smueller
2026-07-23 11:28:58 +02:00
parent e24f99ad38
commit 04e9ffad28
27 changed files with 1274 additions and 207 deletions

View File

@@ -477,6 +477,15 @@
"BUTTON": "Button",
"CAPTCHA": "Captcha (WebUI)"
},
"captchaProvider": "Captcha provider",
"captchaProviderHint": "Providers without .env keys are hidden. Google keys: RECAPTCHA_SITE_KEY / RECAPTCHA_SECRET_KEY.",
"captchaProviders": {
"MATH": "Math challenge",
"RECAPTCHA_V2": "Google reCAPTCHA v2",
"RECAPTCHA_V3": "Google reCAPTCHA v3",
"HCAPTCHA": "hCaptcha",
"TURNSTILE": "Cloudflare Turnstile"
},
"failAction": "Action on failure",
"failActions": {
"KICK": "Kick",
@@ -486,7 +495,15 @@
"channelId": "Verification channel",
"verifiedRoleId": "Role after verification",
"unverifiedRoleId": "Role before verification",
"minAccountAgeDays": "Minimum account age (days)"
"minAccountAgeDays": "Minimum account age (days)",
"altTitle": "Alt-account detection",
"altDescription": "Flags likely alternate accounts via shared captcha IP (salted hash) and invite clustering. No browser fingerprinting.",
"altDetectionEnabled": "Enable alt detection",
"altBlockOnMatch": "Block on match",
"altBlockOnMatchHint": "Uses the configured fail action (Kick/Ban/None). Off = flag only, still verify.",
"altIpWindowDays": "IP window (days)",
"altInviteWindowHours": "Invite cluster window (hours)",
"altMaxAccountsPerInvite": "Max accounts per invite (cluster)"
},
"leveling": {
"title": "Leveling & XP",