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-Anbieter",
"captchaProviderHint": "Anbieter mit fehlenden .env-Keys erscheinen nicht in der Liste. Google-Keys: RECAPTCHA_SITE_KEY / RECAPTCHA_SECRET_KEY.",
"captchaProviders": {
"MATH": "Mathe-Aufgabe",
"RECAPTCHA_V2": "Google reCAPTCHA v2",
"RECAPTCHA_V3": "Google reCAPTCHA v3",
"HCAPTCHA": "hCaptcha",
"TURNSTILE": "Cloudflare Turnstile"
},
"failAction": "Aktion bei Fehlschlag",
"failActions": {
"KICK": "Kick",
@@ -486,7 +495,15 @@
"channelId": "Verifizierungs-Kanal",
"verifiedRoleId": "Rolle nach Verifizierung",
"unverifiedRoleId": "Rolle vor Verifizierung",
"minAccountAgeDays": "Mindest-Accountalter (Tage)"
"minAccountAgeDays": "Mindest-Accountalter (Tage)",
"altTitle": "Alt-Account-Erkennung",
"altDescription": "Erkennt mögliche Zweitaccounts über gemeinsame Captcha-IP (gesalzen gehasht) und Invite-Cluster. Kein Browser-Fingerprinting.",
"altDetectionEnabled": "Alt-Erkennung aktivieren",
"altBlockOnMatch": "Bei Treffer blockieren",
"altBlockOnMatchHint": "Nutzt die konfigurierte Fehlschlag-Aktion (Kick/Ban/Keine). Aus = nur markieren, trotzdem verifizieren.",
"altIpWindowDays": "IP-Fenster (Tage)",
"altInviteWindowHours": "Invite-Cluster-Fenster (Stunden)",
"altMaxAccountsPerInvite": "Max. Accounts pro Invite (Cluster)"
},
"leveling": {
"title": "Leveling & XP",