README.md aktualisiert

This commit is contained in:
M_Viper 2025-03-08 15:45:33 +00:00
parent 3a59af1349
commit ffece3e544

136
README.md
View File

@ -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 <repository-url>
cd <repository-name>
```
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 <Benutzername>`: Fügt einen Benutzer zur Whitelist hinzu (verhindert Accountsharing-Überprüfung).
- `/remove_whitelist <Benutzername>`: Entfernt einen Benutzer von der Whitelist.
- `/unban <Benutzername>`: 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