diff --git a/package/secubox/luci-app-secubox-netifyd/root/usr/libexec/rpcd/luci.secubox-netifyd b/package/secubox/luci-app-secubox-netifyd/root/usr/libexec/rpcd/luci.secubox-netifyd index e5ae0245..add07160 100755 --- a/package/secubox/luci-app-secubox-netifyd/root/usr/libexec/rpcd/luci.secubox-netifyd +++ b/package/secubox/luci-app-secubox-netifyd/root/usr/libexec/rpcd/luci.secubox-netifyd @@ -421,11 +421,17 @@ get_dashboard() { json_add_object "stats" if [ -f "$NETIFYD_STATUS" ] && command -v jq >/dev/null 2>&1; then - # Use actual data from status.json + # Use actual data from netifyd's native status.json local total_flows=$(jq -r '.flow_count // 0' "$NETIFYD_STATUS" 2>/dev/null || echo 0) - local unique_devices=$(jq -r '.device_count // 0' "$NETIFYD_STATUS" 2>/dev/null || echo 0) - local dhc_size=$(jq -r '.dhc_size // 0' "$NETIFYD_STATUS" 2>/dev/null || echo 0) - local total_bytes=$(jq -r '.total_bytes // 0' "$NETIFYD_STATUS" 2>/dev/null || echo 0) + + # Count unique devices from ARP table + local unique_devices=$(ip neigh show 2>/dev/null | grep -c "REACHABLE\|STALE\|DELAY" || echo 0) + + # Get DHC size (detection hash cache - unique applications) + local dhc_size=$(jq -r '.dns_hint_cache.cache_size // 0' "$NETIFYD_STATUS" 2>/dev/null || echo 0) + + # Calculate total bytes from all interface stats + local total_bytes=$(jq -r '[.stats | to_entries[] | .value.wire_bytes // 0] | add' "$NETIFYD_STATUS" 2>/dev/null || echo 0) json_add_int "active_flows" "$total_flows" json_add_int "unique_devices" "$unique_devices"