luci/modules/luci-base/luasrc
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
..
cbi luci-base: add a strict flag to the hostname validator 2018-04-04 23:21:53 +02:00
model treewide: rework rollback/apply workflow 2018-07-27 14:07:23 +02:00
sgi Update my email addresses in the license headers 2015-01-16 23:49:44 +01:00
sys timezone data: update to 2018d 2018-04-07 23:26:29 +03:00
tools luci-base: luci.tools.status: add host_hints to DHCPv6 leases 2018-06-28 09:42:17 +02:00
view treewide: rework rollback/apply workflow 2018-07-27 14:07:23 +02:00
cacheloader.lua Update my email addresses in the license headers 2015-01-16 23:49:44 +01:00
cbi.lua luci-base: add markup, JS and CSS for new dropdown 2018-06-08 08:14:36 +02:00
ccache.lua Update my email addresses in the license headers 2015-01-16 23:49:44 +01:00
config.lua Globally reduce copyright headers 2015-01-16 23:38:38 +01:00
debug.lua Rework LuCI build system 2015-01-08 16:26:20 +01:00
dispatcher.lua treewide: rework rollback/apply workflow 2018-07-27 14:07:23 +02:00
dispatcher.luadoc luci-base: introduce luci.dispatcher.lookup() 2018-04-05 23:03:01 +02:00
http.lua luci-base: raise maximum POST value size to 100KB 2018-05-18 16:43:29 +02:00
http.luadoc luci-base: fold luci.http.protocol into luci.http 2018-04-18 16:21:27 +02:00
i18n.lua Move inline documentation into separate files. 2015-01-29 16:26:46 +01:00
i18n.luadoc Move inline documentation into separate files. 2015-01-29 16:26:46 +01:00
ltn12.lua Move inline documentation into separate files. 2015-01-29 16:26:46 +01:00
store.lua Update my email addresses in the license headers 2015-01-16 23:49:44 +01:00
sys.lua treewide: filter shell arguments through shellquote() where applicable 2018-04-05 09:37:43 +02:00
sys.luadoc luci-base: add luci.sys.net.host_hints() and regenerate documentation 2016-01-20 16:56:25 +01:00
template.lua Globally reduce copyright headers 2015-01-16 23:38:38 +01:00
util.lua luci-base: utils: support multiple return values in util.ubus() 2018-07-27 14:07:23 +02:00
util.luadoc luci-base: drop luci.util.dtable() 2018-04-18 16:21:27 +02:00
version.lua Globally reduce copyright headers 2015-01-16 23:38:38 +01:00