<feed xmlns='http://www.w3.org/2005/Atom'>
<title>luci/applications/luci-app-banip/root, branch master</title>
<subtitle>Lua Configuration Interface (mirror)</subtitle>
<id>https://git.openwrt.org/project/luci/atom?h=master</id>
<link rel='self' href='https://git.openwrt.org/project/luci/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/'/>
<updated>2026-07-31T13:30:12Z</updated>
<entry>
<title>luci-app-banip: fix rpcd file access on symlinked /var/run</title>
<updated>2026-07-31T13:30:12Z</updated>
<author>
<name>Dirk Brenken</name>
</author>
<published>2026-07-31T13:30:12Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=649854fda2c70950330e3cf3089c97007d7160e9'/>
<id>urn:sha1:649854fda2c70950330e3cf3089c97007d7160e9</id>
<content type='text'>
rpcd e37ed9d8 ("file: re-authorize ACL against resolved path to close
symlink bypass", GHSA-q5gr-86pq-vvwr) re-resolves the requested path
with realpath() and re-runs the ACL check against the resolved target
for file.read, file.write, file.md5, file.list and file.stat.

On OpenWrt /var is a symlink to /tmp (or /var/run to /tmp/run with
CONFIG_TARGET_ROOTFS_PERSIST_VAR), so every "/var/run/banIP/*" grant
resolves to "/tmp/run/banIP/*", which is not covered by the ACL. The
second check therefore fails with EACCES.

Effects in the set report view: the banIP.report flag file can no
longer be written or polled, so every 'Refresh' run ends in the
report error handler after the retry limit, and the IP search dialog
fails the same way. Both errors stay invisible because the calls are
wrapped in L.resolveDefault(). Report generation itself is unaffected
since fs.exec_direct() goes through cgi-io, which does not resolve
symlinks.

Independently of that, rpcd authorizes file.stat with the "list"
permission while the ACL only granted "read", and
rpc_session_acl_allowed() matches the permission literally via
fnmatch(). The fs.stat() probes in overview.js, allowlist.js,
blocklist.js and feeds.js were therefore denied, so the runtime status
poll returned early and the list views fell back to an empty result.

- grant the resolved /tmp/run counterpart for every /var/run path
- keep the /var/run entries so the ACL stays valid on targets where
  /var is a real directory
- grant "list" on the objects probed with fs.stat(); this does not
  widen the path scope, the same objects are already readable
- bump PKG_RELEASE

Signed-off-by: Dirk Brenken &lt;dev@brenken.org&gt;
</content>
</entry>
<entry>
<title>luci-app-banip: grant the ubus file methods used by the frontend</title>
<updated>2026-07-20T16:15:38Z</updated>
<author>
<name>Dirk Brenken</name>
</author>
<published>2026-07-20T16:15:38Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=4d06d15e772a9c3bd0c7b9ad1f420ae7e9101ed9'/>
<id>urn:sha1:4d06d15e772a9c3bd0c7b9ad1f420ae7e9101ed9</id>
<content type='text'>
The frontend calls fs.stat(), fs.read() and fs.write(), which are ubus
calls on the "file" object and require the corresponding ubus ACL in
addition to the already existing path ACLs. Only "list" and "remove" are
granted by luci-base, so for non-root sessions every stat resolved to
null and saving the allow-/blocklist and the custom feeds failed.

Signed-off-by: Dirk Brenken &lt;dev@brenken.org&gt;
</content>
</entry>
<entry>
<title>luci-app-banip: fix ACL for non-root users</title>
<updated>2026-07-19T16:32:05Z</updated>
<author>
<name>Dirk Brenken</name>
</author>
<published>2026-07-19T16:32:05Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=7647aa9913294dc83b2212179f05a479c34c1552'/>
<id>urn:sha1:7647aa9913294dc83b2212179f05a479c34c1552</id>
<content type='text'>
Three related ACL defects:

* The frontend reads the feed, category and list files as well as the
  runtime information via fs.read_direct(), which is served by cgi-io's
  download handler. That handler requires the "cgi-io"/"download" scope,
  which was not granted, so all of these requests failed with a 403 for
  non-root sessions.

* The custom feed import uses ui.uploadFile(), which is served by
  cgi-io's upload handler and requires the "cgi-io"/"upload" scope in
  the write section. It was missing as well.

* All file entries lived in the write section, including the read-only
  ones. Since rpcd pulls a section in via the matching list in
  /etc/config/rpcd, a session holding only "list read luci-app-banip"
  had no read access to any of the files at all. Move the read
  permissions to the read section and keep only the write permissions in
  the write section.

The effective permission set of a session holding both lists is
unchanged.

Signed-off-by: Dirk Brenken &lt;dev@brenken.org&gt;
</content>
</entry>
<entry>
<title>luci-app-banip: release 1.8.9-1</title>
<updated>2026-06-12T20:32:47Z</updated>
<author>
<name>Dirk Brenken</name>
</author>
<published>2026-06-12T20:32:47Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=c7b95dc2d7d7c67aed6b9009ecf6538d8a674762'/>
<id>urn:sha1:c7b95dc2d7d7c67aed6b9009ecf6538d8a674762</id>
<content type='text'>
* fix minor code issues

Signed-off-by: Dirk Brenken &lt;dev@brenken.org&gt;
</content>
</entry>
<entry>
<title>luci-app-banip: update 1.8.6-2</title>
<updated>2026-04-18T17:11:08Z</updated>
<author>
<name>Dirk Brenken</name>
</author>
<published>2026-04-18T17:11:08Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=19c9d21f36db102cead8697d270d5b79702595dd'/>
<id>urn:sha1:19c9d21f36db102cead8697d270d5b79702595dd</id>
<content type='text'>
* sync with base package

Signed-off-by: Dirk Brenken &lt;dev@brenken.org&gt;
</content>
</entry>
<entry>
<title>luci-app-banip: release 1.8.5-1</title>
<updated>2026-04-07T17:34:48Z</updated>
<author>
<name>Dirk Brenken</name>
</author>
<published>2026-04-07T17:34:33Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=53137db0d49f02a36c4f7c4318ba7f6ba35eb3c5'/>
<id>urn:sha1:53137db0d49f02a36c4f7c4318ba7f6ba35eb3c5</id>
<content type='text'>
* sync with base package

Signed-off-by: Dirk Brenken &lt;dev@brenken.org&gt;
</content>
</entry>
<entry>
<title>luci-app-banip: update 1.8.1-3</title>
<updated>2026-03-22T15:20:07Z</updated>
<author>
<name>Dirk Brenken</name>
</author>
<published>2026-03-22T15:19:42Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=5944e2659c84c00c5263598b1c6f3c6f0f56fabd'/>
<id>urn:sha1:5944e2659c84c00c5263598b1c6f3c6f0f56fabd</id>
<content type='text'>
* sync with base package

Signed-off-by: Dirk Brenken &lt;dev@brenken.org&gt;
</content>
</entry>
<entry>
<title>luci-app-banip: sync with banIP-1.8.0-1</title>
<updated>2026-01-12T22:04:58Z</updated>
<author>
<name>Dirk Brenken</name>
</author>
<published>2026-01-12T22:04:39Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=2eb0501b3874bf7d00c69848c67c0b0603a5ef18'/>
<id>urn:sha1:2eb0501b3874bf7d00c69848c67c0b0603a5ef18</id>
<content type='text'>
Signed-off-by: Dirk Brenken &lt;dev@brenken.org&gt;
</content>
</entry>
<entry>
<title>luci-app-banip: sync with banIP-1.6.0-1</title>
<updated>2025-12-04T19:29:01Z</updated>
<author>
<name>Dirk Brenken</name>
</author>
<published>2025-12-04T19:28:42Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=bf0ce9c571a51947ebafc0b02d4594073b18f218'/>
<id>urn:sha1:bf0ce9c571a51947ebafc0b02d4594073b18f218</id>
<content type='text'>
Signed-off-by: Dirk Brenken &lt;dev@brenken.org&gt;
</content>
</entry>
<entry>
<title>luci-app-banip: use separate log viewer template</title>
<updated>2025-10-26T19:38:01Z</updated>
<author>
<name>Dirk Brenken</name>
</author>
<published>2025-10-26T19:38:01Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=0f97532791ac8b3dd4cba0559bdf1dcce99cfd26'/>
<id>urn:sha1:0f97532791ac8b3dd4cba0559bdf1dcce99cfd26</id>
<content type='text'>
Signed-off-by: Dirk Brenken &lt;dev@brenken.org&gt;
</content>
</entry>
</feed>
