# Dolphin FTP Share Tab Ein KDE Dolphin Properties-Dialog Plugin zum Erstellen und Verwalten von FTP-Freigaben — direkt über die GUI. ![Share Tab](screenshot.png) ## Features - **FTP-Tab** in Dolphins Ordner-Eigenschaften (Rechtsklick → Eigenschaften) - Freigabe per Checkbox aktivieren/deaktivieren - Freigabename konfigurierbar (Standard = Ordnername) - Anonymen Zugang erlauben - Berechtigungen pro Benutzer: Read Only / Read-Write - Nutzt das Helper-Script `dolphin-ftp-share` — **kein Root nötig!** - Erkennt bestehende Freigaben und lädt deren Einstellungen ## Voraussetzungen - Ein FTP-Server (z.B. `vsftpd`) - Das Helper-Script `dolphin-ftp-share` im PATH - Build-Dependencies (siehe unten) ### FTP-Server installieren (vsftpd) ```bash sudo apt install vsftpd ``` ### vsftpd konfigurieren In `/etc/vsftpd.conf`: ```ini listen=YES anonymous_enable=YES local_enable=YES write_enable=YES anon_root=/home/DEIN_USER/.local/share/dolphin-ftp-root local_root=/home/DEIN_USER/.local/share/dolphin-ftp-root chroot_local_user=YES allow_writeable_chroot=YES pasv_enable=NO connect_from_port_20=YES # Logging xferlog_enable=YES xferlog_std_format=NO log_ftp_protocol=YES vsftpd_log_file=/var/log/vsftpd.log ``` Danach: `sudo systemctl restart vsftpd` ### Logdatei vsftpd schreibt alle FTP-Aktivitäten (Logins, Uploads, Downloads, Fehler) in `/var/log/vsftpd.log`. ```bash # Logs live verfolgen: sudo tail -f /var/log/vsftpd.log ``` ### Helper-Script installieren ```bash sudo cp scripts/dolphin-ftp-share /usr/local/bin/ sudo chmod +x /usr/local/bin/dolphin-ftp-share ``` ### sudo für Bind-Mounts erlauben Das Helper-Script nutzt `sudo mount --bind` und `sudo umount`, um Ordner in das FTP-Root einzubinden (Symlinks funktionieren nicht in vsftpd's chroot-Umgebung). Damit das ohne Passwort-Eingabe funktioniert: ```bash sudo visudo -f /etc/sudoers.d/dolphin-ftp-share ``` Folgendes eintragen (DEIN_USER ersetzen): ``` DEIN_USER ALL=(root) NOPASSWD: /usr/bin/mount --bind * DEIN_USER ALL=(root) NOPASSWD: /usr/bin/umount /home/DEIN_USER/.local/share/dolphin-ftp-root/* ``` ## Versionen | Verzeichnis | Zielplattform | KDE Frameworks | Qt | |---|---|---|---| | `kf5/` | Debian 12 Bookworm | KF5 | Qt5 | | `kf6/` | Debian 13 Trixie | KF6 | Qt6 | Der C++ Quellcode ist identisch — nur die CMake-Konfiguration unterscheidet sich. ## Build & Installation ### Debian 12 (KF5) **Build-Dependencies:** ```bash sudo apt install build-essential cmake extra-cmake-modules \ libkf5kio-dev libkf5coreaddons-dev libkf5i18n-dev \ qtbase5-dev ``` **Bauen:** ```bash cd kf5 bash build.sh ``` **Installieren:** ```bash sudo cp build/bin/ftpshareplugin.so \ /usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/propertiesdialog/ ``` **Dolphin neustarten:** ```bash killall dolphin; dolphin & ``` ### Debian 13 Trixie (KF6) **Build-Dependencies:** ```bash sudo apt install build-essential cmake extra-cmake-modules \ libkf6kio-dev libkf6coreaddons-dev libkf6i18n-dev \ qt6-base-dev ``` **Bauen:** ```bash cd kf6 bash build.sh ``` **Installieren:** ```bash sudo cp build/bin/ftpshareplugin.so \ /usr/lib/x86_64-linux-gnu/qt6/plugins/kf6/propertiesdialog/ ``` **Dolphin neustarten:** ```bash killall dolphin; dolphin & ``` ## Deinstallation ```bash # KF5 sudo rm /usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/propertiesdialog/ftpshareplugin.so # KF6 sudo rm /usr/lib/x86_64-linux-gnu/qt6/plugins/kf6/propertiesdialog/ftpshareplugin.so # Helper-Script sudo rm /usr/local/bin/dolphin-ftp-share ``` ## Projektstruktur ``` kde-dolphin-ftp-sharing-tab/ ├── README.md ├── scripts/ │ └── dolphin-ftp-share # Helper-Script für Share-Verwaltung ├── kf5/ # Debian 12 (KDE Plasma 5) │ ├── CMakeLists.txt │ ├── build.sh │ └── src/ │ ├── CMakeLists.txt │ ├── ftpshareplugin.json │ ├── ftpshareplugin.h │ └── ftpshareplugin.cpp └── kf6/ # Debian 13 (KDE Plasma 6) ├── CMakeLists.txt ├── build.sh └── src/ ├── CMakeLists.txt ├── ftpshareplugin.json ├── ftpshareplugin.h └── ftpshareplugin.cpp ``` ## Wie es funktioniert Das Plugin nutzt das Helper-Script `dolphin-ftp-share`: - `dolphin-ftp-share add ` — Freigabe erstellen - `dolphin-ftp-share delete ` — Freigabe löschen - `dolphin-ftp-share info` — bestehende Freigaben auflisten Das Script speichert Freigabe-Konfigurationen in `~/.local/share/dolphin-ftp-shares/` und erstellt Bind-Mounts in `~/.local/share/dolphin-ftp-root/`. Der FTP-Server (z.B. vsftpd) dient dieses Root-Verzeichnis aus. ### Konfigurationsformat Jede Freigabe wird als `.conf`-Datei gespeichert: ```ini path=/pfad/zum/ordner anonymous=y user_acl=user1:rw,user2:ro ``` ### Berechtigungen | Level | Beschreibung | |---|---| | `ro` | Read Only — nur Download | | `rw` | Read-Write — Upload und Download | ## Lizenz GPLv2+