secubox-openwrt/package/secubox/luci-app-secubox-netifyd/root/etc/uci-defaults/90-secubox-netifyd
CyberMind-FR 31bb322eab fix: Remove legacy categories.json creation to prevent netifyd crash
Issue Identified:
- Netifyd 5.2.1 was crashing with JSON assertion error on startup
- Error: "Assertion failed: m_it.object_iterator != m_object->m_data.m_value.object->end()"
- Root cause: Legacy categories.json format incompatible with netifyd 5.2.1+

The Fix:
- Removed auto-creation of netify-categories.json from UCI defaults
- Let netifyd manage this file itself or operate without it
- Both approaches work correctly with netifyd 5.2.1

Technical Details:
The UCI defaults script was creating categories.json in v1.0 format:
```json
{
  "version": "1.0",
  "categories": []
}
```

This format is detected as "legacy" by netifyd 5.2.1, which then attempts
to parse it with newer code expecting a different structure. When accessing
JSON object iterators, the assertion fails because expected keys don't exist.

Solution: Don't create the file. Netifyd works perfectly without it and will
create its own if needed in the correct format for its version.

Verified Working:
- Netifyd now starts successfully
- 22 active flows captured on br-lan and br-wan
- Both interfaces online with 0% packet drops
- CPU utilization: 0.1%
- Memory: 14.5 MB

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 18:43:43 +01:00

47 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
# SecuBox Netifyd - UCI defaults setup
# Creates required directories and initializes configuration
# Create netifyd directories if they don't exist
mkdir -p /etc/netify.d/plugins.d
mkdir -p /etc/netify.d/address-groups.d
# Ensure proper permissions
chmod 755 /etc/netify.d
chmod 755 /etc/netify.d/plugins.d
chmod 755 /etc/netify.d/address-groups.d
# Note: netify-categories.json is NOT created here as netifyd 5.2.1+ expects
# a newer format that differs from the legacy format. Let netifyd manage this
# file on its own, or operate without it (which works fine).
# Initialize UCI configuration if it doesn't exist
if ! uci -q get secubox-netifyd.settings >/dev/null 2>&1; then
uci set secubox-netifyd.settings=settings
uci set secubox-netifyd.settings.auto_refresh='1'
uci set secubox-netifyd.settings.refresh_interval='5'
uci set secubox-netifyd.settings.socket_type='unix'
uci set secubox-netifyd.settings.unix_socket_path='/var/run/netifyd/netifyd.sock'
uci set secubox-netifyd.settings.socket_address='127.0.0.1'
uci set secubox-netifyd.settings.socket_port='7150'
uci set secubox-netifyd.settings.auto_start='1'
uci commit secubox-netifyd
fi
# Analytics settings
if ! uci -q get secubox-netifyd.analytics >/dev/null 2>&1; then
uci set secubox-netifyd.analytics=analytics
uci set secubox-netifyd.analytics.top_apps_limit='10'
uci set secubox-netifyd.analytics.top_protocols_limit='10'
uci set secubox-netifyd.analytics.top_devices_limit='20'
uci set secubox-netifyd.analytics.data_retention_days='7'
uci commit secubox-netifyd
fi
# Restart netifyd if it's running to apply changes
if pidof netifyd >/dev/null 2>&1; then
/etc/init.d/netifyd restart >/dev/null 2>&1
fi
exit 0