#!/bin/sh /etc/rc.common
# MeshFlow node supervisor (procd). Keeps the agent + MediaMTX alive across
# crashes AND reboots -- replaces the one-shot setup_pi_node.sh launcher, which
# left the node down after every reboot (no supervisor).

USE_PROCD=1
START=95
STOP=10

BASE=/root
[ -x "$BASE/meshflow" ] || BASE=/tmp

apply_mtu() {
    # batman-over-wifi MTU standards (meshflow-dev triage): wlan0 must be 1532.
    ip link set wlan0 mtu 1532 2>/dev/null
    ip link set bat0 mtu 1500 2>/dev/null
    ip link set br-ahwlan mtu 1460 2>/dev/null
}

start_service() {
    local name
    name="$(cat /proc/sys/kernel/hostname 2>/dev/null)"
    apply_mtu

    procd_open_instance meshflow
    procd_set_param command "$BASE/meshflow" -debug -ui-path "$BASE/ui" -name "$name"
    procd_set_param respawn 3600 5 0
    procd_set_param stdout 1
    procd_set_param stderr 1
    procd_close_instance

    procd_open_instance mediamtx
    if [ -f "$BASE/mediamtx.yml" ]; then
        procd_set_param command "$BASE/mediamtx" "$BASE/mediamtx.yml"
    else
        procd_set_param command "$BASE/mediamtx"
    fi
    procd_set_param respawn 3600 5 0
    procd_set_param stdout 1
    procd_set_param stderr 1
    procd_close_instance
}
