<feed xmlns='http://www.w3.org/2005/Atom'>
<title>luci/modules/luci-base/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-08-03T09:58:22Z</updated>
<entry>
<title>luci-base: drop init_action() and the luci.setInitAction ubus method</title>
<updated>2026-08-03T09:58:22Z</updated>
<author>
<name>Julius Bairaktaris</name>
</author>
<published>2026-08-02T00:41:03Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=4440b267ddef05b13b09c7c31ef7eba2401d2651'/>
<id>urn:sha1:4440b267ddef05b13b09c7c31ef7eba2401d2651</id>
<content type='text'>
Both duplicate rpcd's rc ubus namespace, which exposes the same
enable/disable/start/stop/restart/reload set through rc.init and is what
downstream code wishing to control services should be using.

The duplicate was also the weaker of the two. init_action() interpolated
both of its arguments into a shell command run as root:

    system(`env -i /etc/init.d/${basename(name)} ${action} &gt;/dev/null`);

basename() kept name inside /etc/init.d, but it strips directory
components only - `;`, backticks, `$(`, `|` and newlines survive it -
and action reached the shell with nothing checking it at all. Nothing
untrusted got there: setInitAction switched on a fixed action list, and
for name the stat() gate required the interpolated string to exist as a
file under /etc/init.d, an existence check rather than a validation.
But init_action() was exported from luci-base, so any future caller
forwarding an RPC argument straight through inherited root command
execution.

rc.init has no shell to escape from - it execs the script - and it
additionally refuses scripts that are not root-owned or that are
world-writable.

The in-tree users are ported in the preceding commits.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Julius Bairaktaris &lt;julius@bairaktaris.de&gt;
</content>
</entry>
<entry>
<title>luci-base: add missing pollinterval option to config</title>
<updated>2026-07-19T07:38:58Z</updated>
<author>
<name>Eric Fahlgren</name>
</author>
<published>2026-07-13T13:30:18Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=51df0fe187b1394805e381b5b62c1316c51dfbc5'/>
<id>urn:sha1:51df0fe187b1394805e381b5b62c1316c51dfbc5</id>
<content type='text'>
Include 'option pollinterval' to config file, as it is otherwise
undocumented and very difficult to discover.

Signed-off-by: Eric Fahlgren &lt;ericfahlgren@gmail.com&gt;
</content>
</entry>
<entry>
<title>luci-base: clean up config</title>
<updated>2026-07-19T07:38:58Z</updated>
<author>
<name>Eric Fahlgren</name>
</author>
<published>2026-07-11T18:14:16Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=45acfe0fe7f6fb5a07791521799d0e13f93d4295'/>
<id>urn:sha1:45acfe0fe7f6fb5a07791521799d0e13f93d4295</id>
<content type='text'>
Run file through 'uci export' to fix all whitespace and quoting,
making it easier to diff with installed config.

Signed-off-by: Eric Fahlgren &lt;ericfahlgren@gmail.com&gt;
</content>
</entry>
<entry>
<title>luci-base: clean up unused legacy 'flash_keep' section from config</title>
<updated>2026-07-03T15:28:21Z</updated>
<author>
<name>Eric Fahlgren</name>
</author>
<published>2026-06-29T00:07:50Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=45b36402ec438268fcf37d2072cfa557dd6205ef'/>
<id>urn:sha1:45b36402ec438268fcf37d2072cfa557dd6205ef</id>
<content type='text'>
Remove the long obsolete 'flash_keep' section of LuCI's main config
file that has no users (and maybe never did).

Fixes: #8750
Signed-off-by: Eric Fahlgren &lt;ericfahlgren@gmail.com&gt;
</content>
</entry>
<entry>
<title>luci-base: set password also for rpcd user</title>
<updated>2026-06-03T10:49:07Z</updated>
<author>
<name>Christian Korber</name>
</author>
<published>2026-04-28T07:19:30Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=b33ede60468e71ca5033aae09696eb0ac2531619'/>
<id>urn:sha1:b33ede60468e71ca5033aae09696eb0ac2531619</id>
<content type='text'>
This change allows the root user to change also rpcd logins via
administration tab in system. This changes `setPassword` in a way that
existing calls to it fall back to change unix passwords.

The goal of this commit is to prepare the environment to add password
policy (password length, valid property, special characters, etc)
to the administration tab.

Signed-off-by: Christian Korber &lt;ckorber@tdt.de&gt;
</content>
</entry>
<entry>
<title>luci-base: replace ufpd access check with service run check</title>
<updated>2026-05-18T07:48:13Z</updated>
<author>
<name>Florian Eckert</name>
</author>
<published>2026-02-12T11:45:24Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=01d061715335d0263a64d3624ec67a22e8260a79'/>
<id>urn:sha1:01d061715335d0263a64d3624ec67a22e8260a79</id>
<content type='text'>
It is not enough simply to check whether the tool is installed. It is
essential to check whether the service is actually running. After all,
we need the functionality provided by the service.

Signed-off-by: Florian Eckert &lt;fe@dev.tdt.de&gt;
</content>
</entry>
<entry>
<title>luci-mod-network: check kernel for mptcp to display MPTCP options</title>
<updated>2026-04-04T17:12:54Z</updated>
<author>
<name>Paul Donald</name>
</author>
<published>2026-04-04T17:12:54Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=a6b7ad4652f7a47fe21482ff97679ca3a2e6d7fb'/>
<id>urn:sha1:a6b7ad4652f7a47fe21482ff97679ca3a2e6d7fb</id>
<content type='text'>
https://www.kernel.org/doc/html/v6.12/networking/mptcp-sysctl.html

There may be user instances where mptcp was not compiled
into the kernel or is an unloaded module, so gate the options
behind the feature check.

Closes #8522

Signed-off-by: Paul Donald &lt;newtwen+github@gmail.com&gt;
</content>
</entry>
<entry>
<title>luci-base: fix ubus getFeatures() crash</title>
<updated>2026-04-01T11:11:14Z</updated>
<author>
<name>Jo-Philipp Wich</name>
</author>
<published>2026-04-01T11:11:14Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=95a84c0c4369cfaad6b67961b2c5e6be0870f528'/>
<id>urn:sha1:95a84c0c4369cfaad6b67961b2c5e6be0870f528</id>
<content type='text'>
OpenWrt versions that provide odhcpd versions reporting a compile time
features line in their help output trigger a crash in the getFeatures()
procedure (attempt to set property on boolean value) - fix this issue
by not predeclaring the odhcpd flag as `false`.

Fixes: #8489
Fixes: 0529dca7a2 ("luci-base: fix feature detection patterns")
Signed-off-by: Jo-Philipp Wich &lt;jo@mein.io&gt;
</content>
</entry>
<entry>
<title>luci-base: fix feature detection patterns</title>
<updated>2026-03-30T13:08:45Z</updated>
<author>
<name>Jo-Philipp Wich</name>
</author>
<published>2026-03-24T19:50:05Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=0529dca7a263a9ce713dd043d87467d16544e204'/>
<id>urn:sha1:0529dca7a263a9ce713dd043d87467d16544e204</id>
<content type='text'>
Upstream ucode commit 8a8b4d1 ("types: fix regexp `/.../s` flag inversion")
changed the semantics of /.../s regexp patterns to match the ECMAScript
behavior, meaning `/s` enables single line matching and omitting it
performs line-wise matching. Besides changing the behavior of `.` to match
newlines, the `/s` flag also changes `^` and `$` to only match the begin
and end of the entire string input, respectively instead of matching the
start and end of lines.

This broke feature pattern matching in the luci rpcd plugin, causing LuCI
to incorrectly disable certain features.

This commit changes the affected places to read the command outputs
linewise and to perform the feature flag matching against each read line
individually, including an explicit terminating newline to make the
pattern match forward- and backward compatible with fixed and unfixed
ucode versions.

Fixes: https://github.com/jow-/ucode/issues/389
Signed-off-by: Jo-Philipp Wich &lt;jo@mein.io&gt;
</content>
</entry>
<entry>
<title>luci-base: resolve symlinks for PCI hardware</title>
<updated>2026-03-16T14:54:07Z</updated>
<author>
<name>Paul Donald</name>
</author>
<published>2026-03-16T14:54:07Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=ab72c4457a18334a99a175da6eb6a1a53c63af7e'/>
<id>urn:sha1:ab72c4457a18334a99a175da6eb6a1a53c63af7e</id>
<content type='text'>
getBuiltinEthernetPorts crashed with "Unknown error"
on hardware where NICs have PCI subsystem symlinks at
different sysfs depths (e.g. onboard NIC vs PCIe card NIC).

The getBuiltinEthernetPorts x86_64 workaround block
needs realpath() to resolve PCI subsystem symlinks.

readlink() returns different strings ("../../../bus/pci" vs
"../../../../bus/pci") even though both resolve to /sys/bus/pci,
causing eth1 and eth2 to be incorrectly excluded from the result.

E.g.:

  eth0: /sys/class/net/eth0/device/subsystem -&gt; ../../../bus/pci
  eth1: /sys/class/net/eth1/device/subsystem -&gt; ../../../../bus/pci
  eth2: /sys/class/net/eth2/device/subsystem -&gt; ../../../../bus/pci

1. Add realpath to the 'fs' module import statement
2. Use realpath() to normalize paths

Closes #8425
Reported-by: @MI2-2
Signed-off-by: Paul Donald &lt;newtwen+github@gmail.com&gt;
</content>
</entry>
</feed>
