Fix version display and backup permission issues

Fixed two issues preventing the Electron update from working properly:

1. Log messages appearing in version output
   - get_latest_electron_version() was outputting log messages to stdout
   - These messages were being captured along with the version number
   - Result: "Target version: [INFO] Fetching...39.2.3" in output
   - Fix: Redirect log_info and log_error to stderr with >&2
   - Now only the version number is captured in the variable

2. Backup function permission errors
   - stat command needed sudo to read owner of restricted directories
   - File checks [ -f ] couldn't access files in drwxr-x--- directories
   - mkdir failed with "cannot create directory '/home/kiosk': Permission denied"
   - Fix: Use sudo for all file operations in create_backup():
     * sudo stat -c '%U' to get directory owner
     * sudo test -f/d for file/directory checks
     * sudo -u owner for mkdir, cp, and file writes

Changes in both update_electron.sh and install_kiosk_0.9.2-6.sh:
- get_latest_electron_version functions: Added >&2 to log statements
- create_backup functions: Added sudo to stat and all file checks
- Ensures backup works with restricted /home/kiosk permissions

The update process should now complete successfully without permission errors
or garbled version output.
This commit is contained in:
Claude
2025-11-20 16:32:17 +00:00
parent 4f2435ca35
commit a58c69fb5a
2 changed files with 14 additions and 13 deletions
+8 -7
View File
@@ -8343,7 +8343,7 @@ manual_electron_update() {
# Function to get latest electron version # Function to get latest electron version
get_latest_electron_version_local() { get_latest_electron_version_local() {
log_info "Fetching latest stable Electron version from npm..." log_info "Fetching latest stable Electron version from npm..." >&2
local version="" local version=""
@@ -8472,24 +8472,25 @@ manual_electron_update() {
# Create backup # Create backup
echo "" echo ""
log_info "Creating backup..." log_info "Creating backup..."
local kiosk_owner=$(sudo stat -c '%U' "$KIOSK_DIR")
local timestamp=$(date +%Y%m%d_%H%M%S) local timestamp=$(date +%Y%m%d_%H%M%S)
local backup_dir="${KIOSK_DIR}/backups/electron_backup_${timestamp}" local backup_dir="${KIOSK_DIR}/backups/electron_backup_${timestamp}"
mkdir -p "$backup_dir" sudo -u "$kiosk_owner" mkdir -p "$backup_dir"
# Backup package.json and package-lock.json # Backup package.json and package-lock.json
if [ -f "$KIOSK_DIR/package.json" ]; then if sudo test -f "$KIOSK_DIR/package.json" 2>/dev/null; then
cp "$KIOSK_DIR/package.json" "$backup_dir/" sudo -u "$kiosk_owner" cp "$KIOSK_DIR/package.json" "$backup_dir/"
log_success "Backed up package.json" log_success "Backed up package.json"
fi fi
if [ -f "$KIOSK_DIR/package-lock.json" ]; then if sudo test -f "$KIOSK_DIR/package-lock.json" 2>/dev/null; then
cp "$KIOSK_DIR/package-lock.json" "$backup_dir/" sudo -u "$kiosk_owner" cp "$KIOSK_DIR/package-lock.json" "$backup_dir/"
log_success "Backed up package-lock.json" log_success "Backed up package-lock.json"
fi fi
# Save current Electron version # Save current Electron version
echo "$CURRENT_VERSION" > "$backup_dir/electron_version.txt" echo "$CURRENT_VERSION" | sudo -u "$kiosk_owner" tee "$backup_dir/electron_version.txt" > /dev/null
log_success "Backup created at: $backup_dir" log_success "Backup created at: $backup_dir"
echo "" echo ""
+6 -6
View File
@@ -145,7 +145,7 @@ check_electron_running() {
################################################################################ ################################################################################
get_latest_electron_version() { get_latest_electron_version() {
log_info "Fetching latest stable Electron version from npm..." log_info "Fetching latest stable Electron version from npm..." >&2
# Try multiple methods to get the latest version # Try multiple methods to get the latest version
local version="" local version=""
@@ -164,7 +164,7 @@ get_latest_electron_version() {
fi fi
if [ -z "$version" ]; then if [ -z "$version" ]; then
log_error "Failed to fetch latest Electron version" log_error "Failed to fetch latest Electron version" >&2
echo "unknown" echo "unknown"
return 1 return 1
fi fi
@@ -178,7 +178,7 @@ get_latest_electron_version() {
create_backup() { create_backup() {
local kiosk_dir="$1" local kiosk_dir="$1"
local kiosk_owner=$(stat -c '%U' "$kiosk_dir") local kiosk_owner=$(sudo stat -c '%U' "$kiosk_dir")
local timestamp=$(date +%Y%m%d_%H%M%S) local timestamp=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="${kiosk_dir}/backups/electron_backup_${timestamp}" BACKUP_DIR="${kiosk_dir}/backups/electron_backup_${timestamp}"
@@ -188,18 +188,18 @@ create_backup() {
sudo -u "$kiosk_owner" mkdir -p "$BACKUP_DIR" sudo -u "$kiosk_owner" mkdir -p "$BACKUP_DIR"
# Backup package.json and package-lock.json # Backup package.json and package-lock.json
if [ -f "$kiosk_dir/package.json" ]; then if sudo test -f "$kiosk_dir/package.json" 2>/dev/null; then
sudo -u "$kiosk_owner" cp "$kiosk_dir/package.json" "$BACKUP_DIR/" sudo -u "$kiosk_owner" cp "$kiosk_dir/package.json" "$BACKUP_DIR/"
log_success "Backed up package.json" log_success "Backed up package.json"
fi fi
if [ -f "$kiosk_dir/package-lock.json" ]; then if sudo test -f "$kiosk_dir/package-lock.json" 2>/dev/null; then
sudo -u "$kiosk_owner" cp "$kiosk_dir/package-lock.json" "$BACKUP_DIR/" sudo -u "$kiosk_owner" cp "$kiosk_dir/package-lock.json" "$BACKUP_DIR/"
log_success "Backed up package-lock.json" log_success "Backed up package-lock.json"
fi fi
# Create a list of installed packages # Create a list of installed packages
if [ -d "$kiosk_dir/node_modules" ]; then if sudo test -d "$kiosk_dir/node_modules" 2>/dev/null; then
sudo -u "$kiosk_owner" bash -c "ls -1 '$kiosk_dir/node_modules' > '$BACKUP_DIR/installed_packages.txt'" sudo -u "$kiosk_owner" bash -c "ls -1 '$kiosk_dir/node_modules' > '$BACKUP_DIR/installed_packages.txt'"
log_success "Created list of installed packages" log_success "Created list of installed packages"
fi fi