Some legacy Lua controllers declare menu entries by first invoking `node()`
and then setting the `.target` property on the resulting object.
Make sure to properly translate such menu nodes into the internal menu
JSON representation.
Fixes: #6090
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Some legacy templates access dispatcher functions such as `build_url()`
without explicit scope, which worked in the old runtime since the template
view namespace was instantiated from the dispatcher.
Ensure that this continues to function in the emulated runtime.
Fixes: #6082
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Trigger rendering of CBI header and footer templates via the ucode runtime
`include()` in order to ensure that scope data is properly inherited from
Lua templates (`cbi/header`) including ucode templates (`header`).
This fixes automatic triggering of the config apply flow on legacy Lua CBI
forms.
Ref: https://github.com/openwrt/luci/pull/6056#issuecomment-1292396588
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Ensure that the optional cbi() `config` argument is set to an empty table
if unspecified to ensure that the static call argument array is exactly
two elements long, otherwise call arguments are shifted and the invoked
method might not receive the expected parameter.
This fixes, among others, the dispatching of `arcombine()` targets.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Remove the uhttpd and CGI gateway modules as they're not compatible with
the Lua compat stub runtime anymore.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Some existing model code expects the luci.sys namespace to be implicitly
available, even without requiring it beforehand.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Add a compatibility template containing legacy Lua logic extracted from
the luci-mod-status main status page in order to free the status module
from any explicit or implicit Lua dependencies.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Move classes required for Lua runtime support into a new `luci-lua-runtime`
package. Also replace the `luci.http` and `luci.util` classes in
`luci-lib-base` with stubbed versions interacting with the ucode based
runtime environment.
Finally merge `luci-base-ucode` into the remainders of `luci-base`.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>