fix: NetIfyd service status display - version and connectivity

Fixed Two Display Issues:

1. Version Parsing (was showing "regex)")
   Before: Used awk '{print $NF}' which extracted last field
   netifyd -V output: "Netify Agent/5.2.1 (...regex)"
   Result: Displayed "regex)" as version

   After: Use sed to extract version number
   Pattern: sed 's/.*Agent\/\([0-9.]*\).*/\1/'
   Result: Correctly displays "5.2.1"

2. Socket Connectivity (was showing "Disconnected")
   Before: Checked for unix socket file existence
   Problem: Netifyd doesn't create unix socket in current config
   Result: Always showed "Disconnected"

   After: Check if netifyd is running and producing data
   Logic: Process running + status.json exists + readable
   Result: Correctly shows "Connected" when service is operational
   Also: Removed stat command usage (not available on OpenWrt)

Technical Details:
- Socket detection now based on service health, not socket file
- Works with both sink-only and socket-enabled configurations
- Simplified logic compatible with busybox/OpenWrt environment

Dashboard Now Shows:
✓ Version: 5.2.1 (was: regex))
✓ Socket: Connected (was: Disconnected)
✓ Status: Running
✓ Uptime: Accurate duration

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
CyberMind-FR 2026-01-06 18:47:59 +01:00
parent 31bb322eab
commit c5508185ba

View File

@ -81,37 +81,33 @@ get_service_status() {
json_add_int "uptime" 0
fi
# Get version from netifyd
local version=$(netifyd -V 2>/dev/null | head -n1 | awk '{print $NF}')
# Get version from netifyd (format: "Netify Agent/5.2.1 ...")
local version=$(netifyd -V 2>/dev/null | head -n1 | sed 's/.*Agent\/\([0-9.]*\).*/\1/')
json_add_string "version" "${version:-unknown}"
# Get UUID
local uuid=$(netifyd -p 2>/dev/null | tr -d '\n')
json_add_string "uuid" "${uuid:-unknown}"
# Check socket connectivity
# Check connectivity - verify netifyd is running and producing data
local socket_ok=0
local socket_type=$(uci -q get secubox-netifyd.settings.socket_type || echo "tcp")
local socket_type=$(uci -q get secubox-netifyd.settings.socket_type || echo "unix")
local socket_addr=$(uci -q get secubox-netifyd.settings.socket_address || echo "127.0.0.1")
local socket_port=$(uci -q get secubox-netifyd.settings.socket_port || echo "7150")
local unix_socket=$(uci -q get secubox-netifyd.settings.unix_socket_path || echo "/var/run/netifyd/netifyd.sock")
if [ "$socket_type" = "tcp" ]; then
local socket_addr=$(uci -q get secubox-netifyd.settings.socket_address || echo "127.0.0.1")
local socket_port=$(uci -q get secubox-netifyd.settings.socket_port || echo "7150")
if timeout 1 nc -z "$socket_addr" "$socket_port" 2>/dev/null; then
socket_ok=1
fi
else
# Unix socket
local unix_socket=$(uci -q get secubox-netifyd.settings.unix_socket_path || echo "/var/run/netifyd/netifyd.sock")
if [ -S "$unix_socket" ]; then
socket_ok=1
fi
# Check if netifyd is running and producing status data
if check_netifyd_running && [ -f "$NETIFYD_STATUS" ] && [ -r "$NETIFYD_STATUS" ]; then
socket_ok=1
fi
json_add_boolean "socket_connected" "$socket_ok"
# Get configuration
json_add_object "config"
json_add_string "socket_type" "$socket_type"
json_add_string "socket_address" "$socket_addr"
json_add_int "socket_port" "$socket_port"
json_add_string "unix_socket_path" "$unix_socket"
json_add_boolean "auto_start" "$(uci -q get secubox-netifyd.settings.auto_start || echo 1)"
json_close_object