Skip to content

openwrt-cli 1.1.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 09:17
· 4 commits to main since this release

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 state
  • passwall2 nodes / node show / node ping — list (Ping + TCPing on enter/refresh), one node, ICMP / --tcp TCPing
  • passwall2 subscribe / settings / rules / components / components check
  • passwall2 acl / acl show / acl log — acl_rule only; log supports --tail / --since / --until
  • passwall2 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; --force skips that guard.
  • ACL — acl add / acl set / acl delete, plus acl source add / acl source remove (only the sources list). First-class flags: --remarks --sources --node --enabled --log. Ports, interface, and DNS go through --set. Empty ports or an empty node means “use global”; disable means unused. Display strings such as Use 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 --yes

Bandix 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 --name clears the binding.
  • Payload is only mac + hostname. Rate-limit APIs (setRateLimit and similar) are not touched.
  • TUI Neighbors (Bandix overlay): e Edit opens the rename dialog; r stays 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 '' --yes

TUI

  • Tab 7 PassWall2 is added only after probe finds luci-app-passwall2. Sub-pages: Nodes, Subscribe, Settings, Rules, ACL, Logs ([ / ] to switch).
  • Nodes / ACL: a add, e edit, Del delete, p Ping, c TCPing, l ACL 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 Edit only in Bandix mode. The footer shows e Edit on that page only; other tabs stay q / 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 f filter, e / a / Del work again once the table has focus. Those keys stay characters only while the filter input is focused.

简体中文说明见 CHANGELOG.zh.md。