Commit 69782ccbc ("luci-base: xhr.js: defer starting poll queue") changed
the way XHR poll queues are started which broke the timing on the realtime
graph pages.
Fix the problem by manually starting the poller after registering the request
handlers.
Jo-Philipp Wich [Tue, 19 Jun 2018 15:01:22 +0000 (17:01 +0200)]
luci-theme-openwrt: rework and polish OpenWrt theme
- polish styling
- move main menu to the left for large resolutions and collapse into
dropdown header bar for small mobile resolutions
- make tables responsive by utilizing extra attributes to turn rows
into wrappable flexboxes for low resolutions
- mostly get rid of button icon references and use a uniform color
scheme for action-, positive, negative and neutral buttons
Certain types of interface were excluded from bcp38's concept of
upstream wan interface e.g. pppoa-wan
Shamelessly copies the interface list generation from luci-app-sqm which
solved exactly the same problem and gives additional clues by displaying
the firewall zone (typically wan/lan etc)
Jo-Philipp Wich [Tue, 19 Jun 2018 15:09:36 +0000 (17:09 +0200)]
luci-base: cbi.js: add tooltip handling and responsive table helper code
- make findParent() globally available
- add code for initializing rich cbi tooltips
- introduce cbi_update_table() helper to auto-assign responsive attributes
to table markup
Jo-Philipp Wich [Tue, 19 Jun 2018 15:53:20 +0000 (17:53 +0200)]
luci-app-firewall: update cbi models
- allow multiple src/dest ips for rules (#1637)
- restrict ICMP type list to ICMP protocol
- add section title callbacks
- remove size annotations
- fix validation error with aliased zone fields (#1882)
INAGAKI Hiroshi [Sat, 16 Jun 2018 14:25:54 +0000 (23:25 +0900)]
i18n: fix syntax errors in Ukrainian po
"Content-Type: text/plain; charset=UTF-8" was wrote twice in each
of base.po and firewall.po, and one was an incorrect place which
was the cause of the errors.
And, The escape in abbr HTML tag was incorrect, so I fixed it.
Florian Eckert [Thu, 14 Jun 2018 09:13:08 +0000 (11:13 +0200)]
luci-mod-admin-full: fix empty SSH-Keys issue
If you delete all ssh keys in the textarea then LuCI will rais an error.
So if you added one ssh-key to the textarea and then you want to delete them
again that is not possbile in LuCI.
To fix this remove "rmempty" attribute and add a remove function which will
called if the textarea is empty.
Kristian Evensen [Tue, 29 May 2018 20:27:06 +0000 (22:27 +0200)]
luci-app-firewall: Fix typo in forwards redirect
When creating a forwarding rule with protocol set to other, a user is
forwarded to the configuration page. The URL for the configuration page
contained a typo - the user was forwarded to
admin/network/firewall/redirect/cfg... and not
admin/network/firewall/forwards/cfg..., leading to a 404.
Jo-Philipp Wich [Fri, 8 Jun 2018 15:09:18 +0000 (17:09 +0200)]
luci-app-firewall: recognize egress rules in rule overview
Along with 74be6f397
("treewide: switch firewall zone, network and iface lists to dropdown code"),
this change allows luci-app-firewall to recognize OUTPUT rules.
Jo-Philipp Wich [Fri, 8 Jun 2018 13:48:03 +0000 (15:48 +0200)]
luci-mod-admin-full: fix translation interpolation in JS confirm() calls
Use luci.http.write_json() in conjunction with translate() to write out
unescaped translation strings in a manner suitable for interpolation inside
JavaScript.
Jo-Philipp Wich [Fri, 8 Jun 2018 05:29:44 +0000 (07:29 +0200)]
luci-base: add markup, JS and CSS for new dropdown
This commit introduces the required code for a new, markup based dropdown
widget which can be used as a styleable alternative to select boxes or
radio/checkbox button groups.
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.