54 lines
1.3 KiB
Bash
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."
|