summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-travelmate/luasrc/model
diff options
context:
space:
mode:
Diffstat (limited to 'applications/luci-app-travelmate/luasrc/model')
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua116
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua143
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua142
3 files changed, 313 insertions, 88 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..e715a2ba06 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,17 @@
-- 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 util = require("luci.util")
+local nw = require("luci.model.network").init()
+local fw = require("luci.model.firewall").init()
+local dump = util.ubus("network.interface", "dump", {})
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 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,26 +24,24 @@ 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")
btn.inputstyle = "apply"
btn.disabled = false
- function btn.write(self, section, value)
+
+ function btn.write(self, section)
local iface = o:formvalue(section)
if iface then
uci:set("travelmate", section, "trm_iface", iface)
@@ -67,6 +67,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
@@ -76,19 +78,16 @@ o2 = s:option(Flag, "trm_automatic", translate("Enable 'automatic' mode"),
o2.default = o2.enabled
o2.rmempty = false
-btn = s:option(Button, "", translate("Manual Rescan"))
-btn:depends("trm_automatic", "")
-btn.inputtitle = translate("Rescan")
-btn.inputstyle = "find"
-btn.disabled = false
-function btn.write()
- luci.sys.call("env -i /etc/init.d/travelmate start >/dev/null 2>&1")
- luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
+o3 = s:option(ListValue, "trm_iface", translate("Uplink / Trigger interface"),
+ translate("Name of the used uplink interface."))
+if dump then
+ local i, v
+ for i, v in ipairs(dump.interface) do
+ if v.interface ~= "loopback" and v.interface ~= "lan" then
+ o3:value(v.interface)
+ end
+ end
end
-
-o3 = s:option(Value, "trm_iface", translate("Uplink / Trigger interface"),
- translate("Name of the uplink interface that triggers travelmate processing in 'manual' mode."))
-o3.datatype = "and(uciname,rangelength(3,15))"
o3.default = trmiface
o3.rmempty = false
@@ -98,16 +97,23 @@ 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
+btn = s:option(Button, "", translate("Manual Rescan"),
+ translate("Force a manual uplink rescan / reconnect in 'trigger' mode."))
+btn:depends("trm_automatic", "")
+btn.inputtitle = translate("Rescan")
+btn.inputstyle = "find"
+btn.disabled = false
+
+function btn.write()
+ 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
-- 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 +123,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 +131,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 +147,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 +155,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 +168,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..1e8bd7ec68 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,12 @@
--- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- Copyright 2017-2018 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 encr_psk = {"psk", "psk2", "psk-mixed"}
+local encr_wpa = {"wpa", "wpa2", "wpa-mixed"}
m = SimpleForm("add", translate("Add Wireless Uplink Configuration"))
m.submit = translate("Save")
@@ -18,6 +20,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 +28,104 @@ 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
+nobssid = m:field(Flag, "no_bssid", translate("Ignore BSSID"))
+nobssid.default = nobssid.enabled
+
+bssid = m:field(Value, "bssid", translate("BSSID"))
+bssid:depends("no_bssid", 0)
+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."))
+ encr = m:field(ListValue, "encryption", translate("Encryption"))
+ encr:value("wep", "WEP")
+ encr:value("wep+open", "WEP Open System")
+ encr:value("wep+mixed", "WEP mixed")
+ encr:value("wep+shared", "WEP Shared Key")
+ encr.default = "wep+open"
+
+ wkey = m:field(Value, "key", translate("WEP-Passphrase"))
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
+ encr = m:field(ListValue, "encryption", translate("Encryption"))
+ encr:value("psk", "WPA PSK")
+ encr:value("psk-mixed", "WPA/WPA2 mixed")
+ encr:value("psk2", "WPA2 PSK")
+ encr.default = encr_psk[tonumber(m.hidden.wpa_version)] or "psk2"
+
+ ciph = m:field(ListValue, "cipher", translate("Cipher"))
+ ciph:value("auto", translate("Automatic"))
+ ciph:value("ccmp", translate("Force CCMP (AES)"))
+ ciph:value("tkip", translate("Force TKIP"))
+ ciph:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)"))
+ ciph.default = "auto"
+
+ wkey = m:field(Value, "key", translate("WPA-Passphrase"))
+ wkey.password = true
+ wkey.datatype = "wpakey"
+ elseif m.hidden.wpa_suites == "802.1X" then
+ encr = m:field(ListValue, "encryption", translate("Encryption"))
+ encr:value("wpa", "WPA Enterprise")
+ encr:value("wpa-mixed", "WPA/WPA2 Enterprise mixed")
+ encr:value("wpa2", "WPA2 Enterprise")
+ encr.default = encr_wpa[tonumber(m.hidden.wpa_version)] or "wpa2"
+
+ ciph = m:field(ListValue, "cipher", translate("Cipher"))
+ ciph:value("auto", translate("Automatic"))
+ ciph:value("ccmp", translate("Force CCMP (AES)"))
+ ciph:value("tkip", translate("Force TKIP"))
+ ciph:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)"))
+ ciph.default = "auto"
+
+ eaptype = m:field(ListValue, "eap_type", translate("EAP-Method"))
+ eaptype:value("tls", "TLS")
+ eaptype:value("ttls", "TTLS")
+ eaptype:value("peap", "PEAP")
+ eaptype:value("fast", "FAST")
+ eaptype.default = "peap"
+
+ authentication = m:field(ListValue, "auth", translate("Authentication"))
+ authentication:value("PAP")
+ authentication:value("CHAP")
+ authentication:value("MSCHAP")
+ authentication:value("MSCHAPV2")
+ authentication:value("EAP-GTC")
+ authentication:value("EAP-MD5")
+ authentication:value("EAP-MSCHAPV2")
+ authentication:value("EAP-TLS")
+ authentication.default = "EAP-MSCHAPV2"
+
+ ident = m:field(Value, "identity", translate("Identity"))
+
+ wkey = m:field(Value, "password", translate("Password"))
+ wkey.password = true
+ wkey.datatype = "wpakey"
+
+ cacert = m:field(Value, "ca_cert", translate("Path to CA-Certificate"))
+ cacert.rmempty = true
+
+ clientcert = m:field(Value, "client_cert", translate("Path to Client-Certificate"))
+ clientcert:depends("eap_type","tls")
+ clientcert.rmempty = true
+
+ privkey = m:field(Value, "priv_key", translate("Path to Private Key"))
+ privkey:depends("eap_type","tls")
+ privkey.rmempty = true
+
+ privkeypwd = m:field(Value, "priv_key_pwd", translate("Password of Private Key"))
+ privkeypwd:depends("eap_type","tls")
+ privkeypwd.datatype = "wpakey"
+ privkeypwd.password = true
+ privkeypwd.rmempty = true
+ end
end
function wssid.write(self, section, value)
@@ -50,15 +134,36 @@ function wssid.write(self, section, value)
network = trmiface,
device = m.hidden.device,
ssid = wssid:formvalue(section),
+ bssid = bssid:formvalue(section),
disabled = "1"
})
+
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, "encryption", encr:formvalue(section))
+ uci:set("wireless", newsection, "key", wkey:formvalue(section) or "")
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
+ if ciph:formvalue(section) ~= "auto" then
+ uci:set("wireless", newsection, "encryption", encr:formvalue(section) .. "+" .. ciph:formvalue(section))
+ else
+ uci:set("wireless", newsection, "encryption", encr:formvalue(section))
+ end
+ uci:set("wireless", newsection, "key", wkey:formvalue(section) or "")
+ elseif m.hidden.wpa_suites == "802.1X" then
+ if ciph:formvalue(section) ~= "auto" then
+ uci:set("wireless", newsection, "encryption", encr:formvalue(section) .. "+" .. ciph:formvalue(section))
+ else
+ uci:set("wireless", newsection, "encryption", encr:formvalue(section))
+ end
+ uci:set("wireless", newsection, "eap_type", eaptype:formvalue(section))
+ uci:set("wireless", newsection, "auth", authentication:formvalue(section))
+ uci:set("wireless", newsection, "identity", ident:formvalue(section) or "")
+ uci:set("wireless", newsection, "password", wkey:formvalue(section) or "")
+ uci:set("wireless", newsection, "ca_cert", cacert:formvalue(section) or "")
+ uci:set("wireless", newsection, "client_cert", clientcert:formvalue(section) or "")
+ uci:set("wireless", newsection, "priv_key", privkey:formvalue(section) or "")
+ uci:set("wireless", newsection, "priv_key_pwd", privkeypwd:formvalue(section) or "")
+ 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..b8e0f11b3a 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,8 +1,8 @@
-- 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")
m = SimpleForm("edit", translate("Edit Wireless Uplink Configuration"))
@@ -21,21 +21,108 @@ 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)"
- 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))
+ wssid.default = s.ssid or ""
+
+ bssid = m:field(Value, "bssid", translate("BSSID"))
+ bssid.datatype = "macaddr"
+ bssid.default = s.bssid or ""
+
+ s.cipher = "auto"
+ if string.match(s.encryption, '\+') and not string.match(s.encryption, '^wep') then
+ s.pos = string.find(s.encryption, '\+')
+ s.cipher = string.sub(s.encryption, s.pos + 1)
+ s.encryption = string.sub(s.encryption, 0, s.pos - 1)
end
- if s.encryption and (s.key or s.password) then
- wkey.password = true
- wkey.default = s.key or s.password
- if s.encryption == "wep" then
+
+ if s.encryption and s.encryption ~= "none" then
+ if string.match(s.encryption, '^wep') then
+ encr = m:field(ListValue, "encryption", translate("Encryption"))
+ encr:value("wep", "WEP")
+ encr:value("wep+open", "WEP Open System")
+ encr:value("wep+mixed", "WEP mixed")
+ encr:value("wep+shared", "WEP Shared Key")
+ encr.default = s.encryption
+
+ wkey = m:field(Value, "key", translate("Passphrase"))
wkey.datatype = "wepkey"
- else
+ elseif string.match(s.encryption, '^psk') then
+ encr = m:field(ListValue, "encryption", translate("Encryption"))
+ encr:value("psk", "WPA PSK")
+ encr:value("psk-mixed", "WPA/WPA2 mixed")
+ encr:value("psk2", "WPA2 PSK")
+ encr.default = s.encryption
+
+ ciph = m:field(ListValue, "cipher", translate("Cipher"))
+ ciph:value("auto", translate("Automatic"))
+ ciph:value("ccmp", translate("Force CCMP (AES)"))
+ ciph:value("tkip", translate("Force TKIP"))
+ ciph:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)"))
+ ciph.default = s.cipher
+
+ wkey = m:field(Value, "key", translate("Passphrase"))
+ wkey.datatype = "wpakey"
+ elseif string.match(s.encryption, '^wpa') then
+ encr = m:field(ListValue, "encryption", translate("Encryption"))
+ encr:value("wpa", "WPA Enterprise")
+ encr:value("wpa-mixed", "WPA/WPA2 Enterprise mixed")
+ encr:value("wpa2", "WPA2 Enterprise")
+ encr.default = s.encryption
+
+ ciph = m:field(ListValue, "cipher", translate("Cipher"))
+ ciph:value("auto", translate("Automatic"))
+ ciph:value("ccmp", translate("Force CCMP (AES)"))
+ ciph:value("tkip", translate("Force TKIP"))
+ ciph:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)"))
+ ciph.default = s.cipher
+
+ eaptype = m:field(ListValue, "eap_type", translate("EAP-Method"))
+ eaptype:value("tls", "TLS")
+ eaptype:value("ttls", "TTLS")
+ eaptype:value("peap", "PEAP")
+ eaptype:value("fast", "FAST")
+ eaptype.default = s.eap_type or "peap"
+
+ authentication = m:field(ListValue, "auth", translate("Authentication"))
+ authentication:value("PAP")
+ authentication:value("CHAP")
+ authentication:value("MSCHAP")
+ authentication:value("MSCHAPV2")
+ authentication:value("EAP-GTC")
+ authentication:value("EAP-MD5")
+ authentication:value("EAP-MSCHAPV2")
+ authentication:value("EAP-TLS")
+ authentication.default = s.auth or "EAP-MSCHAPV2"
+
+ ident = m:field(Value, "identity", translate("Identity"))
+ ident.default = s.identity or ""
+
+ wkey = m:field(Value, "password", translate("Passphrase"))
wkey.datatype = "wpakey"
+
+ cacert = m:field(Value, "ca_cert", translate("Path to CA-Certificate"))
+ cacert.rmempty = true
+ cacert.default = s.ca_cert or ""
+
+ clientcert = m:field(Value, "client_cert", translate("Path to Client-Certificate"))
+ clientcert:depends("eap_type","tls")
+ clientcert.rmempty = true
+ clientcert.default = s.client_cert or ""
+
+ privkey = m:field(Value, "priv_key", translate("Path to Private Key"))
+ privkey:depends("eap_type","tls")
+ privkey.rmempty = true
+ privkey.default = s.priv_key or ""
+
+ privkeypwd = m:field(Value, "priv_key_pwd", translate("Password of Private Key"))
+ privkeypwd:depends("eap_type","tls")
+ privkeypwd.datatype = "wpakey"
+ privkeypwd.password = true
+ privkeypwd.rmempty = true
+ privkeypwd.default = s.priv_key_pwd or ""
end
+ wkey.password = true
+ wkey.default = s.key or s.password
end
else
m.on_cancel()
@@ -43,10 +130,33 @@ 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.encryption and s.encryption ~= "none" then
+ if string.match(s.encryption, '^wep') then
+ uci:set("wireless", m.hidden.cfg, "encryption", encr:formvalue(section))
+ uci:set("wireless", m.hidden.cfg, "key", wkey:formvalue(section) or "")
+ elseif string.match(s.encryption, '^psk') then
+ if ciph:formvalue(section) ~= "auto" then
+ uci:set("wireless", m.hidden.cfg, "encryption", encr:formvalue(section) .. "+" .. ciph:formvalue(section))
+ else
+ uci:set("wireless", m.hidden.cfg, "encryption", encr:formvalue(section))
+ end
+ uci:set("wireless", m.hidden.cfg, "key", wkey:formvalue(section) or "")
+ elseif string.match(s.encryption, '^wpa') then
+ if ciph:formvalue(section) ~= "auto" then
+ uci:set("wireless", m.hidden.cfg, "encryption", encr:formvalue(section) .. "+" .. ciph:formvalue(section))
+ else
+ uci:set("wireless", m.hidden.cfg, "encryption", encr:formvalue(section))
+ end
+ uci:set("wireless", m.hidden.cfg, "eap_type", eaptype:formvalue(section))
+ uci:set("wireless", m.hidden.cfg, "auth", authentication:formvalue(section))
+ uci:set("wireless", m.hidden.cfg, "identity", ident:formvalue(section) or "")
+ uci:set("wireless", m.hidden.cfg, "password", wkey:formvalue(section) or "")
+ uci:set("wireless", m.hidden.cfg, "ca_cert", cacert:formvalue(section) or "")
+ uci:set("wireless", m.hidden.cfg, "client_cert", clientcert:formvalue(section) or "")
+ uci:set("wireless", m.hidden.cfg, "priv_key", privkey:formvalue(section) or "")
+ uci:set("wireless", m.hidden.cfg, "priv_key_pwd", privkeypwd:formvalue(section) or "")
+ end
end
uci:save("wireless")
uci:commit("wireless")