#!/bin/sh
# Phoenix Backup-Agent — DSM 7 service control.
# One "noarch" package ships both amd64 and arm64 binaries; pick by CPU.
PKG="PhoenixBackupAgent"
DEST="${SYNOPKG_PKGDEST:-/var/packages/$PKG/target}"
VAR="${SYNOPKG_PKGVAR:-/var/packages/$PKG/var}"
PIDFILE="$VAR/phoenix-agent.pid"
LOG="$VAR/phoenix-agent.log"
PORT="8752"

case "$(uname -m)" in
  x86_64)        ARCH=amd64 ;;
  aarch64|arm64) ARCH=arm64 ;;
  *) echo "Nicht unterstützte Architektur: $(uname -m)" >&2; exit 1 ;;
esac
AGENT="$DEST/bin/phoenix-agent-$ARCH"
RESTIC="$DEST/bin/restic-$ARCH"

start_daemon() {
  mkdir -p "$VAR/data"
  # Bind to loopback only — the UI is reached same-origin through DSM's nginx
  # (/phoenix/ -> 127.0.0.1:8752), so no LAN port needs to be exposed.
  BACKUP_CLIENT_HOME="$VAR/data" BACKUP_CLIENT_RESTIC="$RESTIC" \
    "$AGENT" --home "$VAR/data" --listen "127.0.0.1:$PORT" >>"$LOG" 2>&1 &
  echo $! > "$PIDFILE"
}

stop_daemon() {
  if [ -f "$PIDFILE" ]; then
    kill "$(cat "$PIDFILE")" 2>/dev/null
    rm -f "$PIDFILE"
  fi
}

daemon_status() {
  [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null
}

case "$1" in
  start)  start_daemon; exit 0 ;;
  stop)   stop_daemon;  exit 0 ;;
  status) if daemon_status; then exit 0; else exit 1; fi ;;
  *)      exit 0 ;;
esac
