diff --git a/README.md b/README.md index a6ad5eb..d6bdc64 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,136 @@ -# plex-anti-account-sharing +# Telegram Plex Bot +Dieser Bot überwacht Plex-Wiedergaben, um Account Sharing zu erkennen und zu verhindern. Er kann Benutzer verwarnen, sperren und bietet ein Dashboard zur Überwachung der Aktivitäten. + +## Funktionen + +- **Account Sharing Erkennung:** Überwacht aktive Plex-Sessions, um festzustellen, ob mehrere Geräte gleichzeitig denselben Account verwenden. +- **Benachrichtigungen:** Sendet Warnungen an einen Telegram-Kanal, wenn Account Sharing erkannt wird. +- **Automatische Sperrung:** Sperrt Benutzer automatisch nach einer bestimmten Anzahl von Verstößen. +- **Whitelist:** Ermöglicht das Hinzufügen von Benutzern zu einer Whitelist, um die Account Sharing-Prüfung zu umgehen. +- **Dashboard:** Bietet ein Web-Dashboard zur Anzeige von Statistiken wie aktive Sessions, gesperrte Benutzer und Verstöße. +- **Wartungsmodus:** Ermöglicht das Anhalten aller Bot-Aktivitäten während der Wartung. +- **Telegram-Befehle:** Bietet verschiedene Telegram-Befehle zur Steuerung des Bots und zur Überwachung des Plex-Servers. + +## Voraussetzungen + +- [Node.js](https://nodejs.org/) +- [npm](https://www.npmjs.com/) (oder [Yarn](https://yarnpkg.com/)) +- Einen Telegram Bot Token (erhalten von [BotFather](https://t.me/botfather)) +- Eine Plex Media Server Instanz +- Eine `.env`-Datei mit den folgenden Umgebungsvariablen: + + ``` + TELEGRAM_BOT_TOKEN=Dein_Telegram_Bot_Token + PLEX_URL=Deine_Plex_URL (z.B. http://localhost:32400) + PLEX_TOKEN=Dein_Plex_Token + TELEGRAM_CHAT_ID=Deine_Telegram_Chat_ID + DASHBOARD_PASSWORD=Dein_Dashboard_Passwort + ``` + +## Installation + +1. **Clone das Repository:** + + ``` + git clone + cd + ``` + +2. **Installiere die Abhängigkeiten:** + + ``` + npm install + ``` + + oder mit Yarn: + + ``` + yarn install + ``` + +3. **Konfiguriere die Umgebungsvariablen:** + + Erstelle eine `.env`-Datei im Hauptverzeichnis des Projekts und füge die erforderlichen Umgebungsvariablen hinzu (siehe "Voraussetzungen"). + +4. **Starte den Bot:** + + ``` + npm start + ``` + + oder mit Yarn: + + ``` + yarn start + ``` + +## Konfiguration + +### .env Datei + +Die `.env`-Datei muss im Hauptverzeichnis des Projekts erstellt werden und die folgenden Variablen enthalten: + +- `TELEGRAM_BOT_TOKEN`: Der Token deines Telegram Bots. Du erhältst diesen von [BotFather](https://t.me/botfather). +- `PLEX_URL`: Die URL zu deinem Plex Media Server. Stelle sicher, dass du das Protokoll (http oder https) angibst. Beispiel: `http://localhost:32400` oder `https://dein-plex-server.de`. +- `PLEX_TOKEN`: Dein Plex Token. Du findest diesen in den Plex Server Einstellungen. +- `TELEGRAM_CHAT_ID`: Die Chat-ID des Telegram-Kanals oder der Gruppe, in dem/der der Bot Benachrichtigungen senden soll. Du kannst diese ID mit einem anderen Bot wie z.B. dem "IDBot" herausfinden. +- `DASHBOARD_PASSWORD`: Das Passwort für den Zugriff auf das Dashboard. + +### Whitelist + +Die Whitelist wird in der Datei `whitelist.json` gespeichert. Du kannst Benutzer manuell hinzufügen oder entfernen, indem du die Datei bearbeitest oder die Telegram-Befehle verwendest. + +### Überwachte Benutzer + +Die Liste der überwachten Benutzer ist im Code in der Variable `monitoredUsers` definiert. Passe diese Liste an, um die Plex-Benutzernamen der Benutzer einzutragen, die auf Account Sharing überwacht werden sollen. + + +## Telegram Befehle + +- `/start`: Startet den Bot. +- `/help`: Zeigt eine Liste der verfügbaren Befehle und eine kurze Beschreibung an. +- `/reload`: Führt eine manuelle Überprüfung aller aktiven Wiedergaben durch. +- `/stats`: Zeigt Statistiken zu aktiven Sessions, gebannten Benutzern, Verstößen und Whitelist-Nutzern an. +- `/whitelist `: Fügt einen Benutzer zur Whitelist hinzu (verhindert Accountsharing-Überprüfung). +- `/remove_whitelist `: Entfernt einen Benutzer von der Whitelist. +- `/unban `: Hebt den Bann für einen Benutzer auf. +- `/multiple_devices`: Zeigt Benutzer mit mehreren Geräten an. +- `/server_status`: Prüft den Status des Plex-Servers. +- `/maintenance`: Aktiviert den Wartungsmodus. +- `/end_maintenance`: Deaktiviert den Wartungsmodus. + +## Dashboard + +Das Dashboard ist unter `/index` auf dem Server erreichbar (z.B. `http://localhost:3000/index`). Du musst das in der `.env` Datei definierte Passwort eingeben, um auf das Dashboard zuzugreifen. Das Dashboard zeigt Statistiken zu aktiven Sessions, gebannten Benutzern, Verstößen, CPU- und RAM-Auslastung des Servers. + +## Funktionsweise + +Der Bot führt regelmäßig die Funktion `checkPlexActivity()` aus, um die aktuellen Plex-Sessions abzurufen. Für jede Session werden folgende Prüfungen durchgeführt: + +1. **Whitelist-Prüfung:** Wenn der Benutzer auf der Whitelist steht, werden keine weiteren Prüfungen durchgeführt. +2. **Account Sharing-Prüfung:** Wenn der Benutzer mehr als eine aktive Session hat, wird dies als Account Sharing gewertet. +3. **Verstöße zählen:** Bei jedem erkannten Account Sharing wird ein Verstoß für den Benutzer gezählt. +4. **Automatische Sperrung:** Wenn ein Benutzer eine bestimmte Anzahl von Verstößen erreicht hat, wird er automatisch für eine bestimmte Zeit gesperrt. +5. **Benachrichtigungen:** Der Bot sendet Benachrichtigungen an den Telegram-Kanal über erkannte Account Sharing-Vorfälle, Warnungen und Sperrungen. + +## Erweiterungen + +- **Erweiterte Konfiguration:** Implementiere eine Konfigurationsdatei, um weitere Einstellungen wie die Anzahl der zulässigen Verstöße, die Dauer der Sperre und die Intervalle für die Prüfungen zu konfigurieren. +- **Datenbankintegration:** Verwende eine Datenbank zur Speicherung von Benutzerdaten, Verstößen und Sperrungen, um die Datenpersistenz zu verbessern. +- **Benutzerfreundlichere Befehle:** Implementiere komplexere Befehle mit Inline-Tastaturen für eine einfachere Bedienung. +- **Anpassbare Nachrichten:** Ermögliche die Anpassung der Nachrichten, die der Bot an den Telegram-Kanal sendet. + +## Fehlerbehebung + +- **Bot startet nicht:** Stelle sicher, dass alle Umgebungsvariablen in der `.env`-Datei korrekt konfiguriert sind. +- **Bot sendet keine Benachrichtigungen:** Überprüfe, ob der Bot die Berechtigung hat, Nachrichten an den Telegram-Kanal zu senden. +- **Dashboard ist nicht erreichbar:** Stelle sicher, dass der Server läuft und dass die Firewall den Zugriff auf den Port (standardmäßig 3000) erlaubt. + +## Lizenz + +[MIT](LICENSE) + +## Autor + +M_Viper