openwrt-cli 1.1.0
Feature release 1.1.0. Optional PassWall2 and Bandix hostname become first-class on CLI and TUI. The Agent JSON contract is unchanged: success and failure are one object with ok, and service fields are flattened into that object.
Tab 7, PassWall2 commands, and Bandix rename appear only when the matching LuCI app is on the router. Missing capability still fails loudly (no fake rows). Writes go through UCI / ubus, not the LuCI CBI Save form. Session cookies and tokens are never printed in success JSON or logs.
PassWall2 (luci-app-passwall2)
Read (HTTP or SSH):
passwall2 status— current node, ACL switch, running statepasswall2 nodes/node show/node ping— list (Ping + TCPing on enter/refresh), one node, ICMP /--tcpTCPingpasswall2 subscribe/settings/rules/components/components checkpasswall2 acl/acl show/acl log—acl_ruleonly; log supports--tail/--since/--untilpasswall2 logs— runtime log with the same time window flags
Write (same UCI keys the LuCI app uses):
- Nodes —
node add/node set/node delete. Add from a share URL (--from-url, vless / vmess / trojan / ss / hysteria2) or fields (--type--protocol--remarks--group--address--port--username--password--uuid). Extra UCI options:--set key=value(repeatable),--unset(set/delete),--raw(unknown keys). Delete asks again if the node is referenced;--forceskips that guard. - ACL —
acl add/acl set/acl delete, plusacl source add/acl source remove(only thesourceslist). First-class flags:--remarks--sources--node--enabled--log. Ports, interface, and DNS go through--set. Empty ports or an empty node means “use global”;disablemeans unused. Display strings such asUse global config (...)are never written back.
--apply commits and restarts PassWall2 so the change takes effect. A restart failure does not roll back the UCI commit. rpcd write denial uses a dedicated pw2_write_denied error.
Out of scope in 1.1.0: subscribe refresh / pull, clear_log, and component install or upgrade.
openwrt passwall2 nodes
openwrt passwall2 node add --from-url 'vless://...' --apply --yes
openwrt passwall2 node set cfgxxx --remarks 'HK' --set group=office --yes
openwrt passwall2 acl add --remarks 'iot' --sources 192.168.9.10 --node '' --yes
openwrt passwall2 acl source add cfgacl1 192.168.9.11 --yesBandix neighbor hostname (luci-app-bandix)
Rename is the Bandix custom name on a MAC, not OpenWrt system.@system[0].hostname and not DHCP/ARP hostname.
- CLI:
openwrt network set-hostname --mac aa:bb:cc:dd:ee:ff --name phone --yes - Empty
--nameclears the binding. - Payload is only
mac+hostname. Rate-limit APIs (setRateLimitand similar) are not touched. - TUI Neighbors (Bandix overlay):
e Editopens the rename dialog;rstays Refresh so the two keys do not collide.
openwrt network neighbors
openwrt network set-hostname --mac aa:bb:cc:dd:ee:ff --name phone --yes
openwrt network set-hostname --mac aa:bb:cc:dd:ee:ff --name '' --yesTUI
- Tab
7PassWall2 is added only after probe findsluci-app-passwall2. Sub-pages: Nodes, Subscribe, Settings, Rules, ACL, Logs ([/]to switch). - Nodes / ACL:
aadd,eedit,Deldelete,pPing,cTCPing,lACL log. Forms write the same UCI fields as the CLI. Node form: remarks / group / type / protocol / address / port / username / password, plus share URL on add. - Neighbors:
e Editonly in Bandix mode. The footer showse Editon that page only; other tabs stayq/r/f/?. - In-page shortcut lines (node/ACL detail, service actions, confirm/rename/form hints) highlight the key the same way as the footer.
Fixed
- After
ffilter,e/a/Delwork again once the table has focus. Those keys stay characters only while the filter input is focused.
简体中文说明见 CHANGELOG.zh.md。