Huuuuuuuuuuuge rewrite of the Wireless Configuration
[project/luci.git] / modules / admin-full / luasrc / model / cbi / admin_network / wifi.lua
1 --[[
2 LuCI - Lua Configuration Interface
3
4 Copyright 2008 Steven Barth <steven@midlink.org>
5
6 Licensed under the Apache License, Version 2.0 (the "License");
7 you may not use this file except in compliance with the License.
8 You may obtain a copy of the License at
9
10         http://www.apache.org/licenses/LICENSE-2.0
11
12 $Id$
13 ]]--
14 require("luci.tools.webadmin")
15 arg[1] = arg[1] or ""
16
17 m = Map("wireless", translate("networks"), translate("a_w_networks1"))
18
19 s = m:section(NamedSection, arg[1], "wifi-device", translate("device") .. " " .. arg[1])
20 --s.addremove = true
21
22 en = s:option(Flag, "disabled", translate("enable"))
23 en.enabled = "0"
24 en.disabled = "1"
25
26 function en.cfgvalue(self, section)
27         return Flag.cfgvalue(self, section) or "0"
28 end
29
30 t = s:option(DummyValue, "type", translate("type"))
31
32 mode = s:option(ListValue, "mode", translate("mode"))
33 mode:value("", "standard")
34 mode:value("11b", "802.11b")
35 mode:value("11g", "802.11g")
36 mode:value("11a", "802.11a")
37 mode:value("11bg", "802.11b+g")
38 mode.rmempty = true
39
40 s:option(Value, "channel", translate("a_w_channel"))
41
42 s:option(Value, "txantenna", translate("a_w_txantenna")).optional = true
43
44 s:option(Value, "rxantenna", translate("a_w_rxantenna")).optional = true
45
46 s:option(Value, "distance", translate("distance"),
47         translate("a_w_distance1")).optional = true
48
49 s:option(Value, "diversity", translate("a_w_diversity")):depends("type", "atheros")
50         
51 country = s:option(Value, "country", translate("a_w_countrycode"))
52 country.optional = true
53 country:depends("type", "broadcom")
54
55 maxassoc = s:option(Value, "maxassoc", translate("a_w_connlimit"))
56 maxassoc:depends("type", "broadcom")
57 maxassoc.optional = true
58
59
60
61 s = m:section(TypedSection, "wifi-iface", translate("interfaces"))
62 s.addremove = true
63 s.anonymous = true
64 s:depends("device", arg[1])
65 s.defaults.device = arg[1]
66
67 s:option(Value, "ssid", translate("a_w_netid")).maxlength = 32
68
69 network = s:option(ListValue, "network", translate("network"), translate("a_w_network1"))
70 network:value("")
71 luci.tools.webadmin.cbi_add_networks(network)
72
73 mode = s:option(ListValue, "mode", translate("mode"))
74 mode:value("ap", translate("a_w_ap"))
75 mode:value("adhoc", translate("a_w_adhoc"))
76 mode:value("ahdemo", translate("a_w_ahdemo"))
77 mode:value("sta", translate("a_w_client"))
78 mode:value("wds", translate("a_w_wds"))
79 mode:value("monitor", translate("a_w_monitor"))
80
81 s:option(Value, "bssid", "BSSID").optional = true
82
83 s:option(Value, "txpower", translate("a_w_txpwr"), "dbm").rmempty = true
84
85 s:option(Flag, "frameburst", translate("a_w_brcmburst")).optional = true
86 s:option(Flag, "bursting", translate("a_w_athburst")).optional = true
87
88
89 encr = s:option(ListValue, "encryption", translate("encryption"))
90 encr:value("none", "keine")
91 encr:value("wep", "WEP")
92 encr:value("PSK", "WPA-PSK")
93 encr:value("WPA", "WPA-EAP", {mode="ap"}, {mode="sta"})
94 encr:value("PSK2", "WPA2-PSK")
95 encr:value("WPA2", "WPA2-EAP", {mode="ap"}, {mode="sta"})
96 encr:depends("mode", "ap")
97 encr:depends("mode", "sta")
98 encr:depends("mode", "wds")
99
100 server = s:option(Value, "server", translate("a_w_radiussrv"))
101 server:depends({mode="ap", encryption="WPA"})
102 server:depends({mode="ap", encryption="WPA2"})
103 server.rmempty = true
104
105 port = s:option(Value, "port", translate("a_w_radiusport"))
106 port:depends({mode="ap", encryption="WPA"})
107 port:depends({mode="ap", encryption="WPA2"})
108 port.rmempty = true
109
110 key = s:option(Value, "key", translate("key"))
111 key:depends("encryption", "wep")
112 key:depends("encryption", "PSK")
113 key:depends({mode="ap", encryption="WPA"})
114 key:depends("encryption", "PSK2")
115 key:depends({mode="ap", encryption="WPA2"})
116 key.rmempty = true
117
118 nasid = s:option(Value, "nasid", translate("a_w_nasid"))
119 nasid:depends({mode="ap", encryption="WPA"})
120 nasid:depends({mode="ap", encryption="WPA2"})
121 nasid.rmempty = true
122
123 eaptype = s:option(ListValue, "eap_type", translate("a_w_eaptype"))
124 eaptype:value("TLS")
125 eaptype:value("PEAP")
126 eaptype:depends({mode="sta", encryption="WPA"})
127 eaptype:depends({mode="sta", encryption="WPA2"})
128
129 cacert = s:option(Value, "ca_cert", translate("a_w_cacert"))
130 cacert:depends({mode="sta", encryption="WPA"})
131 cacert:depends({mode="sta", encryption="WPA2"})
132
133 privkey = s:option(Value, "priv_key", translate("a_w_tlsprivkey"))
134 privkey:depends({mode="sta", eap_type="TLS", encryption="WPA2"})
135 privkey:depends({mode="sta", eap_type="TLS", encryption="WPA"})
136
137 privkeypwd = s:option(Value, "priv_key_pwd", translate("a_w_tlsprivkeypwd"))
138 privkeypwd:depends({mode="sta", eap_type="TLS", encryption="WPA2"})
139 privkeypwd:depends({mode="sta", eap_type="TLS", encryption="WPA"})
140
141
142 auth = s:option(Value, "auth", translate("a_w_peapauth"))
143 auth:depends({mode="sta", eap_type="PEAP", encryption="WPA2"})
144 auth:depends({mode="sta", eap_type="PEAP", encryption="WPA"})
145
146 identity = s:option(Value, "identity", translate("a_w_peapidentity"))
147 identity:depends({mode="sta", eap_type="PEAP", encryption="WPA2"})
148 identity:depends({mode="sta", eap_type="PEAP", encryption="WPA"})
149
150 password = s:option(Value, "password", translate("a_w_peappassword"))
151 password:depends({mode="sta", eap_type="PEAP", encryption="WPA2"})
152 password:depends({mode="sta", eap_type="PEAP", encryption="WPA"})
153
154
155
156
157 s:option(Flag, "isolate", translate("a_w_apisolation"), translate("a_w_apisolation1")).optional = true
158
159 s:option(Flag, "hidden", translate("a_w_hideessid")).optional = true
160
161
162
163 return m