New packages: - luci-app-webradio: Web radio management with Lyrion bridge tab - luci-app-turn: TURN/STUN server UI for WebRTC (Jitsi integration) - secubox-app-lyrion-bridge: Lyrion → Squeezelite → FFmpeg → Icecast pipeline - secubox-app-squeezelite: Squeezelite audio player with FIFO output - secubox-app-turn: TURN server with ACME SSL and Jitsi setup - secubox-app-webradio: Icecast/ezstream web radio server Features: - HTTPS streaming via HAProxy (stream.gk2.secubox.in) - Lyrion Music Server bridge for streaming playlists to Icecast - TURN server with time-limited credential generation - CrowdSec integration for WebRadio security - Schedule-based radio programming with jingles Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
81 lines
2.0 KiB
Bash
81 lines
2.0 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
|
|
START=95
|
|
STOP=10
|
|
USE_PROCD=1
|
|
|
|
PROG=/usr/bin/squeezelite
|
|
|
|
start_service() {
|
|
local enabled name server server_port auto_discover output mac model
|
|
local sample_rate buffer_size codec_buffer alsa_buffer alsa_period
|
|
local fifo_output fifo_path
|
|
|
|
config_load squeezelite
|
|
|
|
config_get enabled main enabled '0'
|
|
[ "$enabled" != "1" ] && return 0
|
|
|
|
config_get name main name 'SecuBox-Player'
|
|
config_get server main server ''
|
|
config_get server_port main server_port '3483'
|
|
config_get auto_discover main auto_discover '1'
|
|
config_get output main output 'default'
|
|
config_get mac main mac ''
|
|
config_get model main model 'squeezelite'
|
|
|
|
config_get sample_rate audio sample_rate '44100'
|
|
config_get buffer_size audio buffer_size '2000'
|
|
config_get codec_buffer audio codec_buffer '2000'
|
|
config_get alsa_buffer audio alsa_buffer '80'
|
|
config_get alsa_period audio alsa_period '4'
|
|
|
|
config_get fifo_output streaming fifo_output '0'
|
|
config_get fifo_path streaming fifo_path '/tmp/squeezelite.pcm'
|
|
|
|
# Build command line
|
|
local cmd_args="-n $name -o $output"
|
|
|
|
# Server connection
|
|
if [ -n "$server" ]; then
|
|
cmd_args="$cmd_args -s $server:$server_port"
|
|
fi
|
|
|
|
# MAC address (auto-generate if not set)
|
|
if [ -n "$mac" ]; then
|
|
cmd_args="$cmd_args -m $mac"
|
|
fi
|
|
|
|
# Model name
|
|
cmd_args="$cmd_args -M $model"
|
|
|
|
# Audio settings
|
|
cmd_args="$cmd_args -r $sample_rate"
|
|
cmd_args="$cmd_args -b ${buffer_size}:${codec_buffer}"
|
|
cmd_args="$cmd_args -a ${alsa_buffer}:${alsa_period}"
|
|
|
|
# FIFO output for streaming bridge
|
|
if [ "$fifo_output" = "1" ]; then
|
|
# Create FIFO if not exists
|
|
[ -p "$fifo_path" ] || mkfifo "$fifo_path"
|
|
cmd_args="$cmd_args -o $fifo_path"
|
|
fi
|
|
|
|
procd_open_instance
|
|
procd_set_param command $PROG $cmd_args
|
|
procd_set_param respawn
|
|
procd_set_param stderr 1
|
|
procd_set_param pidfile /var/run/squeezelite.pid
|
|
procd_close_instance
|
|
|
|
logger -t squeezelite "Started: $name"
|
|
}
|
|
|
|
stop_service() {
|
|
logger -t squeezelite "Stopped"
|
|
}
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger "squeezelite"
|
|
}
|