fix(mmpm): Update to MMPM v4.x CLI syntax for UI management

- Use `mmpm ui --start/--stop/--status` instead of `mmpm ui --port --host`
- MMPM v4 manages GUI via pm2, not direct execution
- Update status command to check pm2 status and get URL from mmpm
- Auto-install UI if not present when starting service

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
CyberMind-FR 2026-01-17 13:40:11 +01:00
parent f57303bdeb
commit 8c72679dea
2 changed files with 28 additions and 21 deletions

View File

@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=secubox-app-mmpm
PKG_VERSION:=0.2.0
PKG_RELEASE:=4
PKG_RELEASE:=5
PKG_ARCH:=all
PKG_MAINTAINER:=CyberMind Studio <contact@cybermind.fr>
PKG_LICENSE:=MIT

View File

@ -149,7 +149,7 @@ cmd_status() {
echo "MagicMirror2 container: RUNNING"
if is_mmpm_installed; then
local version=$(lxc-attach -n "$LXC_NAME" -- $MMPM_BIN version 2>/dev/null | head -1 || echo "unknown")
local version=$(run_mmpm version 2>/dev/null | head -1 || echo "unknown")
echo "MMPM installed: YES (v$version)"
else
echo "MMPM installed: NO"
@ -159,20 +159,17 @@ cmd_status() {
fi
echo ""
echo "=== Configuration ==="
echo "GUI Port: $port"
echo "GUI Address: $address"
echo "GUI Enabled: $enabled"
echo "=== GUI Status ==="
# Check if GUI is running
if pgrep -f "mmpm gui" >/dev/null 2>&1; then
local router_ip=$(uci -q get network.lan.ipaddr || echo "192.168.1.1")
echo ""
echo "GUI Status: RUNNING"
echo "GUI URL: http://$router_ip:$port"
# Check if GUI is running via pm2
local ui_status=$(run_mmpm ui --status 2>/dev/null | grep "mmpm.ui" | grep -c "online" || echo "0")
if [ "$ui_status" != "0" ]; then
local gui_url=$(run_mmpm ui --url 2>/dev/null | grep -oE 'http://[^[:space:]]+' || echo "")
echo "GUI Status: RUNNING (pm2)"
echo "GUI URL: $gui_url"
else
echo ""
echo "GUI Status: NOT RUNNING"
echo "Start with: /etc/init.d/mmpm start"
fi
}
@ -185,7 +182,7 @@ cmd_logs() {
fi
}
# Run MMPM GUI (called by procd)
# Start MMPM GUI (via pm2)
cmd_service_run() {
check_mm2_running || return 1
@ -194,19 +191,29 @@ cmd_service_run() {
return 1
fi
load_config
log_info "Starting MMPM GUI..."
log_info "Starting MMPM GUI on port $port..."
# Check if UI is installed, if not install it
local ui_status=$(run_mmpm ui --status 2>/dev/null | grep -c "mmpm.ui" || echo "0")
if [ "$ui_status" = "0" ]; then
log_info "Installing MMPM UI..."
run_mmpm ui install --yes 2>/dev/null || true
fi
# Run MMPM GUI inside container (with proper PATH for pm2/npm)
exec lxc-attach -n "$LXC_NAME" -- sh -c "export PATH=$NODE_PATH:\$PATH && $MMPM_BIN ui --port $port --host $address"
# Start MMPM GUI via pm2
run_mmpm ui --start
}
# Stop MMPM GUI
cmd_service_stop() {
# Kill mmpm gui process in container
lxc-attach -n "$LXC_NAME" -- pkill -f "mmpm gui" 2>/dev/null || true
log_info "MMPM GUI stopped"
check_mm2_running || return 1
if ! is_mmpm_installed; then
return 0
fi
log_info "Stopping MMPM GUI..."
run_mmpm ui --stop 2>/dev/null || true
}
# Search modules