Giter VIP home page Giter VIP logo

luci-commotion's Introduction

alt tag luci-commotion

Commotion configuration pages for the LuCI web interface.

luci-commotion is selected as a default build option in Commotion-Router (https://github.com/opentechinstitute/commotion-router)

Roadmap

Version 1.2

Version 2.0

luci-theme-commotion

The LuCI Commotion Theme was designed for the Commotion Wireless Project's openwrt-based software and is included by default in the commotion-feeds package, which is called by the commotion-router setup script.

Design changes should follow the Human Interface Guidelines described on the main project site.

This theme appears as luci-theme-commotion in Commotion-Router's menuconfig options

Links

Commotion-apps

Commotion-apps contains a LuCI application portal for OpenWRT. It relies on the Commotion service manager to find nearby applications on the network.

The LuCI application portal adds some pages to the Commotion-Router menu. The main page shows all local applications on the mesh that have been approved by the node administrator. There are also pages for creating an application, as well as administrator pages for approving/blacklisting apps and changing settings related to applications.

Commotion-apps is selected as a default build option in Commotion-Router (https://github.com/opentechinstitute/commotion-router).

Advertising applications

Applications are advertised on a Commotion mesh network using Avahi/mDNS. Each application should have a .service file in the /etc/avahi/services/ directory. The structure of the service file should follow this template:

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

<service-group>
  <name replace-wildcards="yes">Service Name on %h</name>

  <service>
    <type>_commotion._tcp</type> <!-- _svc-type.sub-type._tcp|udp -->
    <domain-name>mesh.local</domain-name>
    <!--<host-name>%h.mesh.local</host-name>--> <!-- DON'T set hostname, because avahi will fail to resolve it when using mesh.local domain-->
    <port>443</port> <!--optional-->
    <txt-record>name=Example Application</txt-record>
    <txt-record>ttl=2</txt-record> <!--optional: how many hops away the service should be advertised-->
    <txt-record>uri=https://commotionwireless.net</txt-record> <!-- IP address or URL of service host -->
    <txt-record>type=collaboration</txt-record>
    <txt-record>type=circumvention</txt-record> <!-- each type should have its own txt-record -->
    <txt-record>fingerprint=FA7E03D576F9A6752194CFCBE402C455B7F0F8C8894F7C05F17ECE500D2DC648</txt-record> <!--fingerprint and signature are generated using serval-dna-->
    <txt-record>signature=E07B1282AE1601C334CEA861DF795D57D00603BA00D97F382720F4146DDCD4427973D171C89BCA0EAAF1D72E9EF0DB2367CE07BBFFF6FF27FF01F1DFBEB65D0B</txt-record>
    <txt-record>icon=https://exampleapplication.com/icon.png</txt-record>
    <txt-record>description=Commotion is an open-source communication tool that uses mobile phones, computers, and other wireless devices to create decentralized mesh networks.</txt-record>
    <txt-record>lifetime=86400</txt-record>
    <txt-record>version=1.0</txt-record>
    
  </service>
</service-group>

Commotion Splash

luci-commotion-splash is an OpenWRT package that adds a LuCI web user interface for configuring the popular Nodogsplash captive portal.

Commotion Splash is selected as a default build option in Commotion-Router (https://github.com/opentechinstitute/commotion-router).

Changelog

7 May 2013: Release v1.0
29 Aug 2013: Release v1.1.1
28 Dec 2013: Release v1.2

Commotion Dashboard Helper

Scripts and configuration to send data to a bigboard gatherer, along with LuCI interface for configuration.

Commotion Dashboard Helper is selected as a default build option in Commotion-Router (https://github.com/opentechinstitute/commotion-router).

Commotion Debug Helper

Commotion Debug Helper is a LuCI based bug collector for users to quickly gather relevant data for OpenWRT router issues

Commotion Debug Helper is selected as a default build option in Commotion-Router (https://github.com/opentechinstitute/commotion-router).

Commotion Lua Helpers

A set of lua "helper" modules for Commotion packages.

Commotion Lua Helpers are selected as a default build option in Commotion-Router (https://github.com/opentechinstitute/commotion-router)

luci-commotion's People

Contributors

cmdln avatar dismantl avatar glamrock avatar gradyoti avatar jheretic avatar natmey avatar sheenaj avatar xbmi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

luci-commotion's Issues

Radio detection

All radio's must be detected and used to specify available options on wireless configuration pages.

First-boot functionality

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:

  • Setting the front-page to the root node of the admin menu on first boot
  • Creating a watcher that removes this functionality when a user finishes basic configuration or uses the advanced configuration options
  • A configuration option in menuconfig that allows this functionality to be turned off/on
  • A small script that allows a user to disable this functionality from the command line if they are not using the luci-menu.

manual mesh config excludes 5ghz

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.

Create a "changes you are about to make" page DEADLINE:

This page will be used similar to the saved, but not applied settings page in LuCI.

It will consist of:

  • the old-value & the new-value
  • A revert button next to each change, and for the whole set of changes
  • A warning of the level of configuration needed (reboot, vs turn off AP quickly)
  • FUTURE a auto revert timer that a user can click to have the node configure itself back after a predetermined set of time if the configuration makes the node inaccessible.

Make the meshIP easier to find

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

Turn off olsr-viz optimization checkbox by default

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)

Allow user to define node as gateway

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

Serval Keyring Page Language

"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"

Nested Sub Menu's

Sub-menu items must be nested under major menu items on the side bar when top level menu items are clicked.

Is rebooting after profile change necessary?

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.

Side menu

Replace current header LuCI menu with a side menu that contains nested submenu's

Embed CBI in alternate view.

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.

https redirect results in inescapable certificate errors in Firefox

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.

Upload Configuration (behavior)

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.

Applying profile changes to plug interface causes error

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.

Basic/Advanced menu swapping

The side menu should contain two separate side menu's that replace each other through an advanced/basic toggle button.

Space olsr-viz nodes using some useful metric

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)

Check for name collision when uploading new mesh profiles

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

manual mesh config excludes custom interfaces.

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"))

Advanced (button behavior)

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.

Flow Controls

Page movement controls need to be implemented on all cbi pages within the basic config submenu.

Welcome to Commotion (page QS)

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

Basic Configuration (page QS/Basic Menu)

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)

Updated firewall rules

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.

Set Serval Keyring OFF by default

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.

pull together profile from current settings

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.

changing profile results in LuCI error

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>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.