106 lines
3.2 KiB
Bash
Executable File
106 lines
3.2 KiB
Bash
Executable File
#!/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."
|