- src/*.ts: Port von mcp/*.php (helpers, tools, server) - Bun.serve() statt php -S — production-grade HTTP, POST funktioniert - dist/mua-1.0.0-x86_64-1.txz: Slackware-Paket (Binary + rc.mua + mua.page + PHP-Helper) - plugin/mua.plg: .txz-Installation via upgradepkg - scripts/rc.mua: Binary statt php -S - scripts/mua.page: Binary-Info statt PHP-Version - scripts/package.sh: .txz-Builder Fix: MCP-POST-Endpunkt lieferte leeren Body (php -S Limitation). Bun.serve() löst das Problem.
80 lines
2.0 KiB
Bash
80 lines
2.0 KiB
Bash
#!/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
|
|
# 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"
|
|
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
|
|
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
|