#!/bin/sh
# SecuBox Netifyd Configuration Helper
# Helps configure netifyd for local flow data export

NETIFYD_STATUS="/var/run/netifyd/status.json"
FLOW_EXPORT="/tmp/netifyd-flows.json"

echo "================================"
echo "SecuBox Netifyd Configuration"
echo "================================"
echo ""

# Check if netifyd is installed
if ! command -v netifyd >/dev/null 2>&1; then
    echo "❌ ERROR: netifyd is not installed"
    echo "   Install it with: opkg install netifyd"
    exit 1
fi

echo "✅ Netifyd is installed"

# Check netifyd version and features
echo ""
echo "Netifyd Version:"
netifyd -V | head -1

# Check if running
echo ""
if pidof netifyd >/dev/null 2>&1; then
    echo "✅ Netifyd is running"

    # Show current stats
    echo ""
    echo "Current Statistics:"
    if [ -f "$NETIFYD_STATUS" ] && command -v jq >/dev/null 2>&1; then
        echo "  - Flow Count: $(jq -r '.flow_count // 0' "$NETIFYD_STATUS")"
        echo "  - Devices: $(jq -r '.devices | length // 0' "$NETIFYD_STATUS")"
        echo "  - DNS Cache: $(jq -r '.dhc_size // 0' "$NETIFYD_STATUS")"
    fi
else
    echo "❌ Netifyd is not running"
    echo "   Start it with: /etc/init.d/netifyd start"
fi

# Check for plugins
echo ""
echo "Checking for netifyd plugins..."
if [ -d "/usr/lib/netifyd" ]; then
    PLUGIN_COUNT=$(ls /usr/lib/netifyd/*.so 2>/dev/null | wc -l)
    if [ "$PLUGIN_COUNT" -gt 0 ]; then
        echo "✅ Found $PLUGIN_COUNT plugin(s):"
        ls -1 /usr/lib/netifyd/*.so 2>/dev/null | while read -r plugin; do
            echo "   - $(basename "$plugin")"
        done
    else
        echo "⚠️  No plugins found in /usr/lib/netifyd/"
    fi
else
    echo "⚠️  Plugin directory not found"
fi

# Check netifyd capabilities
echo ""
echo "Available netifyd command options:"
netifyd --help 2>&1 | grep -E "^\s*-" | head -10
echo "  ... (run 'netifyd --help' for full list)"

# Check current configuration
echo ""
echo "Current Configuration:"
echo "  - Config file: /etc/config/netifyd"
if [ -f "/etc/config/netifyd" ]; then
    echo "  - Enabled: $(uci -q get netifyd.@netifyd[0].enabled || echo 'unknown')"
    echo "  - Autoconfig: $(uci -q get netifyd.@netifyd[0].autoconfig || echo 'unknown')"
else
    echo "  ⚠️  Config file not found"
fi

# Recommendations
echo ""
echo "================================"
echo "Configuration Recommendations"
echo "================================"
echo ""

if [ ! -f "$FLOW_EXPORT" ]; then
    echo "📝 Flow export file not found at: $FLOW_EXPORT"
    echo ""
    echo "To enable local flow export, try one of these methods:"
    echo ""
    echo "Method 1: Check if netifyd supports -j option"
    echo "  netifyd --help | grep '\-j'"
    echo "  # If supported, add to config:"
    echo "  uci add_list netifyd.@netifyd[0].options='-j /tmp/netifyd-flows.json'"
    echo "  uci commit netifyd"
    echo "  /etc/init.d/netifyd restart"
    echo ""
    echo "Method 2: Use netifyd collector script"
    echo "  # Enable cron job:"
    echo "  echo '* * * * * /usr/bin/netifyd-collector' >> /etc/crontabs/root"
    echo "  /etc/init.d/cron restart"
    echo ""
    echo "Method 3: Use Netify.ai Cloud Dashboard"
    echo "  # Your agent UUID: $(jq -r '.agent_uuid // "not-set"' "$NETIFYD_STATUS" 2>/dev/null)"
    echo "  # Dashboard: https://dashboard.netify.ai"
    echo ""
    echo "Method 4: Sync Flow Plugins (BitTorrent IP set / nftables block)"
    echo "  # Enable the Flow Plugins section in LuCI, then run:"
    echo "  ubus call luci.secubox-netifyd apply_plugin_configuration '{}'"
    echo "  # Plugin configs live under /etc/netifyd/plugins.d/secubox-*.conf"
    echo "  # See:"
    echo "  # - https://www.netify.ai/documentation/netify-plugins/v5/examples/mark-bittorrent-with-ip-sets"
    echo "  # - https://www.netify.ai/documentation/netify-plugins/v5/examples/block-traffic-with-nftables"
    echo ""
fi

# Check if sink is enabled
if [ -f "$NETIFYD_STATUS" ] && command -v jq >/dev/null 2>&1; then
    SINK_STATUS=$(jq -r '.sink_status // false' "$NETIFYD_STATUS" 2>/dev/null)
    if [ "$SINK_STATUS" = "true" ]; then
        echo "✅ Cloud sink is enabled and working"
        echo "   You can access detailed flow data at: https://dashboard.netify.ai"
    else
        echo "⚠️  Cloud sink is not enabled"
        echo "   To enable: netifyd --enable-sink"
    fi
fi

echo ""
echo "================================"
echo "For more information, see:"
echo "  /usr/share/doc/luci-app-secubox-netifyd/README-FLOW-DATA.md"
echo "================================"
