#!/usr/bin/env bash # Install BackOneUI Secure Chat updater bundle onto the current system. # Usage: sudo ./install.sh [--prefix /] [--no-restart] set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PREFIX="/" RESTART_TRAY=1 LOG_DIR="/var/log/backone" LOG_FILE="${LOG_DIR}/backone-ui-updater.log" log() { mkdir -p "$LOG_DIR" 2>/dev/null || true echo "$(date -Iseconds) $*" | tee -a "$LOG_FILE" 2>/dev/null || echo "$(date -Iseconds) $*" } while [[ $# -gt 0 ]]; do case "$1" in --prefix) PREFIX="${2%/}/" shift 2 ;; --no-restart) RESTART_TRAY=0 shift ;; -h|--help) echo "Usage: sudo $0 [--prefix /] [--no-restart]" exit 0 ;; *) echo "Unknown option: $1" >&2 exit 1 ;; esac done if [[ "${PREFIX}" == "/" && "${EUID}" -ne 0 ]]; then echo "Run with sudo to install system-wide, or pass --prefix \$HOME/.local" >&2 exit 1 fi BIN_SRC="${SCRIPT_DIR}/usr/bin/backone_desktop_ui" DESKTOP_SRC="${SCRIPT_DIR}/usr/share/applications/backone-ui.desktop" ENV_SRC="${SCRIPT_DIR}/usr/share/backone/backone-ui.env" if [[ ! -x "$BIN_SRC" ]]; then echo "Missing bundle binary: $BIN_SRC" >&2 exit 1 fi BIN_DEST="${PREFIX}usr/bin/backone_desktop_ui" DESKTOP_DEST="${PREFIX}usr/share/applications/backone-ui.desktop" ENV_DEST="${PREFIX}usr/share/backone/backone-ui.env" mkdir -p "$(dirname "$BIN_DEST")" "$(dirname "$DESKTOP_DEST")" "$(dirname "$ENV_DEST")" if [[ -f "$BIN_DEST" ]]; then cp -a "$BIN_DEST" "${BIN_DEST}.bak.$(date +%Y%m%d%H%M%S)" log "Backed up existing binary to ${BIN_DEST}.bak.*" fi install -m 755 "$BIN_SRC" "$BIN_DEST" install -m 644 "$DESKTOP_SRC" "$DESKTOP_DEST" install -m 644 "$ENV_SRC" "$ENV_DEST" log "Installed ${BIN_DEST}" if [[ -x /usr/lib/backone/addons/webhub/backone-webhub ]]; then if command -v systemctl >/dev/null 2>&1; then systemctl enable backone-webhub.service 2>/dev/null || true systemctl restart backone-webhub.service 2>/dev/null || true log "Ensured backone-webhub.service is running" fi elif [[ -x "${SCRIPT_DIR}/extras/setup-webhub.sh" ]]; then log "backone-webhub not found; run extras/setup-webhub.sh from BackOne repo" else log "Install backone-addon-webhub for Secure Chat signaling" fi if [[ -x /usr/lib/backone/addons/updater/backone-updater ]]; then /usr/lib/backone/addons/updater/backone-updater rebuild-manifest 2>/dev/null || true log "Rebuilt BackOne web addon manifest" fi if [[ "$RESTART_TRAY" -eq 1 ]]; then pkill -f 'backone_desktop_ui' 2>/dev/null || true sleep 0.5 if [[ -n "${DISPLAY:-}" ]]; then # shellcheck disable=SC1091 [[ -f "$ENV_DEST" ]] && source "$ENV_DEST" nohup "$BIN_DEST" >/tmp/backone_desktop_ui.log 2>&1 & log "Restarted BackOneUI tray (PID $!)" else log "DISPLAY not set; start BackOneUI manually from your desktop session" fi fi MANIFEST="${SCRIPT_DIR}/manifest.json" VERSION="$(grep -m1 '"version"' "$MANIFEST" 2>/dev/null | sed 's/.*: *"\([^"]*\)".*/\1/' || echo unknown)" log "BackOneUI Secure Chat updater ${VERSION} complete" echo "" echo "Secure Chat is available from the tray menu: Secure Chat..." echo "Requires: backone service online, backone group membership, backone-webhub running."