Web-Oberflaeche als Dienst, Anmeldung mit den Proxmox-Benutzern
install.sh --with-webexplorer --port <nummer> richtet pvesnap-web.service ein. Fehlt der Port, bricht das Skript mit einer Erklaerung ab; --port ohne --with-webexplorer, ein Port ausserhalb 1-65535, etwas anderes als eine Zahl und Port 8006 (Proxmox selbst) werden ebenfalls abgefangen - und zwar vor der root-Pruefung, damit ein Tippfehler sofort auffaellt. --help beschreibt jetzt alle Optionen mit Beispielen. Port, Adresse und Anmeldeart stehen in /etc/pvesnap/web.conf und lassen sich dort aendern, ohne die Unit anzufassen. Angemeldet wird mit den Benutzern von Proxmox VE: dieselbe Maske aus Benutzer, Passwort und Realm-Auswahl, geprueft ueber POST /access/ticket auf der lokalen API - also derselbe Weg wie im Proxmox-Webinterface. Alle Realms funktionieren damit automatisch; Zwei-Faktor-Anmeldungen werden abgewiesen statt halb durchgewinkt. Ein gueltiges Passwort allein reicht nicht: zusaetzlich braucht der Benutzer auf dem Gast das Recht VM.Snapshot (geprueft auf /, /vms, /vms/<id> und dem Pool). Sonst koennte jeder Proxmox-Benutzer saemtliche Dateien aller Gaeste lesen. In der Gastliste erscheinen nur erlaubte Gaeste, root@pam sieht wie in Proxmox alles. Anpassbar ueber --require-privilege und --allow-user. Ausserdem: SIGTERM haengt einen offenen Snapshot wieder aus (ohne das bliebe er bei "systemctl stop" eingebunden), und beim Start werden Reste von Prozessen abgeraeumt, die es nicht mehr gibt - parallel laufende Sitzungen bleiben dabei unangetastet. Auf pvetest01 geprueft: Dienststart ueber systemd, Anmeldemaske mit den Realms des Hosts, Abweisung ohne und mit falschen Zugangsdaten (401, protokolliert mit Absender-IP), Zugriff ohne Recht (403 auf Snapshot- Liste und Oeffnen), vollstaendiger Ablauf als Berechtigter bis zum Datei-Download, Abmelden macht die Sitzung ungueltig, und SIGTERM hinterlaesst weder rbd-Maps noch Mountpunkte. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
91bfdea76c
commit
963463a1a1
+20
-9
@@ -17,6 +17,7 @@ CONF_DIR="/etc/pvesnap"
|
||||
STATE_DIR="/var/lib/pvesnap"
|
||||
DOC_DIR="/usr/share/doc/pvesnap"
|
||||
UNIT="/etc/systemd/system/pvesnap.service"
|
||||
WEB_UNIT="/etc/systemd/system/pvesnap-web.service"
|
||||
|
||||
PURGE=0
|
||||
YES=0
|
||||
@@ -48,18 +49,28 @@ if [ "$YES" -eq 0 ]; then
|
||||
esac
|
||||
fi
|
||||
|
||||
if systemctl list-unit-files 2>/dev/null | grep -q '^pvesnap\.service'; then
|
||||
info "Stoppe und deaktiviere Dienst"
|
||||
systemctl stop pvesnap.service 2>/dev/null || true
|
||||
systemctl disable pvesnap.service 2>/dev/null || true
|
||||
for unit in pvesnap.service pvesnap-web.service; do
|
||||
if systemctl list-unit-files 2>/dev/null | grep -q "^${unit}"; then
|
||||
info "Stoppe und deaktiviere ${unit}"
|
||||
systemctl stop "$unit" 2>/dev/null || true
|
||||
systemctl disable "$unit" 2>/dev/null || true
|
||||
fi
|
||||
done
|
||||
|
||||
# Eingebundene Snapshots loesen, bevor das Programm verschwindet.
|
||||
if [ -x "${BIN}-explorer" ]; then
|
||||
info "Haenge eventuell eingebundene Snapshots aus"
|
||||
"${BIN}-explorer" --cleanup >/dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
if [ -f "$UNIT" ]; then
|
||||
info "Entferne $UNIT"
|
||||
rm -f "$UNIT"
|
||||
fi
|
||||
for unit in "$UNIT" "$WEB_UNIT"; do
|
||||
if [ -f "$unit" ]; then
|
||||
info "Entferne $unit"
|
||||
rm -f "$unit"
|
||||
fi
|
||||
done
|
||||
systemctl daemon-reload 2>/dev/null || true
|
||||
systemctl reset-failed pvesnap.service 2>/dev/null || true
|
||||
systemctl reset-failed pvesnap.service pvesnap-web.service 2>/dev/null || true
|
||||
|
||||
for command in "$BIN" "${BIN}-explorer" "${BIN}-web"; do
|
||||
if [ -e "$command" ]; then
|
||||
|
||||
Reference in New Issue
Block a user