luci-app-travelmate: sync with travelmate 0.9.5
[project/luci.git] / applications / luci-app-travelmate / luasrc / model / cbi / travelmate / wifi_add.lua
index dcfa17c..921e1b8 100644 (file)
@@ -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