The -x flag requires exact process name match which doesn't work reliably on OpenWrt/BusyBox. Removed -x from all pgrep calls in: - luci-app-bandwidth-manager - luci-app-secubox-security-threats - luci-app-auth-guardian - luci-app-media-flow - luci-app-vhost-manager - luci-app-network-modes Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
123 lines
2.9 KiB
Bash
Executable File
123 lines
2.9 KiB
Bash
Executable File
#!/bin/sh /etc/rc.common
|
|
#
|
|
# Media Flow Init Script
|
|
# Manages the media flow data collector cron jobs
|
|
# Supports nDPId (local DPI) and netifyd as data sources
|
|
#
|
|
|
|
START=99
|
|
STOP=10
|
|
|
|
CRON_FILE="/etc/crontabs/root"
|
|
CRON_MARKER="# media-flow-collector"
|
|
|
|
# Detect best collector to use
|
|
get_collector() {
|
|
# Prefer nDPId collector if nDPId is installed
|
|
if [ -x /usr/bin/media-flow-ndpid-collector ] && command -v ndpid >/dev/null 2>&1; then
|
|
echo "/usr/bin/media-flow-ndpid-collector"
|
|
else
|
|
echo "/usr/bin/media-flow-collector"
|
|
fi
|
|
}
|
|
|
|
add_cron_entry() {
|
|
# Remove existing entries first
|
|
remove_cron_entry
|
|
|
|
local collector=$(get_collector)
|
|
local cron_entry="*/1 * * * * $collector >/dev/null 2>&1"
|
|
|
|
# Add the new entry with marker
|
|
if [ -f "$CRON_FILE" ]; then
|
|
echo "$CRON_MARKER" >> "$CRON_FILE"
|
|
echo "$cron_entry" >> "$CRON_FILE"
|
|
else
|
|
echo "$CRON_MARKER" > "$CRON_FILE"
|
|
echo "$cron_entry" >> "$CRON_FILE"
|
|
fi
|
|
|
|
# Restart cron
|
|
/etc/init.d/cron reload 2>/dev/null || /etc/init.d/cron restart 2>/dev/null
|
|
|
|
logger -t media-flow "Collector enabled: $collector"
|
|
}
|
|
|
|
remove_cron_entry() {
|
|
if [ -f "$CRON_FILE" ]; then
|
|
sed -i '/# media-flow-collector/d' "$CRON_FILE"
|
|
sed -i '\|/usr/bin/media-flow-collector|d' "$CRON_FILE"
|
|
sed -i '\|/usr/bin/media-flow-ndpid-collector|d' "$CRON_FILE"
|
|
/etc/init.d/cron reload 2>/dev/null || /etc/init.d/cron restart 2>/dev/null
|
|
fi
|
|
}
|
|
|
|
start() {
|
|
local enabled=$(uci -q get media_flow.global.enabled 2>/dev/null || echo "1")
|
|
|
|
if [ "$enabled" = "1" ]; then
|
|
logger -t media-flow "Starting media flow collector"
|
|
add_cron_entry
|
|
# Run once immediately
|
|
local collector=$(get_collector)
|
|
$collector &
|
|
fi
|
|
}
|
|
|
|
stop() {
|
|
logger -t media-flow "Stopping media flow collector"
|
|
remove_cron_entry
|
|
}
|
|
|
|
reload() {
|
|
local enabled=$(uci -q get media_flow.global.enabled 2>/dev/null || echo "1")
|
|
|
|
if [ "$enabled" = "1" ]; then
|
|
logger -t media-flow "Reloading media flow collector"
|
|
add_cron_entry
|
|
else
|
|
logger -t media-flow "Media flow disabled, removing collector"
|
|
remove_cron_entry
|
|
fi
|
|
}
|
|
|
|
status() {
|
|
local enabled=$(uci -q get media_flow.global.enabled 2>/dev/null || echo "1")
|
|
local collector=$(get_collector)
|
|
|
|
echo "Media Flow v0.6.0"
|
|
echo "================="
|
|
|
|
if grep -q "media-flow" "$CRON_FILE" 2>/dev/null; then
|
|
echo "Collector: ACTIVE"
|
|
else
|
|
echo "Collector: INACTIVE"
|
|
fi
|
|
|
|
echo "Using: $collector"
|
|
echo "UCI enabled: $enabled"
|
|
|
|
# DPI engine status
|
|
if pgrep ndpid >/dev/null 2>&1; then
|
|
echo "nDPId: Running"
|
|
else
|
|
echo "nDPId: Not running"
|
|
fi
|
|
|
|
if pgrep netifyd >/dev/null 2>&1; then
|
|
echo "Netifyd: Running"
|
|
else
|
|
echo "Netifyd: Not running"
|
|
fi
|
|
|
|
if [ -f /tmp/media-flow-history.json ]; then
|
|
local count=$(jq 'length' /tmp/media-flow-history.json 2>/dev/null || echo 0)
|
|
echo "History entries: $count"
|
|
fi
|
|
|
|
if [ -f /tmp/media-flow-ndpid-cache.json ]; then
|
|
local streams=$(jq 'length' /tmp/media-flow-ndpid-cache.json 2>/dev/null || echo 0)
|
|
echo "Active streams: $streams"
|
|
fi
|
|
}
|