Jo-Philipp Wich [Thu, 7 Jun 2018 06:49:51 +0000 (08:49 +0200)]
luci-base: support option aliases in luci.cbi
AbstractValue descendants may now specify a new optional property `alias`
which refers to a uci option to read/write/remove that differs from the
option name itself.
This is mainly useful for widgets that are toggled based on dependencies,
e.g. for alternating between SingleValue and MultiValue, but which are
intented to write into the same uci option.
Such a setup was previously possible already by overriding the .cfgvalue(),
.write() and .remove() callbacks with custom implementations, but that
required a lot of boiler plate code and was rather fragile.
With the `alias` property, CBI now takes care of the details and tracks
aliased fields within a section accordingly.
Ansuel Smith [Sun, 27 May 2018 17:51:38 +0000 (19:51 +0200)]
luci-app-ddns: make param opt, optional, add myself as maintainer
Currently these params should be optional but in the current script then are required for any configuration to save. We add an "optional" boolean value to the validate function so that we can make this pram optional as it should be. Also adds me as maintainer
Jo-Philipp Wich [Thu, 31 May 2018 13:39:43 +0000 (15:39 +0200)]
luci-base: cbi: atomically reorder uci sections
Since the switch to ubus uci operations we do not have a local application-
side cursor cache anymore, instead uci operations happen synchronously in
the rpcd backend server.
This may cause cbi section reorder operations involving multiple elements
to fail, because anonymous section hashes may change due to rehashing
between consecutive ubus uci reorder calls.
In order to avoid that problem, use the ubus uci batch reorder extension,
which allows to pass a complete (or partial) list of section ids in the
desired order in one call, bypassing the volatile section id problem.
Ansuel Smith [Thu, 24 May 2018 00:03:03 +0000 (02:03 +0200)]
luci-app-ddns: improve performance
Every request directed to the ddns app call ddns tools module.
Ddns tools module have lots of global variable that call slow os.execute function. This adds 10 second to every ddns request even if the function that is requested doesn't need that global variable. This commit introduce env_info function that execute os.execute command by executing what is actually requested and not process all the variables. Also remove 2 unecessary module that are not used. More researh find that major slowdown was caused by the calling of ddns script for the version check. Now we check if opkg is present and use it to check ddns-scripts version.
Sync our coxpcall() implementation to the newest upstream version in order to
get access to the inner backtrace information and propagate these traces to
the browser in luci.dispatcher.dispatch().
This should make tracking down runtime errors much easier.
Jo-Philipp Wich [Thu, 31 May 2018 13:34:32 +0000 (15:34 +0200)]
luci-base: add full page overlay during apply
After applying uci configuration, a full map reload is required in many
cases as the anonymous section identifiers might have been rehashed, causing
the rendered map to go out of sync.
To avoid that, add both a full page overlay preventing further page
interaction and let the apply widget forcibly reload the current view once
the operation is complete.
Jo-Philipp Wich [Wed, 30 May 2018 12:50:14 +0000 (14:50 +0200)]
luci-mod-admin-full: rework network and wifi status displays
Use a more compact flex layout instead of the tabular display.
Also rename "WAN status" to "Upstream" to avoid future confusion about
wan interfaces vs. defaultroute interfaces.
Florian Eckert [Thu, 15 Mar 2018 09:21:05 +0000 (10:21 +0100)]
luci-proto-3g: make it a self-contained package
The follow error will appear after clicking "Switch protcol" to 3g when
luci-proto-3g was not installed. Fix this by moving the relevant parts
from luci-proto-ppp into luci-proto-3g and making it complete as a
single protocol handler
> Missing protocol extension for proto "3g"
> cannot open /usr/lib/lua/luci/model/cbi/admin_network/proto_3g.lua: No such file or directory
Ansuel Smith [Fri, 25 May 2018 16:28:18 +0000 (18:28 +0200)]
luci-admin-full: add architecture info
Referring to this, #1698 , we add architecture info and we show Unknown instead of ?. This is usefull if someone needs to install opkg packages manually.
Dirk Brenken [Sat, 26 May 2018 17:32:39 +0000 (19:32 +0200)]
luci-app-lxc: fix "plain-vanilla" integration, part 2
I've tried to get the lxc app in a more usable state. Tested with mips
and amd64 targets.
* check /etc/config/lxc in controller, not in cbi
* more controller cleanups
* remove unused 'fork_exec' function
* check path before container creation
* check space requirements before container creation
* support new uci options 'min_space' and 'min_temp',
default for both is 100000 KB
* both options are configurable via LuCI CBI template
* write messages to log in case of an error
* validate the container name during creation,
automatically remove invalid chars
* inform the user that only a stopped container can be destroyed
* add experimental ssl support (untested, disabled by default)
Dirk Brenken [Sun, 20 May 2018 17:23:53 +0000 (19:23 +0200)]
luci-app-lxc: fix "plain-vanilla" integration
I've tried to get the lxc app in a more usable state. Tested with mips
and amd64 targets.
* fix missing tar/xz dependency,
only if LXC_BUSYBOX_OPTIONS is not selected
* mute needless gpg validation warning
* tidy up controller a little bit
* fix multiple possible dispatcher errors
* fix compatibility with XHTML standard theme (looks still horrible ;-)
* inform the user about custom kernel prerequisites
* inform the user about the template download
* inform the user if no template was found
Jo-Philipp Wich [Sat, 19 May 2018 21:26:34 +0000 (23:26 +0200)]
luci-mod-admin-full: do not override iface section in wireless cbi map
Do override the iface section id upon commit to avoid clobbering the resulting
configuration. The manual config sync is not needed anymore after switching
to uncached ubus uci operations.
On certain environments, mainly with the embedded uhttpd interpreter, the
luci.config class cannot be loaded due to a circular dependency with the
luci.model.uci class.
Break up the dependency by deferring the loading of luci.config in
luci.model.uci until it is actually needed.