docs/features/Pull-System

Pull-System

Discord Pull-System 🚀

Das KiroCloud Pull-System ist eines der mächtigsten Werkzeuge für Community-Manager. Es ermöglicht Administratoren, Benutzer automatisch oder manuell zu ihrem primären Discord-Server hinzuzufügen, sofern diese Benutzer die entsprechende Berechtigung erteilt haben.

Dies ist besonders nützlich für:

  • Community-Wachstum: Nutze KiroCloud als Gatekeeper oder Giveaway-Portal und leite Benutzer nahtlos in deinen Server weiter.
  • Backup-Server: Im Falle einer Server-Löschung können alle Benutzer, die jemals auf KiroCloud angemeldet waren, per Knopfdruck auf einen neuen Server "gepullt" werden.

Wie funktioniert das System?

Das Pull-System basiert auf der Discord OAuth2 API und dem Scope guilds.join.

1. Benutzer-Autorisierung (Der Opt-In)

Wenn sich ein Benutzer auf KiroCloud anmeldet, wird er zu Discord weitergeleitet. Die URL, die dabei aufgerufen wird, enthält den Scope identify email guilds.join.

  • Wenn der Benutzer auf "Autorisieren" klickt, gewährt er KiroCloud die Erlaubnis, seinen Account zu Servern hinzuzufügen.
  • KiroCloud erhält dafür ein Access Token und ein Refresh Token. Diese Tokens werden via AES-256 (GCM) verschlüsselt in der Datenbank (users-Tabelle) gespeichert.

2. Auto-Pull (Beim Login)

Wenn die Auto-Pull-Funktion im Dashboard aktiviert ist, passiert Folgendes bei jedem Login:

  1. Das System prüft die konfigurierten pullConfigs.
  2. Befindet sich der Haupt-Server (discordMainGuildId) in der Konfiguration und ist Auto-Pull aktiviert?
  3. Wenn ja, wird im Hintergrund ein API-Call an die Discord-API gesendet: PUT /guilds/{guild.id}/members/{user.id}
  4. Der Benutzer ist nun Mitglied des Servers, falls er es nicht ohnehin schon war.

!NOTE Das Auto-Pull läuft asynchron ab. Der Login-Prozess des Benutzers wird nicht verzögert, selbst wenn der Pull fehlschlägt oder Discord langsam antwortet.

3. Manueller Bulk-Pull

Administratoren können im Admin-Bereich einen "Bulk-Pull" starten. Dies ist die oben erwähnte Backup-Funktion.

  1. Der Admin wählt den Ziel-Server aus.
  2. Das System startet einen Background-Worker (implementiert über Nitro-Tasks).
  3. Der Worker iteriert über alle Benutzer in der Datenbank, die ein gültiges Access-Token haben.
  4. Für jeden Benutzer wird der Pull-Request gesendet.

Sicherheit & Limits

Discord setzt strikte Rate-Limits für das Hinzufügen von Benutzern über API.

  • Rate-Limiting: Das Bulk-Pull-System baut eine künstliche Verzögerung (1000ms bis 1500ms) zwischen jedem Pull ein. Dies verhindert, dass dein Bot von Discord wegen Spam markiert wird.
  • Verschlüsselung: Alle OAuth-Tokens (discordAccessTokenEnc, discordRefreshTokenEnc) sind in der Datenbank asymmetrisch verschlüsselt. Wenn jemand die Datenbank kopiert, sind die Tokens unbrauchbar, da der Entschlüsselungs-Key im Environment-File des Servers liegt.
  • Verfallene Tokens: Ein Access Token ist nur begrenzt gültig. Das System nutzt das Refresh-Token, um im Hintergrund stumm ein neues Access Token anzufordern, kurz bevor der Pull ausgeführt wird, falls das alte abgelaufen ist.
  • Audit Logging: Jeder manuelle Bulk-Pull wird unveränderbar in der Audit-Log-Tabelle gespeichert, inklusive der IP-Adresse des Admins.
Cookie-Einstellungen

Wir verwenden Cookies, um deine Erfahrung zu verbessern und unsere Dienste optimal anzubieten. Du kannst deine Einstellungen jederzeit anpassen.

main/e609418