1. Sidebar (Seitenleiste)
Die Sidebar ist die permanente Navigationsleiste auf der linken Seite der Anwendung. Sie und in dunklem Design gehalten.
1.1 Logo
Ganz oben in der Sidebar wird das Zenith-Logo angezeigt (Pfeil + Berg + "ZENITH" Schriftzug). Das Logo und dient als visuelle Markenidentifikation.
1.2 Navigationsmenü
Unterhalb des Logos befindet sich die vertikale Navigationsliste. Die Einträge sind in logische Gruppen unterteilt, getrennt durch unsichtbare Abstandshalter:
Hauptbereiche
| Icon | Menüpunkt | Beschreibung |
|---|---|---|
| 📊 | Dashboard | Kommandozentrale — Übersicht über alle Systeme |
| 📤 | Upload | Upload-Warteschlange verwalten, Dateien/Ordner hinzufügen |
| ⬇ | Download | NZB-Dateien importieren und herunterladen |
| ☁ | Cloud-Backup | Backups auf Cloud-Speicher (Dropbox, GDrive, etc.) |
| 📈 | Statistik | Upload-Verlauf, Geschwindigkeitstrends, Datenmengen |
Verbindung
| Icon | Menüpunkt | Beschreibung |
|---|---|---|
| 🛡 | VPN Guard | VPN-Verbindung verwalten, Kill-Switch konfigurieren |
| 🔗 | Remote-Eingänge | RSS-/Newznab-Feeds für automatische Downloads konfigurieren |
Automatisierung
| Icon | Menüpunkt | Beschreibung |
|---|---|---|
| 📝 | Auto-Post | Automatisches Posten auf Foren nach Upload-Abschluss |
Benachrichtigungen
| Icon | Menüpunkt | Beschreibung |
|---|---|---|
| 🔔 | Webhooks | Webhook-Benachrichtigungen (Discord, Telegram, etc.) |
System
| Icon | Menüpunkt | Beschreibung |
|---|---|---|
| ⚙ | Einstellungen | Provider, Upload/Download-Einstellungen, Überwachungsordner |
| 🔑 | Lizenz | Lizenzschlüssel eingeben/aktivieren, Tier anzeigen |
| 🛟 | Support | Fehler melden, Logs einsehen, FAQ |
Aktiver Zustand
- Ausgewählt: Cyan-Textfarbe mit linkem Cyan-Rand und dunklem Hintergrund
- Hover: Leicht aufgehellte Textfarbe
- Normal: Gedämpftes Violett-Grau
1.3 Admin-Sperre (🔓 Admin)
Am unteren Rand der Sidebar befindet sich der Admin-Lock-Button. Damit kann ein Administrator bestimmte Tabs mit einem Passwort sperren, um unbefugte Änderungen zu verhindern.
| Zustand | Anzeige | Funktion |
|---|---|---|
| Kein Passwort gesetzt | 🔓 Admin (grau) | Klick öffnet Admin-Dialog zum Ersteinrichten |
| Entsperrt | 🔓 Admin (grün) | Klick öffnet Admin-Dialog zum Konfigurieren |
| Gesperrt | 🔒 Gesperrt (rot) | Klick öffnet Entsperr-Dialog (Passwort nötig) |
Gesperrte Tabs werden mit einem 🔒 Symbol markiert und können nur nach Eingabe des Admin-Passworts betreten werden.
1.4 Demo-Hinweis
Im DEMO-Modus wird am unteren Rand der Sidebar ein orangefarbener Hinweiskasten angezeigt:
⚠ DEMO VERSION
Eingeschränkte Funktionen
Upgrade für vollen Zugriff
2. Dashboard (Kommandozentrale)
Das Dashboard ist die Startseite der Anwendung und bietet eine Übersicht über alle wichtigen Systeme auf einen Blick. Es ist scrollbar und aktualisiert sich automatisch alle 3 Sekunden.
2.1 VPN-Status-Karte (volle Breite, oben)
Die VPN-Karte zeigt den aktuellen Verbindungsstatus und ermöglicht das schnelle Ein-/Ausschalten des VPN direkt vom Dashboard.
Elemente
| Element | Beschreibung |
|---|---|
| 🛡 Status-Icon | Großes Schild-Symbol |
| Status-Text | "VPN Modus AKTIV" (grün) / "VPN Modus INAKTIV" (grau) / "VPN Verbinde..." (gelb) / "VPN Fehler" (rot) |
| Toggle-Switch | iOS-Style Kippschalter (52×) zum Ein-/Ausschalten |
| Detail-Zeile | Zeigt Tunnel-Typ, IP-Adresse und Kill-Switch-Status |
Zustände
| Zustand | Farbe | Detail-Text |
|---|---|---|
| Inaktiv | Grau | VPN Tunnel: — │ IP: — │ Leak Check: — |
| Verbindet | Gelb | Verbinde zu WIREGUARD... |
| Aktiv | Grün | VPN Tunnel: WIREGUARD │ IP: 185.x.x.x │ Kill-Switch: Aktiv |
| Fehler | Rot | ⚠ Kein WireGuard Interface konfiguriert |
Verhalten
- Bei Aktivierung wird zuerst geprüft, ob ein VPN-Interface konfiguriert ist
- Bei Fehler wird der Toggle automatisch zurückgesetzt
- Der Status synchronisiert sich automatisch mit dem VPN Guard Tab
2.2 Queue-Karte (links, Hauptbereich)
Die Queue-Karte nimmt den größten Teil des Dashboards ein und hat zwei Unter-Tabs: Upload und Download.
Tab-Umschalter
| Button | Aktiv | Inaktiv |
|---|---|---|
| ⬆ Upload | Cyan-Rahmen, heller Hintergrund | Grau, dezent |
| ⬇ Download | Cyan-Rahmen, heller Hintergrund | Grau, dezent |
2.2.1 Upload-Seite
Zeigt alle Upload-Tasks in der Warteschlange als scrollbare Liste.
Task-Einträge
Jeder Task wird als Zeile mit folgenden Infos angezeigt:
- Task-Name (z.B. rudirudi5 (7. Kopie))
- Dateigröße (z.B. 656.9 MB)
- Status (Pending / Packing / Uploading / Completed / Failed / Paused)
- Fortschrittsbalken (0–100%)
- Geschwindigkeit (bei aktiven Uploads)
Bei Klick auf eine Zeile wird der Task selektiert (blau hervorgehoben) und kann einzeln gestartet werden.
Buttons
| Button | Funktion | Beschreibung |
|---|---|---|
| ▶ Alle starten | Queue starten | Startet die gesamte Upload-Queue (grün) |
| ⏸ Alle pausieren | Queue pausieren | Pausiert alle laufenden Uploads (orange) |
| ▶ Alle fortsetzen | Queue fortsetzen | Setzt pausierte Queue fort (grün) |
| ▶ Einzeln starten | Einzel-Task | Startet nur den ausgewählten Task; Queue pausiert danach automatisch wieder |
| ✓ Fertige ausblenden | Aufräumen | Entfernt abgeschlossene Tasks aus der Anzeige |
3-Zustands-Logik: Der Haupt-Button wechselt zwischen "Alle starten" → "Alle pausieren" → "Alle fortsetzen", identisch zum Download-Tab.
2.2.2 Download-Seite
Zeigt alle Download-Tasks (NZB-Importe) in der Warteschlange.
Task-Einträge
- NZB-Name
- Fortschritt (Segments downloaded / total)
- Geschwindigkeit
- Status (Queued / Downloading / Extracting / Completed / Failed)
Buttons
| Button | Funktion |
|---|---|
| ▶ Alle starten | Alle Downloads starten |
| ⏸ Alle pausieren | Alle Downloads pausieren |
| ▶ Downloads fortsetzen | Pausierte Downloads fortsetzen |
| ▶ Einzeln starten | Nur den ausgewählten Download starten |
| ✓ Fertige ausblenden | Abgeschlossene Downloads entfernen |
2.3 Watched Folders (rechts oben)
Zeigt alle konfigurierten Überwachungsordner (Watchfolders) mit individuellen Toggle-Schaltern.
Elemente pro Ordner
| Element | Beschreibung |
|---|---|
| Ordnerpfad | Vollständiger Pfad, z.B. /home/user/Videos/Upload |
| Toggle-Switch | Ein/Aus-Schalter (40×) zum Aktivieren/Deaktivieren |
Verhalten
- Deaktivieren: Entfernt alle ausstehenden Tasks dieses Ordners aus der Queue
- Aktivieren: Startet den Watchdog neu und scannt den Ordner nach vorhandenen Dateien
- Ordner werden über Einstellungen → Überwachungsordner hinzugefügt/entfernt
- Wenn keine Ordner konfiguriert sind:
"No watchfolders configured"
2.4 Disk Space Guard (rechts unten)
Zeigt den aktuellen Speicherplatzverbrauch und enthält mehrere Subsektionen.
2.4.1 Festplatten-Nutzung
| Element | Beschreibung |
|---|---|
| Prozentzahl | Große, zentrierte Anzeige (z.B. 79%) in Cyan |
| "DISK USAGE" | Label unterhalb der Prozentzahl |
| Fortschrittsbalken | Farbverlauf von Blau über Cyan zu Orange. Enthält eine rote Schwellenmarkierung |
| ⚠ Limit: 90% | Konfigurierbarer Schwellenwert — überschreitet die Nutzung diesen Wert, stoppt der Disk Guard das Packing |
| Details | Free: 42.8 Gi │ Total: 60.1 Gi |
2.4.2 Cache
| Element | Beschreibung |
|---|---|
| 📦 Cache: X.X MB | Zeigt die Größe des temporären Cache (temp-Verzeichnis) |
| 🗑 Cache leeren | Button zum Löschen aller temporären Dateien. Roter Text, wird ausgegraut wenn Cache leer ist |
2.4.3 RAM Modus
Unterhalb einer violetten Trennlinie befindet sich die RAM-Modus-Anzeige:
| Element | Beschreibung |
|---|---|
| 🧠 RAM MODUS | Header in Magenta |
| Status | "Aktiv" (wenn tmpfs verfügbar) / "Deaktiviert" / "Nicht verfügbar" |
| Fortschrittsbalken | Violetter Farbverlauf ( →) zeigt RAM-Belegung |
| Details | Free: 7.5 Gi │ Total: 15.5 Gi |
| Max Dateigröße | Maximale Dateigröße die im RAM verarbeitet werden kann (z.B. Max Dateigröße: 5.2 GB) |
RAM-Modus: Wenn aktiviert, werden Upload-Tasks im RAM (tmpfs unter
/dev/shm) verarbeitet statt auf der Festplatte. Das beschleunigt Pack- und PAR2-Vorgänge erheblich, benötigt aber ausreichend freien Arbeitsspeicher.
2.4.4 Speedtest
| Element | Beschreibung |
|---|---|
| ⚡ Speedtest | Button zum Starten eines Geschwindigkeitstests mit dem konfigurierten Usenet-Provider |
2.5 Titelleiste (Custom)
Zenith verwendet eine eigene rahmmenlose Titelleiste (Frameless Window) am oberen Rand:
| Element | Beschreibung |
|---|---|
| Titel | Zenith Uploader vX.X in gedämpftem Blau-Grau |
| — (Minimieren) | Fenster minimieren |
| □ (Maximieren) | Fenster maximieren / wiederherstellen. Auch per Doppelklick auf die Titelleiste |
| ✕ (Schließen) | Fenster schließen (mit Warnung bei aktiven Tasks) |
| Drag & Move | Fenster kann durch Ziehen der Titelleiste verschoben werden |
2.6 Statusleiste (unten)
Am unteren Rand des Fensters befindet sich die permanente Statusleiste:
| Element | Beispiel | Beschreibung |
|---|---|---|
| Queue | 3 verbleibend │ 2 fertig |
Aktive + wartende Upload-Tasks |
| Speed | 63.2 MB/s |
Aktuelle Upload-Geschwindigkeit |
| Remaining | 2.5 GB |
Verbleibende Datenmenge |
| ETA | 00:04:23 |
Geschätzte Restzeit |
| │ | Trenner | Visuelle Trennung Upload/Download |
| ⬇ X | ⬇ 1 verbleibend │ 1 fertig |
Download-Queue-Status |
| ⬇ Speed | ⬇ 45.2 MB/s |
Aktuelle Download-Geschwindigkeit |
2.7 System-Tray-Icon
Zenith zeigt ein System-Tray-Icon in der Taskleiste (neben der Uhr): - Rechtsklick: Kontextmenü mit Show/Hide, Pause/Resume, Quit - Linksklick: Fenster anzeigen/verstecken - Bei aktivierter Option "In Tray minimieren" wird das Fenster beim Schließen nur versteckt
2.8 Werbebanner (nur DEMO)
Im DEMO-Modus wird oberhalb des Inhaltsbereichs (über allen Tabs) ein rotierendes Werbebanner angezeigt: - Wechselt alle 15 Sekunden - Zeigt Upgrade-Angebote und Partnerwerbung - Verschwindet nach Lizenz-Aktivierung
Upload Tab — Upload-Warteschlange
Der Upload-Tab ist die zentrale Verwaltung für alle Upload-Aufgaben. Hier werden Dateien und Ordner hinzugefügt, der Upload-Prozess gesteuert und der Fortschritt überwacht.
1. Seitenübersicht
Der Tab ist vertikal in folgende Bereiche aufgeteilt:
- Header — Titel und Beschreibung
- Steuerleiste — Button zum Hinzufügen von Dateien
- Drag & Drop Zone — Dateien per Maus ablegen
- Upload-Warteschlange — Interaktive Tabelle mit allen Tasks
- Upload Log — Echtzeit-Protokoll aller Aktivitäten
2. Header
| Element | Beschreibung |
|---|---|
| Titel | "Upload Queue" in Cyan |
| Untertitel | "Dateien und Ordner zur Upload-Warteschlange hinzufügen und verwalten." |
3. Steuerleiste
➕ Upload hinzufügen ▾ (Dropdown-Button)
Ein primärer Button mit Dropdown-Menü und zwei Optionen:
| Menüpunkt | Funktion |
|---|---|
| 📄 Datei(en) hinzufügen | Öffnet den System-Dateidialog zur Auswahl einzelner Dateien. Mehrfachauswahl möglich |
| 📁 Ordner hinzufügen | Öffnet den System-Ordnerdialog zur Auswahl eines kompletten Ordners |
Hinzugefügte Dateien/Ordner werden sofort in die Warteschlange eingereiht.
4. Drag & Drop Zone
Unterhalb der Steuerleiste befindet sich eine gestrichelte Drop-Zone:
📥 Dateien oder Ordner hierher ziehen zum Hochladen
Verhalten
- Normal: Gestrichelter Rahmen in Grau
- Beim Darüberziehen: Rahmen wechselt zu Cyan mit leichtem Hintergrund-Glow
- Nach dem Ablegen: Dateien werden automatisch zur Queue hinzugefügt
- Unterstützt Dateien und Ordner gleichzeitig
- Mehrere Dateien können auf einmal abgelegt werden
5. Upload-Warteschlange (Hauptbereich)
Die Warteschlange ist eine interaktive Tabelle in einer dunklen Karte mit abgerundeten Ecken.
5.1 Queue-Header
| Element | Beschreibung |
|---|---|
| 📋 Upload-Warteschlange | Titel links |
| Remaining: X GB | Verbleibende Datenmenge rechts |
| ETA: HH:MM:SS | Geschätzte Restzeit |
| Speed-Indikator | Aktuelle Upload-Geschwindigkeit als animierter Wert |
5.2 Tabellen-Spalten
| Spalte | Breite | Beschreibung |
|---|---|---|
| ✓ (Checkbox) | Auswahl-Checkbox pro Task. Header-Checkbox wählt alle aus/ab | |
| Name | Flexibel | Name der Datei/des Ordners |
| Size | Dateigröße (z.B. 656.9 MB) |
|
| Status | Aktueller Verarbeitungsstatus | |
| Progress | Neon-Fortschrittsbalken (0–100%) mit Farbverlauf | |
| Speed | Aktuelle Geschwindigkeit (z.B. 63.2 MB/s) |
|
| Actions | Aktions-Buttons pro Zeile |
5.3 Status-Werte
| Status | Bedeutung |
|---|---|
| Pending | Wartet auf Verarbeitung |
| Packing | Wird mit 7-Zip komprimiert/gesplittet |
| Generating PAR2 | PAR2-Wiederherstellungsdateien werden erstellt |
| Uploading | Wird auf den Usenet-Server hochgeladen |
| Paused | Vom Benutzer pausiert |
| Completed | Erfolgreich abgeschlossen |
| Failed | Fehler aufgetreten (Details im Log) |
5.4 Aktions-Buttons (pro Zeile)
Jede Zeile hat drei kleine Buttons (28×) rechts:
| Button | Symbol | Funktion | Glow-Farbe |
|---|---|---|---|
| Pause | ⏸ | Task pausieren / Entpausieren (Toggle) | Orange wenn pausiert |
| Play | ▶ | Einzelnen Task starten (Single-Task-Modus) | Grün wenn aktiv |
| Entfernen | ✕ | Task aus der Queue entfernen | Rot bei Hover |
Glow-Logik
- Aktiver Task (Packing/Uploading): Play-Button leuchtet grün
- Pausierter Task: Pause-Button leuchtet orange
- Abgeschlossener/Fehlerhafter Task: Kein Glow, Buttons neutral
- Pending: Alle Buttons neutral (grau)
5.5 Neon-Fortschrittsbalken
Der Fortschrittsbalken ist ein Custom Widget (NeonProgressBar) mit:
- Farbverlauf von Dunkelblau über Cyan zu hellem Blau
- Glow-Effekt am Fortschrittsende
- Prozentanzeige als überlagerten Text
6. Globale Steuerungs-Buttons (unterhalb der Tabelle)
| Button | Farbe | Funktion |
|---|---|---|
| ▶ Alle starten | Grün | Startet die gesamte Upload-Queue. Erster Zustand |
| ⏸ Alle pausieren | Orange | Pausiert alle laufenden Uploads (Graceful Pause) |
| ▶ Alle fortsetzen | Grün | Setzt pausierte Queue fort (nach vorheriger Pause) |
| 📂 NZB-Ordner | Grau | Öffnet den Ordner mit den erzeugten NZB-Dateien im Dateimanager |
| 📂 Mapping-Ordner | Grau | Öffnet den Ordner mit den Mapping-/Export-Dateien im Dateimanager |
| ✓ Fertige ausblenden | Cyan | Entfernt alle abgeschlossenen Tasks aus der Anzeige |
| 🗑 Ausgewählte löschen | Rot | Löscht alle per Checkbox markierten Tasks |
3-Zustands-Button-Logik
▶ Alle starten → ⏸ Alle pausieren → ▶ Alle fortsetzen → ⏸ Alle pausieren → ...
(grün) (orange) (grün) (orange)
Graceful Pause: Beim Pausieren wird der aktuelle Verarbeitungsschritt (z.B. Pack oder Upload) noch zu Ende geführt, bevor der nächste Task anhält. Laufende NNTP-Verbindungen werden nicht abrupt getrennt.
Automatisches Entfernen
Wenn in den Einstellungen "Fertige Uploads automatisch entfernen" aktiviert ist: - Der Button "✓ Fertige ausblenden" wird ausgegraut und deaktiviert - Tooltip zeigt: "Automatisches Entfernen ist aktiviert" - Abgeschlossene Tasks werden nach 5 Sekunden automatisch aus der Tabelle entfernt
7. Upload Log
Am unteren Rand des Tabs befindet sich ein Echtzeit-Protokoll in einer eigenen Karte:
Darstellung
- Hintergrund: Dunkles Terminal-Design mit Monospace-Schrift
- Maximale Höhe: (scrollbar)
- Auto-Scroll: Springt automatisch zum neuesten Eintrag
Farbcodierung
| Farbe | Bedeutung | Beispiel |
|---|---|---|
| Grün | Erfolgreich | ✅ Task #3 abgeschlossen: rudirudi5 |
| Rot | Fehler/Warnung | ❌ Task #5 fehlgeschlagen: rudirudi5 — Error |
| Grau | Info/Normal | 📎 Zur Queue hinzugefügt: rudirudi5 (656.9 MB) |
Log-Einträge
| Prefix | Ereignis |
|---|---|
| 📎 | Datei zur Queue hinzugefügt |
| 📦 | Task wird gepackt (7-Zip) |
| 🛡 | PAR2-Erstellung läuft |
| ⬆ | Upload läuft |
| ✅ | Task abgeschlossen |
| ❌ | Task fehlgeschlagen |
| ⚠ | Warnung (z.B. keine Auswahl) |
| ▶ | Queue gestartet/fortgesetzt |
| ⏸ | Queue pausiert |
| 🗑 | Task entfernt |
| ✓ | Fertige Einträge entfernt |
8. Pipeline-Verarbeitung
Im Hintergrund arbeitet die Upload-Engine im Pipelined-Modus:
Task A: [Pack] → [PAR2] → [Upload]
Task B: [Pack] → [PAR2] → [Upload]
Task C: [Pack] → [PAR2] → ...
- Während Task A hochgeladen wird, kann Task B bereits gepackt werden
- Der DiskGuard verhindert, dass zu viele Tasks gleichzeitig gepackt werden (Speicherplatzkontrolle)
- Der ConnectionBudget verwaltet die NNTP-Verbindungen zwischen Upload- und Download-Aufgaben
9. Einzeltask-Modus
Über den ▶-Button an einem einzelnen Task oder den "▶ Einzeln starten" Button im Dashboard kann ein einzelner Task isoliert gestartet werden:
- Nur der ausgewählte Task wird verarbeitet
- Die restliche Queue bleibt pausiert
- Nach Abschluss des einzelnen Tasks pausiert die Queue automatisch wieder
- Nützlich zum Testen oder für Prioritäts-Uploads
Download Tab — Usenet Downloader
Der Download-Tab ermöglicht das Herunterladen von Dateien aus dem Usenet über NZB-Dateien. Er unterstützt Multi-Connection-Downloads, automatische Passwort-Erkennung, PAR2-Reparatur, 7-Zip-Extraktion und NZBLNK-Protokollunterstützung.
1. Seitenübersicht
Der Tab ist vertikal in folgende Bereiche aufgeteilt:
- Header — Titel und Beschreibung
- NZB Import Card — NZB-Datei/URL eingeben, Passwort, Queue-Button
- Download-Warteschlange — Tabelle mit allen Download-Tasks
- Download Log — Echtzeit-Protokoll aller Aktivitäten
2. Header
| Element | Beschreibung |
|---|---|
| Titel | "Usenet Downloader" in Cyan |
| Untertitel | "NZB-Dateien importieren und direkt von Usenet herunterladen." |
3. NZB Import Card
Eine abgerundete Karte mit dem Import-Widget zum Hinzufügen neuer Downloads.
3.1 Drag & Drop Zone
📎 NZB-Datei hierher ziehen (Drag & Drop)
- Normal: Gestrichelter Rahmen in Grau
- Beim Darüberziehen: Text ändert sich zu "📥 NZB hier ablegen!", Rahmen wird Cyan
- Akzeptiert nur
.nzb-Dateien
3.2 NZB-Eingabefeld
| Element | Beschreibung |
|---|---|
| Eingabefeld | Pfad zur NZB-Datei oder NZB-URL einfügen |
| Platzhalter | /pfad/zur/datei.nzb oder NZB-URL einfügen... |
| 📂 NZB wählen | Button zum Öffnen des Datei-Dialogs (Filter: *.nzb) |
Unterstützte Eingaben
- Lokale Datei:
/home/user/downloads/example.nzb - URL:
https://example.com/releases/example.nzb— wird automatisch heruntergeladen - Zwischenablage: NZB-URLs und NZBLNK-Links werden automatisch aus der Zwischenablage erkannt
3.3 Passwort-Feld
| Element | Beschreibung |
|---|---|
| Passwort: | Label links |
| Eingabefeld | Passwort für verschlüsselte Archive |
| Platzhalter | Leer = wird aus NZB-Name erkannt... |
Automatische Passwort-Erkennung
Das System erkennt Passwörter automatisch aus dem NZB-Dateinamen. Gängige Formate:
- filename {{password}}.nzb
- filename [password].nzb
- filename - password.nzb
Bei Erkennung wird das Passwort automatisch eingetragen und im Log angezeigt:
🔑 Passwort erkannt: p*****d
3.4 Aktions-Button
| Button | Beschreibung |
|---|---|
| ➕ Zur Queue hinzufügen | Fügt die NZB-Datei zur Download-Warteschlange hinzu. Wird erst aktiviert, wenn eine gültige NZB-Datei/URL eingegeben wurde |
Hinweis: Der Button fügt nur zur Queue hinzu, startet den Download aber nicht automatisch. Dies geschieht über den separaten Start-Button.
4. Download-Warteschlange
4.1 Queue-Header
| Element | Beschreibung |
|---|---|
| 📋 Download-Warteschlange | Titel links |
| Speed-Anzeige | Aktuelle Download-Geschwindigkeit (grün) |
4.2 Tabelle
Identische Spaltenstruktur wie die Upload-Queue:
| Spalte | Beschreibung |
|---|---|
| ✓ (Checkbox) | Auswahl-Checkbox pro Task |
| Name | Name der NZB / des Inhalts |
| Size | Download-Größe (geschätzt aus NZB-Segmenten) |
| Status | Aktueller Status |
| Progress | Neon-Fortschrittsbalken |
| Speed | Aktuelle Geschwindigkeit |
| Actions | ⏸ Pause / ▶ Play / ✕ Entfernen |
4.3 Status-Werte
| Status | Bedeutung |
|---|---|
| Pending | Wartet in der Queue |
| Downloading | Artikel werden heruntergeladen |
| Repairing | PAR2-Reparatur läuft |
| Extracting | 7-Zip entpackt die Archive |
| Completed | Download und Extraktion abgeschlossen |
| Paused | Vom Benutzer pausiert |
| Failed | Fehler aufgetreten |
| Mirror: Uploading | Mirror-Modus: Heruntergeladene Datei wird re-uploaded |
4.4 Rechtsklick-Kontextmenü
Über Rechtsklick auf einen Queue-Eintrag öffnet sich ein Kontextmenü:
| Menüpunkt | Funktion |
|---|---|
| 🔑 Passwort setzen/ändern | Öffnet einen Dialog zum Eingeben/Ändern des Passworts für diesen Download |
5. Steuerungs-Buttons
| Button | Farbe | Funktion |
|---|---|---|
| ▶ Downloads starten | Grün | Startet die gesamte Download-Queue |
| ⏸ Alle pausieren | Orange | Pausiert alle Downloads |
| ▶ Downloads fortsetzen | Grün | Setzt pausierte Downloads fort |
| 📂 Download-Ordner öffnen | Grau | Öffnet den Download-Zielordner im Dateimanager |
| ✓ Fertige ausblenden | Cyan | Entfernt abgeschlossene Downloads aus der Anzeige |
| 🗑 Ausgewählte entfernen | Rot | Löscht alle per Checkbox markierten Tasks |
3-Zustands-Logik
Identisch zum Upload-Tab:
▶ Downloads starten → ⏸ Alle pausieren → ▶ Downloads fortsetzen → ...
6. Download Log
Echtzeit-Protokoll identisch zum Upload-Tab:
- Hintergrund: Terminal-Design mit Monospace-Schrift
- Maximale Höhe: (scrollbar)
- Farbcodierung: Grün (Erfolg), Rot (Fehler), Grau (Info)
Typische Log-Einträge
| Prefix | Ereignis |
|---|---|
| 📎 | NZB zur Queue hinzugefügt |
| 📥 | NZB wird von URL heruntergeladen |
| 📋 | NZB-Link aus Zwischenablage erkannt |
| 🔑 | Passwort erkannt oder gesetzt |
| 🔍 | Suche auf Binsearch/NZBIndex/Newznab |
| ⬇ | Download läuft (Fortschritt) |
| 🛡 | PAR2-Reparatur |
| 📦 | Extraktion |
| ✅ | Download abgeschlossen |
| ❌ | Download fehlgeschlagen |
| ⏸ | Download(s) pausiert |
| ▶ | Download(s) fortgesetzt/gestartet |
7. Spezial-Features
7.1 Zwischenablage-Überwachung
Zenith überwacht automatisch die Zwischenablage auf:
- NZB-URLs — Links die .nzb enthalten werden automatisch ins Eingabefeld übernommen
- NZBLNK-Links — nzblnk: Protokoll-Links werden automatisch verarbeitet
Diese Funktion kann in den Einstellungen deaktiviert werden (dl_clipboard_monitor).
7.2 NZBLNK-Protokoll-Unterstützung
Zenith ist als Handler für das nzblnk: URI-Schema registriert. Bei Klick auf einen NZBLNK-Link im Browser:
- Zenith öffnet sich (oder aktiviert das bestehende Fenster)
- Der Link wird automatisch verarbeitet
- Die NZB wird über folgende Quellen gesucht (in dieser Reihenfolge):
- Newznab-Indexer (falls konfiguriert)
- Binsearch.info (kostenlos, kein API-Key nötig)
- NZBIndex.com (kostenlos, RSS-Feed)
- Bei Fund wird die NZB heruntergeladen und zur Queue hinzugefügt
- Das Passwort aus dem NZBLNK wird automatisch übernommen
7.3 Automatische Passwort-Erkennung
Das System erkennt Passwörter aus:
- NZB-Dateiname — Gängige Muster wie {{password}}, [password]
- NZBLNK-Daten — Passwort-Feld im NZBLNK-URI
- Manuell — Rechtsklick → Passwort setzen
7.4 Auto-Extraktion
Nach dem Download wird automatisch: 1. PAR2-Reparatur — Fehlende/beschädigte Segmente werden repariert (konfigurierbar) 2. CRC-Check — Integritätsprüfung der heruntergeladenen Dateien (konfigurierbar) 3. 7-Zip-Extraktion — Archive werden entpackt (konfigurierbar) 4. Archiv-Cleanup — RAR/7z-Dateien nach Extraktion löschen (konfigurierbar) 5. Junk-Cleanup — Überflüssige Dateien (NFO, TXT, etc.) löschen (konfigurierbar)
7.5 Mirror-Modus
Der Mirror-Modus ermöglicht das automatische Re-Uploading nach dem Download:
- Download → Extraktion → automatischer Upload mit denselben Einstellungen
- Status wechselt zu Mirror: Uploading
- Wird über den Remote-Input-Tab oder API gesteuert
7.6 Queue-Persistenz
Die Download-Queue wird automatisch gespeichert und beim Neustart wiederhergestellt. Pending-Tasks bleiben erhalten, auch wenn die Anwendung geschlossen wird.
7.7 ConnectionBudget
Downloads und Uploads teilen sich die NNTP-Verbindungen über das ConnectionBudget-System: - Wenn ein Upload läuft, werden die verfügbaren Verbindungen für Downloads reduziert - Der Provider-Nutzungsmodus (Upload/Download/Beides) bestimmt die Verteilung - Bei Provider-Nutzung "Download" werden nur Download-Verbindungen erstellt
8. Konfigurierbare Einstellungen
Folgende Download-Einstellungen können unter Einstellungen → Download konfiguriert werden:
| Einstellung | Standard | Beschreibung |
|---|---|---|
| Download-Ordner | ~/Downloads |
Zielordner für heruntergeladene Dateien |
| Temp-Ordner | (leer) | Temporärer Ordner für Downloads (optional) |
| Auto-Extraktion | ✅ An | Archive nach Download automatisch entpacken |
| PAR2-Reparatur | ✅ An | PAR2-Wiederherstellung bei fehlenden Segmenten |
| CRC-Check | ✅ An | Integritätsprüfung der Dateien |
| Archiv-Cleanup | ✅ An | RAR/7z-Dateien nach Extraktion löschen |
| NZB-Cleanup | ❌ Aus | NZB-Datei nach Download löschen |
| Junk-Cleanup | ❌ Aus | NFO/TXT-Dateien löschen |
| Max Verbindungen | 0 (Auto) | Maximale gleichzeitige Verbindungen |
| Speed-Limit | 0 (kein Limit) | Download-Geschwindigkeitsbegrenzung |
| Retry-Anzahl | 3 | Anzahl der Wiederholungsversuche |
| Zwischenablage-Monitor | ✅ An | NZB-URLs automatisch aus Zwischenablage erkennen |
| Auto-Entfernung | ❌ Aus | Fertige Downloads automatisch aus Queue entfernen |
Cloud Backup — Verschlüsseltes Usenet-Backup
Der Cloud-Backup-Tab ermöglicht es, Ordner mit AES-256 zu verschlüsseln, ins Usenet hochzuladen und bei Bedarf wiederherzustellen. Die NZB-Datei dient dabei als "Schlüssel" zur Wiederherstellung — solange die Usenet-Retention nicht abgelaufen ist.
1. Seitenübersicht
Der Tab ist vertikal in fünf Karten aufgeteilt:
- 📁 Backup-Quellen — Ordner hinzufügen/verwalten
- 🔐 Verschlüsselung & Einstellungen — Passwort, Optionen
- 📋 Backup-Verlauf — Tabelle aller durchgeführten Backups
- 📥 Wiederherstellung — NZB-basierte Wiederherstellung
- 📋 Backup Log — Echtzeit-Protokoll
2. Backup-Quellen (Karte 1)
2.1 Ordner-Liste
Jeder hinzugefügte Ordner wird als eigene Zeile mit folgenden Elementen angezeigt:
| Element | Beschreibung |
|---|---|
| ✓ Checkbox | Ordner für Backup auswählen/abwählen |
| Ordnername | Name des Ordners (fett) |
| Pfad | Vollständiger Pfad (klein, grau) |
| Zeitplan-Dropdown | Manuell / Alle 24h / Wöchentlich / Monatlich |
| Status | ● Bereit (grün) / ● Gesichert (grün) / ⚠ X Ordner (orange, bei Änderungen) |
| ⚙ Settings | Klappt pro-Ordner-Einstellungen aus/ein |
| ✕ Entfernen | Ordner aus der Backup-Liste entfernen |
2.2 Pro-Ordner-Einstellungen (ausklappbar)
Über den ⚙-Button werden individuelle Einstellungen für jeden Ordner sichtbar:
| Einstellung | Optionen | Standard | Beschreibung |
|---|---|---|---|
| Backup-Modus | Ordner einzeln / Alle zusammen | Ordner einzeln | "Einzeln" erstellt je ein Archiv pro Unterordner; "Zusammen" packt alles in ein Archiv |
| Backup-Typ | Vollbackup / Inkrementell | Vollbackup | Inkrementell sichert nur geänderte Dateien |
| Kompression | Keine / Normal / Ultra | Normal | 7-Zip Kompressionsstufe (0 / 5 / 9) |
| Volume-Größe | 10–2000 MB | 100 MB | Größe der Split-Archive (für große Backups) |
2.3 Änderungserkennung
Zenith überwacht alle 5 Minuten die Backup-Ordner auf Veränderungen:
- Neue, geänderte oder gelöschte Dateien werden erkannt
- Status wechselt zu orange: ⚠ 3 Ordner mit Tooltip-Details
- Nach erfolgreichem Backup wird der Status wieder grün
2.4 Buttons
| Button | Funktion |
|---|---|
| ➕ Ordner hinzufügen | Öffnet Ordner-Dialog zum Hinzufügen einer neuen Backup-Quelle |
| ▶ Backup jetzt starten | Startet sofort ein Backup aller ausgewählten Ordner |
3. Verschlüsselung & Einstellungen (Karte 2)
3.1 Linke Seite — Passwort
| Element | Beschreibung |
|---|---|
| Verschlüsselungs-Passwort | Hauptpasswort für AES-256-Verschlüsselung (Pflichtfeld) |
| 👁 Auge-Button | Passwort anzeigen/verbergen |
| 🔑 Schlüssel-Button | Starkes Zufallspasswort generieren |
| Passwort bestätigen | Wiederholung zur Sicherheit |
| ☐ Passwort merken | Passwort in der verschlüsselten Config speichern |
⚠ Wichtig: Ohne das Passwort können Backups NICHT wiederhergestellt werden. Es gibt keine Passwort-Wiederherstellung.
3.2 Rechte Seite — Globale Einstellungen
| Element | Standard | Beschreibung |
|---|---|---|
| ☐ Ohne Newsgroup (privat) | ✅ An | Upload ohne Newsgroup-Header → privater, nicht-indexierter Upload |
| ☐ Retention-Warnung | ✅ An | Warnung anzeigen, wenn Backups kurz vor Retention-Ablauf stehen |
| Retention (Tage) | 5000 | Retention des Providers in Tagen (z.B. Eweka: 5700) |
| NZB-Speicherort | ~/.zenith-uploader/backup_nzb/ |
Ordner in dem die Backup-NZB-Dateien gespeichert werden |
3.3 Info-Tooltips (ℹ)
Neben bestimmten Feldern erscheinen Info-Tooltips mit ausführlichen Erklärungen: - Passwort: Erklärt AES-256 und warnt vor Passwort-Verlust - Retention: Erklärt die Retention-Warnung mit Provider-Beispielen
4. Backup-Verlauf (Karte 3)
Eine Tabelle mit allen durchgeführten Backups:
| Spalte | Breite | Beschreibung |
|---|---|---|
| Name | Flexibel | Name des gesicherten Ordners |
| Größe | Größe des verschlüsselten Archives | |
| Datum | Datum und Uhrzeit des Backups | |
| Status | Erfolgreich / Fehlgeschlagen | |
| Progress | Fortschrittsbalken während des Backups | |
| Aktionen | Aktions-Buttons |
5. Wiederherstellung (Karte 4)
Zum Wiederherstellen eines Backups werden drei Angaben benötigt:
| Feld | Beschreibung |
|---|---|
| NZB-Datei | Die beim Backup gespeicherte NZB-Datei auswählen (Browse-Button) |
| Passwort | Das Entschlüsselungs-Passwort eingeben |
| Ziel-Ordner | Ordner für die wiederhergestellten Dateien (Browse-Button) |
Wiederherstellungs-Prozess
- 📥 Download — Verschlüsselte Archive werden über den Usenet-Provider heruntergeladen
- 🛡 PAR2-Reparatur — Fehlende Segmente werden repariert (20% Redundanz)
- 🔓 Entschlüsselung — 7-Zip entpackt mit dem angegebenen Passwort
- 📁 Dateien — Originaldateien werden im Ziel-Ordner wiederhergestellt
| Button | Funktion |
|---|---|
| 📥 Wiederherstellen | Startet den Wiederherstellungsprozess |
6. Backup Log (Karte 5)
Identisch zu den Logs in Upload/Download-Tab:
- Terminal-Design mit Monospace-Schrift
- ** Höhe**, scrollbar
- Farbcodiert: Grün (Erfolg), Rot (Fehler), Grau (Info)
Typische Log-Einträge
| Prefix | Ereignis |
|---|---|
| 📁 | Backup-Ordner hinzugefügt |
| 🔐 | Verschlüsselung läuft |
| ✅ | Verschlüsselung / Upload / Download abgeschlossen |
| 🛡 | PAR2-Erstellung (20% Redundanz) |
| 📤 | Upload läuft |
| 📥 | Download läuft (Wiederherstellung) |
| ⏰ | Zeitplan geändert |
| ⚠ | Retention-Warnung / Fehler |
| 🗑 | Backup-Ordner entfernt |
7. Automatisierungs-Features
7.1 Zeitplan-Backups
Für jeden Ordner kann ein automatischer Zeitplan konfiguriert werden:
| Zeitplan | Intervall | Beschreibung |
|---|---|---|
| Manuell | — | Nur per "Backup jetzt starten" Button |
| Alle 24h | 24 Stunden | Einmal täglich automatisches Backup |
| Wöchentlich | 7 Tage | Einmal pro Woche |
| Monatlich | 30 Tage | Einmal pro Monat |
- Zeitplan-Prüfung läuft alle 60 Sekunden
- Backups werden nur gestartet, wenn das letzte Backup älter als das Intervall ist
7.2 Retention-Warnung
Zenith warnt automatisch vor ablaufenden Backups: - Prüfung alle 2 Stunden + initial nach 5 Sekunden - Warnung erscheint 30 Tage vor Retention-Ablauf - Wiederholt sich alle 2 Tage - Kann pro Backup stumm geschaltet werden (Mute)
7.3 Änderungserkennung
- Prüfung alle 5 Minuten + initial nach 10 Sekunden
- Vergleicht Datei-Timestamps mit dem Zeitpunkt des letzten Backups
- Zeigt betroffene Unterordner im Status-Tooltip
- Orange Status-Anzeige bei Änderungen
8. Backup-Prozess (technisch)
8.1 Backup-Ablauf
Ordner auswählen → Verschlüsseln (7-Zip AES-256)
→ PAR2 erstellen (20% Redundanz)
→ Upload über NNTP
→ NZB speichern (= Backup-Index)
→ Temp-Dateien aufräumen
8.2 Verschlüsselungsmodus
- Algorithmus: AES-256 (via 7-Zip
-pFlag) - Header-Verschlüsselung: Aktiviert (
-mhe=on) — Dateinamen sind nicht sichtbar - Split-Archive: Konfigurierbares Volume (10–2000 MB)
- PAR2-Redundanz: Fest 20% für maximale Datenintegrität
- Newsgroup: Standardmäßig "privat" (ohne Newsgroup-Header)
8.3 Backup-Modi
| Modus | Beschreibung |
|---|---|
| Ordner einzeln | Jeder Unterordner wird als separates Archiv gepackt und hochgeladen |
| Alle zusammen | Der gesamte Ordner wird als ein einziges Archiv behandelt |
Statistik Tab — Upload- & Download-Statistiken
Der Statistik-Tab bietet eine visuelle Übersicht über alle Upload- und Download-Aktivitäten mit interaktiven Balkendiagrammen, Kennzahlen-Karten und einer Verlaufs-Ansicht. Die Daten werden aus der lokalen SQLite-Datenbank gelesen und alle 5 Sekunden aktualisiert.
1. Seitenübersicht
Der Tab ist vertikal aufgeteilt in:
- Header mit Zeitraum-Filter — Dropdown zur Periodenauswahl
- Upload-Kennzahlen — 6 Statistik-Karten
- Upload-Volumen-Diagramm — Interaktives Balkendiagramm
- Download-Kennzahlen — 6 Statistik-Karten
- Download-Volumen-Diagramm — Interaktives Balkendiagramm
- Letzte Uploads — Verlaufsliste
- Letzte Downloads — Verlaufsliste
- Reset-Button — Alle Statistiken löschen
2. Header & Zeitraum-Filter
| Element | Beschreibung |
|---|---|
| 📊 Statistik | Seitentitel in Cyan |
| Zeitraum: | Label + Dropdown rechts |
Zeitraum-Optionen
| Option | Tage | Diagramm-Darstellung |
|---|---|---|
| 7 Tage | 7 | Tägliche Balken (DD.MM) |
| 30 Tage | 30 | Tägliche Balken (DD.MM) |
| Jährlich | 365 | Monatliche Balken (MM) |
| Gesamt | ∞ | Jährliche Balken (YYYY) |
Der Zeitraum beeinflusst alle angezeigten Statistiken (Kennzahlen, Diagramme, Verlauf).
3. Upload-Kennzahlen (⬆ UPLOADS)
Sechs Statistik-Karten nebeneinander, jede mit Icon, Titel und großem Wert:
| Icon | Titel | Farbe | Beschreibung |
|---|---|---|---|
| 📦 | Gesamt Volumen | Cyan | Gesamte hochgeladene Datenmenge im Zeitraum (z.B. 145.3 GB) |
| 📄 | Dateien | Grün | Anzahl erfolgreich hochgeladener Dateien/Ordner |
| ❌ | Fehlgeschlagen | Rot | Anzahl fehlgeschlagener Uploads |
| 📅 | Heute | Gelb | Uploads am heutigen Tag |
| ⏱ | Upload-Zeit | Cyan | Kumulative Upload-Dauer (z.B. 2h 45m) |
| ⚡ | Ø Geschwindigkeit | Grün | Durchschnittliche Upload-Geschwindigkeit (z.B. 63.2 MB/s) |
Geschwindigkeitsberechnung: Die Durchschnittsgeschwindigkeit wird aus den
timed_bytes_uploadedundupload_secondsSpalten berechnet — also nur die tatsächliche Transferzeit, ohne Pack/PAR2-Phasen.
4. Upload-Volumen-Diagramm
Ein Custom-Widget (BarChartWidget) das mit QPainter gezeichnet wird:
Darstellung
- Balken: Gradient von Dunkelblau zu Cyan mit abgerundeten Ecken
- Y-Achse: Automatische Skalierung mit Rasterlinien (gepunktet)
- X-Achse: Datum (DD.MM), Monat (MM) oder Jahr (YYYY) je nach Zeitraum
- Wert: Über jedem Balken wird der Wert angezeigt
- Einheit:
[GB]oben links - Leerzustand: "Keine Daten vorhanden" bei fehlenden Daten
Mindestgröße
- Höhe
- Automatische Breite (füllt verfügbaren Platz)
5. Download-Kennzahlen (⬇ DOWNLOADS)
Identische Struktur wie die Upload-Kennzahlen, aber in Violett:
| Icon | Titel | Farbe | Beschreibung |
|---|---|---|---|
| 📦 | Gesamt Volumen | Violett | Gesamte heruntergeladene Datenmenge |
| 📄 | Dateien | Grün | Anzahl erfolgreicher Downloads |
| ❌ | Fehlgeschlagen | Rot | Fehlgeschlagene Downloads |
| 📅 | Heute | Gelb | Downloads heute |
| ⏱ | Download-Zeit | Violett | Kumulative Download-Dauer |
| ⚡ | Ø Geschwindigkeit | Grün | Durchschnittliche Download-Geschwindigkeit |
6. Download-Volumen-Diagramm
Identisch zum Upload-Diagramm, aber mit violettem Farbverlauf ( →).
7. Letzte Uploads (Verlaufsliste)
Zeigt die letzten 10 Uploads als scrollbare Liste mit:
| Element | Breite | Beschreibung |
|---|---|---|
| Name | Flexibel (min ) | Originaler Datei-/Ordnername |
| Größe | Originalgröße (z.B. 656.9 MB) |
|
| Status | ✅ Erfolgreich / ❌ Fehlgeschlagen / ⏳ Ausstehend | |
| Datum | DD.MM.YYYY HH:MM |
Farbgebung
- ✅ Erfolgreich: Grün
- ❌ Fehlgeschlagen: Rot
- ⏳ Ausstehend: Gelb
- Leerzustand: "Noch keine Uploads vorhanden."
8. Letzte Downloads (Verlaufsliste)
Identische Struktur wie "Letzte Uploads", zeigt die letzten 10 Downloads:
| Element | Beschreibung |
|---|---|
| Name | Content-Name (aus NZB extrahiert) |
| Größe | Download-Größe |
| Status | ✅ / ❌ |
| Datum | Abschlussdatum |
Leerzustand: "Noch keine Downloads vorhanden."
9. Statistik zurücksetzen
Am unteren Rand befindet sich ein roter Reset-Button:
| Button | Funktion |
|---|---|
| 🗑 Statistik zurücksetzen | Löscht alle Statistiken und Upload-/Download-Historie |
Bestätigungs-Dialog
Vor dem Löschen erscheint ein Warnungs-Dialog:
Möchtest du wirklich alle Statistiken zurücksetzen?
Dies löscht alle Upload- und Download-Statistiken,
sowie die Upload-Historie. Diese Aktion kann nicht
rückgängig gemacht werden.
[Ja, zurücksetzen] [Abbrechen]
Das Zurücksetzen löscht die Tabellen stats, uploads und downloads in der SQLite-Datenbank.
10. Datenquelle
Alle Statistiken werden aus der lokalen SQLite-Datenbank gelesen (~/.zenith-uploader/zenith.db):
stats-Tabelle (tägliche Aggregation)
| Spalte | Beschreibung |
|---|---|
date |
Datum (YYYY-MM-DD) |
bytes_uploaded |
Hochgeladene Bytes |
files_uploaded |
Anzahl Uploads |
files_failed |
Fehlgeschlagene Uploads |
bytes_downloaded |
Heruntergeladene Bytes |
files_downloaded |
Anzahl Downloads |
downloads_failed |
Fehlgeschlagene Downloads |
upload_seconds |
Upload-Dauer in Sekunden |
download_seconds |
Download-Dauer in Sekunden |
timed_bytes_uploaded |
Bytes während gemessener Zeit (für Ø-Geschwindigkeit) |
timed_bytes_downloaded |
Bytes während gemessener Zeit (für Ø-Geschwindigkeit) |
uploads-Tabelle (Einzelaufzeichnung)
| Spalte | Beschreibung |
|---|---|
original_name |
Originaler Dateiname |
original_size |
Dateigröße in Bytes |
status |
completed / failed / pending |
created_at |
Erstellungszeit (Unix Timestamp) |
completed_at |
Abschlusszeit (Unix Timestamp) |
downloads-Tabelle (Einzelaufzeichnung)
| Spalte | Beschreibung |
|---|---|
content_name |
Name des heruntergeladenen Inhalts |
download_size |
Downloadgröße in Bytes |
status |
completed / failed |
created_at |
Erstellungszeit |
completed_at |
Abschlusszeit |
VPN Guard — VPN-Schutz für Uploads
Der VPN Guard Tab verwaltet VPN-Verbindungen über OpenVPN und WireGuard. Profile können für verschiedene Anbieter und Länder gespeichert werden. Der Kill-Switch pausiert automatisch alle Uploads bei VPN-Abbruch.
1. Seitenübersicht
Der Tab ist vertikal aufgeteilt in:
- Header — Titel und Beschreibung
- Root-Warnung — Hinweis bei fehlenden Root-Rechten (Linux)
- Status Card — Aktueller VPN-Status mit Connect/Disconnect
- Gespeicherte Profile — Liste der VPN-Profile
- Einstellungen — Kill-Switch Konfiguration
- VPN Log — Echtzeit-Protokoll
2. Header
| Element | Beschreibung |
|---|---|
| Titel | "VPN Guard" in Cyan |
| Untertitel | "Sichere deine Uploads mit VPN-Schutz und Kill-Switch." |
3. Root-Warnung (Linux)
Auf Linux wird geprüft, ob Root-Rechte oder pkexec verfügbar sind. Ohne Root erscheint eine gelbe Warnbox:
⚠ Root-Rechte nicht verfügbar. VPN benötigt Root (pkexec oder sudo).
Installiere policykit-1: sudo apt install policykit-1
Auf Windows wird diese Warnung nicht angezeigt.
4. Status Card (Hauptbereich)
Die zentrale Status-Karte zeigt den aktuellen VPN-Zustand:
4.1 Status-Anzeige
| Zustand | Icon | Text | Farbe | Detail |
|---|---|---|---|---|
| Inaktiv | 🛡 | INAKTIV | Grau | "Kein VPN verbunden" |
| Verbindet | 🛡 | VERBINDE... | Gelb | "Verbinde zu OPENVPN/WIREGUARD..." |
| Verbunden | 🛡 | VERBUNDEN | Grün | "OPENVPN · IP: 185.xxx.xxx.xxx" |
| Fehler | 🛡 | FEHLER | Rot | Fehlerbeschreibung |
4.2 Connect/Disconnect Buttons
| Button | Zustand | Farbe | Funktion |
|---|---|---|---|
| 🔌 Connect | Inaktiv | Blau-Cyan Gradient | Verbindung mit ausgewähltem Profil herstellen |
| ⏳ Connecting... | Verbindet | Ausgegraut | Button deaktiviert während Verbindungsaufbau |
| ✓ Connected | Verbunden | Ausgegraut | Button deaktiviert bei aktiver Verbindung |
| ⏹ Disconnect | Verbunden | Rot | Aktive VPN-Verbindung trennen |
5. Gespeicherte Profile
5.1 Profil-Karten
Jedes gespeicherte Profil wird als klickbare Karte angezeigt:
| Element | Beschreibung |
|---|---|
| Flagge | Landesflagge (Emoji) basierend auf dem gewählten Land |
| Name | Profilname (z.B. "Mullvad Amsterdam") |
| Details | Anbieter · Land · Protokoll (z.B. "Mullvad · Netherlands · OPENVPN") |
| Protokoll-Badge | Kleines Badge mit Protokoll-Kürzel (OP = OpenVPN grün, WI = WireGuard cyan) |
| ● Aktiv-Indikator | Cyan-Punkt bei ausgewähltem Profil |
| ✕ Löschen | Profil entfernen (rund, rot bei Hover) |
Auswahl-Logik
- Klick auf eine Karte wählt das Profil aus (blaue Umrandung)
- Das aktive Profil wird in der Config gespeichert und beim nächsten Connect verwendet
- Config-Pfad, Auth-User und Auth-Pass werden automatisch in die aktive Config übernommen
Leerzustand
Keine Profile gespeichert. Füge ein VPN-Profil hinzu, um loszulegen.
5.2 Profil hinzufügen (+ Button → Dialog)
Beim Klick auf "+ Profil hinzufügen" öffnet sich ein Formular-Dialog:
| Feld | Optionen/Beschreibung |
|---|---|
| Name | Freitext (z.B. "Mullvad Amsterdam") — Pflichtfeld |
| Anbieter | Dropdown: Mullvad, ProtonVPN, AirVPN, NordVPN, Surfshark, PIA, Windscribe, IVPN, Privado, Custom |
| Protokoll | OpenVPN / WireGuard |
| Land | Dropdown mit 21 Ländern + Flaggen-Emojis |
| Config | Dateipfad zur .ovpn- oder .conf-Datei (Browse-Button) — Pflichtfeld |
| User | Benutzername (nur bei OpenVPN sichtbar, optional) |
| Pass | Passwort (nur bei OpenVPN sichtbar, optional, Passwort-Feld) |
Unterstützte Länder
| Flag | Land | Flag | Land |
|---|---|---|---|
| 🇳🇱 | Netherlands | 🇩🇪 | Germany |
| 🇺🇸 | USA | 🇬🇧 | UK |
| 🇨🇭 | Switzerland | 🇸🇪 | Sweden |
| 🇫🇷 | France | 🇨🇦 | Canada |
| 🇯🇵 | Japan | 🇦🇺 | Australia |
| 🇷🇴 | Romania | 🇸🇬 | Singapore |
| 🇪🇸 | Spain | 🇮🇹 | Italy |
| 🇳🇴 | Norway | 🇫🇮 | Finland |
| 🇦🇹 | Austria | 🇧🇪 | Belgium |
| 🇵🇱 | Poland | 🇨🇿 | Czech Republic |
| 🌍 | Other |
Protokoll-abhängige Felder
- OpenVPN: User/Pass-Felder sichtbar, Config-Filter
*.ovpn - WireGuard: User/Pass-Felder ausgeblendet, Config-Filter
*.conf
6. Einstellungen
Kill-Switch
| Element | Standard | Beschreibung |
|---|---|---|
| ☑ Kill-Switch | ✅ An | "Alle Uploads pausieren bei VPN-Abbruch" |
Beschreibungstext:
Wenn die VPN-Verbindung unerwartet abbricht, werden alle laufenden Uploads sofort pausiert.
Kill-Switch Funktionsweise
- VPN-Verbindung bricht ab (openvpn/wireguard Prozess endet unerwartet)
- Der AppController erkennt den Status-Wechsel über
vpn_status_changed - Alle laufenden Uploads werden sofort pausiert
- Der Benutzer wird benachrichtigt (Status wechselt zu FEHLER)
- Nach erneuter VPN-Verbindung können Uploads manuell fortgesetzt werden
7. VPN Log
Echtzeit-Protokoll der VPN-Aktivitäten:
- Terminal-Design mit Monospace-Schrift
- ** Höhe**, scrollbar
Typische Log-Einträge
| Beispiel |
|---|
Verbinde zu 'Mullvad Amsterdam'... |
Verbunden via OPENVPN · IP: 185.xxx.xxx.xxx |
Getrennt. |
ERROR: Connection timeout |
Profil 'Mullvad Amsterdam' hinzugefügt. |
⚠ Bitte zuerst ein VPN-Profil auswählen. |
8. VPN-Engine (Hintergrund)
Unterstützte Protokolle
| Protokoll | Binary | Config-Format |
|---|---|---|
| OpenVPN | openvpn |
.ovpn |
| WireGuard | wg-quick |
.conf |
Verbindungsprozess
- Profil-Daten werden in die aktive Config geschrieben
- VPN-Prozess wird gestartet (über
pkexecauf Linux, direkt auf Windows) - Verbindungsstatus wird über den Prozess-Output überwacht
- IP-Adresse wird nach Verbindungsaufbau ermittelt
- Dashboard-VPN-Widget wird über Signal
vpn_status_changedaktualisiert
Teil 7a: Remote Eingänge — RSS Feeds (📡)
Remote Eingänge — RSS Feeds
Der RSS-Feed-Subtab ermöglicht das automatische Abfragen von RSS-Feeds (z.B. von Usenet-Indexern), Filtern nach Kriterien und Hinzufügen der gefundenen NZBs zur Download-Queue.
1. Übersicht
Der Tab "📡 RSS Feeds" ist der erste Subtab unter "Remote Inputs" und vertikal in zwei Bereiche (Splitter) aufgeteilt:
- Oben: Feed-Tabelle mit allen gespeicherten RSS-Feeds
- Unten: Bearbeitungsformular + Feed-Vorschau + Statuslog
2. Feed-Tabelle (oberer Bereich)
2.1 Tabellenspalten
| Spalte | Breite | Beschreibung |
|---|---|---|
| Aktiv | Checkbox — Feed aktivieren/deaktivieren | |
| Name | Anzeigename des Feeds | |
| Feed-URL | Flexibel | Vollständige RSS-URL |
| ⊘ | Lösch-Button |
2.2 Buttons
| Button | Farbe | Funktion |
|---|---|---|
| + Feed hinzufügen | Orange Rand | Fügt eine neue leere Zeile zur Tabelle hinzu |
3. Feed-Einstellungen (unterer Bereich)
Beim Klick auf einen Feed in der Tabelle werden die Einstellungen im unteren Formular geladen.
3.1 Formularfelder
| Feld | Platzhalter | Beschreibung |
|---|---|---|
| Name | Mein RSS Feed |
Anzeigename für den Feed |
| Feed-URL | https://example.com/rss?t=2100&dl=1&r=APIKEY |
Vollständige RSS-Feed-URL mit API-Key und Parametern |
| Zielordner | ~/Downloads/RSS/ |
Ordner für heruntergeladene NZBs (Browse-Button). Leer = Standard aus Einstellungen |
| Intervall | 30 min | Abfrage-Intervall in Minuten (5–1440) |
| Max | 25 | Maximale Anzahl NZBs pro Abfrage (1–500) |
| Titel-Filter | (?=.*1080p)(?=.*2026) |
Regex-Filter für Titel (case-insensitive) |
| Größe Min | Kein Min | Minimale NZB-Größe in MB (0 = deaktiviert) |
| Größe Max | Kein Max | Maximale NZB-Größe in MB (0 = deaktiviert) |
| ☐ Automatisch zur Queue | Gefundene NZBs automatisch zur Download-Queue hinzufügen |
3.2 Regex-Filter Beispiele
| Regex | Wirkung |
|---|---|
single.charts |
Enthält "single.charts" |
(?=.*1080p)(?=.*german) |
Muss "1080p" UND "german" enthalten |
1080p\|720p |
1080p ODER 720p |
^The\\.Matrix |
Beginnt mit "The.Matrix" |
\\.2026\\. |
Enthält ".2026." |
Tipps: -
.= beliebiges Zeichen (auch Punkt/Leerzeichen) -\\.= nur ein Punkt -.*= beliebig viele Zeichen - Filter ist case-insensitive
3.3 Buttons
| Button | Farbe | Funktion |
|---|---|---|
| 💾 Feed speichern | Orange Gradient | Speichert die aktuellen Einstellungen für den ausgewählten Feed |
| 🔄 Jetzt abfragen | Grau → Orange Hover | Führt sofort eine Abfrage des ausgewählten Feeds durch |
4. Feed-Vorschau
Nach einer Abfrage werden die Ergebnisse in einer Vorschau-Tabelle angezeigt:
4.1 Tabellenspalten
| Spalte | Breite | Beschreibung |
|---|---|---|
| ✓ | Checkbox zur Auswahl | |
| Titel | Flexibel | Name des NZB-Eintrags aus dem Feed |
| Größe | Geschätzte Größe |
4.2 Vorschau-Buttons
| Button | Funktion |
|---|---|
| ☑ Alle auswählen | Alle Checkboxen in der Vorschau aktivieren |
| ⬇ Ausgewählte downloaden | Ausgewählte NZBs zur Download-Queue hinzufügen |
| 🗑 Ausgewählte entfernen | Ausgewählte Einträge aus der Vorschau entfernen (dismissed) |
4.3 Dismissed GUIDs
Entfernte Einträge werden über ihre GUID gespeichert und bei zukünftigen Abfragen nicht erneut angezeigt. Die dismissed GUIDs werden in der Config persistiert.
5. Status-Log
Am unteren Rand des Formulars ein einzeiliges Label mit Statusmeldungen:
| Farbe | Bedeutung |
|---|---|
| Blaugrau | Normal / Info |
| Rot | Fehler |
| Grün | Erfolg |
| Gelb | Warnung / Ladend |
6. Automatischer Polling
Wenn ein Feed aktiviert und ein Intervall gesetzt ist: 1. Zenith prüft im Hintergrund alle X Minuten den Feed 2. Neue Einträge werden gegen den Titel-Filter und die Größenfilter geprüft 3. Bereits gesehene GUIDs werden übersprungen 4. Bei "Automatisch zur Queue": NZBs werden direkt zum Download hinzugefügt 5. Ohne Auto-Queue: Einträge erscheinen in der Vorschau zur manuellen Auswahl
Teil 7b: Remote Eingänge — Newznab (🔍)
Remote Eingänge — Newznab Indexer
Der Newznab-Subtab ermöglicht die Anbindung an Usenet-Indexer (z.B. NZBGeek, DrunkenSlug, NZBFinder), um automatisch NZBs nach Kategorien, Filtern und Zeitintervallen abzurufen.
1. Übersicht
Der Tab "🔍 Newznab" ist der zweite Subtab unter "Remote Inputs" und vertikal in zwei Bereiche (Splitter) aufgeteilt:
- Oben: Feed-Tabelle mit allen konfigurierten Newznab-Indexern
- Unten: Bearbeitungsformular + Statuslog
2. Feed-Tabelle (oberer Bereich)
2.1 Tabellenspalten
| Spalte | Breite | Beschreibung |
|---|---|---|
| Aktiv | Checkbox — Indexer aktivieren/deaktivieren | |
| Name | Anzeigename (z.B. "NZBGeek") | |
| API-URL | Flexibel | Basis-URL der Newznab API |
| Zielordner | Download-Zielordner für diesen Feed | |
| ⊘ | Lösch-Button |
2.2 Buttons
| Button | Farbe | Funktion |
|---|---|---|
| + Feed hinzufügen | Cyan Rand | Fügt einen neuen leeren Indexer-Eintrag hinzu |
3. Feed-Einstellungen (unterer Bereich)
Beim Klick auf einen Indexer in der Tabelle werden die Einstellungen geladen.
3.1 Formularfelder
| Feld | Platzhalter | Beschreibung |
|---|---|---|
| Name | NZBGeek, DrunkenSlug, ... |
Anzeigename des Indexers |
| API-URL | https://api.nzbgeek.info |
Basis-URL der Newznab-kompatiblen API |
| API Key | API Key |
API-Schlüssel vom Indexer (Passwort-Feld) |
| Kategorien | 2000,5000,7000 |
Newznab-Kategorie-IDs, kommagetrennt |
| Zielordner | ~/Downloads/Newznab/ |
Ordner für NZBs dieses Feeds. Leer = Standard |
| Intervall | 30 min | Abfrage-Intervall (5–1440 Minuten) |
| Max (Limit) | 100 | Maximale Anzahl Ergebnisse pro Abfrage (10–500) |
| Titel-Filter | .*1080p.*BluRay.* |
Regex-Filter für den Release-Titel |
| Größe Min | Kein Min | Minimale NZB-Größe in MB |
| Größe Max | Kein Max | Maximale NZB-Größe in MB |
| ☐ Automatisch herunterladen | NZBs automatisch zur Download-Queue hinzufügen | |
| ☐ Queue automatisch starten | ✅ An | Download-Queue nach Hinzufügen automatisch starten |
3.2 Newznab-Kategorien
| Kategorie-ID | Beschreibung |
|---|---|
| 2000 | Movies |
| 5000 | TV |
| 7000 | Books |
| 3000 | Audio / Musik |
| 1000 | Console |
| 4000 | PC |
| 6000 | XXX |
Tipp: Mehrere Kategorien mit Komma trennen. Leer = alle Kategorien.
3.3 Regex-Filter
Identisch zum RSS-Feed-Tab. Case-insensitive Regex-Filter für Titel:
| Regex | Wirkung |
|---|---|
.*1080p.*BluRay.* |
Enthält "1080p" UND "BluRay" |
(?=.*1080p)(?=.*german) |
Muss beides enthalten (Lookahead) |
1080p\|720p |
1080p ODER 720p |
4. Aktions-Buttons
| Button | Farbe | Funktion |
|---|---|---|
| 💾 Feed speichern | Blau-Cyan Gradient | Speichert die Einstellungen des ausgewählten Feeds |
| 🔗 Testen | Grau → Cyan Hover | Testet die API-Verbindung (Caps-Abfrage) |
| 🔄 Jetzt abfragen | Grau → Cyan Hover | Führt sofort eine Abfrage durch und zeigt Ergebnisse |
5. Status-Log
Statusmeldungen im unteren Bereich:
| Beispiel | Farbe |
|---|---|
Feed auswählen oder neuen hinzufügen. |
Blaugrau |
✅ API erreichbar: NZBGeek (Newznab) |
Grün |
❌ Verbindung fehlgeschlagen: 403 Forbidden |
Rot |
🔄 Abfrage: 85 Ergebnisse, 12 nach Filter |
Cyan |
6. Newznab API-Integration
6.1 API-Endpunkte
Zenith nutzt die Standard-Newznab API:
| Funktion | Endpunkt |
|---|---|
| Caps abfragen | GET /api?t=caps&apikey=XXX |
| Suchen | GET /api?t=search&q=QUERY&apikey=XXX&cat=CATS&limit=N |
| RSS | GET /api?t=search&apikey=XXX&cat=CATS&limit=N |
| NZB-Download | GET /api?t=get&id=GUID&apikey=XXX |
6.2 Polling-Ablauf
- Timer löst Abfrage aus (alle X Minuten)
- API-Anfrage mit Kategorien und Limit
- Ergebnisse werden gegen Titel-Filter (Regex) geprüft
- Größen-Filter (Min/Max) wird angewendet
- Bereits bekannte GUIDs werden übersprungen
- Bei "Automatisch herunterladen": NZBs werden heruntergeladen und zur Queue hinzugefügt
- Bei "Queue automatisch starten": Download startet sofort
7. Kompatible Indexer
Zenith unterstützt alle Newznab-kompatiblen Indexer, z.B.:
| Indexer | URL-Schema |
|---|---|
| NZBGeek | https://api.nzbgeek.info |
| DrunkenSlug | https://api.drunkenslug.com |
| NZBFinder | https://www.nzbfinder.ws |
| NZBPlanet | https://api.nzbplanet.net |
| DOGnzb | https://api.dognzb.cr |
| Tabula Rasa | https://www.tabula-rasa.pw |
Teil 7c: Remote Eingänge — FTP / SFTP (📂)
Remote Eingänge — FTP / SFTP
Der FTP-Subtab bietet einen integrierten FTP/SFTP-Client mit Datei-Browser, Navigation und Datei-Download. Damit können Dateien von einem Remote-Server direkt in Zenith heruntergeladen werden.
1. Übersicht
Der Tab "📂 FTP / SFTP" ist der dritte Subtab unter "Remote Inputs" und besteht aus:
- Verbindungseinstellungen — Host, Port, Zugangsdaten
- Remote-Datei-Browser — Interaktive Dateiliste mit Navigation
- Download-Bereich — Lokaler Zielordner + Download-Button
- Status-Log — Verbindungs- und Download-Status
2. Verbindungseinstellungen
2.1 Formularfelder
| Feld | Standard | Beschreibung |
|---|---|---|
| Host | — | Hostname oder IP-Adresse des FTP/SFTP-Servers |
| Port | 22 | Port (Standard: 22 für SFTP, 21 für FTP) |
| Benutzername | — | Login-Benutzername |
| Passwort | — | Login-Passwort (Passwort-Feld) |
| ☑ SFTP verwenden (SSH) | ✅ An | SFTP über SSH statt unverschlüsseltem FTP |
| Remote-Pfad | /home/user/uploads/ |
Startverzeichnis nach Verbindungsaufbau |
2.2 Verbindungs-Buttons
| Button | Hover-Farbe | Funktion |
|---|---|---|
| 🔗 Verbinden | Grün | Verbindung zum Server herstellen |
| 🔌 Trennen | Rot | Aktive Verbindung trennen (initial deaktiviert) |
| 🧪 Testen | Cyan | Verbindung testen ohne dauerhaft verbunden zu bleiben |
2.3 Verbindungsstatus
| Zustand | Log-Meldung | Farbe |
|---|---|---|
| Nicht verbunden | "Nicht verbunden." | Blaugrau |
| Verbinden | "⏳ Verbinde..." | Gelb |
| Verbunden | "✅ Verbunden mit host:port" | Grün |
| Fehler | "❌ Verbindung fehlgeschlagen: ..." | Rot |
| Getrennt | "🔌 Verbindung getrennt." | Gelb |
3. Remote-Datei-Browser
3.1 Navigationsleiste
| Element | Beschreibung |
|---|---|
| ⬆ Übergeordnet | Zum übergeordneten Verzeichnis navigieren |
| 🔄 Aktualisieren | Verzeichnisinhalt neu laden |
| Pfad-Anzeige | Aktuelles Remote-Verzeichnis (Monospace, cyan) |
Alle Navigationsbuttons sind erst nach erfolgreicher Verbindung aktiv.
3.2 Datei-Tabelle
| Spalte | Breite | Beschreibung |
|---|---|---|
| Icon | 📁 Ordner / 📄 Datei | |
| Name | Flexibel | Datei- oder Ordnername |
| Größe | Dateigröße (z.B. 145.3 MB) |
|
| Datum | Letzte Änderung |
3.3 Interaktion
| Aktion | Verhalten |
|---|---|
| Doppelklick auf Ordner | Navigiert in den Ordner |
| Einfachklick | Wählt Datei/Ordner aus (Mehrfachauswahl möglich) |
| ⬆ Übergeordnet | Navigiert ein Verzeichnis nach oben |
3.4 Unterstützte Protokolle
| Protokoll | Bibliothek | Besonderheiten |
|---|---|---|
| SFTP | paramiko |
SSH-Verschlüsselung, Keepalive alle 30s, erweiterte Window-Size |
| FTP | ftplib |
Passiv-Modus für NAT/Firewall, UTF-8-Support |
4. Download-Bereich
| Element | Beschreibung |
|---|---|
| Lokaler Ordner | Eingabefeld für den lokalen Download-Zielordner |
| 📁 Browse | Ordner-Dialog zum Auswählen |
| ⬇ Ausgewählte herunterladen | Startet den Download aller in der Tabelle ausgewählten Dateien |
4.1 Download-Prozess
- Ausgewählte Dateien werden nacheinander heruntergeladen
- Fortschritt wird über Signal
_ftp_dl_progress_signalgemeldet - Status-Log zeigt den aktuellen Download-Status
- Dateien werden im gewählten lokalen Ordner gespeichert
4.2 Ordner-Download
Bei Auswahl eines Ordners wird der gesamte Inhalt rekursiv heruntergeladen.
5. Status-Log
Einzeiliges Label mit Statusmeldungen:
| Farbe | Bedeutung | Beispiel |
|---|---|---|
| Blaugrau | Info | "Nicht verbunden." |
| Grün | Erfolg | "✅ Verbunden mit ftp.example.com:22" |
| Rot | Fehler | "❌ Host muss ausgefüllt sein." |
| Gelb | Warnung/Laden | "⏳ Verbinde..." |
6. Technische Details
6.1 SFTP-Optimierungen
transport.window_size = 2 * 1024 * 1024 # 2 MB Window für schnellen Transfer
transport.packetizer.REKEY_BYTES = pow(2, 40) # Rekeying erst nach 1 TB
transport.packetizer.REKEY_PACKETS = pow(2, 40) # Rekeying-Intervall sehr hoch
transport.set_keepalive(30) # Keepalive alle 30 Sekunden
6.2 FTP-Optimierungen
ftp.set_pasv(True) # Passiv-Modus für NAT/Firewall
ftp.sendcmd("OPTS UTF8 ON") # UTF-8-Modus für Sonderzeichen
6.3 Threading
Alle Verbindungs- und Navigations-Operationen laufen in Background-Threads, um die UI nicht zu blockieren. Cross-Thread-Updates werden über Qt-Signals (_ftp_log_signal, _ftp_listing_signal, _ftp_dl_progress_signal) an den Main-Thread übermittelt.
Teil 8a: Auto-Post — Forum Poster (📝)
Auto-Post — Forum Poster
Der Forum-Poster-Subtab ermöglicht automatisches oder manuelles Posten von Upload-Informationen in Usenet-Foren. Profile können für verschiedene Forum-Engines erstellt, getestet und verwaltet werden.
1. Übersicht
Der Tab "📝 Forum Poster" ist der erste Subtab unter "Auto-Post" und besteht aus:
- Header — Titel + "+ Profil hinzufügen" Button
- Profil-Karten — Liste aller Forum-Profile
- Post-Queue — Manuelle Post-Warteschlange
- Hinweis-Karte — Legende mit Tipps
2. Profil-Karten
Jedes Forum-Profil wird als klickbare Karte mit farbcodiertem linken Rand angezeigt:
2.1 Karten-Elemente
| Element | Beschreibung |
|---|---|
| ● / ○ Toggle | Profil aktivieren (grün ●) / deaktivieren (grau ○) |
| Engine-Icon | Farbiges Icon je nach Engine (🔵 vBulletin, 🟣 XenForo, etc.) |
| Name | Profilname (fett, z.B. "MovieBoard") |
| Details | Engine · Forum-URL (gekürzt auf 50 Zeichen) |
| Modus-Badge | 🤖 Automatisch (grün) / 📋 Manuell (gelb) / ⏸ Deaktiviert (grau) |
| 📅 Letztes Posting | Datum des letzten Posts (falls vorhanden) |
| 🗑 Löschen | Profil nach Bestätigung entfernen |
2.2 Engine-Farben
| Engine | Icon | Randfarbe |
|---|---|---|
| vBulletin | 🔵 | |
| XenForo | 🟣 | |
| MyBB | 🟠 | |
| WoltLab Suite | 🔴 | |
| IP.Board | 🟢 |
2.3 Interaktion
| Aktion | Verhalten |
|---|---|
| Klick auf Karte | Öffnet Profil zum Bearbeiten (Dialog) |
| Klick auf ● / ○ | Togglet Aktivierung des Profils |
| Klick auf 🗑 | Löscht das Profil (nach Bestätigung) |
Leerzustand
Keine Forum-Profile konfiguriert.
Füge ein Profil hinzu um automatisch zu posten.
3. Profil hinzufügen / bearbeiten (Dialog)
Beim Klick auf "+ Profil hinzufügen" oder eine bestehende Karte öffnet sich ein Formular-Dialog:
3.1 Formularfelder
| Feld | Platzhalter / Standard | Beschreibung |
|---|---|---|
| Name | Name des Usenet Forums |
Anzeigename des Forum-Profils — Pflichtfeld |
| Engine | Dropdown | Forum-Software: WoltLab Suite, XenForo, vBulletin, MyBB, IP.Board |
| Forum-URL | https://forum.example.com/forumdisplay.php?f=89 |
Direkte URL des Ziel-Forums — Pflichtfeld |
| Benutzer | — | Forum-Login-Benutzername |
| Passwort | — | Forum-Login-Passwort (Passwort-Feld) |
| Vorlage | — Standard-Template — |
Template aus dem Vorlagen-Tab zuweisen |
| Thread-Titel | {filename} |
Format des Thread-Titels mit Platzhaltern |
| Post-Modus | Dropdown | Automatisch / Manuell / Deaktiviert |
| Anti-Spam Timer | 30 Sek. | Wartezeit zwischen Posts (0–600 Sekunden) |
3.2 Thread-Titel Platzhalter
| Platzhalter | Beschreibung |
|---|---|
{filename} |
Vollständiger Dateiname |
{filesize} |
Dateigröße (formatiert) |
{date} |
Aktuelles Datum |
3.3 Dialog-Buttons
| Button | Funktion |
|---|---|
| 🔌 Verbindung testen | Login im Forum testen (in Hintergrund-Thread) |
| ❌ Abbrechen | Dialog schließen ohne Speichern |
| ✅ Speichern | Profil speichern und Dialog schließen |
3.4 Verbindungstest
Der Test läuft im Hintergrund-Thread: 1. Forum-URL wird geparsed (Basis-URL + Forum-ID) 2. Login wird versucht 3. Ergebnis wird als QMessageBox angezeigt (Erfolg / Fehler)
4. Post-Modi
| Modus | Icon | Beschreibung |
|---|---|---|
| Automatisch | 🤖 | Postet automatisch nach jedem Upload-Abschluss (ohne Benutzerinteraktion) |
| Manuell | 📋 | Upload erscheint in der Post-Queue zur manuellen Prüfung und Bestätigung |
| Deaktiviert | ⏸ | Profil ist deaktiviert, keine Postings werden erstellt |
5. Post-Queue (Manuell)
Uploads die über Profile im Modus "Manuell" konfiguriert sind, erscheinen hier:
5.1 Queue-Karten
Jeder Eintrag wird als Karte mit gelbem linken Rand angezeigt:
| Element | Beschreibung |
|---|---|
| 📄 Titel | Upload-Titel |
| → Ziel | Profil-Name und Engine (z.B. "→ MovieBoard (vBulletin)") |
| ▶ Posten | Upload sofort ins Forum posten |
| 🗑 | Eintrag aus der Queue entfernen |
5.2 Posting-Ablauf (Manuell)
- Klick auf "▶ Posten"
- Forum-Engine wird geladen
- Login wird durchgeführt
- Template wird gerendert (Platzhalter ersetzt)
- Anti-Spam Timer wird abgewartet
- Thread wird erstellt
- Bei Erfolg: Eintrag wird aus der Queue entfernt
Leerzustand
Keine Posts in der Warteschlange.
6. Hinweis-Karte (Legende)
Am unteren Rand eine Info-Karte mit Tipps:
- ● Gib den direkten Forum-Link ein (z.B.
forumdisplay.php?f=89) - ● Automatisch: Postet sofort nach Upload-Abschluss
- ● Manuell: Upload erscheint in der Post-Queue zur Prüfung
- ● Der Anti-Spam Timer verhindert zu schnelles Posten
- ● Aktuell unterstützt: vBulletin 3.x (weitere Engines folgen)
7. Unterstützte Forum-Engines
| Engine | Implementiert | URL-Parsing |
|---|---|---|
| vBulletin 3.x | ✅ Ja | forumdisplay.php?f=ID |
| XenForo | 🔜 Geplant | — |
| WoltLab Suite | 🔜 Geplant | — |
| MyBB | 🔜 Geplant | — |
| IP.Board | 🔜 Geplant | — |
Teil 8b: Auto-Post — Vorlagen / Templates (📄)
Auto-Post — Vorlagen (Templates)
Der Vorlagen-Subtab bietet einen BBCode/HTML-Template-Editor mit Live-Toolbar, Platzhalter-Referenz und Vorlagen-Verwaltung. Templates werden beim Forum-Posting automatisch mit Upload-Daten befüllt.
1. Übersicht
Der Tab "📄 Vorlagen" ist der zweite Subtab unter "Auto-Post" und besteht aus:
- Platzhalter-Referenz — Übersicht aller verfügbaren Platzhalter
- Vorlagen-Liste (links) — Alle gespeicherten Templates
- Editor (rechts) — BBCode/HTML-Editor mit Toolbar
Das Layout ist als horizontaler Splitter organisiert ( Liste | Editor).
2. Platzhalter-Referenz
Am oberen Rand eine kompakte Chip-Leiste mit allen verfügbaren Platzhaltern:
| Platzhalter | Beschreibung |
|---|---|
{title} |
Dateiname (ohne Erweiterung) |
{filename} |
Vollständiger Dateiname |
{password} |
Generiertes Passwort |
{header} |
Header-Name (Usenet) |
{filesize} |
Dateigröße (formatiert) |
{nzb_name} |
NZB-Dateiname |
{date} |
Aktuelles Datum |
{newsgroup} |
Newsgroup |
{description} |
Beschreibung (manuell gesetzt) |
{nfo_content} |
NFO-Inhalt (falls vorhanden) |
Jeder Chip ist grün auf dunkelgrünem Hintergrund mit Tooltip.
3. Vorlagen-Liste (links)
3.1 Liste
- Jede Vorlage wird mit dem Icon "📄" und ihrem Namen angezeigt
- Auswahl per Klick lädt die Vorlage in den Editor
- Erste Vorlage wird automatisch ausgewählt
3.2 Buttons
| Button | Funktion |
|---|---|
| + Neu | Neue Vorlage erstellen (mit Default-Template vorausgefüllt) |
| 🗑 Löschen | Ausgewählte Vorlage löschen (Bestätigung erforderlich) |
3.3 Einschränkungen
- Minimum: Es muss immer mindestens eine Vorlage existieren
- Maximum: Maximal 10 Vorlagen (konfiguriert über
MAX_POSTING_TEMPLATES) - Standard-Template: Wird automatisch erstellt wenn keine Vorlagen vorhanden sind
4. Editor (rechts)
4.1 Editor-Felder
| Feld | Beschreibung |
|---|---|
| Name | Vorlagenname (z.B. "vBulletin 3") |
| Format | Dropdown: BBCode / HTML |
| BBCode Toolbar | Schnellbuttons für BBCode-Tags |
| Editor | Mehrzeiliger Code-Editor (Monospace, grün auf dunkel) |
4.2 BBCode-Toolbar
11 Buttons für schnelles Einfügen von BBCode-Tags:
| Button | Öffnender Tag | Schließender Tag |
|---|---|---|
| B | [b] |
[/b] |
| I | [i] |
[/i] |
| U | [u] |
[/u] |
| Color | [color=red] |
[/color] |
| Size | [size=3] |
[/size] |
| Center | [center] |
[/center] |
| URL | [url] |
[/url] |
| IMG | [img] |
[/img] |
| Code | [code] |
[/code] |
| Hide | [hide] |
[/hide] |
| Quote | [quote] |
[/quote] |
Verhalten: Bei markiertem Text wird der BBCode um die Auswahl herum eingefügt. Ohne Auswahl werden die Tags an der Cursor-Position eingefügt.
4.3 Editor-Styling
- Schriftart: JetBrains Mono → Consolas → Courier New (Fallback)
- Textfarbe: Grün
- Hintergrund: Dunkel
- Auswahl: Dunkelblau
4.4 Speichern
| Button | Funktion |
|---|---|
| 💾 Vorlage speichern | Speichert Name, Format und Inhalt in die Config |
5. Standard-Template (vBulletin 3.x)
Wird automatisch erstellt wenn keine Vorlagen vorhanden sind:
[center][size=5][color=red][b]{title}[/b][/color][/size][/center]
[center][size=3][color=][b]»Inhalt«[/b][/color][/size]
[size=2][color=white]{description}[/color][/size][/center]
[nfo]{nfo_content}[/nfo]
[hide]
[center][size=3][color=][b]»Header«[/b][/color][/size]
[size=2][color=white]{header}[/color][/size][/center]
[center][size=3][color=][b]»Password«[/b][/color][/size]
[size=2][color=white]{password}[/color][/size][/center]
[center][nzblnk]nzblnk:?t={title}&h={header}&p={password}[/nzblnk]
[/center][/hide]
Template-Elemente erklärt
| Bereich | Beschreibung |
|---|---|
| Titel | Dateiname in rot, zentriert, groß |
| Inhalt | Beschreibungstext (manuell) |
| NFO | NFO-Inhalt in speziellen NFO-Tags |
| [hide] | Versteckter Bereich (nur für angemeldete Nutzer) |
| Header | Usenet-Header-Name |
| Password | Archiv-Passwort |
| NZBLNK | Klickbarer NZBLNK-Link für direkten Download |
6. Template-Rendering (Ablauf)
Beim Posten in ein Forum:
- Template wird aus dem Profil geladen
- Alle
{platzhalter}werden durch aktuelle Upload-Daten ersetzt - Thread-Titel wird separat mit eigenem Format gerendert
- Der fertige BBCode/HTML-Text wird als Thread-Nachricht gepostet
Webhooks & Benachrichtigungen
Der Webhook-Tab ermöglicht das Senden automatischer Benachrichtigungen über verschiedene Kanäle, wenn bestimmte Ereignisse auftreten (z.B. Upload abgeschlossen, VPN verloren, Speicher kritisch).
1. Übersicht
Der Tab besteht aus:
- Header — Titel + "+ Webhook hinzufügen" Button
- Webhook-Karten — Liste aller konfigurierten Webhooks
- Hinweis-Karte — Legende mit Tipps
2. Unterstützte Anbieter
| Anbieter | Icon | Farbe | Beschreibung |
|---|---|---|---|
| Discord | 💬 | Discord Webhook URL | |
| Telegram | 📨 | Telegram Bot API | |
| ✉ | SMTP-basierter E-Mail-Versand | ||
| ntfy | 🔔 | Push-Benachrichtigungen über ntfy.sh | |
| Custom | 🔗 | Benutzerdefinierter HTTP-Webhook |
3. Webhook-Karten
Jeder gespeicherte Webhook wird als klickbare Karte angezeigt:
3.1 Karten-Elemente
| Element | Beschreibung |
|---|---|
| Icon + Name | Anbieter-Icon und Webhook-Name (z.B. "💬 Discord Uploads") |
| Details | Anbieter · Anzahl Ereignisse (z.B. "Discord · 5 Ereignisse") |
| Provider-Badge | 3-Buchstaben-Badge mit Anbieter-Farbe (z.B. "DIS" in Blau) |
| ● / ○ | Aktivierungsstatus (grün = aktiv) |
| ✕ | Webhook löschen (nach Bestätigung) |
3.2 Interaktion
| Aktion | Verhalten |
|---|---|
| Klick auf Karte | Öffnet den Bearbeitungsdialog |
| Klick auf ● / ○ | Webhook aktivieren/deaktivieren |
| Klick auf ✕ | Webhook löschen (Bestätigung erforderlich) |
Leerzustand
Keine Webhooks konfiguriert.
Füge einen Webhook hinzu, um Benachrichtigungen zu erhalten.
4. Webhook hinzufügen / bearbeiten (Dialog)
4.1 Allgemeine Felder
| Feld | Beschreibung |
|---|---|
| Name | Anzeigename (z.B. "Discord Uploads") — Pflichtfeld |
| Anbieter | Dropdown: Discord, Telegram, E-Mail, ntfy, Custom |
4.2 Anbieter-spezifische Felder
Discord
| Feld | Platzhalter | Beschreibung |
|---|---|---|
| Webhook URL | https://discord.com/api/webhooks/... |
Discord Webhook URL — Pflichtfeld |
Telegram
| Feld | Platzhalter | Beschreibung |
|---|---|---|
| Bot Token | 123456:ABC-DEF1234ghIkl-... |
Telegram Bot-Token von @BotFather |
| Chat ID | -1001234567890 |
Ziel-Chat oder -Gruppe |
| Feld | Standard | Beschreibung |
|---|---|---|
| SMTP Host | smtp.gmail.com |
SMTP-Server-Adresse |
| SMTP Port | 587 | Port (1–65535) |
| ☑ TLS / STARTTLS | ✅ An | TLS-Verschlüsselung aktivieren |
| Benutzer | — | SMTP-Login-Benutzername |
| Passwort | — | SMTP-Login-Passwort (Passwort-Feld) |
| Empfänger | — | Ziel-E-Mail-Adresse — Pflichtfeld |
ntfy
| Feld | Standard | Beschreibung |
|---|---|---|
| Server URL | https://ntfy.sh |
ntfy-Server (öffentlich oder self-hosted) |
| Topic | — | Topic-Name (z.B. "zenith-uploads") — Pflichtfeld |
| Token | — | Access Token (optional, für private Topics) |
Custom
| Feld | Beschreibung |
|---|---|
| URL | Ziel-URL für den HTTP-Request — Pflichtfeld |
| HTTP Methode | POST / PUT / GET |
| Headers (JSON) | Zusätzliche HTTP-Header als JSON (z.B. {"Authorization": "Bearer xxx"}) |
5. Ereignisse
Pro Webhook können folgende Ereignisse aktiviert/deaktiviert werden:
| Ereignis-Key | Anzeigename | Beschreibung |
|---|---|---|
upload_done |
Upload abgeschlossen | Ein Upload wurde erfolgreich beendet |
upload_failed |
Upload fehlgeschlagen | Ein Upload ist fehlgeschlagen |
download_done |
Download abgeschlossen | Ein Download wurde erfolgreich beendet |
download_failed |
Download fehlgeschlagen | Ein Download ist fehlgeschlagen |
queue_empty |
Warteschlange leer | Alle Einträge in der Queue wurden verarbeitet |
vpn_lost |
VPN-Verbindung verloren | VPN-Guard hat die Verbindung verloren |
watchdog_new |
Watchdog: Neue Datei | Watchdog hat eine neue Datei erkannt |
disk_critical |
Speicherplatz kritisch | Freier Speicherplatz unter dem Limit |
Standard: Alle Ereignisse sind bei neuen Webhooks aktiviert.
6. Datenfelder
Welche Informationen in der Benachrichtigung enthalten sein sollen:
| Feld-Key | Anzeigename | Standard |
|---|---|---|
filename |
Dateiname | ✅ An |
filesize |
Dateigrösse | ☐ Aus |
duration |
Dauer | ☐ Aus |
status |
Status | ✅ An |
error_details |
Fehlerdetails | ☐ Aus |
timestamp |
Zeitstempel | ✅ An |
speed |
Upload-/Download-Speed | ☐ Aus |
nzb_name |
NZB-Dateiname | ☐ Aus |
7. Test senden
Der Dialog enthält einen "🔔 Test senden" Button:
- Aktueller Dialog-Zustand wird temporär als Webhook-Objekt erzeugt
WebhookDispatcher.send_testwird aufgerufen- Eine Test-Benachrichtigung wird an den konfigurierten Anbieter gesendet
- Erfolg/Fehler wird als QMessageBox angezeigt
8. Hinweis-Karte (Legende)
Am unteren Rand eine Info-Karte:
- ● Klicke auf eine Karte zum Bearbeiten
- ● Klicke ● / ○ zum Aktivieren / Deaktivieren
- ● Mehrere Webhooks pro Anbieter möglich
- ● Ereignisse und Datenfelder sind pro Webhook konfigurierbar
Teil 10a: Einstellungen — Provider (🌐)
Einstellungen — Provider
Der Provider-Subtab verwaltet die Usenet-Server-Konfiguration. Mehrere Provider können hinzugefügt, getestet und für Upload, Download oder beides verwendet werden.
1. Übersicht
Der Tab besteht aus:
- Provider-Tabelle — Alle konfigurierten Usenet-Provider
- Add/Edit-Formular — Neuen Provider hinzufügen
- Aktions-Buttons — Hinzufügen + Verbindungstest
2. Provider-Tabelle
2.1 Spalten
| Spalte | Typ | Beschreibung |
|---|---|---|
| Name | Text (editierbar) | Anzeigename des Providers |
| Host | Text (editierbar) | NNTP-Server-Adresse |
| Port | Zahl (editierbar) | Server-Port (Standard: 563 für SSL) |
| SSL | Checkbox | SSL/TLS-Verschlüsselung |
| Connections | Zahl (editierbar) | Gleichzeitige NNTP-Verbindungen |
| Speed Limit | Text (editierbar) | KB/s Limit ("Unlimited" = 0) |
| Verwendung | Dropdown | Beides / Upload / Download |
| Actions | Button | "Del" — Provider löschen |
2.2 Tabellenverhalten
- Alle Text/Zahl-Spalten sind per Doppelklick direkt editierbar
- Änderungen werden sofort automatisch gespeichert
- Benutzername und Passwort werden nicht in der Tabelle angezeigt (nur in Config)
- Beim Löschen werden alle nachfolgenden Rows neu gebunden
3. Add/Edit-Formular
| Feld | Standard | Beschreibung |
|---|---|---|
| Name | — | Anzeigename — Pflichtfeld |
| Host | — | NNTP-Host (z.B. news.provider.com) — Pflichtfeld |
| Port | 563 | Server-Port (1–65535) |
| Username | — | Login-Benutzername |
| Password | — | Login-Passwort (verdeckt) |
| ☑ Use SSL | ✅ An | SSL-Verschlüsselung aktivieren |
| Connections | 10 | Gleichzeitige Verbindungen (1–100) |
| Speed Limit | Unlimited | Geschwindigkeitslimit in KB/s (0 = unbegrenzt) |
| Verwendung | Beides | Beides / Upload / Download |
4. Verbindungstest (🔌 Test Connection)
- NNTP-Verbindung wird mit
nntplibaufgebaut - SSL-Context wird bei aktivem SSL erstellt
- Latenz wird gemessen (ms)
- Server-Welcome-Message wird angezeigt
- Bei Fehler: Exception wird angezeigt
Teil 10b: Einstellungen — Upload Einstellungen (⚙)
Einstellungen — Upload Einstellungen
Der Upload-Settings-Subtab enthält alle Konfigurationsoptionen für den Upload-Prozess. Unterteilt in Standard-Einstellungen (immer sichtbar) und Expert-Mode (umschaltbar).
1. Übersicht
Obere Leiste
| Element | Beschreibung |
|---|---|
| ☑ Expert-Modus aktivieren | Schaltet erweiterte Optionen frei |
| ⚠ Einstellungen zurücksetzen | Factory Reset aller Einstellungen |
2. Standard-Einstellungen (3-Spalten-Grid)
2.1 Allgemein
| Feld | Standard | Beschreibung |
|---|---|---|
| Sprache | English | Dropdown: Deutsch, English, Español, Français, Italiano, Nederlands, Русский |
| 🔄 Reload | — | App mit neuer Sprache neu laden |
| ☑ Autostart | ☐ Aus | System-Autostart beim Hochfahren |
| ☑ In Tray minimieren | ☐ Aus | Beim Schließen in System-Tray |
| ☑ Minimiert starten | ☐ Aus | App startet direkt im Tray |
| NZB Output | ~/.zenith-uploader/nzb/ |
Ordner für NZB-Dateien (📂 Browse) |
| Mapping Output | ~/.zenith-uploader/mappings/ |
Ordner für Mapping-Dateien (📂 Browse) |
| Temp Dir | ~/.zenith-uploader/tmp/ |
Temporärer Arbeitsordner (📂 Browse) |
2.2 Verarbeitung
| Feld | Standard | Beschreibung |
|---|---|---|
| Verarbeitungsmodus | Sequential | Sequential / Pipelined |
| Upload-Reihenfolge | FIFO | FIFO / Erster Fertiger (nur bei Pipelined) |
| Concurrent Tasks | 1 | Gleichzeitige Tasks (1–20, nur bei Sequential) |
| ☑ Force Re-Upload | ☐ Aus | Duplikate nicht überspringen |
| Beilage-Dateien | — | + Dateien die jedem Upload beigelegt werden (.txt, .url, .html, .info, .nfo) |
Pipelined vs Sequential: - Sequential: Ein Task wird komplett abgearbeitet bevor der nächste startet - Pipelined: Während ein Upload läuft, wird der nächste Task bereits gepackt. DiskGuard begrenzt automatisch
2.3 Disk Guard
| Feld | Standard | Beschreibung |
|---|---|---|
| ☑ Disk Guard aktivieren | ✅ An | Speicherplatzüberwachung |
| Min. frei | 20 GB | Packing pausiert bei weniger freiem Speicher (1–500 GB) |
| Emergency Threshold | 90% | Globaler Notbremse-Schwellenwert (50–99%) |
| ☑ RAM-Modus | ✅ An | Packing in RAM statt auf Disk |
| ☑ Nur RAM | ☐ Aus | Wartet auf RAM statt Disk-Fallback |
| ☑ I/O Protection | ✅ An | 5-Sekunden Dateistabilitätsprüfung |
2.4 Cleanup
| Feld | Standard | Beschreibung |
|---|---|---|
| ☑ Archive löschen | ✅ An | 7z-Archive nach Upload löschen |
| ☑ Originale löschen | ☐ Aus | Quelldateien nach Upload löschen |
| ☑ Uploads auto-entfernen | ☐ Aus | Fertige Uploads nach 5s aus Queue entfernen |
| Log TTL | 7 Tage | Log-/Temp-Dateien nach N Tagen löschen (1–365) |
2.5 Ressourcen
| Feld | Standard | Beschreibung |
|---|---|---|
| Prozess-Priorität | Normal | Niedrig / Normal / Hoch / Maximum |
| Stufe | Verhalten | Linux Niceness |
|---|---|---|
| Niedrig | Weniger CPU-Last | 10 |
| Normal | Standard (empfohlen) | 0 |
| Hoch | Schnellere Verarbeitung (Root nötig) | -5 |
| Maximum | Volle Systemleistung (Root nötig) | -10 |
3. Expert-Modus (3-Spalten-Grid)
Sichtbar nur wenn "Expert-Modus aktivieren" aktiviert ist. Hintergrund: violetter Rahmen.
3.1 7zip Compression — Expert
| Feld | Standard | Beschreibung |
|---|---|---|
| Passwort Modus | Auto | Auto (zufällig pro Task) / Manual (festes Passwort) |
| PW Länge | 16 | Zufallspasswort-Länge (4–16, nur bei Auto) |
| ☑ Buchstaben | ✅ | Buchstaben im Passwort |
| ☑ Zahlen | ✅ | Zahlen im Passwort |
| ☑ Sonderzeichen | ☐ | Sonderzeichen im Passwort |
| Manuelles Passwort | — | Festes Passwort (nur bei Manual) |
| Compression | LZMA2 | LZMA2 / LZMA / PPMd / BZip2 |
| Level | 0 (Store) | 0=Store, 5=Normal, 9=Ultra (0–9) |
| Dictionary | 32 MB | 64KB–1536MB |
| Word Size | 32 | Word-Größe (8–273) |
| ☑ Solid Archive | ✅ | Solid-Archiv erstellen |
| Part Size | Auto | Auto (threshold) / Custom (MB) / Divider (Anzahl) |
| Custom Size | 100 MB | Feste Part-Größe (10–4096 MB, nur bei Custom) |
| Divider | 40 Parts | Datei in N Parts aufteilen (2–999, nur bei Divider) |
| ☑ Encrypt Headers | ✅ (gesperrt) | Datei-Header verschlüsseln (immer aktiv) |
3.2 ParPar — Recovery Data
| Feld | Standard | Beschreibung |
|---|---|---|
| Redundancy | 10% | PAR2-Recovery (1–100%) |
| Block Size | Auto | Auto / 128KB–4MB |
| Distribution | pow2 | pow2 / uniform / equal |
| Threads | Auto | CPU-Threads (0=Auto, 1–32) |
3.3 NNTP — Upload Engine
| Feld | Standard | Beschreibung |
|---|---|---|
| Article Size | 768000 bytes | NNTP-Artikelgröße (100000–800000) |
| Newsgroups | — | Tag-Eingabe (Enter zum Hinzufügen, ✕ zum Entfernen) |
| ☑ Header Obfuscation | ✅ | NNTP-Header verschleiern |
| Check Connections | 0 (Aus) | Verbindungen zur Artikel-Verifikation (0–10) |
| ☑ Zufällige E-Mail | ✅ | Zufällige From-Adresse pro Upload |
| E-Mail (From) | — | Manuelle From-Adresse (nur wenn nicht zufällig) |
| Poster Name | — | Optionaler Anzeigename für NNTP-Header |
Teil 10c: Einstellungen — Download Einstellungen (📥)
Einstellungen — Download Einstellungen
Der Download-Settings-Subtab konfiguriert alle Aspekte des NZB-Download-Prozesses, von Ordnerstruktur über Verarbeitung bis zu Disk Guard und Mirror Mode.
1. Übersicht
Das Layout ist ein 2-Spalten-Grid mit 5 Gruppen:
| Zeile | Links | Rechts |
|---|---|---|
| 1 | Ordner & Dateien | Verarbeitung |
| 2 | Verbindung | Disk Guard (Download) |
| 3 | Mirror Mode (volle Breite) | — |
2. Ordner & Dateien
| Feld | Standard | Beschreibung |
|---|---|---|
| Zielordner | ~/Downloads/ |
Ordner für fertige Downloads (📂 Browse) |
| Temp-Ordner | ~/.zenith-uploader/dl_temp/ |
Ordner für laufende Downloads (📂 Browse) |
| ☑ Archive löschen | ✅ An | Archiv-Dateien nach Entpacken löschen |
| ☑ NZB löschen | ☐ Aus | NZB-Datei nach erfolgreichem Download löschen |
| NZB-Ordner | ~/.zenith-uploader/nzb_cache/ |
Speicherort für NZB-Dateien (📂 Browse) |
| ☑ NZB umbenennen | ☐ Aus | NZB nach entpacktem Inhalt umbenennen |
| ☑ PW an NZB anhängen | ✅ An | Passwort im Format {{ pw }} an NZB-Namen |
| ☑ Zwischenablage | ✅ An | Automatisch auf kopierte NZB-Links überwachen |
NZB umbenennen: Nur sinnvoll wenn der NZB-Dateiname nichts über den Inhalt aussagt (z.B.
dfbuevnzncuvb.nzb). Nicht empfohlen bei aussagekräftigen Namen.
3. Verarbeitung
| Feld | Standard | Beschreibung |
|---|---|---|
| ☑ Auto-Entpacken | ✅ An | Automatisch 7z/RAR entpacken |
| ☑ PAR2 bei Bedarf | ✅ An | PAR2-Blöcke nur herunterladen wenn Repair nötig |
| ☑ CRC32-Prüfung | ✅ An | yEnc CRC32-Verifikation aktivieren |
| ☑ Auto-Entfernen | ☐ Aus | Abgeschlossene Downloads nach 5s aus Liste entfernen |
| ☑ Junk löschen | ☐ Aus | Junk-Dateien nach Download löschen |
Junk-Erweiterungen (nur wenn Junk löschen aktiv)
| Erweiterung | Standard |
|---|---|
.txt |
✅ An |
.html |
✅ An |
.url |
✅ An |
.nfo |
✅ An |
.info |
✅ An |
Die einzelnen Erweiterungen sind nur aktivierbar wenn der Master-Toggle "Junk-Dateien löschen" aktiv ist.
4. Verbindung
| Feld | Standard | Beschreibung |
|---|---|---|
| Max. Verbindungen | Auto (Provider) | NNTP-Verbindungen für Downloads (0=Auto, 1–100) |
| Geschwindigkeitslimit | Unbegrenzt | Download-Speed in MB/s (0=Unbegrenzt, max 10000) |
| Retry bei Fehler | 3 | Wiederholungen fehlgeschlagener Segmente (0=Keine, max 20) |
5. Disk Guard (Download)
| Feld | Standard | Beschreibung |
|---|---|---|
| ☑ Disk Guard | ✅ An | Speicherplatz für Downloads überwachen |
| Notbremse bei | 80% | Downloads stoppen bei dieser Auslastung (50–99%) |
| Min. frei | 10 GB | Downloads pausieren bei weniger freiem Speicher (1–500 GB) |
Tipp: Den Download-Disk-Guard 10% niedriger als den Upload-Disk-Guard setzen (z.B. Upload=90% → Download=80%). So wird bei gleichzeitigem Up-/Download der Upload nie blockiert.
6. Mirror Mode
| Feld | Standard | Beschreibung |
|---|---|---|
| ☑ Mirror Mode | ☐ Aus | Fehlgeschlagene Extractions automatisch löschen |
Aktiviert: Archive mit Entpack-Fehler werden gelöscht, um Re-Uploads via Watchfolder zu verhindern. Deaktiviert: Archive bleiben erhalten und können manuell mit dem richtigen Passwort entpackt werden.
Teil 10d: Einstellungen — Überwachungsordner (👁)
Einstellungen — Überwachungsordner
Der Watchfolder-Subtab verwaltet automatisch überwachte Ordner. Neue Dateien/Ordner werden automatisch zur Upload-Queue hinzugefügt.
1. Übersicht
Der Tab besteht aus:
- Header — Titel + Zähler (z.B. "3 / 10")
- Subtitle — Erklärungstext
- Ordner-Liste — Konfigurierte Überwachungsordner als Karten
- + Hinzufügen Button — Neuen Ordner hinzufügen
2. Ordner-Karten
Jeder überwachte Ordner wird als Karte angezeigt:
2.1 Karten-Elemente
| Element | Beschreibung |
|---|---|
| Ordnername | Basename des Pfads (fett, ) |
| Vollständiger Pfad | Kompletter Pfad (grau, ) |
| Newsgroup-Chips | Zugewiesene Newsgroups als Tags (cyan, entfernbar) |
| Newsgroup-Dropdown | "— Newsgroup zuweisen —" Combo ( breit) |
| Status | ● Aktiv (grün) / ● Deaktiviert (gelb) / ● Nicht gefunden (rot) |
| X Button | Ordner entfernen (roter Hover) |
2.2 Status-Logik
| Status | Farbe | Bedingung |
|---|---|---|
| ● Aktiv | (grün) | Ordner existiert und ist nicht deaktiviert |
| ● Deaktiviert | (gelb) | Ordner ist in watch_folders_disabled Liste |
| ● Nicht gefunden | (rot) | Ordner existiert nicht im Dateisystem |
Leerzustand
Keine Überwachungsordner konfiguriert
3. Newsgroup-Zuweisung
Jedem Ordner können eigene Newsgroups zugewiesen werden:
3.1 Dropdown-Optionen
| Option | Verhalten |
|---|---|
| — Newsgroup zuweisen — | Platzhalter (keine Aktion) |
| Keine Newsgroup | Setzt Marker __none__ → Ordner postet in keine Newsgroup |
| alt.binaries.... | Aus den globalen Newsgroup-Tags (Upload Einstellungen) |
3.2 Chip-Verhalten
- Mehrere Newsgroups pro Ordner möglich
- Chip mit "x" Button zum Entfernen einzelner Newsgroups
- "Keine Newsgroup" ersetzt alle anderen
- Hinzufügen einer echten Newsgroup entfernt
__none__-Marker - Ohne Zuweisung: "(Standard-Newsgroups)" in kursiv
3.3 Persistenz
Newsgroups werden in watch_folder_newsgroups gespeichert:
{
"/pfad/zum/ordner": ["alt.binaries.boneless", "alt.binaries.misc"],
"/anderer/ordner": ["__none__"]
}
4. Ordner hinzufügen
- Klick auf "+ Ordner hinzufügen"
- Ordner-Dialog öffnet sich
- Prüfung auf Duplikate (Info-Meldung wenn bereits vorhanden)
- Maximum: 10 Ordner — Button wird deaktiviert bei Erreichen
- Watchdog wird sofort neu geladen (
controller.reload_watchdog)
5. Ordner entfernen
- Klick auf "X" Button
- Ordner wird aus
watch_foldersentfernt - Eintrag aus
watch_folders_disabledbereinigt - Per-Folder Newsgroups aus
watch_folder_newsgroupsentfernt - Watchdog wird sofort neu geladen
6. Verknüpfung mit Dashboard
Die Watchfolder-Toggle-Switches im Dashboard (● Aktiv / ○ Deaktiviert) schreiben in die watch_folders_disabled Liste. Der Status im Watchfolder-Tab wird beim Tab-Wechsel automatisch aktualisiert.
Lizenz
Der Lizenz-Tab verwaltet die Produktaktivierung, zeigt den aktuellen Lizenzstatus an und bietet HWID-Management für Gerätewechsel.
1. Übersicht
Der Tab besteht aus:
- Header — Titel + Beschreibung
- Lizenz-Badge-Karte — Grosses Badge mit Ablaufdatum
- Aktivierungskarte — Lizenzschlüssel-Eingabe
- Lizenzverwaltung — 3 Aktions-Karten (HWID Reset, Deaktivieren, HWID kopieren)
- Demo-Karte (nur im Demo-Modus) — Einschränkungen + Upgrade-Link
- Features-Karte (nur bei aktiver Lizenz) — Freigeschaltete Features
2. Lizenz-Stufen
| Stufe | Icon | Farbe | Badge-BG | Beschreibung |
|---|---|---|---|---|
| DEMO | ⚠ | (gelb) | Eingeschränkte Funktionen | |
| VOLLVERSION | ✓ | (grün) | Alle Features freigeschaltet |
3. Lizenz-Badge-Karte
- Grosses Badge mit Lizenz-Status und Icon
- Untertitel:
- DEMO: "Eingeschränkte Funktionen — Upgrade für vollen Zugriff"
- VOLLVERSION: "Alle Features freigeschaltet — Unbegrenzt"
- Trennlinie in Status-Farbe
- Gültig bis: Ablaufdatum / "∞ Unbegrenzt" / "—" (Demo)
- Hintergrund: Gradient in Status-Farbe
4. Lizenz-Aktivierung
| Element | Beschreibung |
|---|---|
| Eingabefeld | Monospace, Platzhalter: "XXXX – XXXX – XXXX – XXXX" |
| 🔑 Aktivieren | Gradient-Button, ruft license.activate(key) auf |
Aktivierungs-Flow
- Schlüssel eingeben
license.activate(key)wird aufgerufen- Erfolg:
result.valid = True→ Schlüssel wird in Config gespeichert, Neustart erforderlich - Fehler:
result.errorwird in Dialog angezeigt
5. Lizenzverwaltung (3 Aktions-Karten)
5.1 🔄 HWID zurücksetzen
| Eigenschaft | Wert |
|---|---|
| Beschreibung | Hardware-ID zurücksetzen für Gerätewechsel |
| Bestätigung | Warnung mit 3 Konsequenzen |
| API-Call | license.reset_hwid |
| Erfolg | Info-Dialog |
| Fehler | Kritischer Dialog (Internetverbindung prüfen) |
5.2 ⛔ Lizenz deaktivieren
| Eigenschaft | Wert |
|---|---|
| Beschreibung | Lizenz auf diesem Gerät deaktivieren |
| Bestätigung | Warnung mit 3 Konsequenzen |
| API-Call | license.deactivate |
| Effekt | App wechselt zurück in Demo-Modus (nach Neustart) |
| Button-Style | Danger (rot) |
5.3 📋 HWID kopieren
| Eigenschaft | Wert |
|---|---|
| Beschreibung | Vollständige Hardware-ID in Zwischenablage |
| API-Call | QApplication.clipboard.setText(license.hwid) |
| Feedback | Info-Dialog mit HWID |
6. Demo-Einschränkungen (nur DEMO)
Gelbe Warnkarte mit:
| Icon | Einschränkung |
|---|---|
| 📦 | Max 1 GB pro Batch |
| 📊 | Max 10 Uploads pro Tag |
| 🏷 | Branding-Header aktiv |
Upgrade-Link: → zenith-uploader.com (extern)
7. Freigeschaltete Features (nur Vollversion)
Grüne Feature-Liste:
- ✓ Unbegrenzte Uploads
- ✓ Keine Branding-Header
- ✓ Volle Geschwindigkeit
- ✓ Kill-Switch & VPN Guard
- ✓ Priority Support
Support & Diagnose
Der Support-Tab bietet System-Informationen, einen integrierten Log-Viewer mit Echtzeit-Filterung und Schnellaktionen für Bug-Reports.
1. Übersicht
Der Tab besteht aus:
- Header — Titel + Versions-Badge (v1.0.0)
- System-Info-Karten — 4 Karten nebeneinander
- Log-Viewer — Syntax-hervorgehobener Live-Log
- Schnellaktionen — 4 Aktions-Karten
- Footer — Support-E-Mail + Website-Link
2. System-Info-Karten
| Karte | Icon | Beschreibung | Quelle |
|---|---|---|---|
| Betriebssystem | 🖥 | OS-Name + Version | platform.system / distro |
| Python | 🐍 | Python-Version | platform.python_version |
| RAM verfügbar | 💾 | Verfügbar / Gesamt in GB | psutil.virtual_memory |
| CPU-Kerne | ⚡ | Anzahl CPU-Kerne | os.cpu_count |
OS-Erkennung
| System | Ausgabe |
|---|---|
| Linux | distro.name distro.version (mit distro) oder Linux kernel_version |
| Windows | Windows platform.version |
| macOS | macOS mac_ver |
3. Log-Viewer
3.1 Header-Zeile
| Element | Beschreibung |
|---|---|
| 📋 Anwendungs-Log | Titel |
| 🔍 Suchfeld | Text-Suche (, case-insensitive) |
| Level-Filter | Dropdown: Alle Level / INFO / WARNING / ERROR / DEBUG |
| Zeilenzähler | "N Zeilen" |
3.2 Log-Anzeige
- Quelle:
~/.zenith-uploader/logs/zenith.log - Max. Zeilen: 1000 (letzte)
- Auto-Refresh: Alle 10 Sekunden via QTimer
- Font: JetBrains Mono 10pt (Fallback: Consolas)
- Scroll: Automatisch zum Ende nach jedem Laden
3.3 Syntax-Highlighting (Log-Level-Farben)
| Level | Farbe |
|---|---|
| CRITICAL | (hellrot) |
| ERROR | (rot) |
| WARNING | (gelb) |
| INFO | (cyan) |
| DEBUG | (grau) |
3.4 Filterlogik
- Level-Filter: Prüft ob
[LEVELim Zeilen-Text enthalten ist - Suche: Case-insensitiver Substring-Match
- Kombination: Beide Filter werden UND-verknüpft
- HTML-Output: Zeilen werden als farbige
<span>in<pre>gerendert
3.5 Aktions-Leiste
| Button | Beschreibung |
|---|---|
| 🔄 Aktualisieren | Log-Datei neu laden |
| ⬆ Zum Anfang | ScrollBar nach oben |
| ⬇ Zum Ende | ScrollBar nach unten |
| 📋 Log kopieren | Sichtbaren Log-Inhalt in Zwischenablage |
| ⚠ Nur Fehler | Toggle-Button, setzt Level-Filter auf ERROR |
| ● Auto-Refresh: 10s | Status-Indikator (grün) |
4. Schnellaktionen (4 Karten)
4.1 🐛 Fehler melden
| Eigenschaft | Wert |
|---|---|
| Button | "Bug Report senden" (Primary-Gradient) |
| Aktion | 1. Log-Pfad in Zwischenablage kopieren |
| 2. Log-Ordner im Dateimanager öffnen | |
| 3. E-Mail-Client öffnen mit Template |
Bug-Report E-Mail-Template:
An: [SUPPORT_EMAIL]
Betreff: Zenith Bug Report
Bitte beschreibe das Problem / Please describe the issue:
Schritte zum Reproduzieren / Steps to reproduce:
1.
2.
3.
Erwartetes Verhalten / Expected behavior:
Tatsächliches Verhalten / Actual behavior:
--- System Info ---
OS: [auto]
Python: [auto]
CPU: [auto] Kerne
Bitte die Log-Datei anhängen / Please attach the log file.
4.2 📂 Log-Ordner öffnen
- Öffnet
~/.zenith-uploader/logs/im System-Dateimanager - Erstellt den Ordner falls nicht vorhanden
4.3 📋 Log-Pfad kopieren
- Kopiert den vollständigen Pfad zum Log-Ordner in die Zwischenablage
4.4 📊 Systeminfo kopieren
Kopiert formatierten Text:
Zenith Uploader — System Info
===================================
OS: [Betriebssystem]
Python: [Version]
CPU: [Kerne] Kerne
RAM: [Verfügbar] / [Gesamt] GB
Log: [Log-Pfad]
5. Footer
📧 [SUPPORT_EMAIL] · Hilfe & Dokumentation unter zenith-uploader.com