#!/bin/sh /etc/rc.common START=96 STOP=09 USE_PROCD=1 BRIDGE_SCRIPT=/usr/lib/lyrion-bridge/ffmpeg-bridge.sh start_service() { local enabled auto_start config_load lyrion-bridge config_get enabled main enabled '0' [ "$enabled" != "1" ] && return 0 config_get auto_start main auto_start '1' # Ensure Squeezelite is configured for FIFO local fifo_enabled=$(uci -q get squeezelite.streaming.fifo_output) if [ "$fifo_enabled" != "1" ]; then logger -t lyrion-bridge "Enabling Squeezelite FIFO output..." uci set squeezelite.streaming.fifo_output='1' uci commit squeezelite /etc/init.d/squeezelite restart sleep 2 fi # Get Icecast password from webradio config if not set local icecast_pass=$(uci -q get lyrion-bridge.icecast.password) if [ -z "$icecast_pass" ]; then icecast_pass=$(uci -q get webradio.main.source_password) [ -n "$icecast_pass" ] && uci set lyrion-bridge.icecast.password="$icecast_pass" fi procd_open_instance procd_set_param command $BRIDGE_SCRIPT procd_set_param respawn procd_set_param stderr 1 procd_set_param stdout 1 procd_set_param pidfile /var/run/lyrion-bridge.pid procd_close_instance logger -t lyrion-bridge "Bridge started" } stop_service() { # Kill ffmpeg processes related to bridge pkill -f "ffmpeg.*lyrion" 2>/dev/null || true pkill -f "ffmpeg-bridge.sh" 2>/dev/null || true logger -t lyrion-bridge "Bridge stopped" } reload_service() { stop_service start_service } service_triggers() { procd_add_reload_trigger "lyrion-bridge" }