diff options
Diffstat (limited to 'applications/luci-app-travelmate')
10 files changed, 541 insertions, 156 deletions
diff --git a/applications/luci-app-travelmate/luasrc/controller/travelmate.lua b/applications/luci-app-travelmate/luasrc/controller/travelmate.lua index a418a8ec61..efbe619a43 100644 --- a/applications/luci-app-travelmate/luasrc/controller/travelmate.lua +++ b/applications/luci-app-travelmate/luasrc/controller/travelmate.lua @@ -3,9 +3,9 @@ module("luci.controller.travelmate", package.seeall) -local fs = require("nixio.fs") -local util = require("luci.util") -local i18n = require("luci.i18n") +local fs = require("nixio.fs") +local util = require("luci.util") +local i18n = require("luci.i18n") local templ = require("luci.template") function index() @@ -30,6 +30,12 @@ function index() end function logread() - local logfile = util.trim(util.exec("logread -e 'travelmate'")) + local logfile + + if nixio.fs.access("/var/log/messages") then + logfile = util.trim(util.exec("cat /var/log/messages | grep 'travelmate'")) + else + logfile = util.trim(util.exec("logread -e 'travelmate'")) + end templ.render("travelmate/logread", {title = i18n.translate("Travelmate Logfile"), content = logfile}) end 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..a3dd0a2b94 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) -- 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,100 @@ 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.")) + 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 +130,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") diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm index 53493a18fb..2233a15e31 100644 --- a/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm +++ b/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm @@ -6,5 +6,8 @@ font-size: 12px; font-family: monospace; resize: none; + white-space: pre; + overflow-wrap: normal; + overflow-x: scroll; } </style> diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm index cbb6c189b8..11c36d427c 100644 --- a/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm +++ b/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm @@ -4,8 +4,8 @@ This is free software, licensed under the Apache License, Version 2.0 -%> <%- - local write = io.write - local uci = require("luci.model.uci").cursor() + local write = io.write + local uci = require("luci.model.uci").cursor() local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan" -%> @@ -22,6 +22,7 @@ This is free software, licensed under the Apache License, Version 2.0 <tr class="cbi-section-table-titles"> <th class="cbi-section-table-cell" style="text-align:left"><%:Device%></th> <th class="cbi-section-table-cell" style="text-align:left"><%:SSID%></th> + <th class="cbi-section-table-cell" style="text-align:left"><%:BSSID%></th> <th class="cbi-section-table-cell" style="text-align:left"><%:Encryption%></th> <th class="cbi-section-table-cell" style="text-align:center" colspan="2"><%:Actions%></th> </tr> @@ -30,9 +31,10 @@ This is free software, licensed under the Apache License, Version 2.0 local iface = s.network or "" if iface == trmiface then local section = s['.name'] or "" - local device = s.device or "" - local ssid = s.ssid or "" - local encryption = s.encryption or "" + local device = s.device or "-" + local ssid = s.ssid or "-" + local bssid = s.bssid or "-" + local encryption = s.encryption or "-" local disabled = s.disabled or "" local style = "color:#000000" if disabled == "0" then @@ -42,14 +44,15 @@ This is free software, licensed under the Apache License, Version 2.0 <tr class="cbi-section-table-row cbi-rowstyle-1" style="<%=style%>"> <td style="text-align:left"><%=device%></td> <td style="text-align:left"><%=ssid%></td> + <td style="text-align:left"><%=bssid%></td> <td style="text-align:left"><%=encryption%></td> <td class="cbi-value-field" style="width:70px;text-align:right"> - <input class="cbi-button cbi-button-up" type="button" value="" onclick="location.href='<%=url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>;dir=up'" alt="<%:Move up%>" title="<%:Move up%>"/> - <input class="cbi-button cbi-button-down" type="button" value="" onclick="location.href='<%=url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>;dir=down'" alt="<%:Move down%>" title="<%:Move down%>"/> + <input class="cbi-button cbi-button-up" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>;dir=up'" alt="<%:Move up%>" title="<%:Move up%>"/> + <input class="cbi-button cbi-button-down" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>;dir=down'" alt="<%:Move down%>" title="<%:Move down%>"/> </td> <td class="cbi-value-field" style="width:150px;text-align:right"> - <input type="button" class="cbi-button cbi-button-edit" onclick="location.href='<%=url('admin/services/travelmate/wifiedit')%>?cfg=<%=section%>'" title="<%:Edit this Uplink%>" value="<%:Edit%>"/> - <input type="button" class="cbi-button cbi-button-remove" onclick="location.href='<%=url('admin/services/travelmate/wifidelete')%>?cfg=<%=section%>'" title="<%:Delete this Uplink%>" value="<%:Delete%>"/> + <input type="button" class="cbi-button cbi-button-edit" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiedit')%>?cfg=<%=section%>'" title="<%:Edit this Uplink%>" value="<%:Edit%>"/> + <input type="button" class="cbi-button cbi-button-remove" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifidelete')%>?cfg=<%=section%>'" title="<%:Delete this Uplink%>" value="<%:Delete%>"/> </td> </tr> <% @@ -63,7 +66,7 @@ This is free software, licensed under the Apache License, Version 2.0 uci:foreach("wireless", "wifi-device", function(s) local device = s[".name"] %> - <form class="inline" action="<%=url('admin/services/travelmate/wifiscan')%>" method="post"> + <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiscan')%>" method="post"> <input type="hidden" name="device" value="<%=device%>"/> <input type="hidden" name="token" value="<%=token%>"/> <input type="submit" class="cbi-button cbi-button-find" title="<%:Find and join network on %><%=device%>" value="<%:Scan %><%=device%>"/> diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm index af90c18d23..a8f63a17e2 100644 --- a/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm +++ b/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm @@ -7,7 +7,8 @@ This is free software, licensed under the Apache License, Version 2.0 local sys = require("luci.sys") local utl = require("luci.util") local dev = luci.http.formvalue("device") - local iw = luci.sys.wifi.getiwinfo(dev) + local iw = luci.sys.wifi.getiwinfo(dev) + local wpa_label = {translate("WPA"), translate("WPA2"), translate("WPA/WPA2")} if not iw then luci.http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) @@ -17,7 +18,7 @@ This is free software, licensed under the Apache License, Version 2.0 if info.wep == true then return translate("WEP") elseif info.wpa > 0 then - return translate("WPA / WPA2") + return "%s (%s/%s)" %{wpa_label[info.wpa], table.concat(info.auth_suites), table.concat(info.group_ciphers)} elseif info.enabled then return translate("Unknown") else @@ -28,7 +29,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.ssid and qc > 0 and qm > 0 then + if info.bssid and qc > 0 and qm > 0 then return math.floor((100 / qm) * qc) else return 0 @@ -44,13 +45,17 @@ This is free software, licensed under the Apache License, Version 2.0 <table class="cbi-section-table" style="empty-cells:hide"> <tr class="cbi-section-table-titles"> <th class="cbi-section-table-cell" style="text-align:left"><%:Uplink SSID%></th> + <th class="cbi-section-table-cell" style="text-align:left"><%:Uplink BSSID%></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> </tr> <% 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> + <%=net.ssid and utl.pcdata(net.ssid) or "<em>%s</em>" % translate("hidden")%> + </td> + <td class="cbi-value-field" style="text-align:left"> + <%=net.bssid and utl.pcdata(net.bssid)%> </td> <td class="cbi-value-field" style="text-align:left"> <%=format_wifi_encryption(net.encryption)%> @@ -59,15 +64,16 @@ This is free software, licensed under the Apache License, Version 2.0 <%=percent_wifi_signal(net)%> % </td> <td class="cbi-value-field" style="width:100px;text-align:right"> - <form class="inline" action="<%=url('admin/services/travelmate/wifiadd')%>" method="post"> + <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiadd')%>" method="post"> <input type="hidden" name="token" value="<%=token%>"/> <input type="hidden" name="device" value="<%=utl.pcdata(dev)%>"/> <input type="hidden" name="ssid" value="<%=utl.pcdata(net.ssid)%>"/> + <input type="hidden" name="bssid" value="<%=utl.pcdata(net.bssid)%>"/> <input type="hidden" name="wep" value="<%=net.encryption.wep and 1 or 0%>"/> <% if net.encryption.wpa then %> - <input type="hidden" name="wpa_version" value="<%=net.encryption.wpa%>"/> - <% for _, v in ipairs(net.encryption.auth_suites) do %><input type="hidden" name="wpa_suites" value="<%=v%>"/> - <% end; end %> + <input type="hidden" name="wpa_version" value="<%=net.encryption.wpa%>"/> + <% for _, v in ipairs(net.encryption.auth_suites) do %><input type="hidden" name="wpa_suites" value="<%=v%>"/><% end %> + <% end %> <input class="cbi-button cbi-button-apply" type="submit" value="<%:Add Uplink%>"/> </form> </td> @@ -76,12 +82,12 @@ This is free software, licensed under the Apache License, Version 2.0 </table> </fieldset> <div class="cbi-page-actions right"> - <form class="inline" action="<%=url('admin/services/travelmate/wifiscan')%>" method="post"> + <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiscan')%>" method="post"> <input type="hidden" name="token" value="<%=token%>"/> <input type="hidden" name="device" value="<%=utl.pcdata(dev)%>"/> <input class="cbi-button cbi-input-find" type="submit" value="<%:Repeat scan%>"/> </form> - <form class="inline" action="<%=url('admin/services/travelmate/stations')%>" method="post"> + <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/stations')%>" method="post"> <input class="cbi-button cbi-button-reset" type="submit" value="<%:Back to overview%>"/> </form> </div> diff --git a/applications/luci-app-travelmate/po/ja/travelmate.po b/applications/luci-app-travelmate/po/ja/travelmate.po index febdbd5833..1158966e0b 100644 --- a/applications/luci-app-travelmate/po/ja/travelmate.po +++ b/applications/luci-app-travelmate/po/ja/travelmate.po @@ -7,7 +7,7 @@ msgstr "" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.3\n" +"X-Generator: Poedit 2.0.5\n" "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n" "Plural-Forms: nplurals=1; plural=0;\n" "Language: ja\n" @@ -31,9 +31,21 @@ msgstr "Travelmate の処理が開始されるまでの、追加の遅延時間 msgid "Advanced" msgstr "詳細設定" +msgid "Authentication" +msgstr "認証" + +msgid "Automatic" +msgstr "自動" + +msgid "BSSID" +msgstr "BSSID" + msgid "Back to overview" msgstr "概要へ戻る" +msgid "Cipher" +msgstr "暗号化方式" + msgid "" "Configuration of the travelmate package to to enable travel router " "functionality." @@ -61,6 +73,9 @@ msgstr "このアップリンクを削除" msgid "Device" msgstr "デバイス" +msgid "EAP-Method" +msgstr "EAP メソッド" + msgid "Edit" msgstr "編集" @@ -107,6 +122,19 @@ msgstr "" "詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a> を" "確認してください。" +msgid "Force CCMP (AES)" +msgstr "CCMP (AES)" + +msgid "Force TKIP" +msgstr "TKIP" + +msgid "Force TKIP and CCMP (AES)" +msgstr "TKIP と CCMP (AES)" + +msgid "Force a manual uplink rescan / reconnect in 'trigger' mode." +msgstr "" +"'trigger' モード時に、手動でアップリンクの再スキャンと再接続を行います。" + msgid "How long should travelmate wait for a successful wlan interface reload." msgstr "" "無線LAN インターフェースのリロードが成功するまでの、Travelmate の待機時間で" @@ -115,6 +143,9 @@ msgstr "" msgid "How many times should travelmate try to connect to an Uplink." msgstr "Travelmate がアップリンクへの接続を試行する回数です。" +msgid "Identity" +msgstr "ID" + msgid "Input file not found, please check your configuration." msgstr "入力ファイルが見つかりません。設定を確認してください。" @@ -143,12 +174,8 @@ msgstr "下へ" msgid "Move up" msgstr "上へ" -msgid "" -"Name of the uplink interface that triggers travelmate processing in 'manual' " -"mode." -msgstr "" -"'manual' モード時に Travelmate の処理のトリガーとなる、アップリンク インター" -"フェースの名前です。" +msgid "Name of the used uplink interface." +msgstr "使用されるアップリンク インターフェースの名前です。" msgid "Online Status" msgstr "オンライン ステータス" @@ -166,8 +193,23 @@ msgstr "実行間隔" msgid "Overview" msgstr "概要" -msgid "Passphrase (%s)" -msgstr "暗号フレーズ (%s)" +msgid "Passphrase" +msgstr "パスフレーズ" + +msgid "Password" +msgstr "パスワード" + +msgid "Password of Private Key" +msgstr "秘密鍵のパスワード" + +msgid "Path to CA-Certificate" +msgstr "CA 証明書へのパス" + +msgid "Path to Client-Certificate" +msgstr "クライアント証明書へのパス" + +msgid "Path to Private Key" +msgstr "秘密鍵へのパス" msgid "" "Provides an overview of all configured uplinks for the travelmate interface " @@ -191,7 +233,7 @@ msgstr "再スキャン" msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'." msgstr "Travelmate が指定された無線に接続するよう制御します。(例: 'radio0')" -msgid "Runtime information" +msgid "Runtime Information" msgstr "実行情報" msgid "SSID" @@ -209,8 +251,8 @@ msgstr "スキャン:" msgid "Signal strength" msgstr "信号強度" -msgid "Specify the secret encryption key here." -msgstr "暗号キーを設定します。" +msgid "Station ID (SSID/BSSID)" +msgstr "ステーション ID (SSID / BSSID)" msgid "Station Interface" msgstr "ステーション インターフェース" @@ -218,9 +260,6 @@ msgstr "ステーション インターフェース" msgid "Station Radio" msgstr "ステーション電波" -msgid "Station SSID" -msgstr "ステーション SSID" - msgid "" "This form allows you to modify the content of the main firewall " "configuration file (/etc/config/firewall)." @@ -281,6 +320,9 @@ msgstr "不明" msgid "Uplink / Trigger interface" msgstr "アップリンク / トリガー インターフェース" +msgid "Uplink BSSID" +msgstr "アップリンク BSSID" + msgid "Uplink SSID" msgstr "アップリンク SSID" @@ -293,14 +335,20 @@ msgstr "ログファイルの確認" msgid "WEP" msgstr "WEP" -msgid "WEP passphrase" -msgstr "WEP 暗号キー" +msgid "WEP-Passphrase" +msgstr "WEP パスフレーズ" + +msgid "WPA" +msgstr "WPA" + +msgid "WPA-Passphrase" +msgstr "WPA パスフレーズ" -msgid "WPA / WPA2" -msgstr "WPA / WPA2" +msgid "WPA/WPA2" +msgstr "WPA/WPA2" -msgid "WPA passphrase" -msgstr "WPA 暗号キー" +msgid "WPA2" +msgstr "WPA2" msgid "Wireless Scan" msgstr "無線スキャン" diff --git a/applications/luci-app-travelmate/po/pt-br/travelmate.po b/applications/luci-app-travelmate/po/pt-br/travelmate.po index 41fab70149..e36860eaa1 100644 --- a/applications/luci-app-travelmate/po/pt-br/travelmate.po +++ b/applications/luci-app-travelmate/po/pt-br/travelmate.po @@ -31,9 +31,21 @@ msgstr "" msgid "Advanced" msgstr "" +msgid "Authentication" +msgstr "" + +msgid "Automatic" +msgstr "" + +msgid "BSSID" +msgstr "" + msgid "Back to overview" msgstr "" +msgid "Cipher" +msgstr "" + msgid "" "Configuration of the travelmate package to to enable travel router " "functionality." @@ -58,6 +70,9 @@ msgstr "" msgid "Device" msgstr "" +msgid "EAP-Method" +msgstr "" + msgid "Edit" msgstr "" @@ -102,12 +117,27 @@ msgid "" "documentation</a>" msgstr "" +msgid "Force CCMP (AES)" +msgstr "" + +msgid "Force TKIP" +msgstr "" + +msgid "Force TKIP and CCMP (AES)" +msgstr "" + +msgid "Force a manual uplink rescan / reconnect in 'trigger' mode." +msgstr "" + msgid "How long should travelmate wait for a successful wlan interface reload." msgstr "" msgid "How many times should travelmate try to connect to an Uplink." msgstr "" +msgid "Identity" +msgstr "" + msgid "Input file not found, please check your configuration." msgstr "" @@ -134,9 +164,7 @@ msgstr "" msgid "Move up" msgstr "" -msgid "" -"Name of the uplink interface that triggers travelmate processing in 'manual' " -"mode." +msgid "Name of the used uplink interface." msgstr "" msgid "Online Status" @@ -155,7 +183,22 @@ msgstr "" msgid "Overview" msgstr "" -msgid "Passphrase (%s)" +msgid "Passphrase" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Password of Private Key" +msgstr "" + +msgid "Path to CA-Certificate" +msgstr "" + +msgid "Path to Client-Certificate" +msgstr "" + +msgid "Path to Private Key" msgstr "" msgid "" @@ -176,7 +219,7 @@ msgstr "" msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'." msgstr "" -msgid "Runtime information" +msgid "Runtime Information" msgstr "" msgid "SSID" @@ -194,7 +237,7 @@ msgstr "" msgid "Signal strength" msgstr "" -msgid "Specify the secret encryption key here." +msgid "Station ID (SSID/BSSID)" msgstr "" msgid "Station Interface" @@ -203,9 +246,6 @@ msgstr "" msgid "Station Radio" msgstr "" -msgid "Station SSID" -msgstr "" - msgid "" "This form allows you to modify the content of the main firewall " "configuration file (/etc/config/firewall)." @@ -255,6 +295,9 @@ msgstr "" msgid "Uplink / Trigger interface" msgstr "" +msgid "Uplink BSSID" +msgstr "" + msgid "Uplink SSID" msgstr "" @@ -267,13 +310,19 @@ msgstr "" msgid "WEP" msgstr "" -msgid "WEP passphrase" +msgid "WEP-Passphrase" +msgstr "" + +msgid "WPA" +msgstr "" + +msgid "WPA-Passphrase" msgstr "" -msgid "WPA / WPA2" +msgid "WPA/WPA2" msgstr "" -msgid "WPA passphrase" +msgid "WPA2" msgstr "" msgid "Wireless Scan" diff --git a/applications/luci-app-travelmate/po/templates/travelmate.pot b/applications/luci-app-travelmate/po/templates/travelmate.pot index a9ceafe237..d1047242fe 100644 --- a/applications/luci-app-travelmate/po/templates/travelmate.pot +++ b/applications/luci-app-travelmate/po/templates/travelmate.pot @@ -20,9 +20,21 @@ msgstr "" msgid "Advanced" msgstr "" +msgid "Authentication" +msgstr "" + +msgid "Automatic" +msgstr "" + +msgid "BSSID" +msgstr "" + msgid "Back to overview" msgstr "" +msgid "Cipher" +msgstr "" + msgid "" "Configuration of the travelmate package to to enable travel router " "functionality." @@ -47,6 +59,9 @@ msgstr "" msgid "Device" msgstr "" +msgid "EAP-Method" +msgstr "" + msgid "Edit" msgstr "" @@ -91,12 +106,27 @@ msgid "" "documentation</a>" msgstr "" +msgid "Force CCMP (AES)" +msgstr "" + +msgid "Force TKIP" +msgstr "" + +msgid "Force TKIP and CCMP (AES)" +msgstr "" + +msgid "Force a manual uplink rescan / reconnect in 'trigger' mode." +msgstr "" + msgid "How long should travelmate wait for a successful wlan interface reload." msgstr "" msgid "How many times should travelmate try to connect to an Uplink." msgstr "" +msgid "Identity" +msgstr "" + msgid "Input file not found, please check your configuration." msgstr "" @@ -123,9 +153,7 @@ msgstr "" msgid "Move up" msgstr "" -msgid "" -"Name of the uplink interface that triggers travelmate processing in 'manual' " -"mode." +msgid "Name of the used uplink interface." msgstr "" msgid "Online Status" @@ -144,7 +172,22 @@ msgstr "" msgid "Overview" msgstr "" -msgid "Passphrase (%s)" +msgid "Passphrase" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Password of Private Key" +msgstr "" + +msgid "Path to CA-Certificate" +msgstr "" + +msgid "Path to Client-Certificate" +msgstr "" + +msgid "Path to Private Key" msgstr "" msgid "" @@ -165,7 +208,7 @@ msgstr "" msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'." msgstr "" -msgid "Runtime information" +msgid "Runtime Information" msgstr "" msgid "SSID" @@ -183,7 +226,7 @@ msgstr "" msgid "Signal strength" msgstr "" -msgid "Specify the secret encryption key here." +msgid "Station ID (SSID/BSSID)" msgstr "" msgid "Station Interface" @@ -192,9 +235,6 @@ msgstr "" msgid "Station Radio" msgstr "" -msgid "Station SSID" -msgstr "" - msgid "" "This form allows you to modify the content of the main firewall " "configuration file (/etc/config/firewall)." @@ -244,6 +284,9 @@ msgstr "" msgid "Uplink / Trigger interface" msgstr "" +msgid "Uplink BSSID" +msgstr "" + msgid "Uplink SSID" msgstr "" @@ -256,13 +299,19 @@ msgstr "" msgid "WEP" msgstr "" -msgid "WEP passphrase" +msgid "WEP-Passphrase" +msgstr "" + +msgid "WPA" +msgstr "" + +msgid "WPA-Passphrase" msgstr "" -msgid "WPA / WPA2" +msgid "WPA/WPA2" msgstr "" -msgid "WPA passphrase" +msgid "WPA2" msgstr "" msgid "Wireless Scan" |