<feed xmlns='http://www.w3.org/2005/Atom'>
<title>luci/applications, 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-08-01T15:19:39Z</updated>
<entry>
<title>luci-base: move the ucode-mod-math dependency to luci-app-ddns</title>
<updated>2026-08-01T15:19:39Z</updated>
<author>
<name>Julius Bairaktaris</name>
</author>
<published>2026-08-01T14:27:05Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=3fb9db3869c6500737683305cedc8227ef4cc94e'/>
<id>urn:sha1:3fb9db3869c6500737683305cedc8227ef4cc94e</id>
<content type='text'>
With randomid() off math.rand(), luci-base has no ucode math user left.
The one remaining consumer in the tree is luci-app-ddns, whose ddns.uc
imports isnan() while its Makefile only declares +luci-base - it has been
getting the module transitively all along.

Declare it where it is used.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Julius Bairaktaris &lt;julius@bairaktaris.de&gt;
</content>
</entry>
<entry>
<title>luci-app-travelmate: fix rpcd file access on symlinked /var/run</title>
<updated>2026-07-31T13:51:55Z</updated>
<author>
<name>Dirk Brenken</name>
</author>
<published>2026-07-31T13:51:55Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=fe9d6b4f09f3bc30a3f62abf00ac5542a3a98f90'/>
<id>urn:sha1:fe9d6b4f09f3bc30a3f62abf00ac5542a3a98f90</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/travelmate/*"
grant resolves to "/tmp/run/travelmate/*", which is not covered by the
ACL. The second check therefore fails with EACCES.

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().

Both defects hit the same call sites: the fs.stat() probes in
overview.js and stations.js gate the subsequent fs.read_direct(), so
the runtime status poll and the station refresh handler returned early
without ever loading their payload. The errors stay invisible because
the probes are wrapped in L.resolveDefault(). Reading the payload
itself is unaffected since fs.read_direct() and fs.exec_direct() go
through cgi-io, which does not resolve symlinks, and fs.remove() is
exempt because file.remove keeps its no-follow semantics.

Also grant "list" on the /etc/travelmate directory itself. The auto
login script option is a form.FileUpload with root_directory set to
that path, and ui.FileUpload lists a directory via fs.list(path),
which is authorized against the directory. The existing
"/etc/travelmate/*.login" grant only covers the fs.stat() of an
already selected file, so the browser listing came back empty. This
is a pre-existing defect unrelated to the rpcd change.

- grant the resolved /tmp/run counterpart for every /var/run path;
  both names denote the same file, so no additional object becomes
  reachable
- 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()
- grant "list" on /etc/travelmate for the file browser listing
- bump PKG_RELEASE

Signed-off-by: Dirk Brenken &lt;dev@brenken.org&gt;
</content>
</entry>
<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-adblock: fix rpcd file access on symlinked /var/run</title>
<updated>2026-07-31T12:58:42Z</updated>
<author>
<name>Dirk Brenken</name>
</author>
<published>2026-07-31T12:58:42Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=7b4b303decbc6b0cb5e40eab64fec39fb4921ca6'/>
<id>urn:sha1:7b4b303decbc6b0cb5e40eab64fec39fb4921ca6</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/adblock/*" grant
resolves to "/tmp/run/adblock/*", which is not covered by the ACL. The
second check therefore fails with EACCES.

Effects in the DNS report view: the adblock.report flag file can no
longer be written or polled, so every 'Refresh...' run ends in
"Failed to generate adblock report!" after the retry limit. The
'Blocklist 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, the runtime status polling in overview.js gates
on fs.stat(), and rpcd authorizes file.stat with the "list" permission
while the ACL only granted "read". rpc_session_acl_allowed() matches
the permission literally via fnmatch(), so the call was denied and the
poll callback returned early without updating the status.

- 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 adblock.runtime.json for the fs.stat() probe
- bump PKG_RELEASE

Signed-off-by: Dirk Brenken &lt;dev@brenken.org&gt;
</content>
</entry>
<entry>
<title>Translated using Weblate (Japanese)</title>
<updated>2026-07-29T17:08:49Z</updated>
<author>
<name>Hosted Weblate</name>
</author>
<published>2026-07-29T17:07:20Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=a3cc0e14419c96ca74578b792d306cba017b9e6d'/>
<id>urn:sha1:a3cc0e14419c96ca74578b792d306cba017b9e6d</id>
<content type='text'>
Currently translated at 5.2% (8 of 153 strings)

Translation: OpenWrt/LuCI/applications/dawn
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdawn/ja/

Translated using Weblate (Japanese)

Currently translated at 7.0% (18 of 255 strings)

Translation: OpenWrt/LuCI/applications/keepalived
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationskeepalived/ja/

Translated using Weblate (Japanese)

Currently translated at 17.8% (5 of 28 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (31 of 31 strings)

Translation: OpenWrt/LuCI/applications/acl
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsacl/ja/

Translated using Weblate (Japanese)

Currently translated at 22.8% (68 of 297 strings)

Translation: OpenWrt/LuCI/applications/banip
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/ja/

Translated using Weblate (Japanese)

Currently translated at 37.2% (101 of 271 strings)

Translation: OpenWrt/LuCI/applications/adblock
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/ja/

Translated using Weblate (Japanese)

Currently translated at 47.3% (98 of 207 strings)

Translation: OpenWrt/LuCI/applications/travelmate
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/ja/

Translated using Weblate (Japanese)

Currently translated at 12.9% (4 of 31 strings)

Translated using Weblate (Japanese)

Currently translated at 61.1% (1930 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ja/

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (3154 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 100.0% (167 of 167 strings)

Translation: OpenWrt/LuCI/applications/strongswan-swanctl
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstrongswan-swanctl/ru/

Translated using Weblate (Turkish)

Currently translated at 100.0% (22 of 22 strings)

Translation: OpenWrt/LuCI/applications/wifihistory
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationswifihistory/tr/

Translated using Weblate (Turkish)

Currently translated at 7.4% (12 of 162 strings)

Translation: OpenWrt/LuCI/applications/ustreamer
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsustreamer/tr/

Translated using Weblate (Turkish)

Currently translated at 6.2% (16 of 255 strings)

Translation: OpenWrt/LuCI/applications/keepalived
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationskeepalived/tr/

Translated using Weblate (Russian)

Currently translated at 100.0% (86 of 86 strings)

Translation: OpenWrt/LuCI/applications/package-manager
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspackage-manager/ru/

Translated using Weblate (Turkish)

Currently translated at 8.8% (11 of 125 strings)

Translation: OpenWrt/LuCI/applications/snmpd
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssnmpd/tr/

Translated using Weblate (Turkish)

Currently translated at 32.4% (167 of 515 strings)

Translation: OpenWrt/LuCI/applications/dockerman
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/tr/

Translated using Weblate (Turkish)

Currently translated at 71.0% (147 of 207 strings)

Translation: OpenWrt/LuCI/applications/travelmate
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/tr/

Translated using Weblate (Turkish)

Currently translated at 100.0% (72 of 72 strings)

Translation: OpenWrt/LuCI/applications/ocserv
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsocserv/tr/

Translated using Weblate (Turkish)

Currently translated at 67.3% (200 of 297 strings)

Translation: OpenWrt/LuCI/applications/banip
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/tr/

Translated using Weblate (Turkish)

Currently translated at 36.1% (98 of 271 strings)

Translation: OpenWrt/LuCI/applications/adblock
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/tr/

Translated using Weblate (Russian)

Currently translated at 100.0% (207 of 207 strings)

Translation: OpenWrt/LuCI/applications/travelmate
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/ru/

Translated using Weblate (Russian)

Currently translated at 100.0% (124 of 124 strings)

Translation: OpenWrt/LuCI/applications/nlbwmon
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnlbwmon/ru/

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (3154 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/

Translated using Weblate (Russian)

Currently translated at 100.0% (3154 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ru/

Translated using Weblate (Spanish)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (3154 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hans/

Translated using Weblate (Latvian)

Currently translated at 33.3% (7 of 21 strings)

Translation: OpenWrt/LuCI/applications/tor
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstor/lv/

Translated using Weblate (Latvian)

Currently translated at 4.0% (17 of 422 strings)

Translated using Weblate (Latvian)

Currently translated at 8.2% (261 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/lv/

Translated using Weblate (Latvian)

Currently translated at 51.2% (64 of 125 strings)

Translation: OpenWrt/LuCI/applications/snmpd
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssnmpd/lv/

Translated using Weblate (Latvian)

Currently translated at 92.3% (12 of 13 strings)

Translation: OpenWrt/LuCI/applications/bcp38
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbcp38/lv/

Translated using Weblate (Latvian)

Currently translated at 100.0% (7 of 7 strings)

Translation: OpenWrt/LuCI/applications/olsr-services
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr-services/lv/

Translated using Weblate (Lao)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Lao)

Currently translated at 100.0% (207 of 207 strings)

Translation: OpenWrt/LuCI/applications/travelmate
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/lo/

Translated using Weblate (Lao)

Currently translated at 100.0% (125 of 125 strings)

Translation: OpenWrt/LuCI/applications/snmpd
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssnmpd/lo/

Translated using Weblate (Lao)

Currently translated at 100.0% (173 of 173 strings)

Translation: OpenWrt/LuCI/applications/mwan3
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmwan3/lo/

Translated using Weblate (Lao)

Currently translated at 100.0% (282 of 282 strings)

Translated using Weblate (Lao)

Currently translated at 100.0% (194 of 194 strings)

Translation: OpenWrt/LuCI/applications/https-dns-proxy
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshttps-dns-proxy/lo/

Translated using Weblate (Lao)

Currently translated at 100.0% (187 of 187 strings)

Translation: OpenWrt/LuCI/applications/privoxy
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsprivoxy/lo/

Translated using Weblate (Lao)

Currently translated at 100.0% (515 of 515 strings)

Translation: OpenWrt/LuCI/applications/dockerman
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/lo/

Translated using Weblate (Lao)

Currently translated at 100.0% (167 of 167 strings)

Translation: OpenWrt/LuCI/applications/strongswan-swanctl
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstrongswan-swanctl/lo/

Translated using Weblate (Lao)

Currently translated at 100.0% (86 of 86 strings)

Translation: OpenWrt/LuCI/applications/package-manager
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspackage-manager/lo/

Translated using Weblate (Lao)

Currently translated at 100.0% (124 of 124 strings)

Translation: OpenWrt/LuCI/applications/nlbwmon
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnlbwmon/lo/

Translated using Weblate (Lao)

Currently translated at 100.0% (28 of 28 strings)

Translated using Weblate (Lao)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Lao)

Currently translated at 100.0% (184 of 184 strings)

Translation: OpenWrt/LuCI/applications/pbr
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/lo/

Translated using Weblate (Lao)

Currently translated at 100.0% (3154 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/lo/

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (167 of 167 strings)

Translation: OpenWrt/LuCI/applications/strongswan-swanctl
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstrongswan-swanctl/uk/

Translated using Weblate (Turkish)

Currently translated at 100.0% (21 of 21 strings)

Translation: OpenWrt/LuCI/applications/crowdsec-firewall-bouncer
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscrowdsec-firewall-bouncer/tr/

Translated using Weblate (Turkish)

Currently translated at 100.0% (45 of 45 strings)

Translation: OpenWrt/LuCI/applications/cloudflared
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscloudflared/tr/

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (184 of 184 strings)

Translation: OpenWrt/LuCI/applications/pbr
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/uk/

Translated using Weblate (Russian)

Currently translated at 100.0% (33 of 33 strings)

Translation: OpenWrt/LuCI/applications/vnstat2
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsvnstat2/ru/

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (194 of 194 strings)

Translation: OpenWrt/LuCI/applications/https-dns-proxy
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshttps-dns-proxy/uk/

Translated using Weblate (Czech)

Currently translated at 98.4% (191 of 194 strings)

Translation: OpenWrt/LuCI/applications/https-dns-proxy
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshttps-dns-proxy/cs/

Translated using Weblate (Turkish)

Currently translated at 62.5% (50 of 80 strings)

Translation: OpenWrt/LuCI/applications/bmx7
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/tr/

Translated using Weblate (Czech)

Currently translated at 100.0% (297 of 297 strings)

Translation: OpenWrt/LuCI/applications/banip
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/cs/

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (297 of 297 strings)

Translation: OpenWrt/LuCI/applications/banip
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/uk/

Translated using Weblate (Korean)

Currently translated at 100.0% (102 of 102 strings)

Translation: OpenWrt/LuCI/applications/attendedsysupgrade
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/ko/

Translated using Weblate (Czech)

Currently translated at 100.0% (102 of 102 strings)

Translation: OpenWrt/LuCI/applications/attendedsysupgrade
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/cs/

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (102 of 102 strings)

Translation: OpenWrt/LuCI/applications/attendedsysupgrade
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/uk/

Translated using Weblate (Russian)

Currently translated at 100.0% (102 of 102 strings)

Translation: OpenWrt/LuCI/applications/attendedsysupgrade
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/ru/

Translated using Weblate (Russian)

Currently translated at 100.0% (168 of 168 strings)

Translation: OpenWrt/LuCI/applications/aria2
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsaria2/ru/

Translated using Weblate (Polish)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Turkish)

Currently translated at 45.1% (14 of 31 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (27 of 27 strings)

Translated using Weblate (Ukrainian)

Currently translated at 96.7% (3052 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/uk/

Translated using Weblate (Russian)

Currently translated at 100.0% (3154 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ru/

Translated using Weblate (Czech)

Currently translated at 99.9% (3152 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/cs/

Translated using Weblate (Lao)

Currently translated at 100.0% (17 of 17 strings)

Translation: OpenWrt/LuCI/applications/eoip
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationseoip/lo/

Translated using Weblate (Lao)

Currently translated at 100.0% (297 of 297 strings)

Translation: OpenWrt/LuCI/applications/banip
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/lo/

Translated using Weblate (Lao)

Currently translated at 100.0% (102 of 102 strings)

Translation: OpenWrt/LuCI/applications/attendedsysupgrade
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/lo/

Translated using Weblate (Lao)

Currently translated at 100.0% (112 of 112 strings)

Translation: OpenWrt/LuCI/applications/radicale3
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsradicale3/lo/

Translated using Weblate (Lao)

Currently translated at 100.0% (184 of 184 strings)

Translated using Weblate (Lao)

Currently translated at 100.0% (3154 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/lo/

Translated using Weblate (German)

Currently translated at 10.6% (12 of 113 strings)

Translation: OpenWrt/LuCI/applications/libreswan
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslibreswan/de/

Translated using Weblate (German)

Currently translated at 12.9% (8 of 62 strings)

Translation: OpenWrt/LuCI/applications/apinger
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsapinger/de/

Translated using Weblate (German)

Currently translated at 6.6% (2 of 30 strings)

Translated using Weblate (German)

Currently translated at 100.0% (255 of 255 strings)

Translation: OpenWrt/LuCI/applications/keepalived
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationskeepalived/de/

Translated using Weblate (Irish)

Currently translated at 100.0% (194 of 194 strings)

Translation: OpenWrt/LuCI/applications/https-dns-proxy
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshttps-dns-proxy/ga/

Translated using Weblate (Irish)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Irish)

Currently translated at 100.0% (102 of 102 strings)

Translation: OpenWrt/LuCI/applications/attendedsysupgrade
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/ga/

Translated using Weblate (Irish)

Currently translated at 100.0% (184 of 184 strings)

Translation: OpenWrt/LuCI/applications/pbr
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/ga/

Translated using Weblate (Irish)

Currently translated at 100.0% (297 of 297 strings)

Translation: OpenWrt/LuCI/applications/banip
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/ga/

Translated using Weblate (Irish)

Currently translated at 100.0% (3154 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ga/

Translated using Weblate (German)

Currently translated at 100.0% (125 of 125 strings)

Translation: OpenWrt/LuCI/applications/snmpd
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssnmpd/de/

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (184 of 184 strings)

Translation: OpenWrt/LuCI/applications/pbr
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 100.0% (184 of 184 strings)

Translation: OpenWrt/LuCI/applications/pbr
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/ru/

Translated using Weblate (Polish)

Currently translated at 100.0% (184 of 184 strings)

Translation: OpenWrt/LuCI/applications/pbr
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/pl/

Translated using Weblate (Spanish)

Currently translated at 100.0% (184 of 184 strings)

Translation: OpenWrt/LuCI/applications/pbr
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/es/

Translated using Weblate (Czech)

Currently translated at 100.0% (184 of 184 strings)

Translation: OpenWrt/LuCI/applications/pbr
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/cs/

Translated using Weblate (German)

Currently translated at 100.0% (31 of 31 strings)

Translation: OpenWrt/LuCI/applications/acl
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsacl/de/

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (194 of 194 strings)

Translation: OpenWrt/LuCI/applications/https-dns-proxy
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshttps-dns-proxy/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 100.0% (194 of 194 strings)

Translation: OpenWrt/LuCI/applications/https-dns-proxy
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshttps-dns-proxy/ru/

Translated using Weblate (Polish)

Currently translated at 100.0% (194 of 194 strings)

Translation: OpenWrt/LuCI/applications/https-dns-proxy
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshttps-dns-proxy/pl/

Translated using Weblate (Korean)

Currently translated at 100.0% (194 of 194 strings)

Translation: OpenWrt/LuCI/applications/https-dns-proxy
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshttps-dns-proxy/ko/

Translated using Weblate (Spanish)

Currently translated at 100.0% (194 of 194 strings)

Translation: OpenWrt/LuCI/applications/https-dns-proxy
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshttps-dns-proxy/es/

Translated using Weblate (German)

Currently translated at 97.9% (190 of 194 strings)

Translation: OpenWrt/LuCI/applications/https-dns-proxy
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshttps-dns-proxy/de/

Translated using Weblate (Czech)

Currently translated at 98.4% (191 of 194 strings)

Translation: OpenWrt/LuCI/applications/https-dns-proxy
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshttps-dns-proxy/cs/

Translated using Weblate (Polish)

Currently translated at 100.0% (297 of 297 strings)

Translation: OpenWrt/LuCI/applications/banip
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/pl/

Translated using Weblate (Czech)

Currently translated at 100.0% (297 of 297 strings)

Translation: OpenWrt/LuCI/applications/banip
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/cs/

Translated using Weblate (Korean)

Currently translated at 100.0% (102 of 102 strings)

Translation: OpenWrt/LuCI/applications/attendedsysupgrade
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/ko/

Translated using Weblate (Polish)

Currently translated at 100.0% (102 of 102 strings)

Translation: OpenWrt/LuCI/applications/attendedsysupgrade
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/pl/

Translated using Weblate (Czech)

Currently translated at 100.0% (102 of 102 strings)

Translation: OpenWrt/LuCI/applications/attendedsysupgrade
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/cs/

Translated using Weblate (German)

Currently translated at 97.0% (99 of 102 strings)

Translation: OpenWrt/LuCI/applications/attendedsysupgrade
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/de/

Translated using Weblate (German)

Currently translated at 98.1% (266 of 271 strings)

Translation: OpenWrt/LuCI/applications/adblock
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/de/

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (297 of 297 strings)

Translation: OpenWrt/LuCI/applications/banip
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 100.0% (297 of 297 strings)

Translation: OpenWrt/LuCI/applications/banip
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/ru/

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (102 of 102 strings)

Translation: OpenWrt/LuCI/applications/attendedsysupgrade
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 100.0% (102 of 102 strings)

Translation: OpenWrt/LuCI/applications/attendedsysupgrade
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/ru/

Translated using Weblate (Spanish)

Currently translated at 100.0% (297 of 297 strings)

Translation: OpenWrt/LuCI/applications/banip
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/es/

Translated using Weblate (Spanish)

Currently translated at 100.0% (102 of 102 strings)

Translation: OpenWrt/LuCI/applications/attendedsysupgrade
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/es/

Translated using Weblate (Polish)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (3154 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (3154 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 100.0% (3154 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ru/

Translated using Weblate (Polish)

Currently translated at 100.0% (3154 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/pl/

Translated using Weblate (Korean)

Currently translated at 86.9% (2741 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ko/

Translated using Weblate (Spanish)

Currently translated at 100.0% (3154 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/es/

Translated using Weblate (German)

Currently translated at 89.4% (2820 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/de/

Translated using Weblate (Czech)

Currently translated at 99.9% (3152 of 3154 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/cs/

Co-authored-by: Aindriú Mac Giolla Eoin &lt;aindriu80@gmail.com&gt;
Co-authored-by: BoneNI &lt;bounkirdni@gmail.com&gt;
Co-authored-by: Dan &lt;jonweblin2205@protonmail.com&gt;
Co-authored-by: Ettore Atalan &lt;atalanttore@googlemail.com&gt;
Co-authored-by: Franco Castillo &lt;castillofrancodamian@gmail.com&gt;
Co-authored-by: Hosted Weblate &lt;hosted@weblate.org&gt;
Co-authored-by: Hosted Weblate user 54392 &lt;hamburger2048@users.noreply.hosted.weblate.org&gt;
Co-authored-by: Hyeonjeong Lee &lt;h9101654@gmail.com&gt;
Co-authored-by: Luis Mita &lt;luis@luismita.com&gt;
Co-authored-by: Matthaiks &lt;kitynska@gmail.com&gt;
Co-authored-by: Oğuz Ersen &lt;oguz@ersen.moe&gt;
Co-authored-by: Pavel Borecki &lt;pavel.borecki@gmail.com&gt;
Co-authored-by: Piotr Kołtun &lt;pkoltungm@gmail.com&gt;
Co-authored-by: SnIPeRSnIPeR &lt;snipersniper@users.noreply.hosted.weblate.org&gt;
Co-authored-by: nKsyn &lt;e.nksyn@gmail.com&gt;
Co-authored-by: ryosuke iwasaki &lt;ri.scur.red@gmail.com&gt;
Co-authored-by: ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) &lt;coool@mail.lv&gt;
Co-authored-by: 加尼瑪空格把變數都破壞了！ &lt;roc_fe@users.noreply.hosted.weblate.org&gt;
Signed-off-by: "ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝)" &lt;coool@mail.lv&gt;
Signed-off-by: Aindriú Mac Giolla Eoin &lt;aindriu80@gmail.com&gt;
Signed-off-by: BoneNI &lt;bounkirdni@gmail.com&gt;
Signed-off-by: Dan &lt;jonweblin2205@protonmail.com&gt;
Signed-off-by: Ettore Atalan &lt;atalanttore@googlemail.com&gt;
Signed-off-by: Franco Castillo &lt;castillofrancodamian@gmail.com&gt;
Signed-off-by: Hosted Weblate user 54392 &lt;hamburger2048@users.noreply.hosted.weblate.org&gt;
Signed-off-by: Hyeonjeong Lee &lt;h9101654@gmail.com&gt;
Signed-off-by: Matthaiks &lt;kitynska@gmail.com&gt;
Signed-off-by: Oğuz Ersen &lt;oguz@ersen.moe&gt;
Signed-off-by: Pavel Borecki &lt;pavel.borecki@gmail.com&gt;
Signed-off-by: SnIPeRSnIPeR &lt;snipersniper@users.noreply.hosted.weblate.org&gt;
Signed-off-by: nKsyn &lt;e.nksyn@gmail.com&gt;
Signed-off-by: ryosuke iwasaki &lt;ri.scur.red@gmail.com&gt;
Signed-off-by: 加尼瑪空格把變數都破壞了！ &lt;roc_fe@users.noreply.hosted.weblate.org&gt;
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsantiblock/de/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscommands/tr/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfirewall/lo/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnatmap/ja/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnatmap/lo/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnut/cs/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnut/es/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnut/ga/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnut/lo/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnut/pl/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnut/ru/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnut/uk/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnut/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr/lo/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstatistics/lv/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsuhttpd/lo/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationswol/ja/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationswol/tr/
Translation: OpenWrt/LuCI/applications/antiblock
Translation: OpenWrt/LuCI/applications/commands
Translation: OpenWrt/LuCI/applications/firewall
Translation: OpenWrt/LuCI/applications/natmap
Translation: OpenWrt/LuCI/applications/nut
Translation: OpenWrt/LuCI/applications/olsr
Translation: OpenWrt/LuCI/applications/statistics
Translation: OpenWrt/LuCI/applications/uhttpd
Translation: OpenWrt/LuCI/applications/wol
</content>
</entry>
<entry>
<title>luci-app-attendedsysupgrade: add i18n translation support for UI strings</title>
<updated>2026-07-29T07:56:05Z</updated>
<author>
<name>David Han</name>
</author>
<published>2026-07-28T18:51:33Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=74aacfbf323bf192ebaa5c15f22f3a51cdeebff2'/>
<id>urn:sha1:74aacfbf323bf192ebaa5c15f22f3a51cdeebff2</id>
<content type='text'>
add translation support for UI strings

Signed-off-by: David Han &lt;h96643864@gmail.com&gt;
</content>
</entry>
<entry>
<title>luci-app-adblock: fix dropped and unescaped map entries</title>
<updated>2026-07-26T19:34:57Z</updated>
<author>
<name>Dirk Brenken</name>
</author>
<published>2026-07-26T19:34:57Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=fb6b224af5c4456c5d863e47f6647645384b1677'/>
<id>urn:sha1:fb6b224af5c4456c5d863e47f6647645384b1677</id>
<content type='text'>
Requiring a non-empty as, city and countryCode discarded every entry whose GeoIP lookup returned
those fields empty, which happens regularly. Only the coordinates are mandatory now, missing
fields render as "n/a". Coordinate validation relied on truthiness, so entries at latitude or
longitude 0 were dropped as well, and coordinates are range checked now.

Popups are built as DOM nodes instead of concatenated HTML, so neither the blocked domain nor the
city and AS fields returned by the GeoIP service can be interpreted as markup.

The setView() call ran inside the home marker loop, so on a dual stack setup only the last local
IP decided the initial viewport. Center on a single home IP, fit the bounds of all of them
otherwise, and fall back to the blocked domains when no home IP could be resolved.

Blocked ad domains cluster heavily on a few CDN endpoints,
so several of them regularly resolve to one coordinate.
Markers sharing a coordinate now carry all of their domains and list them as a domain
with an indented IP and AS, capped at five per popup.
The same grouping reports a second local
uplink resolving to the same location instead of dropping it.

The blocked marker radius goes from 2 to 3 to match luci-app-banip.

Home markers are rendered after the blocked ones so the local uplink stays visible and clickable.
The fixed 97vh map height is replaced by height: 100%, so the map fills the report modal exactly.

Signed-off-by: Dirk Brenken &lt;dev@brenken.org&gt;
</content>
</entry>
<entry>
<title>luci-app-banip: several map improvements</title>
<updated>2026-07-26T17:26:36Z</updated>
<author>
<name>Dirk Brenken</name>
</author>
<published>2026-07-26T17:26:36Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=859f54738e6ca6fd33c94df12b70c1e87877c868'/>
<id>urn:sha1:859f54738e6ca6fd33c94df12b70c1e87877c868</id>
<content type='text'>
The setView() call ran inside the home marker loop, so on a dual stack setup only the last local
IP decided the initial viewport. Center on a single home IP, fit the bounds of all of them
otherwise, and fall back to the blocked IPs when no home IP could be resolved.

Requiring a non-empty as, city and countryCode discarded every IP whose GeoIP lookup returned
those fields empty, which happens regularly. Only the coordinates are mandatory now, missing
fields render as "n/a".

Coordinate validation relied on truthiness, so entries at latitude or longitude 0 were dropped as
well. Coordinates are now range checked.

Popups are built as DOM nodes instead of concatenated HTML, so the city and AS fields returned by
the GeoIP service can no longer be interpreted as markup.

Add a toolbar above the map holding a single select, listing every Set with mappable entries plus
its point count. Selecting a Set renders that Set only and zooms to it. No cap is applied, so the
rendering does not depend on how f_report() orders or truncates set_elements.

Markers sharing a coordinate are collapsed per Set instead of globally. The previous deduplication
compared lat/lon only, so the Set that reached a coordinate first swallowed the points of every
later Set, which would make both the per-Set counts and the filter depend on the order of
ban_map.jsn. Collapsing per Set keeps every Set complete, and the number of IPs behind a marker is
reported in its popup, since stacked markers are indistinguishable and only the topmost one can be
opened.

The marker radius is raised from 2 to 3 to keep the denser plot readable, and the map
renders with the canvas backend to keep the volume cheap.

Home markers are raised to the front
after every redraw, so the local uplink stays visible and clickable.

The fixed 97vh map height is replaced by a flex column layout, so the map fills the space left by
the toolbar inside the report modal. The toolbar uses the CSS system colors Canvas, CanvasText and
ButtonBorder under color-scheme: light dark, which also keeps it consistent with the natively
rendered select.

Co-authored-by: Renato Yamane &lt;renatoyamane@gmail.com&gt;
Signed-off-by: Dirk Brenken &lt;dev@brenken.org&gt;
</content>
</entry>
<entry>
<title>rpcd: fix file ACLs for symlinked /proc paths</title>
<updated>2026-07-24T09:56:35Z</updated>
<author>
<name>Jo-Philipp Wich</name>
</author>
<published>2026-07-24T09:56:35Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=96a255dbd96212b1c42cfbd0969425ab6528c8b2'/>
<id>urn:sha1:96a255dbd96212b1c42cfbd0969425ab6528c8b2</id>
<content type='text'>
Several ACL files referenced /proc paths that are symlinks (e.g.
/proc/mounts -&gt; /proc/self/mounts -&gt; /proc/$PID/mounts), which
resolve to paths not covered by the existing ACL rules under the
new rpcd symlink-aware ACL check.

Add the resolved path patterns (/proc/*/mounts, /proc/*/net/ipv6_route)
alongside the original symlink paths so that both the original and
the realpath-resolved path are matched by ACL rules.

Fixes: #8867
Signed-off-by: Jo-Philipp Wich &lt;jo@mein.io&gt;
</content>
</entry>
<entry>
<title>treewide: sync translations</title>
<updated>2026-07-23T19:59:27Z</updated>
<author>
<name>Hannu Nyman</name>
</author>
<published>2026-07-23T19:59:27Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=bfc4dfda2596505acadd8cbfa59ab6fc52a71d2b'/>
<id>urn:sha1:bfc4dfda2596505acadd8cbfa59ab6fc52a71d2b</id>
<content type='text'>
Sync.

Signed-off-by: Hannu Nyman &lt;hannu.nyman@iki.fi&gt;
</content>
</entry>
</feed>
