Commit graph

76 commits

Author SHA1 Message Date
Jo-Philipp Wich
8c77975d1b luci-base: remove fake password field from tab order
Set a negative tabindex on the dummy password field to not break the form
tab order flow.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-08-17 06:58:53 +02:00
Jo-Philipp Wich
98d4eb1695 luci-base: mark password template dummy field as hidden
Mark the dummy input field as aria-hidden, should fix #2063.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-08-16 09:36:37 +02:00
Gregory L. Dietsche
abfe45ff61 Correct grammar in apply_widget.htm
This patch corrects "to get" to "to be" in apply_widget.htm
This shell command was used to find and make the change in
all impacted files:

find . -type f -exec sed -i 's/Waiting for configuration to get applied/Waiting for configuration to be applied/g' {} +

Signed-off-by: Gregory L. Dietsche <gregory.dietsche@cuw.edu>
2018-08-07 09:20:28 -05:00
Jo-Philipp Wich
350be23eb9 luci-base: fix footer template
Move the apply widget markup before the final </html> tag to avoid XHTML
errors with the OpenWrt theme.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-28 14:21:36 +02:00
Jo-Philipp Wich
e5a1ac0228 treewide: rework rollback/apply workflow
Rework the apply confirmation mechanism to be session agnostic in order to
circumvent cross domain restrictions which prevent the JS code from issuing
apply confirm requests in some cases, e.g. when changing the LAN IP.

Confirmation calls may now be done from unauthenticated pages, as long as a
matching confirmation token is sent along with the request.

The reasoning behind this is that there is little security impact in
confirming pending apply sessions, especially since those sessions can only
be initiated while being authenticated.

After this change, LuCI will now launch a confirmation process on every
rendered page when a rollback is pending. The confirmation will happen
regardless of whether the user is logged in or not, or if the current page
is a CBI form or static template.

A confirmation request now also requires a random one-time token which is
rendered along with the confirmation JavaScript code in order to succeed.

This token is not meant to provide security but to ensure that the confirm
was triggered from an interactive browser session and not some background
HTTP requests that happened to end up in the admin ui.

As a consequence, the different apply/confirm/rollback code paths in CBI
maps and the UCI change/revert pages have been consolidated into one common
implementation residing in the common global theme agnostic footer template.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-27 14:07:23 +02:00
Jo-Philipp Wich
c27a77756c luci-base: strip superfluous space in additional field markup
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-23 15:10:55 +02:00
Jo-Philipp Wich
b6dd0ecd6c luci-base: rework reveal/hide CBI password template button
Also add a hidden type password field to prevent browser autocompleters
from entering the login passwords into fields liek the wireless WPA key
field.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-23 14:30:03 +02:00
Jo-Philipp Wich
8e0ee137a6 luci-base: add description annotations to tblsection cells
Add a "data-description" attribute to CBI fields which have a description
set, this allows responsive design themes to render a field description
when decomposing the table grid.

Also reuse the precalculated "typename" property if it exists, instead of
deriving it from the template name yet again.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-22 17:45:03 +02:00
Jo-Philipp Wich
3c90289e0f luci-base: fix bad CSS class names in table section template
The previous refactoring of the template caused the row stripying CSS
classes to be interpolated in such a way, that a separating space to
previous CSS classes was missing, leading to not rendered row names
and other side effects.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-20 11:35:09 +02:00
Jo-Philipp Wich
c09e154560 luci-base: rework CBI footer template
- Make sure that hitting enter in the form hits the CBI save action and not
  apply or cancel
- Hide action panel if no actions are available
- CLeanup code

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-18 12:05:05 +02:00
Jo-Philipp Wich
f1fb7122e3 luci-base: rework tblsection template
- Hide empty title and description rows
- Correct row striping offset
- Cleanup code

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-18 12:05:05 +02:00
Jo-Philipp Wich
bc562294b9 luci-base: rework simpleform template
- Ensure that pressing enter in the form triggers the submit action and
  not a cbi skip or cancel
- Hide page actions when empty
- Cleanup code

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-18 12:05:05 +02:00
Jo-Philipp Wich
fcc9cd6a9a luci-base: fix field section add button/input field names
Some CBI map models, mainly the Network -> VLAN page, expect a valid
previous section ID in their Section:create() callback.

Previous refactoring of the tblsection markup broke this behaviour as
the "section" loop variable was accidentally localized, causing it to
be undefined outside of the loop body which caused the section add
button and name input fields to get rendered with a wrong "name"
attribute.

Fix this by moving the "section" variable declaration out of the loop
and by readding references to it in the non-anonymous section add case.

Fixes FS#1657
Fixes 002c4d1d5 ("luci-base: add "Name" label to autogenerated title column")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-16 17:34:26 +02:00
Jo-Philipp Wich
ffff1e7c0a luci-base: fix handling alias interfaces in ifacelist widget
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-15 17:28:38 +02:00
Jo-Philipp Wich
22e4a2420c luci-base: tweak tblsection markup
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-13 09:37:08 +02:00
Jo-Philipp Wich
d4e52ca03b luci-base: apply_widget: various fixes
- Fix button styles in failure message
 - Pause XHR polling during apply/rollback sessions
 - Throttle confirm requests to 1 request/second

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-12 18:10:10 +02:00
Jo-Philipp Wich
4a083f6d23 luci-base: fix placement of CBI strings
Commit c0de036b3 ("treewide: always include cbi.js") improperly removed the
cbi.js script include from header.htm, leaving behind the string dictionary.

Move the JSON dictionary to the parent <form> element and delete the
leftover </script> element.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-09 17:04:10 +02:00
Jo-Philipp Wich
c0de036b31 treewide: always include cbi.js
Include cbi.js in the main header template like it is done for xhr.js and
remove the page specific includes.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-09 11:51:43 +02:00
Jo-Philipp Wich
002c4d1d5f luci-base: add "Name" label to autogenerated title column
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-25 11:12:25 +02:00
Jo-Philipp Wich
18d92aca53 luci-base: annotate tblsection description row as well
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-25 09:51:18 +02:00
Jo-Philipp Wich
d0b91bcca2 luci-base: globally cleanup markup
- add responsive attributes to partial cbi templates
 - unify and fix button style classes
 - fix styling of sysauth dialog
 - rework firewall_zoneforwards widget

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-23 17:13:22 +02:00
Jo-Philipp Wich
74be6f3974 treewide: switch firewall zone, network and iface lists to dropdown code
Also switch the weekday and monthday lists in the firewall rule details to
cbi dropdowns, vastly uncluttering the form.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-08 08:19:20 +02:00
Jo-Philipp Wich
9d48490729 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.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-08 08:14:36 +02:00
Jo-Philipp Wich
29b391d7bc luci-base: use common alert message markup
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-31 19:06:48 +02:00
Jo-Philipp Wich
5427395649 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.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-31 15:38:42 +02:00
Jo-Philipp Wich
067d7dc9f7 treewide: convert HTML tables to div
Mostly convert HTML tables to div based markup to allow for easier styling
in the future. Also change JS accessor code accordingly.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-28 15:18:45 +02:00
Jo-Philipp Wich
8deb949551 treewide: rework uci apply workflow
Switch to rpcd based uci apply/rollback workflow which helps to avoid soft-
bricking devices by requiring an explicit confirmation call after config
apply.

When a user now clicks "Save & Apply", LuCI first issues a call to uci apply
which commits and reloads configuration, then goes into a polling countdown
mode where it repeatedly attempts to call uci confirm.

If the committed configuration is sane, the confirm call will go through and
cancel rpcd's pending rollback timer.

If the configuration change leads to a loss of connectivity (e.g. due to bad
firewall rules or similar), the rollback mechanism will kick in after the
timeout and revert configuration files and pending changes to the pre-apply
state.

In order to cover such rare cases where a lost of connectivity is expected
and desired, the user is offered an "unchecked" apply option after timing
out, which allows committing and applying the changes anyway, without the
extra safety checks.

As a consequence of this change, the luci-reload mechanism is now completely
unsused since rpcd uses ubus config reload signals to reload affected
services, which means that only procd-enabled services will receive proper
reload treatment with the new workflow.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-05 23:11:23 +02:00
Jo-Philipp Wich
b0f3946570 luci-base: support hiding the "Back to Overview" button in cbi maps
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-03 08:25:26 +02:00
Jo-Philipp Wich
07de9190d8 Revert "luci-base: support hiding the "Back to Overview" button in cbi maps"
This reverts commit 52cf265c9d.

I accidentally committed unrelated changes.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-03 08:24:36 +02:00
Jo-Philipp Wich
52cf265c9d luci-base: support hiding the "Back to Overview" button in cbi maps
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-03 08:22:55 +02:00
Jo-Philipp Wich
48a5864f06 luci-base: error404: do not access request env directly
Instead of attempting to access the request environment directly (which does
not work anyway using the CGI SGI), use the already sanitized
dispatcher.context.request property to print out the not found url.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-04-10 12:01:43 +02:00
Jo-Philipp Wich
5c31937a0f luci-base: escape path strings and field parameter
Prevent various XSS vectors by not interpolating field and path values
verbatim into script and html contexts.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-04-07 11:43:44 +02:00
Jo-Philipp Wich
b00b676923 luci-base: properly initialize cbi.js on SimpleForms
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-04-06 16:39:39 +02:00
Jo-Philipp Wich
053c343ef1 luci-base: use FULL_REQUEST_URI on login form templates
Switch from using the REQUEST_URI CGI variable directly to the canonicalized
FULL_REQUEST_URI property.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-04-04 23:30:49 +02:00
Florian Eckert
70783f5802 luci-base: fix colspans calculation in tblsection
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2018-03-27 10:39:55 +02:00
Jo-Philipp Wich
005f4fb7d4
Merge pull request #1654 from TDT-AG/pr/20180301-luci-several-fixes
luci-app-firewall/luci-base/luci-mod-admin-full: some fixes and improvements
2018-03-15 09:52:22 +01:00
Dirk Brenken
21fbe39858 luci-base/firewall_zonelist: fix visual interface/background alignment
* fix for #1667, tested with all standard themes

Signed-off-by: Dirk Brenken <dev@brenken.org>
2018-03-09 08:13:03 +01:00
Florian Eckert
fa756d1fbb luci-base: fix browser.htm template
If cbi_init() is not called first browser gif will not be found.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2018-03-01 12:31:50 +01:00
Jo-Philipp Wich
98aacba3ac luci-base: gracefully handle broken firewall forwarding sections
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-10-17 17:35:01 +02:00
Jo-Philipp Wich
ae7c6f48df luci-base: mvalue: fix column wrapping
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-01-26 00:07:26 +01:00
Daniel Dickinson
c5287ef15f Merge pull request #663 from NeoRaider/styleable-checkboxes
luci-base: view: make checkboxes and radio buttons styleable
2016-12-10 06:36:01 -05:00
Jo-Philipp Wich
4a5635cafa luci-base: properly style login alert message
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-08-18 09:19:54 +02:00
Matthias Schiffer
4de35274ca luci-base: view: make checkboxes and radio buttons styleable
Add an empty, normally invisible label after checkboxes and radio buttons
with cbi-input-{checkbox,radio} classes to allow CSS styling them as
suggested on http://www.paulund.co.uk/style-checkboxes-with-css

Signed-off-by: Nils Schneider <nils@nilsschneider.net>
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2016-03-03 22:06:39 +01:00
Jo-Philipp Wich
55597da3a8 luci-base: cbi: fix misplaced ID in nullsection template
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2016-02-24 17:40:53 +01:00
Jo-Philipp Wich
e78759ad5a luci-base: cbi: also initialize JS if pageactions are disabled
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2016-02-24 17:40:01 +01:00
Jo-Philipp Wich
385a49277a luci-base: cbi: fix dependency handling of list and multivalues with radio/checkbox widgets
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2016-02-23 09:27:25 +01:00
Christian Schoenebeck
77f5390472 Merge pull request #644 from chris5560/master
luci-base: fixed tabbed map when using NamedSection of same type
2016-02-18 19:25:41 +01:00
Jo-Philipp Wich
5b09d39e9c luci-base: cbi: rely on auto-serialization for combobox choices
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2016-02-10 19:36:37 +01:00
Jo-Philipp Wich
afdc349ab4 luci-base: cbi: rework ListValue and MultiValue templates
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2016-02-10 19:33:01 +01:00
Jo-Philipp Wich
6d126649f0 luci-base: cbi: further refactoring
Eliminate more inline scripts in favor to global initialization, use a global
object for sharing fixed strings instead of passing them to each invocation.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2016-02-10 18:11:49 +01:00