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
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=""
@@ -8472,24 +8472,25 @@ manual_electron_update() {
# Create backup
echo ""
log_info "Creating backup..."
local kiosk_owner=$(sudo stat -c '%U' "$KIOSK_DIR")
local timestamp=$(date +%Y%m%d_%H%M%S)
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
if [ -f "$KIOSK_DIR/package.json" ]; then
cp "$KIOSK_DIR/package.json" "$backup_dir/"
if sudo test -f "$KIOSK_DIR/package.json" 2>/dev/null; then
sudo -u "$kiosk_owner" cp "$KIOSK_DIR/package.json" "$backup_dir/"
log_success "Backed up package.json"
fi
if [ -f "$KIOSK_DIR/package-lock.json" ]; then
cp "$KIOSK_DIR/package-lock.json" "$backup_dir/"
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/"
log_success "Backed up package-lock.json"
fi
# 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"
echo ""
+6 -6
View File
@@ -145,7 +145,7 @@ check_electron_running() {
################################################################################
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
local version=""
@@ -164,7 +164,7 @@ get_latest_electron_version() {
fi
if [ -z "$version" ]; then
log_error "Failed to fetch latest Electron version"
log_error "Failed to fetch latest Electron version" >&2
echo "unknown"
return 1
fi
@@ -178,7 +178,7 @@ get_latest_electron_version() {
create_backup() {
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)
BACKUP_DIR="${kiosk_dir}/backups/electron_backup_${timestamp}"
@@ -188,18 +188,18 @@ create_backup() {
sudo -u "$kiosk_owner" mkdir -p "$BACKUP_DIR"
# 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/"
log_success "Backed up package.json"
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/"
log_success "Backed up package-lock.json"
fi
# 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'"
log_success "Created list of installed packages"
fi