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:
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user