#!/bin/bash # MUA - Mikes Unraid Agent # SysVinit-Service-Script (rc.mua) # Unraid nutzt SysVinit, kein systemd. # Wird installiert nach /etc/rc.d/rc.mua # # Läuft das kompilierte TypeScript-Binary (Bun Runtime) — # kein PHP-Built-in-Server mehr. DAEMON="/usr/local/bin/mua" PIDFILE="/var/run/mua.pid" LOGFILE="/var/log/plugins/mua.log" PORT=3002 start() { if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then echo " MUA läuft bereits (PID $(cat "$PIDFILE"))" return 0 fi if [ ! -x "$DAEMON" ]; then echo " FEHLER: Binary nicht gefunden: $DAEMON" return 1 fi # Config-Verzeichnis sicherstellen (für API-Key) mkdir -p /boot/config/plugins/mua # Server starten (detached) MUA_PORT=$PORT nohup "$DAEMON" >> "$LOGFILE" 2>&1 & echo $! > "$PIDFILE" sleep 1 if kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then echo " MUA gestartet (PID $(cat "$PIDFILE"), Port $PORT)" return 0 else echo " FEHLER: MUA konnte nicht gestartet werden" cat "$LOGFILE" 2>/dev/null | tail -5 return 1 fi } stop() { if [ -f "$PIDFILE" ]; then local pid=$(cat "$PIDFILE") if kill -0 "$pid" 2>/dev/null; then kill "$pid" 2>/dev/null sleep 1 kill -0 "$pid" 2>/dev/null && kill -9 "$pid" 2>/dev/null echo " MUA gestoppt (PID $pid)" fi rm -f "$PIDFILE" rm -f /var/run/mua-admin.token else # Fallback: per Port suchen local pid=$(lsof -ti :$PORT 2>/dev/null) if [ -n "$pid" ]; then kill "$pid" 2>/dev/null echo " MUA gestoppt (PID $pid, per Port)" else echo " MUA läuft nicht" fi rm -f /var/run/mua-admin.token fi } status() { if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then echo " MUA läuft (PID $(cat "$PIDFILE"), Port $PORT)" return 0 else echo " MUA läuft nicht" return 1 fi } case "$1" in start) start ;; stop) stop ;; restart) stop; start ;; status) status ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac