Backported wpa_supplicant/hostapd checks for WiFi Encryption configuration
authorSteven Barth <steven@midlink.org>
Sun, 7 Sep 2008 23:56:32 +0000 (23:56 +0000)
committerSteven Barth <steven@midlink.org>
Sun, 7 Sep 2008 23:56:32 +0000 (23:56 +0000)
i18n/english/luasrc/i18n/wifi.en.lua
i18n/english/luasrc/i18n/wifi.en.xml
i18n/german/luasrc/i18n/wifi.de.lua
i18n/german/luasrc/i18n/wifi.de.xml
modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua
modules/admin-mini/luasrc/controller/mini/network.lua
modules/admin-mini/luasrc/model/cbi/mini/wifi.lua

index 4d1b4a23c52b4a3bd1cce2221fb771b1b1f0a3ed..2a0ef02e917e1ff5a61cda609f0873a764ddf4a1 100644 (file)
@@ -32,3 +32,4 @@ wifi_ff = 'Fast Frames'
 wifi_wmm = 'WMM Mode'
 wifi_xr = 'XR Support'
 wifi_ar = 'AR Support'
+wifi_wpareq = 'WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP and ad-hoc mode) to be installed.'
index fa9c7b09bd2d9bf664e4a8dadff78e91d3bcf962..3e3f18a2b75a4763e128412b9e18c16e8cc868e4 100644 (file)
@@ -37,4 +37,6 @@
 <i18n:msg xml:id="wifi_xr">XR Support</i18n:msg>
 <i18n:msg xml:id="wifi_ar">AR Support</i18n:msg>
 
+<i18n:msg xml:id="wifi_wpareq">WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP and ad-hoc mode) to be installed.</i18n:msg>
+
 </i18n:msgs>
\ No newline at end of file
index 03825fae9129fb4ff05472fd5b1756f1e19d2e5f..e16ec1e09586531b15596e0aeffb01ebed1544d4 100644 (file)
@@ -32,3 +32,4 @@ wifi_ff = 'Schnelle Frames'
 wifi_wmm = 'WMM Modus'
 wifi_xr = 'XR-Unterstützung'
 wifi_ar = 'AR-Unterstützung'
+wifi_wpareq = 'Für WPA-Verschlüsselung muss wpa_supplicant (für Clientmodus) oder hostapd (für AP und Ad-hoc-Modus) installiert sein.'
index ea6b34cfe9b166d193b71aba837d052d44fc0df8..5b35f6554f278dac7823125bad35779a76c332b3 100644 (file)
@@ -37,4 +37,6 @@
 <i18n:msg xml:id="wifi_xr">XR-Unterstützung</i18n:msg>
 <i18n:msg xml:id="wifi_ar">AR-Unterstützung</i18n:msg>
 
+<i18n:msg xml:id="wifi_wpareq">Für WPA-Verschlüsselung muss wpa_supplicant (für Clientmodus) oder hostapd (für AP und Ad-hoc-Modus) installiert sein.</i18n:msg>
+
 </i18n:msgs>
\ No newline at end of file
index cbcc8110e895a143688bde524b05a855cabfd876..0e5d85dbe12d7fe684765b2d5367230b8741a38d 100644 (file)
@@ -163,6 +163,7 @@ if hwtype == "atheros" then
        wds = s:option(Flag, "wds", translate("a_w_wds"))
        wds:depends({mode="ap"})
        wds:depends({mode="sta"})
+       wds.rmempty = true
        wdssep = s:option(Flag, "wdssep", translate("wifi_wdssep"))
        wdssep:depends({mode="ap", wds="1"})
        wdssep.optional = true
@@ -232,14 +233,42 @@ end
 ------------------- WiFI-Encryption -------------------
 
 encr = s:option(ListValue, "encryption", translate("encryption"))
+encr:depends({mode="ap"})
+encr:depends({mode="sta"})
+encr:depends({mode="adhoc"})
+encr:depends({mode="ahdemo"})
+encr:depends({mode="wds"})
+
 encr:value("none", "No Encryption")
 encr:value("wep", "WEP")
-encr:value("psk", "WPA-PSK")
-encr:value("psk2", "WPA2-PSK")
 
 if hwtype == "atheros" or hwtype == "mac80211" then
-       encr:value("wpa", "WPA-EAP", {mode="ap"}, {mode="sta"})
-       encr:value("wpa2i", "WPA2-EAP", {mode="ap"}, {mode="sta"})
+       local supplicant = luci.fs.mtime("/usr/sbin/wpa_supplicant")
+       local hostapd = luci.fs.mtime("/usr/sbin/hostapd")
+       
+       if hostapd and supplicant then
+               encr:value("psk", "WPA-PSK")
+               encr:value("psk2", "WPA2-PSK")
+               encr:value("wpa", "WPA-EAP", {mode="ap"}, {mode="sta"})
+               encr:value("wpa2i", "WPA2-EAP", {mode="ap"}, {mode="sta"})
+       elseif hostapd and not supplicant then
+               encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="adhoc"}, {mode="ahdemo"})
+               encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="adhoc"}, {mode="ahdemo"})
+               encr:value("wpa", "WPA-EAP", {mode="ap"})
+               encr:value("wpa2i", "WPA2-EAP", {mode="ap"})
+               encr.description = translate("wifi_wpareq")
+       elseif not hostapd and supplicant then
+               encr:value("psk", "WPA-PSK", {mode="sta"})
+               encr:value("psk2", "WPA2-PSK", {mode="sta"})
+               encr:value("wpa", "WPA-EAP", {mode="sta"})
+               encr:value("wpa2i", "WPA2-EAP", {mode="sta"})   
+               encr.description = translate("wifi_wpareq")
+       else
+               encr.description = translate("wifi_wpareq")
+       end
+elseif hwtype == "broadcom" then
+       encr:value("psk", "WPA-PSK")
+       encr:value("psk2", "WPA2-PSK")
 end
 
 encr:depends("mode", "ap")
index 1ea6dc52cb93b0636c480dba73a45ffa325ee48d..e1a82e6c5a1c30f5ac6970bfdf1e3aed23a7bfc7 100644 (file)
@@ -21,6 +21,6 @@ function index()
 
        entry({"mini", "network"}, alias("mini", "network", "index"), i18n("network"), 20)
        entry({"mini", "network", "index"}, cbi("mini/network"), i18n("general"), 1)
-       entry({"mini", "network", "wifi"}, cbi("mini/wifi"), i18n("wifi"), 10)
+       entry({"mini", "network", "wifi"}, cbi("mini/wifi"), i18n("wifi"), 10).i18n="wifi"
        entry({"mini", "network", "dhcp"}, cbi("mini/dhcp"), "DHCP", 20)
 end
\ No newline at end of file
index e36d39be94f2def2165933727cb00aa2a8d24ab2..cbf3d6a254f60169cea7c50be207750c67246a06 100644 (file)
@@ -208,10 +208,33 @@ end
 encr = s:option(ListValue, "encryption", translate("encryption"))
 encr:value("none", "No Encryption")
 encr:value("wep", "WEP")
-encr:value("psk", "WPA-PSK")
-encr:value("wpa", "WPA-Radius", {mode="ap"})
-encr:value("psk2", "WPA2-PSK")
-encr:value("wpa2i", "WPA2-Radius", {mode="ap"})
+
+if hwtype == "atheros" or hwtype == "mac80211" then
+       local supplicant = luci.fs.mtime("/usr/sbin/wpa_supplicant")
+       local hostapd = luci.fs.mtime("/usr/sbin/hostapd")
+
+       if hostapd and supplicant then
+               encr:value("psk", "WPA-PSK")
+               encr:value("psk2", "WPA2-PSK")
+               encr:value("wpa", "WPA-Radius", {mode="ap"})
+               encr:value("wpa2i", "WPA2-Radius", {mode="ap"})
+       elseif hostapd and not supplicant then
+               encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="adhoc"})
+               encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="adhoc"})
+               encr:value("wpa", "WPA-Radius", {mode="ap"})
+               encr:value("wpa2i", "WPA2-Radius", {mode="ap"})
+               encr.description = translate("wifi_wpareq")
+       elseif not hostapd and supplicant then
+               encr:value("psk", "WPA-PSK", {mode="sta"})
+               encr:value("psk2", "WPA2-PSK", {mode="sta"})
+               encr.description = translate("wifi_wpareq")
+       else
+               encr.description = translate("wifi_wpareq")
+       end
+elseif hwtype == "broadcom" then
+       encr:value("psk", "WPA-PSK")
+       encr:value("psk2", "WPA2-PSK")
+end
 
 key = s:option(Value, "key", translate("key"))
 key:depends("encryption", "wep")