Jo-Philipp Wich [Wed, 21 Nov 2018 17:44:59 +0000 (18:44 +0100)]
luci-base: introduce common JavaScript api
Introduce a new script file luci.js which is included by default and
intended to be the common location of functions currently scattered
in cbi.js and xhr.js.
The luci.js file provides a LuCI() class which - among other things -
implements helpers to construct URL paths and making HTTP requests.
A singleton instance of the class is instantiated as window.L upon
load and preset with the necessary environment information.
Florian Eckert [Thu, 22 Nov 2018 09:53:55 +0000 (10:53 +0100)]
luci-app-openvpn: do not show all boolean option by default
If a new instance is edit then all boolean option are shown on the LuCI.
This is confusing. To fix this hide all boolean ellements on the config
page which are not enabled by default. They must be add first.
Dirk Brenken [Mon, 19 Nov 2018 20:20:22 +0000 (21:20 +0100)]
luci-app-openvpn: more changes & fixes
* fix possible exception in template based ovpn creation
* remove needless shellquote function in controller,
the filename will be checked on client side with JS
* enhance FileUpload behaviour in basic/advanced mode:
- change "auth_user_pass" to FileUpload
- cfg entries (even with default values) will be shown
- existing entries are now removable (incl. file unlink),
simply clear the appropriate textbox
* change "key_direction" option to boolean ListValue
* add "config" option to basic/advanced edit,
to make it possible to change the upload path in LuCI
Jo-Philipp Wich [Mon, 19 Nov 2018 10:47:18 +0000 (11:47 +0100)]
luci-base: cbi.js: fix sfh() hash calculation over multibyte sequences
The C side implementation of the hash operates on bytes while the JS variant
operated on UTF-16 codepoints, leading to miscalculations on input strings
containing multibyte sequences.
Recode the given string to an internal UTF-8 byte representation and
calculate the hash over that.
Fixes client side mapping of translation strings containing non-ASCII
characters.
Jo-Philipp Wich [Fri, 16 Nov 2018 18:33:39 +0000 (19:33 +0100)]
luci-base: dispatcher: add login indication on 403 errors
Send a custom LuCI X-Header to indicate that a login is required to access
the requested resource. This is mainly intended for xhr.js to be able to
intercept such responses and popup an authentication dialog.
Wang805447391 [Mon, 12 Nov 2018 07:03:31 +0000 (15:03 +0800)]
luci-base: support disconnecting (deauthenticating) wireless clients
Add a button to each row in the wireless assoclist table to allow
disconnecting clients using the ubus del_client method if the underlying
radio interface supports it.
Ref: https://github.com/openwrt/luci/pull/2271 Submitted-by: Wang805447391 <redacted>
[move deauth function to luci-base next to the existing assoclist function,
require post security, fix parameter check condition, hide button if not
supported by the radio, disable button after call, squash commits, fix
whitespace, reword subject, add commit message] Signed-off-by: Jo-Philipp Wich <redacted>
alphakk [Thu, 15 Nov 2018 04:06:09 +0000 (12:06 +0800)]
luci-app-https_dns_proxy: fix datatype of subnet address option
The datatype ip4prefix only accept numbers from 0 to 32, not subnet/mask
(i.e. 192.168.1.0/24), this affects option "-e".
https://github.com/openwrt/luci/wiki/Datatypes#ip4prefix the description
is wrong, according to src
http://luci.subsignal.org/trac/browser/luci/branches/luci-0.10/libs/web/luasrc/cbi/datatypes.lua#L76
Kevin Locke [Wed, 14 Nov 2018 23:55:24 +0000 (16:55 -0700)]
luci-app-statistics: quote : in filenames for DEF
: is used to delimit fields in DEF: rrd instructions, so when it appears
in a filename it must be escaped using \.[1] This commit adds the
escaping.
I discovered the issue after configuring collectd-mod-ping to monitor an
IPv6 host (2001:19f0:5:727:5b56:205d:ff55:2208). Accessing
https://192.168.0.1/cgi-bin/luci/admin/statistics/graph/ping would cause
the following messages to be logged:
Jo-Philipp Wich [Wed, 14 Nov 2018 12:37:51 +0000 (13:37 +0100)]
luci-mod-system: prevent comment injection in mtdbackup endpoint
Rework the parameter handling to both prevent a crash when no parameter is
given and to prevent root command injection through the mtd index part of
the parameter value.
Jo-Philipp Wich [Wed, 14 Nov 2018 08:53:15 +0000 (09:53 +0100)]
applications: add luci-app-opkg
Add a new luci-app-opkg which is a feature-complete replacement for the
builtin opkg functionality of luci-mod-system using mostly client side
JavaScript to reduce the amount of server side processing.
Jo-Philipp Wich [Tue, 13 Nov 2018 17:32:19 +0000 (18:32 +0100)]
luci-base: simplify apply widget code
- Drop embedded CSS in favor to new global rules
- Drop extraneous include of cbi.js
- Use showModal() facilities
- Fix a cosmetic bug in countdown timeout handling
Jo-Philipp Wich [Tue, 13 Nov 2018 15:12:00 +0000 (16:12 +0100)]
luci-theme-openwrt: modal/progressbar rules, mobile improvements
- Add rules for modal dialogs and progress bar widgets
- Increase button and input size on mobile devices
- Convert pt to px units
- Add label and h5 styles
- Add common flash and spin utility classes
Jo-Philipp Wich [Mon, 5 Nov 2018 17:43:32 +0000 (18:43 +0100)]
luci-base: cbi.js: enable validation for dropdown fields
Directly attach validation handlers to cbi dropdowns as well, this allows
validating dropdown choices made by the user, similar to how plain select
boxes are handled by the cbi JavaScript.
Jo-Philipp Wich [Mon, 5 Nov 2018 17:38:25 +0000 (18:38 +0100)]
luci-theme-openwrt: dropdown style tweaks
- Remove 2em min height, this looks out of place with the OpenWrt theme
- Only colorize invalid dropdown when not open
- Drop use of image background for invalid fields while we're at it
Jo-Philipp Wich [Mon, 5 Nov 2018 17:07:42 +0000 (18:07 +0100)]
luci-theme-bootstrap: z-index fixes
Lower z-index of header bar to allow tooltips and dropdowns to overlap it,
also increase the z-index of open dropdowns to ensure that they cover
active tooltip bubbles.
Jo-Philipp Wich [Mon, 5 Nov 2018 15:52:05 +0000 (16:52 +0100)]
luci-base: cbi.js: set .value property of cbi dropdown elements
In order to make cbi dropdowns usable for validation and other code
expecting native form elements, set the .value DOM property on the
dropdown parent element whenever the selection is changed.
Jo-Philipp Wich [Mon, 5 Nov 2018 15:44:20 +0000 (16:44 +0100)]
luci-base: cbi.js: avoid using .form property directly
In order to prepare support for calling cbi validation on non-native form
widgets, remove direct usages of the node.form property and lookup the
containing form using findParent() instead.