luci-app-travelmate: sync with 0.9.2 1299/head
authorDirk Brenken <dev@brenken.org>
Sat, 12 Aug 2017 06:03:48 +0000 (08:03 +0200)
committerDirk Brenken <dev@brenken.org>
Sat, 12 Aug 2017 06:03:48 +0000 (08:03 +0200)
* frontend: add/modify input datatypes in 'extra' section
* frontend: add support to edit/change wpa enterprise key phrases
* frontend: various small fixes

Signed-off-by: Dirk Brenken <dev@brenken.org>
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_order.lua
applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm
applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm

index b16fb4161e65df4c8f917bf813e09c8cf44def6a..add52317b4ddd2d4adee48c5aaddad36f201d43c 100644 (file)
@@ -4,8 +4,8 @@
 local fs = require("nixio.fs")
 local uci = require("luci.model.uci").cursor()
 local json = require("luci.jsonc")
-local nw  = require("luci.model.network").init()
-local fw  = require("luci.model.firewall").init()
+local nw = require("luci.model.network").init()
+local fw = require("luci.model.firewall").init()
 local trmiface = uci.get("travelmate", "global", "trm_iface") or "trm_wwan"
 local trminput = uci.get("travelmate", "global", "trm_rtfile") or "/tmp/trm_runtime.json"
 local uplink = uci.get("network", trmiface) or ""
@@ -18,7 +18,7 @@ m = Map("travelmate", translate("Travelmate"),
        .. "see online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md"))
 
 function m.on_after_commit(self)
-       luci.sys.call("/etc/init.d/travelmate restart >/dev/null 2>&1")
+       luci.sys.call("env -i /etc/init.d/travelmate restart >/dev/null 2>&1")
        luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
 end
 
@@ -27,36 +27,38 @@ s = m:section(NamedSection, "global", "travelmate")
 -- Interface Wizard
 
 if uplink == "" then
-       dv = s:option(DummyValue, "nil", translate("Interface Wizard"))
+       dv = s:option(DummyValue, "", translate("Interface Wizard"))
        dv.template = "cbi/nullsection"
 
-       o = s:option(Value, "trm_iface", translate("Uplink interface"))
+       o = s:option(Value, "", translate("Uplink interface"))
        o.datatype = "and(uciname,rangelength(3,15))"
-       o.default = "trm_wwan"
+       o.default = trmiface
        o.rmempty = false
 
-       btn = s:option(Button, "", translate("Create Uplink Interface"),
+       btn = s:option(Button, "trm_iface", translate("Create Uplink Interface"),
                translate("Create a new wireless wan uplink interface, configure it to use dhcp and ")
                .. translate("add it to the wan zone of the firewall. This step has only to be done once."))
        btn.inputtitle = translate("Add Interface")
        btn.inputstyle = "apply"
        btn.disabled = false
        function btn.write(self, section, value)
-               iface = o:formvalue(section)
-               uci:set("travelmate", section, "trm_iface", iface)
-               uci:save("travelmate")
-               uci:commit("travelmate")
-               local net = nw:add_network(iface, { proto = "dhcp" })
-               if net then
-                       nw:save("network")
-                       nw:commit("network")
-                       local zone = fw:get_zone_by_network("wan")
-                       if zone then
-                               zone:add_network(iface)
-                               fw:save("firewall")
-                               fw:commit("firewall")
-                               luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1")
+               local iface = o:formvalue(section)
+               if iface then
+                       uci:set("travelmate", section, "trm_iface", iface)
+                       uci:save("travelmate")
+                       uci:commit("travelmate")
+                       local net = nw:add_network(iface, { proto = "dhcp" })
+                       if net then
+                               nw:save("network")
+                               nw:commit("network")
+                               local zone = fw:get_zone_by_network("wan")
+                               if zone then
+                                       zone:add_network(iface)
+                                       fw:save("firewall")
+                                       fw:commit("firewall")
+                               end
                        end
+                       luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1")
                end
                luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
        end
@@ -80,7 +82,7 @@ btn.inputtitle = translate("Rescan")
 btn.inputstyle = "find"
 btn.disabled = false
 function btn.write()
-       luci.sys.call("/etc/init.d/travelmate start >/dev/null 2>&1")
+       luci.sys.call("env -i /etc/init.d/travelmate start >/dev/null 2>&1")
        luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
 end
 
@@ -162,6 +164,7 @@ translate("Options for further tweaking in case the defaults are not suitable fo
 
 e1 = e:option(Value, "trm_radio", translate("Radio selection"),
        translate("Restrict travelmate to a dedicated radio, e.g. 'radio0'"))
+e1.datatype = "and(uciname,rangelength(6,6))"
 e1.rmempty = true
 
 e2 = e:option(Value, "trm_maxretry", translate("Connection Limit"),
@@ -179,7 +182,7 @@ e3.rmempty = false
 e4 = e:option(Value, "trm_timeout", translate("Overall Timeout"),
        translate("Timeout in seconds between retries in 'automatic' mode"))
 e4.default = 60
-e4.datatype = "range(5,300)"
+e4.datatype = "range(60,300)"
 e4.rmempty = false
 
 return m
index 6d6bdcff44f88527dfc47690ef66298dbc8c9d7d..c60ff22c4de098ad636063fe6f339dc2be6a7910 100644 (file)
@@ -22,10 +22,15 @@ local s = uci:get_all("wireless", m.hidden.cfg)
 if s ~= nil then
        wssid = m:field(Value, "ssid", translate("SSID"))
        wssid.default = s.ssid
+       wssid.datatype = "rangelength(1,32)"
        if s.encryption and s.key then
                wkey = m:field(Value, "key", translatef("Passphrase (%s)", s.encryption))
+       elseif s.encryption and s.password then
+               wkey = m:field(Value, "password", translatef("Passphrase (%s)", s.encryption))
+       end
+       if s.encryption and (s.key or s.password) then
                wkey.password = true
-               wkey.default = s.key
+               wkey.default = s.key or s.password
                if s.encryption == "wep" then
                        wkey.datatype = "wepkey"
                else
@@ -40,6 +45,8 @@ function wssid.write(self, section, value)
        uci:set("wireless", m.hidden.cfg, "ssid", wssid:formvalue(section))
        if s.encryption and s.key then
                uci:set("wireless", m.hidden.cfg, "key", wkey:formvalue(section))
+       elseif s.encryption and s.password then
+               uci:set("wireless", m.hidden.cfg, "password", wkey:formvalue(section))
        end
        uci:save("wireless")
        uci:commit("wireless")
index 5b6141e52d39b246f500f8ac5cf8a2522027f559..6eb4c720632d24e118d85399777cc161024a0878 100644 (file)
@@ -8,13 +8,12 @@ local uci = require("luci.model.uci").cursor()
 local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan"
 
 if cfg ~= nil then
-       local iface = ""
        local section = ""
        local idx = ""
        local idx_change = ""
        local changed = ""
        uci:foreach("wireless", "wifi-iface", function(s)
-               iface = s.network
+               local iface = s.network or ""
                if iface == trmiface then
                        section = s['.name']
                        if cfg == section then
index 41c9f5267da1112b6526bf460355a4e5bddf0d69..cbb6c189b8132697497d3bdcee44611c6d8e0571 100644 (file)
@@ -5,7 +5,7 @@ This is free software, licensed under the Apache License, Version 2.0
 
 <%-
   local write = io.write
-  local uci = require "luci.model.uci".cursor()
+  local uci = require("luci.model.uci").cursor()
   local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan"
 -%>
 
@@ -29,9 +29,8 @@ This is free software, licensed under the Apache License, Version 2.0
   uci:foreach("wireless", "wifi-iface", function(s)
     local iface = s.network or ""
     if iface == trmiface then
-      local section = s['.name']
+      local section = s['.name'] or ""
       local device = s.device or ""
-      local mode = s.mode or ""
       local ssid = s.ssid or ""
       local encryption = s.encryption or ""
       local disabled = s.disabled or ""
index b3907e864bf6eafb55de26207d886112e36d7d6d..af90c18d23a2be32f21efb73d09b1aa26b512488 100644 (file)
@@ -4,8 +4,8 @@ This is free software, licensed under the Apache License, Version 2.0
 -%>
 
 <%-
-    local sys = require "luci.sys"
-    local utl = require "luci.util"
+    local sys = require("luci.sys")
+    local utl = require("luci.util")
     local dev = luci.http.formvalue("device")
     local iw = luci.sys.wifi.getiwinfo(dev)
 
@@ -28,7 +28,7 @@ This is free software, licensed under the Apache License, Version 2.0
     function percent_wifi_signal(info)
         local qc = info.quality or 0
         local qm = info.quality_max or 0
-        if info.bssid and qc > 0 and qm > 0 then
+        if info.ssid and qc > 0 and qm > 0 then
             return math.floor((100 / qm) * qc)
         else
             return 0
@@ -47,7 +47,7 @@ This is free software, licensed under the Apache License, Version 2.0
                 <th class="cbi-section-table-cell" style="text-align:left"><%:Encryption%></th>
                 <th class="cbi-section-table-cell" style="text-align:left" colspan="2"><%:Signal strength%></th>
             </tr>
-            <% for i, net in ipairs(iw.scanlist or { }) do%>
+            <% for i, net in ipairs(iw.scanlist or { }) do %>
             <tr class="cbi-section-table-row cbi-rowstyle-1">
                 <td class="cbi-value-field" style="text-align:left">
                     <strong><%=net.ssid and utl.pcdata(net.ssid) or "<em>%s</em>" % translate("hidden")%></strong>