0.13.1-10 Misc fixes
This commit is contained in:
+130
-1
@@ -135,6 +135,114 @@ detect_container_env() {
|
||||
|
||||
command_exists() { command -v "$1" &>/dev/null; }
|
||||
|
||||
service_unit_exists() {
|
||||
local unit="$1"
|
||||
systemctl list-unit-files --type=service --all --no-legend 2>/dev/null \
|
||||
| awk '{print $1}' | grep -Fxq "$unit"
|
||||
}
|
||||
|
||||
stop_service_if_exists() {
|
||||
local service="$1"
|
||||
local unit="${service}.service"
|
||||
|
||||
if ! command_exists systemctl; then
|
||||
warn "systemctl nicht gefunden - Stop von '$service' uebersprungen"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if service_unit_exists "$unit"; then
|
||||
if systemctl is-active --quiet "$service"; then
|
||||
info "Stoppe Dienst '$service' vor dem Update..."
|
||||
systemctl stop "$service"
|
||||
ok "Dienst '$service' gestoppt"
|
||||
else
|
||||
info "Dienst '$service' ist bereits gestoppt"
|
||||
fi
|
||||
else
|
||||
info "Dienst '$service' nicht vorhanden - Stop uebersprungen"
|
||||
fi
|
||||
}
|
||||
|
||||
backup_and_remove_backend_src() {
|
||||
local src_dir="$INSTALL_DIR/backend/src"
|
||||
local backup_root="$INSTALL_DIR/backend/src_backups"
|
||||
local backup_dir="${backup_root}/src_bak_$(date +%Y%m%d%H%M%S)"
|
||||
local keep_count=2
|
||||
local backups=()
|
||||
local old_backup
|
||||
|
||||
if [[ ! -d "$src_dir" ]]; then
|
||||
fatal "Reinstall erwartet vorhandenes Backend-Quellverzeichnis: $src_dir"
|
||||
fi
|
||||
|
||||
mkdir -p "$backup_root"
|
||||
mv "$src_dir" "$backup_dir"
|
||||
ok "Backend-Quellverzeichnis gesichert nach: $backup_dir"
|
||||
|
||||
mapfile -t backups < <(ls -1dt "$backup_root"/src_bak_* 2>/dev/null || true)
|
||||
if (( ${#backups[@]} > keep_count )); then
|
||||
for old_backup in "${backups[@]:keep_count}"; do
|
||||
rm -rf "$old_backup"
|
||||
info "Altes src-Backup entfernt: $old_backup"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
enforce_default_output_dirs_permissions() {
|
||||
local default_dirs=(
|
||||
"$INSTALL_DIR/backend/data/output/raw"
|
||||
"$INSTALL_DIR/backend/data/output/movies"
|
||||
"$INSTALL_DIR/backend/data/output/series"
|
||||
"$INSTALL_DIR/backend/data/output/cd"
|
||||
)
|
||||
local dir
|
||||
|
||||
for dir in "${default_dirs[@]}"; do
|
||||
mkdir -p "$dir"
|
||||
chown "$SERVICE_USER:$SERVICE_USER" "$dir"
|
||||
chmod 755 "$dir"
|
||||
done
|
||||
|
||||
ok "Default-Output-Ordner auf $SERVICE_USER:$SERVICE_USER (755) gesetzt"
|
||||
}
|
||||
|
||||
post_install_check_default_dirs() {
|
||||
header "Post-Install-Check (Default-Ordner)"
|
||||
|
||||
local default_dirs=(
|
||||
"$INSTALL_DIR/backend/data/output/raw"
|
||||
"$INSTALL_DIR/backend/data/output/movies"
|
||||
"$INSTALL_DIR/backend/data/output/series"
|
||||
"$INSTALL_DIR/backend/data/output/cd"
|
||||
)
|
||||
local expected_owner="${SERVICE_USER}:${SERVICE_USER}"
|
||||
local expected_mode="755"
|
||||
local dir
|
||||
local owner
|
||||
local mode
|
||||
local failed=0
|
||||
|
||||
for dir in "${default_dirs[@]}"; do
|
||||
if [[ ! -d "$dir" ]]; then
|
||||
error "Fehlt: $dir"
|
||||
failed=1
|
||||
continue
|
||||
fi
|
||||
owner="$(stat -c '%U:%G' "$dir" 2>/dev/null || true)"
|
||||
mode="$(stat -c '%a' "$dir" 2>/dev/null || true)"
|
||||
if [[ "$owner" != "$expected_owner" || "$mode" != "$expected_mode" ]]; then
|
||||
error "Falsche Rechte bei $dir (owner=$owner mode=$mode, erwartet: $expected_owner / $expected_mode)"
|
||||
failed=1
|
||||
else
|
||||
ok "$dir -> $owner / $mode"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "$failed" -ne 0 ]]; then
|
||||
fatal "Post-Install-Check fehlgeschlagen. Rechte/Owner der Default-Ordner bitte prüfen."
|
||||
fi
|
||||
}
|
||||
|
||||
download_file() {
|
||||
local url="$1"
|
||||
local target="$2"
|
||||
@@ -599,6 +707,15 @@ for grp in cdrom optical disk video render; do
|
||||
fi
|
||||
done
|
||||
|
||||
# --- Dienste vor Reinstall stoppen --------------------------------------------
|
||||
if [[ "$REINSTALL" == true ]]; then
|
||||
header "Dienste vor Reinstall stoppen"
|
||||
stop_service_if_exists ripster-backend
|
||||
if [[ "$SKIP_NGINX" == false ]]; then
|
||||
stop_service_if_exists nginx
|
||||
fi
|
||||
fi
|
||||
|
||||
# --- Repository klonen / aktualisieren ----------------------------------------
|
||||
header "Repository holen (Git)"
|
||||
|
||||
@@ -618,9 +735,11 @@ if [[ -d "$INSTALL_DIR/.git" ]]; then
|
||||
cp -a "$INSTALL_DIR/backend/data" "$DATA_BACKUP"
|
||||
info "Datenbank gesichert nach: $DATA_BACKUP"
|
||||
fi
|
||||
backup_and_remove_backend_src
|
||||
# safe.directory nötig wenn das Verzeichnis einem anderen User gehört
|
||||
# (z.B. ripster-Serviceuser nach erstem Install)
|
||||
git config --global --add safe.directory "$INSTALL_DIR" 2>/dev/null || true
|
||||
git -C "$INSTALL_DIR" remote set-url origin "$REPO_URL"
|
||||
git -C "$INSTALL_DIR" remote set-branches origin '*'
|
||||
git -C "$INSTALL_DIR" fetch --quiet origin
|
||||
git -C "$INSTALL_DIR" reset --hard HEAD
|
||||
@@ -654,6 +773,13 @@ if [[ -n "${DATA_BACKUP:-}" && -d "$DATA_BACKUP" ]]; then
|
||||
ok "Datenbank wiederhergestellt"
|
||||
fi
|
||||
|
||||
# Restore kann Altstrukturen zurückbringen – Default-Ausgabeordner danach
|
||||
# erneut sicherstellen.
|
||||
mkdir -p "$INSTALL_DIR/backend/data/output/raw"
|
||||
mkdir -p "$INSTALL_DIR/backend/data/output/movies"
|
||||
mkdir -p "$INSTALL_DIR/backend/data/output/series"
|
||||
mkdir -p "$INSTALL_DIR/backend/data/output/cd"
|
||||
|
||||
# --- npm-Abhängigkeiten installieren -----------------------------------------
|
||||
header "npm-Abhängigkeiten installieren"
|
||||
|
||||
@@ -735,6 +861,9 @@ else
|
||||
ok "Verzeichnisse bereits $SERVICE_USER gehörig (kein SUDO_USER erkannt)"
|
||||
fi
|
||||
|
||||
enforce_default_output_dirs_permissions
|
||||
post_install_check_default_dirs
|
||||
|
||||
# MakeMKV erwartet pro Benutzer ein eigenes Konfigurationsverzeichnis.
|
||||
# Laufzeit-relevant ist das Verzeichnis des Service-Users.
|
||||
MAKEMKV_SERVICE_DIR="${SERVICE_HOME}/.MakeMKV"
|
||||
@@ -910,4 +1039,4 @@ if [[ ${#missing_tools[@]} -gt 0 ]]; then
|
||||
echo -e " Diese können in den Ripster-Einstellungen konfiguriert werden."
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user