secubox-openwrt/package/secubox/luci-app-secubox-netifyd/root/usr/bin/netifyd-collector-setup

54 lines
1.3 KiB
Bash

#!/bin/sh
set -e
# 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
SINK_MODE="${1:-unix}"
TARGET="${2:-/tmp/netifyd-flows.json}"
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
}
ensure_collector_cron() {
local entry="* * * * * /usr/bin/netifyd-collector >/dev/null 2>&1"
local existing
existing=$(crontab -l 2>/dev/null || true)
if ! printf '%s\n' "$existing" | grep -Fxq "$entry"; then
local tempfile
tempfile=$(mktemp)
printf '%s\n' "$existing" | grep -v '^$' >"$tempfile"
printf '%s\n' "$entry" >>"$tempfile"
crontab "$tempfile"
rm -f "$tempfile"
fi
}
log() {
printf '%s\n' "$*"
}
log "Configuring Netifyd flow sink ($SINK_MODE -> $TARGET)"
configure_sink "$SINK_MODE" "$TARGET"
ensure_collector_cron
/etc/init.d/netifyd restart >/dev/null 2>&1 || true
log "Collector cron enabled and netifyd restarted."