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

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


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

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


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:

  1. Header — Titel und Beschreibung
  2. Steuerleiste — Button zum Hinzufügen von Dateien
  3. Drag & Drop Zone — Dateien per Maus ablegen
  4. Upload-Warteschlange — Interaktive Tabelle mit allen Tasks
  5. 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


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

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

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] → ...

9. Einzeltask-Modus

Über den ▶-Button an einem einzelnen Task oder den "▶ Einzeln starten" Button im Dashboard kann ein einzelner Task isoliert gestartet werden:



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:

  1. Header — Titel und Beschreibung
  2. NZB Import Card — NZB-Datei/URL eingeben, Passwort, Queue-Button
  3. Download-Warteschlange — Tabelle mit allen Download-Tasks
  4. 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)

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

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:

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-Linksnzblnk: 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:

  1. Zenith öffnet sich (oder aktiviert das bestehende Fenster)
  2. Der Link wird automatisch verarbeitet
  3. Die NZB wird über folgende Quellen gesucht (in dieser Reihenfolge):
  4. Newznab-Indexer (falls konfiguriert)
  5. Binsearch.info (kostenlos, kein API-Key nötig)
  6. NZBIndex.com (kostenlos, RSS-Feed)
  7. Bei Fund wird die NZB heruntergeladen und zur Queue hinzugefügt
  8. 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:

  1. 📁 Backup-Quellen — Ordner hinzufügen/verwalten
  2. 🔐 Verschlüsselung & Einstellungen — Passwort, Optionen
  3. 📋 Backup-Verlauf — Tabelle aller durchgeführten Backups
  4. 📥 Wiederherstellung — NZB-basierte Wiederherstellung
  5. 📋 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

  1. 📥 Download — Verschlüsselte Archive werden über den Usenet-Provider heruntergeladen
  2. 🛡 PAR2-Reparatur — Fehlende Segmente werden repariert (20% Redundanz)
  3. 🔓 Entschlüsselung — 7-Zip entpackt mit dem angegebenen Passwort
  4. 📁 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:

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

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


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

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:

  1. Header mit Zeitraum-Filter — Dropdown zur Periodenauswahl
  2. Upload-Kennzahlen — 6 Statistik-Karten
  3. Upload-Volumen-Diagramm — Interaktives Balkendiagramm
  4. Download-Kennzahlen — 6 Statistik-Karten
  5. Download-Volumen-Diagramm — Interaktives Balkendiagramm
  6. Letzte Uploads — Verlaufsliste
  7. Letzte Downloads — Verlaufsliste
  8. 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_uploaded und upload_seconds Spalten 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

Mindestgröße


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


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:

  1. Header — Titel und Beschreibung
  2. Root-Warnung — Hinweis bei fehlenden Root-Rechten (Linux)
  3. Status Card — Aktueller VPN-Status mit Connect/Disconnect
  4. Gespeicherte Profile — Liste der VPN-Profile
  5. Einstellungen — Kill-Switch Konfiguration
  6. 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

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


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

  1. VPN-Verbindung bricht ab (openvpn/wireguard Prozess endet unerwartet)
  2. Der AppController erkennt den Status-Wechsel über vpn_status_changed
  3. Alle laufenden Uploads werden sofort pausiert
  4. Der Benutzer wird benachrichtigt (Status wechselt zu FEHLER)
  5. Nach erneuter VPN-Verbindung können Uploads manuell fortgesetzt werden

7. VPN Log

Echtzeit-Protokoll der VPN-Aktivitäten:

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

  1. Profil-Daten werden in die aktive Config geschrieben
  2. VPN-Prozess wird gestartet (über pkexec auf Linux, direkt auf Windows)
  3. Verbindungsstatus wird über den Prozess-Output überwacht
  4. IP-Adresse wird nach Verbindungsaufbau ermittelt
  5. Dashboard-VPN-Widget wird über Signal vpn_status_changed aktualisiert


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:

  1. Oben: Feed-Tabelle mit allen gespeicherten RSS-Feeds
  2. 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:

  1. Oben: Feed-Tabelle mit allen konfigurierten Newznab-Indexern
  2. 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

  1. Timer löst Abfrage aus (alle X Minuten)
  2. API-Anfrage mit Kategorien und Limit
  3. Ergebnisse werden gegen Titel-Filter (Regex) geprüft
  4. Größen-Filter (Min/Max) wird angewendet
  5. Bereits bekannte GUIDs werden übersprungen
  6. Bei "Automatisch herunterladen": NZBs werden heruntergeladen und zur Queue hinzugefügt
  7. 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:

  1. Verbindungseinstellungen — Host, Port, Zugangsdaten
  2. Remote-Datei-Browser — Interaktive Dateiliste mit Navigation
  3. Download-Bereich — Lokaler Zielordner + Download-Button
  4. 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

  1. Ausgewählte Dateien werden nacheinander heruntergeladen
  2. Fortschritt wird über Signal _ftp_dl_progress_signal gemeldet
  3. Status-Log zeigt den aktuellen Download-Status
  4. 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:

  1. Header — Titel + "+ Profil hinzufügen" Button
  2. Profil-Karten — Liste aller Forum-Profile
  3. Post-Queue — Manuelle Post-Warteschlange
  4. 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)

  1. Klick auf "▶ Posten"
  2. Forum-Engine wird geladen
  3. Login wird durchgeführt
  4. Template wird gerendert (Platzhalter ersetzt)
  5. Anti-Spam Timer wird abgewartet
  6. Thread wird erstellt
  7. 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:


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:

  1. Platzhalter-Referenz — Übersicht aller verfügbaren Platzhalter
  2. Vorlagen-Liste (links) — Alle gespeicherten Templates
  3. 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

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


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

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:

  1. Template wird aus dem Profil geladen
  2. Alle {platzhalter} werden durch aktuelle Upload-Daten ersetzt
  3. Thread-Titel wird separat mit eigenem Format gerendert
  4. 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:

  1. Header — Titel + "+ Webhook hinzufügen" Button
  2. Webhook-Karten — Liste aller konfigurierten Webhooks
  3. Hinweis-Karte — Legende mit Tipps

2. Unterstützte Anbieter

Anbieter Icon Farbe Beschreibung
Discord 💬 Discord Webhook URL
Telegram 📨 Telegram Bot API
E-Mail 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

E-Mail

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:

  1. Aktueller Dialog-Zustand wird temporär als Webhook-Objekt erzeugt
  2. WebhookDispatcher.send_test wird aufgerufen
  3. Eine Test-Benachrichtigung wird an den konfigurierten Anbieter gesendet
  4. Erfolg/Fehler wird als QMessageBox angezeigt

8. Hinweis-Karte (Legende)

Am unteren Rand eine Info-Karte:



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:

  1. Provider-Tabelle — Alle konfigurierten Usenet-Provider
  2. Add/Edit-Formular — Neuen Provider hinzufügen
  3. 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


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)

  1. NNTP-Verbindung wird mit nntplib aufgebaut
  2. SSL-Context wird bei aktivem SSL erstellt
  3. Latenz wird gemessen (ms)
  4. Server-Welcome-Message wird angezeigt
  5. 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:

  1. Header — Titel + Zähler (z.B. "3 / 10")
  2. Subtitle — Erklärungstext
  3. Ordner-Liste — Konfigurierte Überwachungsordner als Karten
  4. + 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

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

  1. Klick auf "+ Ordner hinzufügen"
  2. Ordner-Dialog öffnet sich
  3. Prüfung auf Duplikate (Info-Meldung wenn bereits vorhanden)
  4. Maximum: 10 Ordner — Button wird deaktiviert bei Erreichen
  5. Watchdog wird sofort neu geladen (controller.reload_watchdog)

5. Ordner entfernen

  1. Klick auf "X" Button
  2. Ordner wird aus watch_folders entfernt
  3. Eintrag aus watch_folders_disabled bereinigt
  4. Per-Folder Newsgroups aus watch_folder_newsgroups entfernt
  5. 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:

  1. Header — Titel + Beschreibung
  2. Lizenz-Badge-Karte — Grosses Badge mit Ablaufdatum
  3. Aktivierungskarte — Lizenzschlüssel-Eingabe
  4. Lizenzverwaltung — 3 Aktions-Karten (HWID Reset, Deaktivieren, HWID kopieren)
  5. Demo-Karte (nur im Demo-Modus) — Einschränkungen + Upgrade-Link
  6. 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


4. Lizenz-Aktivierung

Element Beschreibung
Eingabefeld Monospace, Platzhalter: "XXXX – XXXX – XXXX – XXXX"
🔑 Aktivieren Gradient-Button, ruft license.activate(key) auf

Aktivierungs-Flow

  1. Schlüssel eingeben
  2. license.activate(key) wird aufgerufen
  3. Erfolg: result.valid = True → Schlüssel wird in Config gespeichert, Neustart erforderlich
  4. Fehler: result.error wird 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:



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:

  1. Header — Titel + Versions-Badge (v1.0.0)
  2. System-Info-Karten — 4 Karten nebeneinander
  3. Log-Viewer — Syntax-hervorgehobener Live-Log
  4. Schnellaktionen — 4 Aktions-Karten
  5. 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

3.3 Syntax-Highlighting (Log-Level-Farben)

Level Farbe
CRITICAL (hellrot)
ERROR (rot)
WARNING (gelb)
INFO (cyan)
DEBUG (grau)

3.4 Filterlogik

  1. Level-Filter: Prüft ob [LEVEL im Zeilen-Text enthalten ist
  2. Suche: Case-insensitiver Substring-Match
  3. Kombination: Beide Filter werden UND-verknüpft
  4. 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

4.3 📋 Log-Pfad kopieren

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