gluon-web-private-wifi: enable WPA3 configuration

This allows a user to enable WPA3-Personal and WPA2-WPA3-MM for the
private WiFi in case it is supported by the platform.
This commit is contained in:
David Bauer 2019-09-23 23:31:37 +02:00 committed by David Bauer
parent 86b5104790
commit c7fa1927aa
4 changed files with 102 additions and 3 deletions

View File

@ -13,18 +13,42 @@ msgstr ""
msgid "8-63 characters" msgid "8-63 characters"
msgstr "8-63 Zeichen" msgstr "8-63 Zeichen"
msgid "Disabled"
msgstr "Deaktiviert"
msgid "Enabled" msgid "Enabled"
msgstr "Aktiviert" msgstr "Aktiviert"
msgid "Encryption"
msgstr "Verschlüsselung"
msgid "Key" msgid "Key"
msgstr "Schlüssel" msgstr "Schlüssel"
msgid "Management Frame Protection"
msgstr ""
msgid "Name (SSID)" msgid "Name (SSID)"
msgstr "Name (SSID)" msgstr "Name (SSID)"
msgid "Optional"
msgstr ""
msgid "Private WLAN" msgid "Private WLAN"
msgstr "Privates WLAN" msgstr "Privates WLAN"
msgid "Required"
msgstr "Aktiviert"
msgid "WPA2"
msgstr ""
msgid "WPA2 / WPA3"
msgstr ""
msgid "WPA3"
msgstr ""
msgid "" msgid ""
"Your node can additionally extend your private network by bridging the WAN " "Your node can additionally extend your private network by bridging the WAN "
"interface with a separate WLAN. This feature is completely independent of " "interface with a separate WLAN. This feature is completely independent of "

View File

@ -13,18 +13,42 @@ msgstr ""
msgid "8-63 characters" msgid "8-63 characters"
msgstr "8-63 charactères" msgstr "8-63 charactères"
msgid "Disabled"
msgstr ""
msgid "Enabled" msgid "Enabled"
msgstr "Activé" msgstr "Activé"
msgid "Encryption"
msgstr ""
msgid "Key" msgid "Key"
msgstr "Clé" msgstr "Clé"
msgid "Management Frame Protection"
msgstr ""
msgid "Name (SSID)" msgid "Name (SSID)"
msgstr "Nom (SSID)" msgstr "Nom (SSID)"
msgid "Optional"
msgstr ""
msgid "Private WLAN" msgid "Private WLAN"
msgstr "Wi-Fi privé" msgstr "Wi-Fi privé"
msgid "Required"
msgstr ""
msgid "WPA2"
msgstr ""
msgid "WPA2 / WPA3"
msgstr ""
msgid "WPA3"
msgstr ""
msgid "" msgid ""
"Your node can additionally extend your private network by bridging the WAN " "Your node can additionally extend your private network by bridging the WAN "
"interface with a separate WLAN. This feature is completely independent of " "interface with a separate WLAN. This feature is completely independent of "

View File

@ -4,18 +4,42 @@ msgstr "Content-Type: text/plain; charset=UTF-8"
msgid "8-63 characters" msgid "8-63 characters"
msgstr "" msgstr ""
msgid "Disabled"
msgstr ""
msgid "Enabled" msgid "Enabled"
msgstr "" msgstr ""
msgid "Encryption"
msgstr ""
msgid "Key" msgid "Key"
msgstr "" msgstr ""
msgid "Management Frame Protection"
msgstr ""
msgid "Name (SSID)" msgid "Name (SSID)"
msgstr "" msgstr ""
msgid "Optional"
msgstr ""
msgid "Private WLAN" msgid "Private WLAN"
msgstr "" msgstr ""
msgid "Required"
msgstr ""
msgid "WPA2"
msgstr ""
msgid "WPA2 / WPA3"
msgstr ""
msgid "WPA3"
msgstr ""
msgid "" msgid ""
"Your node can additionally extend your private network by bridging the WAN " "Your node can additionally extend your private network by bridging the WAN "
"interface with a separate WLAN. This feature is completely independent of " "interface with a separate WLAN. This feature is completely independent of "

View File

@ -1,5 +1,6 @@
local uci = require("simple-uci").cursor() local uci = require("simple-uci").cursor()
local util = require 'gluon.util' local util = require 'gluon.util'
local platform = require 'gluon.platform'
-- where to read the configuration from -- where to read the configuration from
local primary_iface = 'wan_radio0' local primary_iface = 'wan_radio0'
@ -26,6 +27,25 @@ key:depends(enabled, true)
key.datatype = "wpakey" key.datatype = "wpakey"
key.default = uci:get('wireless', primary_iface, "key") key.default = uci:get('wireless', primary_iface, "key")
local encryption = s:option(ListValue, "encryption", translate("Encryption"))
encryption:depends(enabled, true)
encryption:value("psk2", translate("WPA2"))
if platform.device_supports_wpa3() then
encryption:value("psk3-mixed", translate("WPA2 / WPA3"))
encryption:value("psk3", translate("WPA3"))
end
encryption.default = uci:get('wireless', primary_iface, 'encryption') or "psk2"
local mfp = s:option(ListValue, "mfp", translate("Management Frame Protection"))
mfp:depends(enabled, true)
mfp:value("0", translate("Disabled"))
if platform.device_supports_mfp(uci) then
mfp:value("1", translate("Optional"))
mfp:value("2", translate("Required"))
end
mfp.default = uci:get('wireless', primary_iface, 'ieee80211w') or "0"
function f:write() function f:write()
util.foreach_radio(uci, function(radio, index) util.foreach_radio(uci, function(radio, index)
local radio_name = radio['.name'] local radio_name = radio['.name']
@ -34,16 +54,23 @@ function f:write()
if enabled.data then if enabled.data then
local macaddr = util.get_wlan_mac(uci, radio, index, 4) local macaddr = util.get_wlan_mac(uci, radio, index, 4)
uci:section('wireless', "wifi-iface", name, { uci:section('wireless', 'wifi-iface', name, {
device = radio_name, device = radio_name,
network = "wan", network = 'wan',
mode = 'ap', mode = 'ap',
encryption = 'psk2', encryption = encryption.data,
ssid = ssid.data, ssid = ssid.data,
key = key.data, key = key.data,
macaddr = macaddr, macaddr = macaddr,
disabled = false, disabled = false,
}) })
-- hostapd-mini won't start in case 802.11w is configured
if platform.device_supports_mfp(uci) then
uci:set('wireless', name, 'ieee80211w', mfp.data)
else
uci:delete('wireless', name, 'ieee80211w')
end
else else
uci:set('wireless', name, "disabled", true) uci:set('wireless', name, "disabled", true)
end end