Tools now includes a separate live-control layer for child/device firewall management.
This feature is intentionally separate from the older generic firewall table editor.
Use it when you need to:
The live-control editor is available from:
/firewallDirect page:
/firewall/liveThe preferred selective-blocking workflow is now child-centric:
The same /firewall/live page now also includes a runtime-routing overview block for hosts such as the gateway. That block can show:
run-after route definitions published by Toolsrun-after.d/*.conf refreshesserverinformation path is mounted on the current Tools hostThe live-control layer stores state in the dedicated firewall database connection and uses these tables:
childchild_ip_addresseshost_block_listshost_block_list_addresseslive_child_rulesfwmaker remains the component that generates the actual firewall output.128.116.21.3 and still have Tools store the wider registry-owned CIDR such as 128.116.0.0/17 when that information is available./firewall/live host-list refresh action now starts asynchronously and exposes tracked progress/status polling, so the admin GUI stays responsive while DNS + CIDR/range checks are running.full_block is stronger than internet_block, which is stronger than allow_only_local, regardless of the row creation order.full_block, selective host-list rules for the same targeted child IPs are ignored in generated firewall output.Both full-off actions and selective block_host_list rules can now be aimed at either:
all_child_ipsselected_child_ipsWhen selected_child_ips is used, the request also carries child_ip_address_ids[] for the child IP records that should be affected.
The live firewall layer now also supports database-backed recurring schedules for full off / full on.
schedule_key such as max or emilyschedule_key values such as max-main, max-laptop, or emily-mobileThis allows the web GUI to keep a cron-like schedule in the database while still letting operators temporarily pause schedule writes.
GET /api/firewall/childrenPOST /api/firewall/childrenPUT /api/firewall/children/{child}GET /api/firewall/children/{child}/ip-addressesPUT /api/firewall/children/{child}/host-block-listsPOST /api/firewall/children/{child}/ip-addressesPUT /api/firewall/children/{child}/ip-addresses/{ipAddress}DELETE /api/firewall/children/{child}/ip-addresses/{ipAddress}POST /api/firewall/children/{child}/ip-addresses/{ipAddress}/enablePOST /api/firewall/children/{child}/ip-addresses/{ipAddress}/disablePOST /api/firewall/children/{child}/blockPOST /api/firewall/children/{child}/unblockChildren and child IP payloads can now also expose additive schedule_key fields so database-backed recurring schedules can resolve the correct logical child / device target.
GET /api/firewall/host-block-listsPOST /api/firewall/host-block-listsPUT /api/firewall/host-block-lists/{list}POST /api/firewall/host-block-lists/{list}/hostsPOST /api/firewall/host-block-lists/{list}/refreshGET /api/firewall/host-block-lists/{list}/addressesPUT /api/firewall/children/{child}/host-block-lists
{
"host_block_list_ids": [1, 3, 8],
"action": "drop",
"target_scope": "selected_child_ips",
"child_ip_address_ids": [12, 13]
}
GET /api/firewall/children can now also include additive child-centric selection metadata so clients can render the current listbox selection directly:
selected_host_block_list_ids[]selected_host_block_list_target_scopeselected_host_block_list_child_ip_address_ids[]has_mixed_selective_targetsGET /api/firewall/live-child-rulesPOST /api/firewall/live-child-rulesPUT /api/firewall/live-child-rules/{rule}POST /api/firewall/live-child-rules/{rule}/enablePOST /api/firewall/live-child-rules/{rule}/disablePOST /api/firewall/live-child-rules/syncLive-rule payloads can now also carry additive targeting fields:
target_scopechild_ip_address_ids[]target_child_ip_address_ids[]target_ip_addresses[]target_scope_summaryFull-off calls (POST /api/firewall/children/{child}/block) and full-on calls (POST /api/firewall/children/{child}/unblock) can now use the same target_scope + child_ip_address_ids[] pattern when the operator wants to change the strongest live state for only some of the child's current IP addresses.
GET /api/firewall/runtime/{host}GET /api/firewall/runtime/{host}/run-after.confThese endpoints are intended for internal server/runtime maintenance rather than for the child-control mobile UI.
The JSON endpoint returns grouped runtime route metadata for the selected host, including the configured route groups and the target path of the generated local shell fragment.
The shell endpoint returns a ready-to-source Bash fragment that registers route groups for the local run-after.sh helper.
The current first implementation is intended for authenticated Tools operators with the firewall permission.
The runtime-route config endpoints can also accept a dedicated header token (X-Firewall-Config-Token) when one server needs to refresh its local generated run-after fragment without an interactive web session.
If mobile/API auth changes later, the Android AGENTS file and these docs must be updated in the same change.