restore on upgrade failure

This commit is contained in:
shocknet-justin 2025-08-30 15:05:36 -04:00
parent e426141657
commit 8721add701

View file

@ -52,49 +52,47 @@ install_lightning_pub() {
upgrade_status=100 upgrade_status=100
# Stop the service if running to avoid rug-pull during backup and file replacement # Stop the service if running to avoid rug-pull during backup and file replacement
was_running=false
if systemctl --user is-active --quiet lightning_pub 2>/dev/null; then if systemctl --user is-active --quiet lightning_pub 2>/dev/null; then
log "Stopping Lightning.Pub service before upgrade..." log "Stopping Lightning.Pub service before upgrade..."
systemctl --user stop lightning_pub systemctl --user stop lightning_pub
was_running=true
fi fi
log "Backing up user data before upgrade..." log "Backing up user data before upgrade..."
BACKUP_DIR="$USER_HOME/lightning_pub_backup_$(date +%s)" BACKUP_DIR="$USER_HOME/lightning_pub_backup_$(date +%s)"
mkdir -p "$BACKUP_DIR" mv "$USER_HOME/lightning_pub" "$BACKUP_DIR"
mv "$USER_HOME/lightning_pub"/*.sqlite "$BACKUP_DIR/" 2>/dev/null || true
mv "$USER_HOME/lightning_pub"/.env "$BACKUP_DIR/" 2>/dev/null || true
mv "$USER_HOME/lightning_pub"/logs "$BACKUP_DIR/" 2>/dev/null || true
mv "$USER_HOME/lightning_pub"/metric_cache "$BACKUP_DIR/" 2>/dev/null || true
mv "$USER_HOME/lightning_pub"/.jwt_secret "$BACKUP_DIR/" 2>/dev/null || true
mv "$USER_HOME/lightning_pub"/.wallet_secret "$BACKUP_DIR/" 2>/dev/null || true
mv "$USER_HOME/lightning_pub"/.installed_commit "$BACKUP_DIR/" 2>/dev/null || true
mv "$USER_HOME/lightning_pub"/admin.npub "$BACKUP_DIR/" 2>/dev/null || true
mv "$USER_HOME/lightning_pub"/app.nprofile "$BACKUP_DIR/" 2>/dev/null || true
mv "$USER_HOME/lightning_pub"/admin.connect "$BACKUP_DIR/" 2>/dev/null || true
mv "$USER_HOME/lightning_pub"/admin.enroll "$BACKUP_DIR/" 2>/dev/null || true
log "Replacing application files..." log "Replacing application files..."
rm -rf "$USER_HOME/lightning_pub"
mv "$USER_HOME/lightning_pub_temp" "$USER_HOME/lightning_pub" mv "$USER_HOME/lightning_pub_temp" "$USER_HOME/lightning_pub"
log "Restoring user data..." log "Restoring user data..."
if [ -n "$(ls -A "$BACKUP_DIR" 2>/dev/null)" ]; then cp "$BACKUP_DIR"/*.sqlite "$USER_HOME/lightning_pub/" 2>/dev/null || true
cp -r "$BACKUP_DIR"/* "$USER_HOME/lightning_pub/" cp "$BACKUP_DIR"/.env "$USER_HOME/lightning_pub/" 2>/dev/null || true
# Ensure correct ownership post-restore (fixes potential mismatches) cp -r "$BACKUP_DIR"/logs "$USER_HOME/lightning_pub/" 2>/dev/null || true
chown -R "$USER_NAME:$USER_NAME" "$USER_HOME/lightning_pub/" 2>/dev/null || true cp -r "$BACKUP_DIR"/metric_cache "$USER_HOME/lightning_pub/" 2>/dev/null || true
# Secure DB files (as before) cp "$BACKUP_DIR"/.jwt_secret "$USER_HOME/lightning_pub/" 2>/dev/null || true
chmod 600 "$USER_HOME/lightning_pub/db.sqlite" 2>/dev/null || true cp "$BACKUP_DIR"/.wallet_secret "$USER_HOME/lightning_pub/" 2>/dev/null || true
chmod 600 "$USER_HOME/lightning_pub/metrics.sqlite" 2>/dev/null || true cp "$BACKUP_DIR"/.installed_commit "$USER_HOME/lightning_pub/" 2>/dev/null || true
chmod 600 "$USER_HOME/lightning_pub/.jwt_secret" 2>/dev/null || true cp "$BACKUP_DIR"/admin.npub "$USER_HOME/lightning_pub/" 2>/dev/null || true
chmod 600 "$USER_HOME/lightning_pub/.wallet_secret" 2>/dev/null || true cp "$BACKUP_DIR"/app.nprofile "$USER_HOME/lightning_pub/" 2>/dev/null || true
chmod 600 "$USER_HOME/lightning_pub/admin.connect" 2>/dev/null || true cp "$BACKUP_DIR"/admin.connect "$USER_HOME/lightning_pub/" 2>/dev/null || true
chmod 600 "$USER_HOME/lightning_pub/admin.enroll" 2>/dev/null || true cp "$BACKUP_DIR"/admin.enroll "$USER_HOME/lightning_pub/" 2>/dev/null || true
# Ensure log/metric dirs are writable (dirs need execute for traversal)
chmod 755 "$USER_HOME/lightning_pub/logs" 2>/dev/null || true # Ensure correct ownership post-restore (fixes potential mismatches)
chmod 755 "$USER_HOME/lightning_pub/logs/"*/ 2>/dev/null || true # Subdirs like apps/ chown -R "$USER_NAME:$USER_NAME" "$USER_HOME/lightning_pub/" 2>/dev/null || true
chmod 755 "$USER_HOME/lightning_pub/metric_cache" 2>/dev/null || true # Secure DB files (as before)
fi chmod 600 "$USER_HOME/lightning_pub/db.sqlite" 2>/dev/null || true
rm -rf "$BACKUP_DIR" chmod 600 "$USER_HOME/lightning_pub/metrics.sqlite" 2>/dev/null || true
chmod 600 "$USER_HOME/lightning_pub/.jwt_secret" 2>/dev/null || true
chmod 600 "$USER_HOME/lightning_pub/.wallet_secret" 2>/dev/null || true
chmod 600 "$USER_HOME/lightning_pub/admin.connect" 2>/dev/null || true
chmod 600 "$USER_HOME/lightning_pub/admin.enroll" 2>/dev/null || true
# Ensure log/metric dirs are writable (dirs need execute for traversal)
chmod 755 "$USER_HOME/lightning_pub/logs" 2>/dev/null || true
chmod 755 "$USER_HOME/lightning_pub/logs/"*/ 2>/dev/null || true # Subdirs like apps/
chmod 755 "$USER_HOME/lightning_pub/metric_cache" 2>/dev/null || true
elif [ -d "$USER_HOME/lightning_pub" ]; then elif [ -d "$USER_HOME/lightning_pub" ]; then
# --- CONFLICT/UNSAFE PATH --- # --- CONFLICT/UNSAFE PATH ---
@ -128,6 +126,16 @@ install_lightning_pub() {
log " $line" log " $line"
done done
log "${PRIMARY_COLOR}Full log available in $USER_HOME/lightning_pub/npm_install.log${RESET_COLOR}" log "${PRIMARY_COLOR}Full log available in $USER_HOME/lightning_pub/npm_install.log${RESET_COLOR}"
log "Restoring previous installation due to upgrade failure..."
rm -rf "$USER_HOME/lightning_pub"
mv "$BACKUP_DIR" "$USER_HOME/lightning_pub"
if [ "$was_running" = true ]; then
log "Restarting Lightning.Pub service after restore."
systemctl --user start lightning_pub
fi
return 1 return 1
fi fi
@ -139,6 +147,8 @@ install_lightning_pub() {
else else
touch "$USER_HOME/lightning_pub/.installed_commit" touch "$USER_HOME/lightning_pub/.installed_commit"
fi fi
rm -rf "$BACKUP_DIR"
return $upgrade_status return $upgrade_status
} }