Commit graph

56 commits

Author SHA1 Message Date
Daniel F. Dickinson
58d97b5e27 modules: Split luci-mod-full
Move some common elements to luci-base, and otherwise make three
packages out of status, system, and network.  They were mostly
separated already, but there were some shared elements between
status and network that are now in luci-base.

Signed-off-by: Daniel F. Dickinson <cshored@thecshore.com>
2018-09-19 20:08:19 +02:00
Daniel F. Dickinson
6ec0353201 modules: Make luci-base sufficient to use luci apps
Per the discussion in https://github.com/openwrt/luci/issues/869, make
luci-base sufficient to login, logout, and review and apply or revert
uci changes.  This allows most luci-app-xxx to work without having
luci-mod-admin-full installed.

It has been tested with some apps and not luci-mod-admin-full, as well
as with luci-mod-admin-full (to make sure the usual case doesn't break).

Instead of creating a new module namespace (e.g. 'Base') we reduce the
opportunities for breakage by having luci-base take over the 'shell' of
the 'Administration' (admin/....) namespace.

Since admin is assumed by all current building LuCI components (including
Freifunk), this doesn't introduce the 'Administration' tab into any
situation where it would not already be present (but includes it where it
was before).

We also add a "Component not installed" page to avoid fatal errors and
backtrace when e.g. luci-mod-admin-full is not installed.

Signed-off-by: Daniel F. Dickinson <cshored@thecshore.com>
2018-09-19 20:08:19 +02:00
Rosy Song
9840d310e2 modules: add backup module for mtdblock devices
Signed-off-by: Rosy Song <rosysong@rosinson.com>
2018-09-08 15:07:01 +08:00
Dirk Brenken
53b90e3c8c luci-mod-admin-full: fix forced upgrade
* fix logical glitch in forced upgrade logic

Signed-off-by: Dirk Brenken <dev@brenken.org>
2018-08-20 21:36:11 +02:00
Dirk Brenken
89486bd66f luci-mod-admin-full: allow forced upgrade (revised)
* allow 'forced' firmware upgrades, even if the image format check
fails. Useful where flashing back to the OEM versions or switching
between ar71xx and ath79 builds
* option is only visible after first/failed image check
* added warning info (see screenshots below)

Signed-off-by: Dirk Brenken <dev@brenken.org>
2018-08-17 12:52: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
9b4efaefa1 luci-mod-admin-full: use incremental background scanning for wireless join
The previous approach of synchroneously scanning while building the result
page was suboptimal since it frequently led to connection resets when
accessing LuCI via wireless.

It also exhibited problems when accessed via SSL on recent Firefox versions
where the page were only loaded partially.

Rework the wireless scanning to gather scan results in a background process
and put them into the ubus session data area where they can be readily
accessed without causing network interruptions.

Subsequently rebuild the wireless join page to use XHR polling to
incrementally fetch updated scan results.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-18 14:43:27 +02:00
Jo-Philipp Wich
a48a142599 luci-mod-admin-full: improve interface overview display
Remove the guessing of primary interfaces for now as we cannot yet properly
track parent / child interface relations.

Instead, add tooltips to the interface icons displaying detailed physical
layer information per netdev.

For dynamic or true alias interfaces (using "@" notation), skip the
reporting of MAC and traffic stats.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-15 16:23:19 +02:00
Jo-Philipp Wich
b7bf164fea luci-mod-admin-full: produce valid JSON in status/realtime/connections_status
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-12 18:55:16 +02:00
Jo-Philipp Wich
c4dca36795 luci-mod-admin-full: rework interface overview page
Convert interface enable, disable and delete actions to proper cbi
operations so that we can benefit from the apply/rollback workflow
when performing critical interface operations.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-12 18:10:10 +02:00
Jo-Philipp Wich
54c9a77bd3 luci-mod-admin-full: expose errors, description and up state in net status
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-12 18:10:10 +02:00
Jo-Philipp Wich
be2b83c9f5 luci-mod-admin-full: reimplement wireless overview page as cbi model
This will offer apply/rollback workflow for tasks like deleting or shutting
down wireless networks.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-12 18:10:10 +02:00
Florian Eckert
65ba4b8b8a luci-mod-admin-full: check backup.tar.gz on apply
If an uploaded backup.tar.gz is not valid we will not get a respond from
LuCI. The system will perform a reboot without applying the "tar.gz"
even though the backup import failed.

To fix this check if the backup archive is valid with the command
"gunzip -t <archive>" and if the validation fails render the flashops page
with a hint. On the other hand apply the backup archive and perform a
reboot as before.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2018-07-03 17:45:12 +02:00
Jo-Philipp Wich
62f5c22f8c
Merge pull request #1912 from Ansuel/fixassoci
luci-mod-admin-full: fix missing wifi_assoclist
2018-06-26 14:34:58 +02:00
Ansuel Smith
5818a90dfd
luci-mod-admin-full: fix missing wifi_assoclist
With #e5ba594d77eed77d31d4b9b8c0e86026eb5a5fac the list of the connected device broke up. This fix this problem by creating a proper request link.

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
2018-06-26 14:30:36 +02:00
Jo-Philipp Wich
b4d78d2042 luci-mod-admin-full: packages: display available packages by default
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-23 18:01:43 +02:00
Jo-Philipp Wich
37a4a1c070 luci-mod-admin-full: fix crash on wireless when no networks are declared
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-19 23:28:14 +02:00
Jo-Philipp Wich
828202ef52
Merge pull request #1769 from jow-/master
UCI apply/rollback workflow
2018-05-18 16:44:33 +02:00
Yousong Zhou
c91ba4babc luci-mod-admin-full: use fs.glob instead nixio.fs.glob
It's how the module was named when "require"d and used by other code in
the same function

Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2018-05-07 21:19:35 +08:00
Florian Eckert
690ae5c211 luci-mod-admin-full: no menu entry for leds if "/sys/class/leds" is empty
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2018-05-07 21:14:48 +08:00
Florian Eckert
da4fab0462 luci-mod-admin-full: change supports_reset() test for factory reset
The check "supports_reset" only covers /proc/mtd partitions. If we have
this the commands checks for names like ubi or rootfs_data. If this is
found the system is possible for a factory reset.  But on x86 the
situation is different.  We have no /proc/mtd partitions because this
system do not use a bare metall flash.

To solve this issue check if we have an overlay and if so we could do a
factory reset. This could be applied for system which uses bare metal
flash and system which uses FTL or harddisks.

Jffs2reset is the current command used for factory reset.  It will try
to find volume "rootfs_data" and if it's mounted will delete all files
under directory /overlay

luci-mod-admin-mini also has check for reset available, but we leave it
alone for now as it uses "mtd -r erase rootfs_data"

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2018-05-07 20:36:40 +08: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
14da6e85a6 luci-mod-admin-full: dispatch SimpleForm models using the form() action
This fixes issues dicovered by check-controllers.sh

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-04-06 12:10:16 +02:00
Jo-Philipp Wich
d6b4a3d45a luci-mod-admin-full: fix request path access in uci controller
Fixes #1725
Fixes 731ed77c0 ("treewide: improve handling of page redirections in uci change views")

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-04-06 06:58:32 +02:00
Jo-Philipp Wich
731ed77c0b treewide: improve handling of page redirections in uci change views
Instead of passing the full LuCI request url, pass the relative resolved
request path instead and filter the received value through the lookup()
dispatcher function to only allow paths to actual internal pages.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-04-05 23:03:01 +02:00
Jo-Philipp Wich
c0d9c4f3ce treewide: filter shell arguments through shellquote() where applicable
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-04-05 09:37:43 +02:00
Jo-Philipp Wich
9e4b8a9138 luci-mod-admin-full: fix possible shell injection in bandwith status
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-04-05 00:33:09 +02:00
Jo-Philipp Wich
28e3b32854 treewide: unify mac address handling
Use the new luci.ip MAC address facilities to parse and verify MAC addresses
in a common way, instead of relying on various ad-hoc solutions.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-03-12 16:12:18 +01:00
Jo-Philipp Wich
00ae50134b luci-mod-admin-full: use rpcd-mod-rrdns for reverse DNS lookups
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-07-11 14:18:40 +02:00
Cody R. Brown
5377d22b4a mod-admin-full: Add IPv6 Prefix Delegation information to Status Pages
The Overview page and Network>Interfaces page currently do not give much information about IPv6, particularly with Prefix Delegated setups. In these setups, ISP will delegate a prefix to the router. Currently LuCI doesn't display this Prefix Delegation from the ISP anywhere. A number of changes was added to this commit:

1) self:_ubus("ipv6-prefix") was extracted and put into protocol.ip6prefix.
2) Network>Interfaces page, if a .ip6prefix is present, show it under Status. (IPv6-PD).
3) On the Overview page, "Type" and "Prefix Delegated" has been added to the IPv6 Network Overview Status:
  - Type will display the .proto, similar to the IPv4 case. If a .ip6prefix is present, it'll display a "-pd" at the end of the Type: i.e. dhcpv6-pd vs. dhcpv6.
  - If no .ip6prefix is present, it'll do what it does currently, and just show Address, or :: if no address is present.
  - If .ip6prefix is present, it'll show the "Prefix Delegated", it'll also hide "Address" if no address is present, else it'll show ifc6.ip6addr as well.

Signed-off-by: Cody R. Brown <dev@codybrown.ca>
2017-01-28 01:38:06 -08:00
Daniel Dickinson
2cb780c8cc Merge pull request #861 from ynezz/master
luci-mod-admin-full: Store system time into RTC also
2017-01-16 01:49:21 -05:00
Florian Eckert
3c7d766778 luci-mod-admin-full: show realtime wlan graph only if iw command is installed
Signed-off-by: Florian Eckert <Eckert.Florian@googlemail.com>
2016-12-12 15:08:50 +01:00
Petr Štetiar
b064c5c209 luci-mod-admin-full: Store system time into RTC also
We're currently just setting system time, but we don't set battery
backed RTC. Time in the RTC is only set on the graceful shutdown, which
is quite hard to achieve on embedded devices.

In other words, on systems with battery backed RTC we currently don't
handle following use case properly:

1. Set system time from web UI (sets only system time, but not RTC)
2. Unplug the device from power

Then after the reboot, we've wrong system time again, because time set
in [1] is not saved to battery backed RTC.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
2016-11-28 15:37:58 +01:00
Hannu Nyman
c0af3601fb luci-mod-admin-full: show also sha256 checksum for sysupgrade images
Show also the sha256 checksum in addition to MD5 checksum to enable
image verification also for builds with only sha256 checksums.

If the 'sha256sum' command is not present in the system, the value
remains empty.

Note: The easiest way to get the 'sha256sum' command is to compile it
into busybox.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2016-08-19 11:08:24 +03:00
Hannu Nyman
cc801de89c luci-mod-admin-full/mini: replace Wifi with Wireless in menus
Replace the menu item "Wifi" by "Wireless",
which is already used for page and section headings

This closes #695

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2016-06-09 11:55:20 +03:00
Guido Lipke
350ace2524 luci-mod-admin-full: Look also if the file /etc/config/fstab exists.
This pull request adds a condition, which checks whether the file "/etc/config/fstab" exists before it allows access to "mount points".

Signed-off-by: Guido Lipke <lipkegu@gmail.com>
2016-05-23 13:16:04 +02:00
Hannu Nyman
5b79e62c0a luci-mod-admin-full: Enable reset in Luci also for ubi
Enable reset in LuCI also for ubi based firmwares.

This closes #672

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2016-03-23 16:58:14 +02:00
Jo-Philipp Wich
362db10f88 luci-mod-admin-full: add sleep before sysupgrade
- Under some conditions the system will shutdown
  uhttpd before the page will be delivered to
  the client. Waiting one second should eleminate
  this behaviour.

Signed-off-by: Florian Eckert <Eckert.Florian@googlemail.com>
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2016-03-17 15:55:23 +01:00
Jo-Philipp Wich
152ba9ab22 luci-mod-admin-full: use :ipaddrs() and :ip6addrs() helper for iface_status
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2015-11-17 17:36:00 +01:00
Jo-Philipp Wich
94ab57f48c luci-mod-admin-full: restructure and fix backup, restore and sysuprade (#517)
Do not use standard post security checking for actions that require file upload
since reading the token value will trigger parsing of the http message body
before the file upload handler has been set, which causes LuCI to buffer the
entire request body in memory.

In order to simplify the code and logic flow, split action_flashops() into
separate handlers for reset, backup, restore and sysupgrade.

Let the backup restore and sysupgrade handlers use the new test_post_security()
method in luci.dispatcher to perform token checking *after* setting the upload
handler.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2015-10-22 08:48:06 +02:00
Jo-Philipp Wich
b4d62d3fd7 luci-mod-admin-full: do not access dispatcher.context.urltoken in logout
The urltoken table is going to be removed.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2015-10-21 16:43:07 +02:00
Jo-Philipp Wich
d4666757b7 luci-mod-admin-full: protect iptables counter reset and restart with token
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2015-10-20 22:27:39 +02:00
Jo-Philipp Wich
8bb749ecc3 luci-mod-admin-full: protect network post actions with csrf tokens
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2015-10-20 22:17:23 +02:00
Jo-Philipp Wich
b5826f1ffb luci-mod-admin-full: protect clock, flash and opkg ops with submit token
* Use post_on() target to require csrf token verification for modifying actions
* Ensure that package and flash operation handlers guard modifying operations
  with parameter check

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2015-10-20 21:04:46 +02:00
Jo-Philipp Wich
38a9993bd1 luci-mod-admin-full: switch to POST action for reboot
Also rework the reboot tmeplate a little bit.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2015-10-07 01:54:56 +02:00
Jo-Philipp Wich
e440144d56 luci-mod-admin-full: switch to POST actions for UCI changes
Switches UCI apply/revert/save to CSRF token protected POST actions.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2015-10-06 22:29:07 +02:00
Jo-Philipp Wich
74b5c1bbc3 luci-mod-admin-full: restart the firewall instead of reloading it
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2015-07-03 16:59:51 +02:00
Jo-Philipp Wich
622cfc673a luci-mod-admin-full: simply fstab configuration
Simplify fstab setup by offering hints for uuid/label and device node options.
Fix rootfs handling logic by removing obsolete references to the "is_rootfs"
option and offering "/" and "/overlay" choices for the mountpoint instead.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2015-04-12 20:20:01 +02:00
Jo-Philipp Wich
ec1a86977b Avoid setting duplicate cookies
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2015-02-09 16:30:11 +01:00
Jo-Philipp Wich
9feb1b8a78 luci-mod-admin-full: use sysupgrade -T to test images
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2015-01-24 14:26:51 +01:00