Merge pull request #1299 from dibdot/travelmate

luci-app-travelmate: sync with 0.9.2
This commit is contained in:
Hannu Nyman 2017-08-12 09:23:29 +03:00 committed by GitHub
commit 2697ef81a1
5 changed files with 41 additions and 33 deletions

View file

@ -4,8 +4,8 @@
local fs = require("nixio.fs") local fs = require("nixio.fs")
local uci = require("luci.model.uci").cursor() local uci = require("luci.model.uci").cursor()
local json = require("luci.jsonc") local json = require("luci.jsonc")
local nw = require("luci.model.network").init() local nw = require("luci.model.network").init()
local fw = require("luci.model.firewall").init() local fw = require("luci.model.firewall").init()
local trmiface = uci.get("travelmate", "global", "trm_iface") or "trm_wwan" 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 trminput = uci.get("travelmate", "global", "trm_rtfile") or "/tmp/trm_runtime.json"
local uplink = uci.get("network", trmiface) or "" 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")) .. "see online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md"))
function m.on_after_commit(self) 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")) luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
end end
@ -27,36 +27,38 @@ s = m:section(NamedSection, "global", "travelmate")
-- Interface Wizard -- Interface Wizard
if uplink == "" then if uplink == "" then
dv = s:option(DummyValue, "nil", translate("Interface Wizard")) dv = s:option(DummyValue, "", translate("Interface Wizard"))
dv.template = "cbi/nullsection" 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.datatype = "and(uciname,rangelength(3,15))"
o.default = "trm_wwan" o.default = trmiface
o.rmempty = false 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("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.")) .. translate("add it to the wan zone of the firewall. This step has only to be done once."))
btn.inputtitle = translate("Add Interface") btn.inputtitle = translate("Add Interface")
btn.inputstyle = "apply" btn.inputstyle = "apply"
btn.disabled = false btn.disabled = false
function btn.write(self, section, value) function btn.write(self, section, value)
iface = o:formvalue(section) local iface = o:formvalue(section)
uci:set("travelmate", section, "trm_iface", iface) if iface then
uci:save("travelmate") uci:set("travelmate", section, "trm_iface", iface)
uci:commit("travelmate") uci:save("travelmate")
local net = nw:add_network(iface, { proto = "dhcp" }) uci:commit("travelmate")
if net then local net = nw:add_network(iface, { proto = "dhcp" })
nw:save("network") if net then
nw:commit("network") nw:save("network")
local zone = fw:get_zone_by_network("wan") nw:commit("network")
if zone then local zone = fw:get_zone_by_network("wan")
zone:add_network(iface) if zone then
fw:save("firewall") zone:add_network(iface)
fw:commit("firewall") fw:save("firewall")
luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1") fw:commit("firewall")
end
end end
luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1")
end end
luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate")) luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
end end
@ -80,7 +82,7 @@ btn.inputtitle = translate("Rescan")
btn.inputstyle = "find" btn.inputstyle = "find"
btn.disabled = false btn.disabled = false
function btn.write() 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")) luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
end 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"), e1 = e:option(Value, "trm_radio", translate("Radio selection"),
translate("Restrict travelmate to a dedicated radio, e.g. 'radio0'")) translate("Restrict travelmate to a dedicated radio, e.g. 'radio0'"))
e1.datatype = "and(uciname,rangelength(6,6))"
e1.rmempty = true e1.rmempty = true
e2 = e:option(Value, "trm_maxretry", translate("Connection Limit"), 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"), e4 = e:option(Value, "trm_timeout", translate("Overall Timeout"),
translate("Timeout in seconds between retries in 'automatic' mode")) translate("Timeout in seconds between retries in 'automatic' mode"))
e4.default = 60 e4.default = 60
e4.datatype = "range(5,300)" e4.datatype = "range(60,300)"
e4.rmempty = false e4.rmempty = false
return m return m

View file

@ -22,10 +22,15 @@ local s = uci:get_all("wireless", m.hidden.cfg)
if s ~= nil then if s ~= nil then
wssid = m:field(Value, "ssid", translate("SSID")) wssid = m:field(Value, "ssid", translate("SSID"))
wssid.default = s.ssid wssid.default = s.ssid
wssid.datatype = "rangelength(1,32)"
if s.encryption and s.key then if s.encryption and s.key then
wkey = m:field(Value, "key", translatef("Passphrase (%s)", s.encryption)) 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.password = true
wkey.default = s.key wkey.default = s.key or s.password
if s.encryption == "wep" then if s.encryption == "wep" then
wkey.datatype = "wepkey" wkey.datatype = "wepkey"
else else
@ -40,6 +45,8 @@ function wssid.write(self, section, value)
uci:set("wireless", m.hidden.cfg, "ssid", wssid:formvalue(section)) uci:set("wireless", m.hidden.cfg, "ssid", wssid:formvalue(section))
if s.encryption and s.key then if s.encryption and s.key then
uci:set("wireless", m.hidden.cfg, "key", wkey:formvalue(section)) 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 end
uci:save("wireless") uci:save("wireless")
uci:commit("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" local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan"
if cfg ~= nil then if cfg ~= nil then
local iface = ""
local section = "" local section = ""
local idx = "" local idx = ""
local idx_change = "" local idx_change = ""
local changed = "" local changed = ""
uci:foreach("wireless", "wifi-iface", function(s) uci:foreach("wireless", "wifi-iface", function(s)
iface = s.network local iface = s.network or ""
if iface == trmiface then if iface == trmiface then
section = s['.name'] section = s['.name']
if cfg == section then 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 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" 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) uci:foreach("wireless", "wifi-iface", function(s)
local iface = s.network or "" local iface = s.network or ""
if iface == trmiface then if iface == trmiface then
local section = s['.name'] local section = s['.name'] or ""
local device = s.device or "" local device = s.device or ""
local mode = s.mode or ""
local ssid = s.ssid or "" local ssid = s.ssid or ""
local encryption = s.encryption or "" local encryption = s.encryption or ""
local disabled = s.disabled 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 sys = require("luci.sys")
local utl = require "luci.util" local utl = require("luci.util")
local dev = luci.http.formvalue("device") local dev = luci.http.formvalue("device")
local iw = luci.sys.wifi.getiwinfo(dev) 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) function percent_wifi_signal(info)
local qc = info.quality or 0 local qc = info.quality or 0
local qm = info.quality_max 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) return math.floor((100 / qm) * qc)
else else
return 0 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"><%:Encryption%></th>
<th class="cbi-section-table-cell" style="text-align:left" colspan="2"><%:Signal strength%></th> <th class="cbi-section-table-cell" style="text-align:left" colspan="2"><%:Signal strength%></th>
</tr> </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"> <tr class="cbi-section-table-row cbi-rowstyle-1">
<td class="cbi-value-field" style="text-align:left"> <td class="cbi-value-field" style="text-align:left">
<strong><%=net.ssid and utl.pcdata(net.ssid) or "<em>%s</em>" % translate("hidden")%></strong> <strong><%=net.ssid and utl.pcdata(net.ssid) or "<em>%s</em>" % translate("hidden")%></strong>