diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2011-11-07 06:30:36 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2011-11-07 06:30:36 +0000 |
commit | 0b7eb82eb607b13d716067e2c9d240e659313d28 (patch) | |
tree | 44f43773d2c5d4c15f8d267402ddca7910e48543 /modules/admin-full/luasrc/model | |
parent | b93fe699073f9c51ae555235b0d37f056d048528 (diff) |
modules/admin-full: add option to override the WPA cipher (#303)
Diffstat (limited to 'modules/admin-full/luasrc/model')
-rw-r--r-- | modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua b/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua index dfca7d27d9..447f0e3e15 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua @@ -577,11 +577,56 @@ encr:depends({mode="ap-wds"}) encr:depends({mode="sta-wds"}) encr:depends({mode="mesh"}) +cipher = s:taboption("encryption", ListValue, "cipher", translate("Cipher")) +cipher.rmempty = false +cipher:depends({encryption="wpa"}) +cipher:depends({encryption="wpa2"}) +cipher:depends({encryption="psk"}) +cipher:depends({encryption="psk2"}) +cipher:depends({encryption="wpa-mixed"}) +cipher:depends({encryption="psk-mixed"}) +cipher:value("auto", translate("auto")) +cipher:value("ccmp", translate("Force CCMP (AES)")) +cipher:value("tkip", translate("Force TKIP")) +cipher:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)")) + +function encr.cfgvalue(self, section) + local v = tostring(ListValue.cfgvalue(self, section)) + if v == "wep" then + return "wep-open" + elseif v and v:match("%+") then + return (v:gsub("%+.+$", "")) + end + return v +end + function encr.write(self, section, value) + local e = tostring(encr:formvalue(section)) + local c = tostring(cipher:formvalue(section)) if value == "wpa" or value == "wpa2" then self.map.uci:delete("wireless", section, "key") end - self.map.uci:set("wireless", section, "encryption", value) + if e and (c == "tkip" or c == "ccmp" or c == "tkip+ccmp") then + e = e .. "+" .. c + end + self.map:set(section, "encryption", e) +end + +function cipher.cfgvalue(self, section) + local v = tostring(ListValue.cfgvalue(encr, section)) + if v and v:match("%+") then + v = v:gsub("^[^%+]+%+", "") + if v == "aes" then v = "ccmp" + elseif v == "tkip+aes" then v = "tkip+ccmp" + elseif v == "aes+tkip" then v = "tkip+ccmp" + elseif v == "ccmp+tkip" then v = "tkip+ccmp" + end + end + return v +end + +function cipher.write(self, section) + return encr:write(section) end |