luci-app-travelmate: sync with 0.9.2

* 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>
This commit is contained in:
Dirk Brenken 2017-08-12 08:03:48 +02:00
parent 4e80499a02
commit 3317104647
5 changed files with 41 additions and 33 deletions

View 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

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

View 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

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

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