OpenWrt

create state dir

export UCI env

launch

write pid

spool NDJSON

touch wake

poll wake file

WS

WS frame

read state

poll dnsmasq leases

/etc/init.d/client2server

State dir
/var/run/client2server/
{buffer,pid,env,wake}

client2server-unified.lua

hotplug-lib.sh
/usr/share/client2server/

hotplug.d/wireless/01-wifi

hotplug.d/dhcp/02-dhcp

/etc/config/client2server

UCI store

WebSocket client
(luasocket)

Command executor

Go server :3843

/sys/class/net/*
/usr/bin/ubus

/tmp/dhcp.leases