The netifyd collector cron job now persists across reboots: - Add collector_enabled option to UCI config (secubox-netifyd.sink) - Create init script (secubox-netifyd-collector) to manage cron job - Update netifyd-collector-setup with enable/disable/status commands - Apply collector settings on first boot via uci-defaults Usage: netifyd-collector-setup unix /tmp/netifyd-flows.json # Enable netifyd-collector-setup disable # Disable netifyd-collector-setup status # Show status Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
115 lines
3.0 KiB
Bash
115 lines
3.0 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Netifyd Collector Setup - Persistent Configuration
|
|
#
|
|
# Usage: netifyd-collector-setup [unix|tcp] [path_or_host:port]
|
|
# Example:
|
|
# netifyd-collector-setup unix /tmp/netifyd-flows.json
|
|
# netifyd-collector-setup tcp 127.0.0.1:9501
|
|
#
|
|
# To disable:
|
|
# netifyd-collector-setup disable
|
|
|
|
SINK_MODE="${1:-unix}"
|
|
TARGET="${2:-/tmp/netifyd-flows.json}"
|
|
|
|
log() {
|
|
printf '%s\n' "$*"
|
|
}
|
|
|
|
configure_sink() {
|
|
local mode="$1"
|
|
local target="$2"
|
|
|
|
uci set secubox-netifyd.sink.enabled=1
|
|
if [ "$mode" = "tcp" ]; then
|
|
local addr="${target%:*}"
|
|
local port="${target##*:}"
|
|
uci set secubox-netifyd.sink.type="tcp"
|
|
uci set secubox-netifyd.sink.tcp_address="$addr"
|
|
uci set secubox-netifyd.sink.tcp_port="$port"
|
|
else
|
|
uci set secubox-netifyd.sink.type="unix"
|
|
uci set secubox-netifyd.sink.unix_path="$target"
|
|
fi
|
|
uci commit secubox-netifyd
|
|
}
|
|
|
|
enable_collector() {
|
|
# Set UCI flag for persistence
|
|
uci set secubox-netifyd.sink.collector_enabled=1
|
|
uci commit secubox-netifyd
|
|
|
|
# Enable and start the init script
|
|
/etc/init.d/secubox-netifyd-collector enable 2>/dev/null
|
|
/etc/init.d/secubox-netifyd-collector reload 2>/dev/null
|
|
|
|
log "Collector enabled and will persist across reboots"
|
|
}
|
|
|
|
disable_collector() {
|
|
# Clear UCI flag
|
|
uci set secubox-netifyd.sink.collector_enabled=0
|
|
uci commit secubox-netifyd
|
|
|
|
# Stop and disable the init script
|
|
/etc/init.d/secubox-netifyd-collector stop 2>/dev/null
|
|
/etc/init.d/secubox-netifyd-collector disable 2>/dev/null
|
|
|
|
log "Collector disabled"
|
|
}
|
|
|
|
show_status() {
|
|
local enabled=$(uci -q get secubox-netifyd.sink.collector_enabled 2>/dev/null || echo "0")
|
|
local sink_enabled=$(uci -q get secubox-netifyd.sink.enabled 2>/dev/null || echo "0")
|
|
local sink_type=$(uci -q get secubox-netifyd.sink.type 2>/dev/null || echo "unix")
|
|
|
|
log "Netifyd Collector Status"
|
|
log "========================"
|
|
log "Collector enabled: $([ "$enabled" = "1" ] && echo "YES" || echo "NO")"
|
|
log "Sink enabled: $([ "$sink_enabled" = "1" ] && echo "YES" || echo "NO")"
|
|
log "Sink type: $sink_type"
|
|
|
|
if [ "$sink_type" = "tcp" ]; then
|
|
local addr=$(uci -q get secubox-netifyd.sink.tcp_address 2>/dev/null)
|
|
local port=$(uci -q get secubox-netifyd.sink.tcp_port 2>/dev/null)
|
|
log "TCP target: $addr:$port"
|
|
else
|
|
local path=$(uci -q get secubox-netifyd.sink.unix_path 2>/dev/null)
|
|
log "Unix path: $path"
|
|
fi
|
|
|
|
if grep -q "netifyd-collector" /etc/crontabs/root 2>/dev/null; then
|
|
log "Cron job: ACTIVE"
|
|
else
|
|
log "Cron job: INACTIVE"
|
|
fi
|
|
}
|
|
|
|
case "$SINK_MODE" in
|
|
disable)
|
|
log "Disabling Netifyd collector..."
|
|
disable_collector
|
|
;;
|
|
status)
|
|
show_status
|
|
;;
|
|
unix|tcp)
|
|
log "Configuring Netifyd flow sink ($SINK_MODE -> $TARGET)"
|
|
configure_sink "$SINK_MODE" "$TARGET"
|
|
enable_collector
|
|
/etc/init.d/netifyd restart >/dev/null 2>&1 || true
|
|
log "Configuration complete. Netifyd restarted."
|
|
;;
|
|
*)
|
|
log "Usage: $0 [unix|tcp|disable|status] [path_or_host:port]"
|
|
log ""
|
|
log "Examples:"
|
|
log " $0 unix /tmp/netifyd-flows.json"
|
|
log " $0 tcp 127.0.0.1:9501"
|
|
log " $0 disable"
|
|
log " $0 status"
|
|
exit 1
|
|
;;
|
|
esac
|