summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-base/luasrc
AgeCommit message (Collapse)Author
2018-09-29luci-base: cbi.lua: fix TypedSection.parse()Darius
It's not necessary to execute all code if section already exists. Signed-off-by: Darius Joksas <jok.darius@gmail.com> [reword commit message, squash commits, remove stray semicolon] Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-09-27luci-base: fix sysauth cookie not removed on logoutKyle Rogers
Signed-off-by: Kyle Rogers <7157021+kyle30312@users.noreply.github.com>
2018-09-19luci-base: switch admin category node to firstnode() actionJo-Philipp Wich
After this change, luci-base will render the first module or application page installed on the system, instead of rendering a "Component not found" message when the status category is unavailable. This allows for single-purpose LuCI installations like e.g. luci-base with luci-app-travelmate which only presents application specific views without any of the standard system pages. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-09-19luci-base: dispatcher: introduce firstnode() dispatching targetJo-Philipp Wich
The firstnode target will dispatch the request to the first eligible menu subtree node that is not a redirect to another node, a special action or post security enabled page. That action is specifically useful for global category toplevel nodes like "admin" which are supposed to simply direct access to the first installed page node without having to hardcode specific choices. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-09-19modules: Split luci-mod-fullDaniel F. Dickinson
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-19modules: Make luci-base sufficient to use luci appsDaniel F. Dickinson
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-19Merge pull request #2140 from kristrev/multiple-upstream-interfaces-statusJo-Philipp Wich
luci-base: Show multiple upstream interface
2018-09-19luci-base: Show multiple upstream interfaceKristian Evensen
Several devices have multiple upstream interfaces, for example a fixed and a mobile broadband connection. Currently, only one upstream interface is shown per address family in Luci. So in my example, one of the interfaces would not appear on the Status-page. This PR introduces support for showing multiple upstream interfaces on the Status-page. The code is not very complicated. get_status_by_route() has been extended to return a list of all routes, and get_wannet()/get_wan6net() now returns all upstream interfaces. I could not find any other (active) users of these three functions than calls triggered from the Status-page, so changing the default behavior should be fine. get_wandev()/get_wan6dev() called get_status_by_route(), but I could not find any place where those functions were called. I removed the dev-functions instead of keeping the old get_status_by_route(). On the status page, the wan/wan6-variables have been replaced with arrays. When populating the html, we now iterate through these arrays and create one element for each interface. I have tested the code with different interface types, v4, v6, as well as disconnecting and connecting interfaces. The status is updated and the correct interfaces (or sometimes none at all) are shown. Signed-off-by: Kristian Evensen <kristian.evensen@gmail.com>
2018-09-08modules: add backup module for mtdblock devicesRosy Song
Signed-off-by: Rosy Song <rosysong@rosinson.com>
2018-08-17luci-base: remove fake password field from tab orderJo-Philipp Wich
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-16luci-base: mark password template dummy field as hiddenJo-Philipp Wich
Mark the dummy input field as aria-hidden, should fix #2063. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-08-13treewide: rework uci change displayJo-Philipp Wich
- Use native rpcd uci changes format instead of incompletely converting back and forth between the old and the new format - Rework uci changelog template to print the equivalent uci commands for the various changes - Rework theme headers to properly count the uncomitted changes - Rework theme CSS to properly style new changelog Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-08-07Correct grammar in apply_widget.htmGregory L. Dietsche
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-07-28luci-base: fix footer templateJo-Philipp Wich
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-27treewide: rework rollback/apply workflowJo-Philipp Wich
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-27luci-base: utils: support multiple return values in util.ubus()Jo-Philipp Wich
This is needed to deal with ubus methods that return multiple results, e.g. session/list Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-23luci-base: strip superfluous space in additional field markupJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-23luci-base: rework reveal/hide CBI password template buttonJo-Philipp Wich
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-22luci-base: add description annotations to tblsection cellsJo-Philipp Wich
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-20luci-base: fix bad CSS class names in table section templateJo-Philipp Wich
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-18luci-base: rework CBI footer templateJo-Philipp Wich
- 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-18luci-base: rework tblsection templateJo-Philipp Wich
- Hide empty title and description rows - Correct row striping offset - Cleanup code Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-18luci-base: rework simpleform templateJo-Philipp Wich
- 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-16luci-base: fix field section add button/input field namesJo-Philipp Wich
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-15luci-base: fix handling alias interfaces in ifacelist widgetJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-15luci-base: luci.model.network: recognize alias interfacesJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-13luci-base: tweak tblsection markupJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-12luci-base: add error reporting and basic support for dynamic interfacesJo-Philipp Wich
This allows exposing virtual ubus-based network interfaces in LuCI. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-12luci-base: apply_widget: various fixesJo-Philipp Wich
- 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-09luci-base: fix placement of CBI stringsJo-Philipp Wich
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-09treewide: always include cbi.jsJo-Philipp Wich
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-02luci-base: rework "in request" flagging logic for menu nodesJo-Philipp Wich
The previous implementation failed to mark active nodes under some circumstances. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-28luci-base: luci.tools.status: add host_hints to DHCPv6 leasesJo-Philipp Wich
Attempt to derive a MAC from the DHCPv6 lease DUID and use it to look up a host hint. If a hint is found, add it to the lease information. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-25luci-base: add "Name" label to autogenerated title columnJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-25luci-base: annotate tblsection description row as wellJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-25luci-base, luci-mod-admin-full: unify wifi assoclist codeJo-Philipp Wich
Merge the assoclist code of the status overview and wireless overview pages into a single shared partial template. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-23luci-base: globally cleanup markupJo-Philipp Wich
- 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-08treewide: switch firewall zone, network and iface lists to dropdown codeJo-Philipp Wich
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-08luci-base: add markup, JS and CSS for new dropdownJo-Philipp Wich
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-08luci-base: support option aliases in luci.cbiJo-Philipp Wich
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. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-06luci-base: fix some minor luci.model.uci issuesJo-Philipp Wich
- Properly serialize option delete changelogs - Do not perform a section create if a nil value is passed to set() Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-03luci-base: cbi: atomically reorder uci sectionsJo-Philipp Wich
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. Fixes #1844. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-31luci-base: use common alert message markupJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-31luci-base: update coxpcall() implementation, fix runtime error reportingJo-Philipp Wich
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. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-31luci-base: add full page overlay during applyJo-Philipp Wich
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-28treewide: convert HTML tables to divJo-Philipp Wich
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-23luci-base: fix dispacher failAnsuel Smith
http.getenv("SCRIPT_NAME") fail if it's not provided. This can happen in the login screen when we don't have any script to load. Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
2018-05-19luci-base: handle potential crash in luci.model.network.interface.get_i18n()Jo-Philipp Wich
Should prevent the crash mentioned in #1779. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-19luci-base: break circular luci.config <> luci.model.uci dependencyJo-Philipp Wich
On certain environments, mainly with the embedded uhttpd interpreter, the luci.config class cannot be loaded due to a circular dependency with the luci.model.uci class. Break up the dependency by deferring the loading of luci.config in luci.model.uci until it is actually needed. Fixes #1803, FS#1553. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-18Merge pull request #1769 from jow-/masterJo-Philipp Wich
UCI apply/rollback workflow