opentechinstitute / luci-commotion Goto Github PK
View Code? Open in Web Editor NEWCommotion configuration pages for the LuCI web interface
License: GNU General Public License v3.0
Commotion configuration pages for the LuCI web interface
License: GNU General Public License v3.0
In addition to being able to download profiles from the node, as we have now, it would be useful to put together a profile file from the node's current settings (which may include manually set configurations that override profile settings), and being able to download that as well.
Per UI review the commotion specific interface must use the existing CBI interface, but be embedded within a secondary menu structure that occludes the existing LuCI menu's.
This will consist of using a secondary header and an additional side-bar. to CBI pages that are loaded by our controller. More details to follow in comments.
The advanced button must take a user to a fully populated confirmation page that shows empty fields for all required values for the node and turn off the quickstart flow menu.
Filing issues for Andy & Ryan.
Page movement controls need to be implemented on all cbi pages within the basic config submenu.
This makes makes configuration less straightforward and increases the likelihood that other parameters are accidentally changed. Common configuration items: Admin Password, Mesh Backhaul Password (and on/off), Access Point Password (and on/off), Captive Portal On/Off.
I'm filing issues captured by Andy/Ryan. Just to have them logged.
Filing for Ryan & Andy
title: Basic Configuration
text: In this section you'll set the basic required settings for this device, and the basic network settings required to connect this device to a Commotion Mesh network. You will be prompted to save your settings along the way and apply them at the end.
Sub-Menu Title: Node Settings
option name: Node Name
help text: The node name (hostname) is a unique name for this device, visible to other devices and users on the network. Name this device in the field provided.
Text-Box (filter both hostname/ssid)
option name:Administration Password
help text: This password will be used to make changes to this device after initial setup has been completed. The administration username is “root.”
Text-Box (password)
Text-Box (password confirm)
When a user clicks away from quickstart the first page capture, and the flow menu need to be disabled.
It would be good if the visualization had some nice spacing related to link quality or distance. Otherwise it's confusing to the user.
(Was issue 417 on code.commotionwireless.net)
Dealing with auto-config gateways and meshing over ethernet makes setup more complicated. The Common Commotion Configurations (https://commotionwireless.net/docs/cck/installing-configuring/common-configurations) would ideally be one button setup defined in a single place in the Commotion admin interface.
Filing for Ryan & Andy
Commotion Helpers (luasrc/commotion_helpers.lua) needs to be made into a module so that other wireless and mesh projects can choose only the subset of commotion helpers with the package that they want. This will also follow the existing standards used in the LuCI system.
See:
https://lists.chambana.net/pipermail/commotion-dev/2013-September/001604.html
http://www.lua.org/manual/5.2/manual.html#6.3
http://lua-users.org/wiki/ModulesTutorial (A short overview.)
Currently, we have several IP blocks set to have access before formally authenticated, including 101.0.0.0, 102.0.0.0, 103.0.0.0, and 5.0.0.0/8. These seem to be legacy additions from testing -- I'm just posting so we don't forget to remove them before v1.
This is the GUI end of issue opentechinstitute/commotiond#43
Root node of LuCI must be able to be enabled on first boot for easy configuration without moving through multiple pages.
This tasks consists of:
When OLSR Viz loads, all of the nodes scatter out and display the network
connections. In showing this to the local contact, his response was "why is
it moving like that?" (confused by the auto-spacing) and "which one is which?
is this one us?".
(Was issue 415 on code.commotionwireless.net)
Replace current header LuCI menu with a side menu that contains nested submenu's
Commotion profile upload page. We need text for this page.
The current image does not contain any logic for generating new, individualized https certificates; as a result, all devices running Commotion are essentially using the same certificate. This fact constitutes an issue in and of itself, but it has become show-stoppingly problematic with the introduction of the forced-redirect to https for all administrative panels. At least in Firefox, the browser will allow the https connection to the first device with the standard cert warning - but attempting to connect to any other devices will result in an inescapable error (ie, one that does not let the user through, no matter what they do) indicating that the browser has seen the current cert fingerprint before, associated with a different device, and is hence unwilling to let a new device use it.
Filing for Ryan & Andy
All paths out of quickstart should be disabled when a user has entered the quickstart process.
Commotion's profile uploader writes to a single default filename when adding a new profile. The uploader should instead allow arbitrary filenames and should force the user to change the new filename if a name collision is found.
Filenames will need to be sanitized.
Profile uploads are handled by function up() in luasrc/controller/commotion/meshprofile.lua
We should have the ability, in the web interface, to manage keyrings. This should include listing, importing, exporting, and any other operations that Serval supports.
side menu's should be greyed out (and un-likable) during the quickstart process
Mention of “Commotion Profiles” in the Commotion menu is confusing. This should be removed or moved to the advanced area, and given more documentation.
To reproduce, first comment out this erroneous line (#34 (comment)) and restart uhttpd/clear cache.
Then try to apply a profile to the plug interface. Here is the error:
/usr/lib/lua/luci/dispatcher.lua:448: Failed to execute call dispatcher target for entry '/admin/commotion/meshprofile_submit'.
The called action terminated with an exception:
...sr/lib/lua/luci/controller/commotion/meshprofile.lua:295: bad argument #2 to 'delete' (string expected, got nil)
stack traceback:
[C]: in function 'assert'
/usr/lib/lua/luci/dispatcher.lua:448: in function 'dispatch'
/usr/lib/lua/luci/dispatcher.lua:195: in function </usr/lib/lua/luci/dispatcher.lua:194>
In the code, it looks like the flush_wireless_profile
function is called (line 68) for every interface profile change, regardless if it is a wireless interface or not.
This page will be used similar to the saved, but not applied settings page in LuCI.
It will consist of:
Uploaded commotion profiles need to be parsed, applied to the proper UCI fields, and then the user needs to be taken to the confirmation page.
When a node is first turned on the quickstart needs to be the first page a user sees when they connect to the node.
Since we include a default route signing key in Commotion we should move the serval keyring to be off by default so that a new user who wants to include serval route signing can turn it on and create a new key, but will never have the false sense of security a default key provides. This also allows users who don't care to have route signing to only experience an unchecked box and a greyed out set of menu's instead of a confusing security menu that they may never need to use. It also solves the problem of a user adding a new key and never being able to revert back to the original key state.
jheretic has approved the change to system defaults
This issue should be included in the upcoming version 1.0 UI review to determine best presentation of route signing information.
Switching protocol from Commotion to Static is confusing when it asks for verification. It is not clear that the verification button needs to be clicked.
Filing for Ryan & Andy
Section Title: Welcome to Commotion
text: This router has not yet been set up. Use the Setup Wizard for step-by-step configuration, upload a configuration file if you have one from a previously configured router, or choose Advanced for manual GUI or CLI configuration.
button: Setup Wizard
button: Upload Configuration
button: Advanced
Sub-menu items must be nested under major menu items on the side bar when top level menu items are clicked.
The side menu should contain two separate side menu's that replace each other through an advanced/basic toggle button.
Gateway coming up before getting a DHCP lease, or being plugged into power before the router causes problems. Users need to be able to set a node as a gateway in the interface -- or find another solution.
Filing for Andy & Ryan
The 5ghz channel does not show up on the mesh config page, when capabilities exist or even when the radio is on a 5ghz channel.
After changing the profile of an interface, the entire node is rebooted. Is this really necessary? It seems like restarting/reloading networking or calling wifi (if it's a wireless interface) should be sufficient. Less interruption to the node would result in a better user experience, I would think.
The advanced menu, when toggled on, should redirect to the status-general page
All radio's must be detected and used to specify available options on wireless configuration pages.
The mesh IP address needs to be recorded each time a node is installed and configured. The mesh IP address is buried in Status > OLSR > Interfaces in a table. This could be moved to somewhere more central or easy to find.
Filing for Andy & Ryan
to reproduce: go to /admin/commotion/meshprofile after a node has gone through quickstart, and apply any profile to any interface.
Returned error:
/usr/lib/lua/luci/dispatcher.lua:448: Failed to execute call dispatcher target for entry '/admin/commotion/meshprofile_submit'.
The called action terminated with an exception:
...sr/lib/lua/luci/controller/commotion/meshprofile.lua:308: attempt to index field 'QS' (a nil value)
stack traceback:
[C]: in function 'assert'
/usr/lib/lua/luci/dispatcher.lua:448: in function 'dispatch'
/usr/lib/lua/luci/dispatcher.lua:195: in function </usr/lib/lua/luci/dispatcher.lua:194>
"Serval keyring" is the underlying architecture for the Route signing process. We should change the name of the page and explanation to move away from the Serval keyring and towards the actual function that the user is interacting with on that page. This would mean reworking the help text to be more clear and changing the titles to something like "route signing key"
Per opentechinstitute/commotion-router#32, submit a patch request to luci's dispatcher.lua to use the httponly flag on sysauth cookies.
Although a working patch is available in /pull/28, the httponly and secure flags should probably be submitted as separate patches since openwrt does not use ssl by default.
Per opentechinstitute/commotion-router#33, submit a patch request to luci's dispatcher.lua to use the httponly flag on sysauth cookies.
Although a working patch is available in #28, the httponly and secure flags should probably be submitted as separate patches since openwrt does not use ssl by default.
The model meshconfig.lua is configured to only show interfaces created in the quickstart. A more robust model needs to be implemented that shows all interfaces configured in etc/config/wireless.
The current configuration limits using lines similar to the following.
sctAP = m:section(NamedSection, "quickstartAP", "wifi-iface", translate("Access Point"))
Specifically, clicking "upload" without attaching a file will produce an error that profile [empty string] already exists
Filing for Ryan & Andy
Also, buttons should be standardized to "Save & Apply"
Filing for Ryan & Andy
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.