apply root friendly vars

This commit is contained in:
shocknet-justin 2025-08-31 00:00:47 -04:00
parent 3cfb6dfe37
commit 31e5775f5c
4 changed files with 68 additions and 60 deletions

View file

@ -14,6 +14,8 @@ install_lightning_pub() {
return 1
fi
local EXTRACT_DIR=$(mktemp -d)
USER_HOME=$HOME
USER_NAME=$(whoami)
@ -22,15 +24,15 @@ install_lightning_pub() {
return 1
}
mkdir -p $USER_HOME/lightning_pub_temp
tar -xzf $USER_HOME/lightning_pub.tar.gz -C $USER_HOME/lightning_pub_temp --strip-components=1 > /dev/null 2>&1 || {
tar -xzf $USER_HOME/lightning_pub.tar.gz -C "$EXTRACT_DIR" --strip-components=1 > /dev/null 2>&1 || {
log "${PRIMARY_COLOR}Failed to extract Lightning.Pub.${RESET_COLOR}"
rm -rf "$EXTRACT_DIR"
return 1
}
rm $USER_HOME/lightning_pub.tar.gz
# Decide flow based on whether a valid previous installation exists.
if [ -f "$USER_HOME/lightning_pub/.installed_commit" ] || [ -f "$USER_HOME/lightning_pub/db.sqlite" ]; then
if [ -f "$INSTALL_DIR/.installed_commit" ] || [ -f "$INSTALL_DIR/db.sqlite" ]; then
# --- UPGRADE PATH ---
log "Existing installation found. Checking for updates..."
@ -44,10 +46,10 @@ install_lightning_pub() {
log_error "Could not retrieve latest version from GitHub. Upgrade check failed. Aborting." 1
fi
CURRENT_COMMIT=$(cat "$USER_HOME/lightning_pub/.installed_commit" 2>/dev/null | head -c 40)
CURRENT_COMMIT=$(cat "$INSTALL_DIR/.installed_commit" 2>/dev/null | head -c 40)
if [ "$CURRENT_COMMIT" = "$LATEST_COMMIT" ]; then
log "${SECONDARY_COLOR}Lightning.Pub${RESET_COLOR} is already at the latest commit. No update needed."
rm -rf $USER_HOME/lightning_pub_temp
rm -rf "$EXTRACT_DIR"
return 2
fi
@ -56,67 +58,71 @@ install_lightning_pub() {
# 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_CMD" = "systemctl --user" ] && systemctl --user is-active --quiet lightning_pub 2>/dev/null; then
log "Stopping Lightning.Pub service before upgrade..."
systemctl --user stop lightning_pub
was_running=true
elif [ "$SYSTEMCTL_CMD" = "systemctl" ] && systemctl is-active --quiet lightning_pub 2>/dev/null; then
log "Stopping Lightning.Pub service before upgrade..."
systemctl stop lightning_pub
was_running=true
fi
log "Backing up user data before upgrade..."
BACKUP_DIR=$(mktemp -d)
mv "$USER_HOME/lightning_pub" "$BACKUP_DIR"
mv "$INSTALL_DIR" "$BACKUP_DIR"
log "Replacing application files..."
mv "$USER_HOME/lightning_pub_temp" "$USER_HOME/lightning_pub"
mv "$EXTRACT_DIR" "$INSTALL_DIR"
log "Restoring user data..."
cp "$BACKUP_DIR"/*.sqlite "$USER_HOME/lightning_pub/" 2>/dev/null || true
cp "$BACKUP_DIR"/.env "$USER_HOME/lightning_pub/" 2>/dev/null || true
cp -r "$BACKUP_DIR"/logs "$USER_HOME/lightning_pub/" 2>/dev/null || true
cp -r "$BACKUP_DIR"/metric_cache "$USER_HOME/lightning_pub/" 2>/dev/null || true
cp "$BACKUP_DIR"/.jwt_secret "$USER_HOME/lightning_pub/" 2>/dev/null || true
cp "$BACKUP_DIR"/.wallet_secret "$USER_HOME/lightning_pub/" 2>/dev/null || true
cp "$BACKUP_DIR"/.installed_commit "$USER_HOME/lightning_pub/" 2>/dev/null || true
cp "$BACKUP_DIR"/admin.npub "$USER_HOME/lightning_pub/" 2>/dev/null || true
cp "$BACKUP_DIR"/app.nprofile "$USER_HOME/lightning_pub/" 2>/dev/null || true
cp "$BACKUP_DIR"/admin.connect "$USER_HOME/lightning_pub/" 2>/dev/null || true
cp "$BACKUP_DIR"/admin.enroll "$USER_HOME/lightning_pub/" 2>/dev/null || true
cp "$BACKUP_DIR"/*.sqlite "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/.env "$INSTALL_DIR/" 2>/dev/null || true
cp -r "$BACKUP_DIR"/logs "$INSTALL_DIR/" 2>/dev/null || true
cp -r "$BACKUP_DIR"/metric_cache "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/.jwt_secret "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/.wallet_secret "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/.installed_commit "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/admin.npub "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/app.nprofile "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/admin.connect "$INSTALL_DIR/" 2>/dev/null || true
cp "$BACKUP_DIR"/admin.enroll "$INSTALL_DIR/" 2>/dev/null || true
# Ensure correct ownership post-restore (fixes potential mismatches)
chown -R "$USER_NAME:$USER_NAME" "$USER_HOME/lightning_pub/" 2>/dev/null || true
chown -R "$USER_NAME:$USER_NAME" "$INSTALL_DIR/" 2>/dev/null || true
# Secure DB files (as before)
chmod 600 "$USER_HOME/lightning_pub/db.sqlite" 2>/dev/null || true
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
chmod 600 "$INSTALL_DIR/db.sqlite" 2>/dev/null || true
chmod 600 "$INSTALL_DIR/metrics.sqlite" 2>/dev/null || true
chmod 600 "$INSTALL_DIR/.jwt_secret" 2>/dev/null || true
chmod 600 "$INSTALL_DIR/.wallet_secret" 2>/dev/null || true
chmod 600 "$INSTALL_DIR/admin.connect" 2>/dev/null || true
chmod 600 "$INSTALL_DIR/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
chmod 755 "$INSTALL_DIR/logs" 2>/dev/null || true
chmod 755 "$INSTALL_DIR/logs/"*/ 2>/dev/null || true # Subdirs like apps/
chmod 755 "$INSTALL_DIR/metric_cache" 2>/dev/null || true
elif [ -d "$USER_HOME/lightning_pub" ]; then
elif [ -d "$INSTALL_DIR" ]; then
# --- CONFLICT/UNSAFE PATH ---
# This handles the case where the directory exists but is not a valid install (e.g., a git clone).
log_error "Directory '~/lightning_pub' already exists but does not appear to be a valid installation. For your safety, please manually back up and remove this directory, then run the installer again." 1
log_error "Directory '$INSTALL_DIR' already exists but does not appear to be a valid installation. For your safety, please manually back up and remove this directory, then run the installer again." 1
else
# --- FRESH INSTALL PATH ---
# This path is only taken if the ~/lightning_pub directory does not exist.
log "${PRIMARY_COLOR}Installing${RESET_COLOR} ${SECONDARY_COLOR}Lightning.Pub${RESET_COLOR}..."
upgrade_status=0
mv "$USER_HOME/lightning_pub_temp" "$USER_HOME/lightning_pub"
mkdir -p "$(dirname "$INSTALL_DIR")"
mv "$EXTRACT_DIR" "$INSTALL_DIR"
fi
rm -rf $USER_HOME/lightning_pub_temp
# Load nvm and npm
export NVM_DIR="${NVM_DIR}"
[ -s "${NVM_DIR}/nvm.sh" ] && \. "${NVM_DIR}/nvm.sh"
cd $USER_HOME/lightning_pub
cd "$INSTALL_DIR"
log "${PRIMARY_COLOR}Installing${RESET_COLOR} npm dependencies..."
@ -128,16 +134,16 @@ install_lightning_pub() {
tail -n 20 npm_install.log | while IFS= read -r line; do
log " $line"
done
log "${PRIMARY_COLOR}Full log available in $USER_HOME/lightning_pub/npm_install.log${RESET_COLOR}"
log "${PRIMARY_COLOR}Full log available in $INSTALL_DIR/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" # Restore directly
rm -rf "$INSTALL_DIR"
mv "$BACKUP_DIR" "$INSTALL_DIR"
log "Backup remnant at $BACKUP_DIR for manual review but may auto-clean on reboot."
if [ "$was_running" = true ]; then
log "Restarting Lightning.Pub service after restore."
systemctl --user start lightning_pub
$SYSTEMCTL_CMD start lightning_pub
fi
return 1
@ -147,9 +153,9 @@ install_lightning_pub() {
# Note: LATEST_COMMIT will be empty on a fresh install, which is fine.
# The file will be created, and the next run will be an upgrade.
if [ -n "$LATEST_COMMIT" ]; then
echo "$LATEST_COMMIT" > "$USER_HOME/lightning_pub/.installed_commit"
echo "$LATEST_COMMIT" > "$INSTALL_DIR/.installed_commit"
else
touch "$USER_HOME/lightning_pub/.installed_commit"
touch "$INSTALL_DIR/.installed_commit"
fi
rm -rf "$BACKUP_DIR"