kde-dolphin-ftp-sharing-tab/README.md

226 lines
5.0 KiB
Markdown

# 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 <name> <path> <anonymous> <acl>` — Freigabe erstellen
- `dolphin-ftp-share delete <name>` — 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+