# SCUM Server Logs System

Dieses System ermöglicht es, Log-Dateien vom SCUM Server über SFTP abzurufen und in einer Web-Oberfläche anzuzeigen.

## Features

- **SFTP-Verbindung** zum SCUM Server (79.127.241.203:8822)
- **Automatisches Parsen** von Log-Dateien (*.log)
- **Web-Interface** zur Anzeige und Filterung der Logs
- **Echtzeit-Updates** alle 10 Sekunden
- **Erweiterte Filterung** nach Typ, Spieler, Datei und Aktion
- **Statistiken** und Übersichten

## Installation

### 1. Datenbank-Migration ausführen

```bash
php bin/console doctrine:migrations:migrate
```

### 2. SFTP-Verbindung testen

```bash
php bin/console app:fetch-server-logs --test
```

### 3. Logs manuell abrufen

```bash
# Alle Log-Dateien abrufen
php bin/console app:fetch-server-logs

# Nur eine bestimmte Datei
php bin/console app:fetch-server-logs --file=server.log

# Mit Force-Modus (überschreibt existierende)
php bin/console app:fetch-server-logs --force
```

## Verwendung

### Web-Interface

Das Web-Interface ist unter `/server-logs` verfügbar und bietet:

- **Übersicht** aller Server-Logs
- **Filter** nach Log-Typ, Spieler, Datei und Aktion
- **Statistiken** über Log-Aktivitäten
- **Pagination** für große Datenmengen
- **Auto-Refresh** alle 30 Sekunden

### Daemon-Modus (Empfohlen)

Für kontinuierliches Monitoring:

```bash
php scripts/fetch_logs_daemon.php
```

Der Daemon läuft kontinuierlich und holt alle 10 Sekunden neue Logs vom Server.

### API-Endpunkt

Logs können auch über die API abgerufen werden:

```
GET /server-logs/api/latest?limit=50
```

## Log-Typen

Das System erkennt automatisch verschiedene Log-Typen:

- **ERROR** - Fehler und Probleme
- **WARNING** - Warnungen
- **ADMIN** - Admin-Aktionen (Kick, Ban, etc.)
- **CONNECTION** - Spieler-Verbindungen
- **COMBAT** - Kampf-Ereignisse
- **CHAT** - Chat-Nachrichten
- **INFO** - Allgemeine Informationen

## Konfiguration

Die SFTP-Verbindung ist in `src/Service/SftpService.php` konfiguriert:

```php
private string $host = '79.127.241.203';
private int $port = 8822;
private string $username = 'dome';
private string $password = 'znyde87';
private string $logPath = '/SaveFiles/Logs';
```

## Log-Parsing

Das System kann verschiedene Log-Formate parsen:

### Standard-Format
```
[2024-01-01 12:00:00] [INFO] Player "Spielername" connected
```

### Einfaches Format
```
[2024-01-01 12:00:00] Player "Spielername" connected
```

## Extrahierte Informationen

Aus den Logs werden automatisch extrahiert:

- **Spielername** - Name des Spielers
- **Steam ID** - Steam-Identifier
- **Aktion** - Art der Aktivität
- **Koordinaten** - Position im Spiel
- **IP-Adresse** - Spieler-IP
- **Metadaten** - Zusätzliche Informationen

## Wartung

### Alte Logs löschen

```bash
php bin/console app:fetch-server-logs --cleanup
```

Löscht Logs, die älter als 30 Tage sind.

### Datenbank-Optimierung

Regelmäßige Wartung der Datenbank:

```sql
-- Indizes optimieren
OPTIMIZE TABLE server_logs;

-- Alte Logs löschen (älter als 30 Tage)
DELETE FROM server_logs WHERE timestamp < DATE_SUB(NOW(), INTERVAL 30 DAY);
```

## Troubleshooting

### SFTP-Verbindung fehlgeschlagen

1. Überprüfe die SFTP-Credentials in `SftpService.php`
2. Stelle sicher, dass der Server erreichbar ist
3. Teste die Verbindung manuell:

```bash
php bin/console app:fetch-server-logs --test
```

### Keine Logs angezeigt

1. Führe den Fetch-Command aus:

```bash
php bin/console app:fetch-server-logs
```

2. Überprüfe die Datenbank-Verbindung
3. Schaue in die Symfony-Logs:

```bash
tail -f var/log/dev.log
```

### Performance-Probleme

1. Reduziere die Fetch-Frequenz im Daemon
2. Aktiviere Datenbank-Indizes
3. Lösche alte Logs regelmäßig
4. Verwende Pagination im Web-Interface

## Sicherheit

- SFTP-Credentials sind im Code hardcodiert (sollte in .env verschoben werden)
- Logs enthalten möglicherweise sensitive Informationen
- Zugriff auf das Web-Interface sollte beschränkt werden
- Regelmäßige Backups der Log-Datenbank empfohlen

## Erweiterungen

Mögliche Erweiterungen:

- **E-Mail-Benachrichtigungen** bei bestimmten Events
- **Discord-Integration** für Admin-Benachrichtigungen
- **Grafische Statistiken** mit Charts
- **Export-Funktionen** für Logs
- **Erweiterte Suche** mit Volltext-Index
- **Log-Analyse** für Cheat-Erkennung 