summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-travelmate/luasrc/model
diff options
context:
space:
mode:
authorDirk Brenken <dev@brenken.org>2017-12-06 17:05:40 +0100
committerDirk Brenken <dev@brenken.org>2017-12-06 17:05:40 +0100
commit2474cdd049c7e9523cc5055a97a86229943a2f3a (patch)
treec2ffa2c6a32dff70c35ed5565905779111f98ebc /applications/luci-app-travelmate/luasrc/model
parent49cfa04e6cd419da792725cfad454a1201771f52 (diff)
luci-app-travelmate: sync with travelmate 0.9.5
* add support for hidden uplinks * add support for wpa enterprise uplinks * various small fixes Signed-off-by: Dirk Brenken <dev@brenken.org>
Diffstat (limited to 'applications/luci-app-travelmate/luasrc/model')
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua82
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua77
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua37
3 files changed, 133 insertions, 63 deletions
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
index 27971dfdad..2c8dfa2742 100644
--- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
+++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
@@ -1,15 +1,15 @@
-- Copyright 2017 Dirk Brenken (dev@brenken.org)
-- This is free software, licensed under the Apache License, Version 2.0
-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 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 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 ""
-local parse = json.parse(fs.readfile(trminput) or "")
+local trminput = uci.get("travelmate", "global", "trm_rtfile") or "/tmp/trm_runtime.json"
+local uplink = uci.get("network", trmiface) or ""
+local parse = json.parse(fs.readfile(trminput) or "")
m = Map("travelmate", translate("Travelmate"),
translate("Configuration of the travelmate package to to enable travel router functionality. ")
@@ -22,20 +22,17 @@ function m.on_after_commit(self)
luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
end
-s = m:section(NamedSection, "global", "travelmate")
-
-- Interface Wizard
if uplink == "" then
- dv = s:option(DummyValue, "", translate("Interface Wizard"))
- dv.template = "cbi/nullsection"
+ ds = m:section(NamedSection, "global", "travelmate", translate("Interface Wizard"))
- o = s:option(Value, "", translate("Uplink interface"))
+ o = ds:option(Value, "", translate("Uplink interface"))
o.datatype = "and(uciname,rangelength(3,15))"
o.default = trmiface
o.rmempty = false
- btn = s:option(Button, "trm_iface", translate("Create Uplink Interface"),
+ btn = ds: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")
@@ -67,6 +64,8 @@ end
-- Main travelmate options
+s = m:section(NamedSection, "global", "travelmate")
+
o1 = s:option(Flag, "trm_enabled", translate("Enable travelmate"))
o1.default = o1.disabled
o1.rmempty = false
@@ -98,16 +97,11 @@ o4.default = 2
o4.datatype = "range(1,90)"
o4.rmempty = false
-o5 = s:option(Flag, "trm_debug", translate("Enable verbose debug logging"))
-o5.default = o5.disabled
-o5.rmempty = false
-
-- Runtime information
-ds = s:option(DummyValue, "_dummy", translate("Runtime information"))
-ds.template = "cbi/nullsection"
+ds = m:section(NamedSection, "global", "travelmate", translate("Runtime Information"))
-dv1 = s:option(DummyValue, "status", translate("Online Status"))
+dv1 = ds:option(DummyValue, "status", translate("Online Status"))
dv1.template = "travelmate/runtime"
if parse == nil then
dv1.value = translate("n/a")
@@ -117,7 +111,7 @@ else
dv1.value = translate("not connected")
end
-dv2 = s:option(DummyValue, "travelmate_version", translate("Travelmate version"))
+dv2 = ds:option(DummyValue, "travelmate_version", translate("Travelmate version"))
dv2.template = "travelmate/runtime"
if parse ~= nil then
dv2.value = parse.data.travelmate_version or translate("n/a")
@@ -125,15 +119,15 @@ else
dv2.value = translate("n/a")
end
-dv3 = s:option(DummyValue, "station_ssid", translate("Station SSID"))
+dv3 = ds:option(DummyValue, "station_id", translate("Station ID (SSID/BSSID)"))
dv3.template = "travelmate/runtime"
if parse ~= nil then
- dv3.value = parse.data.station_ssid or translate("n/a")
+ dv3.value = parse.data.station_id or translate("n/a")
else
dv3.value = translate("n/a")
end
-dv4 = s:option(DummyValue, "station_interface", translate("Station Interface"))
+dv4 = ds:option(DummyValue, "station_interface", translate("Station Interface"))
dv4.template = "travelmate/runtime"
if parse ~= nil then
dv4.value = parse.data.station_interface or translate("n/a")
@@ -141,7 +135,7 @@ else
dv4.value = translate("n/a")
end
-dv5 = s:option(DummyValue, "station_radio", translate("Station Radio"))
+dv5 = ds:option(DummyValue, "station_radio", translate("Station Radio"))
dv5.template = "travelmate/runtime"
if parse ~= nil then
dv5.value = parse.data.station_radio or translate("n/a")
@@ -149,7 +143,7 @@ else
dv5.value = translate("n/a")
end
-dv6 = s:option(DummyValue, "last_rundate", translate("Last rundate"))
+dv6 = ds:option(DummyValue, "last_rundate", translate("Last rundate"))
dv6.template = "travelmate/runtime"
if parse ~= nil then
dv6.value = parse.data.last_rundate or translate("n/a")
@@ -162,28 +156,32 @@ end
e = m:section(NamedSection, "global", "travelmate", translate("Extra options"),
translate("Options for further tweaking in case the defaults are not suitable for you."))
-e1 = e:option(Value, "trm_radio", translate("Radio selection"),
+e1 = e:option(Flag, "trm_debug", translate("Enable verbose debug logging"))
+e1.default = e1.disabled
+e1.rmempty = false
+
+e2 = 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.datatype = "and(uciname,rangelength(6,6))"
+e2.rmempty = true
-e2 = e:option(Value, "trm_maxretry", translate("Connection Limit"),
+e3 = e:option(Value, "trm_maxretry", translate("Connection Limit"),
translate("How many times should travelmate try to connect to an Uplink. ")
.. translate("To disable this feature set it to '0' which means unlimited retries."))
-e2.default = 3
-e2.datatype = "range(0,30)"
-e2.rmempty = false
+e3.default = 3
+e3.datatype = "range(0,30)"
+e3.rmempty = false
-e3 = e:option(Value, "trm_maxwait", translate("Interface Timeout"),
+e4 = e:option(Value, "trm_maxwait", translate("Interface Timeout"),
translate("How long should travelmate wait for a successful wlan interface reload."))
-e3.default = 30
-e3.datatype = "range(5,60)"
-e3.rmempty = false
+e4.default = 30
+e4.datatype = "range(5,60)"
+e4.rmempty = false
-e4 = e:option(Value, "trm_timeout", translate("Overall Timeout"),
+e5 = e:option(Value, "trm_timeout", translate("Overall Timeout"),
translate("Timeout in seconds between retries in 'automatic' mode."))
-e4.default = 60
-e4.datatype = "range(60,300)"
-e4.rmempty = false
+e5.default = 60
+e5.datatype = "range(60,300)"
+e5.rmempty = false
return m
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua
index dcfa17c8b5..921e1b8323 100644
--- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua
+++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua
@@ -1,10 +1,11 @@
-- Copyright 2017 Dirk Brenken (dev@brenken.org)
-- This is free software, licensed under the Apache License, Version 2.0
-local fs = require("nixio.fs")
-local uci = require("luci.model.uci").cursor()
-local http = require("luci.http")
+local fs = require("nixio.fs")
+local uci = require("luci.model.uci").cursor()
+local http = require("luci.http")
local trmiface = uci.get("travelmate", "global", "trm_iface") or "trm_wwan"
+local val = ""
m = SimpleForm("add", translate("Add Wireless Uplink Configuration"))
m.submit = translate("Save")
@@ -18,6 +19,7 @@ end
m.hidden = {
device = http.formvalue("device"),
ssid = http.formvalue("ssid"),
+ bssid = http.formvalue("bssid"),
wep = http.formvalue("wep"),
wpa_suites = http.formvalue("wpa_suites"),
wpa_version = http.formvalue("wpa_version")
@@ -25,23 +27,47 @@ m.hidden = {
if m.hidden.ssid ~= "" then
wssid = m:field(Value, "ssid", translate("SSID"))
- wssid.default = m.hidden.ssid
+ wssid.datatype = "rangelength(1,32)"
+ wssid.default = m.hidden.ssid or ""
else
wssid = m:field(Value, "ssid", translate("SSID (hidden)"))
end
+bssid = m:field(Value, "bssid", translate("BSSID"))
+bssid.datatype = "macaddr"
+bssid.default = m.hidden.bssid or ""
+
if (tonumber(m.hidden.wep) or 0) == 1 then
wkey = m:field(Value, "key", translate("WEP passphrase"),
translate("Specify the secret encryption key here."))
wkey.password = true
wkey.datatype = "wepkey"
-elseif (tonumber(m.hidden.wpa_version) or 0) > 0 and
- (m.hidden.wpa_suites == "PSK" or m.hidden.wpa_suites == "PSK2")
-then
- wkey = m:field(Value, "key", translate("WPA passphrase"),
- translate("Specify the secret encryption key here."))
- wkey.password = true
- wkey.datatype = "wpakey"
+elseif (tonumber(m.hidden.wpa_version) or 0) > 0 then
+ if m.hidden.wpa_suites == "PSK" or m.hidden.wpa_suites == "PSK2" then
+ wkey = m:field(Value, "key", translate("WPA passphrase"),
+ translate("Specify the secret encryption key here."))
+ wkey.password = true
+ wkey.datatype = "wpakey"
+ elseif m.hidden.wpa_suites == "802.1X" then
+ eaptype = m:field(ListValue, "eap_type", translate("EAP-Method"))
+ eaptype:value("TLS")
+ eaptype:value("TTLS")
+ eaptype:value("PEAP")
+ eaptype.default = "PEAP"
+
+ authentication = m:field(ListValue, "auth", translate("Authentication"))
+ authentication:value("PAP")
+ authentication:value("CHAP")
+ authentication:value("MSCHAP")
+ authentication:value("MSCHAPV2")
+ authentication.default = "MSCHAPV2"
+
+ ident = m:field(Value, "identity", translate("Identity"))
+
+ pass = m:field(Value, "password", translate("Password"))
+ pass.datatype = "wpakey"
+ pass.password = true
+ end
end
function wssid.write(self, section, value)
@@ -50,15 +76,38 @@ function wssid.write(self, section, value)
network = trmiface,
device = m.hidden.device,
ssid = wssid:formvalue(section),
+ bssid = bssid:formvalue(section),
disabled = "1"
})
+ if wkey ~= nil then
+ val = wkey:formvalue(section)
+ if val == "" then
+ val = "changeme"
+ end
+ end
if (tonumber(m.hidden.wep) or 0) == 1 then
uci:set("wireless", newsection, "encryption", "wep-open")
uci:set("wireless", newsection, "key", "1")
- uci:set("wireless", newsection, "key1", wkey:formvalue(section))
+ uci:set("wireless", newsection, "key1", val)
elseif (tonumber(m.hidden.wpa_version) or 0) > 0 then
- uci:set("wireless", newsection, "encryption", "psk2")
- uci:set("wireless", newsection, "key", wkey:formvalue(section))
+ if m.hidden.wpa_suites == "PSK" or m.hidden.wpa_suites == "PSK2" then
+ uci:set("wireless", newsection, "encryption", "psk2")
+ uci:set("wireless", newsection, "key", val)
+ elseif m.hidden.wpa_suites == "802.1X" then
+ uci:set("wireless", newsection, "encryption", "wpa2")
+ uci:set("wireless", newsection, "eap_type", eaptype:formvalue(section))
+ uci:set("wireless", newsection, "auth", authentication:formvalue(section))
+ val = ident:formvalue(section)
+ if val == "" then
+ val = "changeme"
+ end
+ uci:set("wireless", newsection, "identity", val)
+ val = pass:formvalue(section)
+ if val == "" then
+ val = "changeme"
+ end
+ uci:set("wireless", newsection, "password", val)
+ end
else
uci:set("wireless", newsection, "encryption", "none")
end
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua
index c60ff22c4d..1baca5be40 100644
--- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua
+++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua
@@ -1,9 +1,10 @@
-- Copyright 2017 Dirk Brenken (dev@brenken.org)
-- This is free software, licensed under the Apache License, Version 2.0
-local fs = require("nixio.fs")
-local uci = require("luci.model.uci").cursor()
+local fs = require("nixio.fs")
+local uci = require("luci.model.uci").cursor()
local http = require("luci.http")
+local val = ""
m = SimpleForm("edit", translate("Edit Wireless Uplink Configuration"))
m.submit = translate("Save")
@@ -21,8 +22,15 @@ m.hidden = {
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)"
+ wssid.default = s.ssid
+ bssid = m:field(Value, "bssid", translate("BSSID"))
+ bssid.datatype = "macaddr"
+ bssid.default = s.bssid
+ if s.identity then
+ ident = m:field(Value, "identity", translate("Identity"))
+ ident.default = s.identity
+ end
if s.encryption and s.key then
wkey = m:field(Value, "key", translatef("Passphrase (%s)", s.encryption))
elseif s.encryption and s.password then
@@ -43,10 +51,25 @@ end
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))
+ uci:set("wireless", m.hidden.cfg, "bssid", bssid:formvalue(section))
+ if s.identity then
+ val = ident:formvalue(section)
+ if val == "" then
+ val = "changeme"
+ end
+ uci:set("wireless", m.hidden.cfg, "identity", val)
+ end
+
+ if s.encryption and s.encryption ~= "none" then
+ val = wkey:formvalue(section)
+ if val == "" then
+ val = "changeme"
+ end
+ if s.key then
+ uci:set("wireless", m.hidden.cfg, "key", val)
+ elseif s.password then
+ uci:set("wireless", m.hidden.cfg, "password", val)
+ end
end
uci:save("wireless")
uci:commit("wireless")