Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
mirrors
openwrt
luci
提交
7ae988f3
L
luci
项目概览
mirrors
/
openwrt
/
luci
大约 1 年 前同步成功
通知
43
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
luci
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7ae988f3
编写于
10月 19, 2010
作者:
J
Jo-Philipp Wich
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modules/admin-full: rework wifi configuration
上级
1a3533cb
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
174 addition
and
37 deletion
+174
-37
modules/admin-full/luasrc/controller/admin/network.lua
modules/admin-full/luasrc/controller/admin/network.lua
+67
-5
modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua
modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua
+30
-32
modules/admin-full/luasrc/view/admin_network/wifi_status.htm
modules/admin-full/luasrc/view/admin_network/wifi_status.htm
+77
-0
未找到文件。
modules/admin-full/luasrc/controller/admin/network.lua
浏览文件 @
7ae988f3
...
...
@@ -41,17 +41,22 @@ function index()
end
if
has_wifi
and
has_wifi
.
size
>
0
then
local
page
=
entry
({
"admin"
,
"network"
,
"wireless"
},
arcombine
(
template
(
"admin_network/wifi_overview"
),
cbi
(
"admin_network/wifi"
)),
i18n
(
"Wifi"
),
15
)
local
page
page
=
entry
({
"admin"
,
"network"
,
"wireless"
},
arcombine
(
template
(
"admin_network/wifi_overview"
),
cbi
(
"admin_network/wifi"
)),
i18n
(
"Wifi"
),
15
)
page
.
leaf
=
true
page
.
subindex
=
true
local
page
=
entry
({
"admin"
,
"network"
,
"wireless_join"
},
call
(
"wifi_join"
),
nil
,
16
)
page
=
entry
({
"admin"
,
"network"
,
"wireless_join"
},
call
(
"wifi_join"
),
nil
,
16
)
page
.
leaf
=
true
page
=
entry
({
"admin"
,
"network"
,
"wireless_add"
},
call
(
"wifi_add"
),
nil
,
16
)
page
.
leaf
=
true
local
page
=
entry
({
"admin"
,
"network"
,
"wireless_add"
},
call
(
"wifi_add
"
),
nil
,
16
)
page
=
entry
({
"admin"
,
"network"
,
"wireless_delete"
},
call
(
"wifi_delete
"
),
nil
,
16
)
page
.
leaf
=
true
local
page
=
entry
({
"admin"
,
"network"
,
"wireless_delete"
},
call
(
"wifi_delete
"
),
nil
,
16
)
page
=
entry
({
"admin"
,
"network"
,
"wireless_status"
},
call
(
"wifi_status
"
),
nil
,
16
)
page
.
leaf
=
true
end
...
...
@@ -156,3 +161,60 @@ function wifi_delete(network)
uci
:
save
(
"wireless"
)
luci
.
http
.
redirect
(
luci
.
dispatcher
.
build_url
(
"admin/network/wireless"
))
end
function
wifi_status
()
local
function
jsondump
(
x
)
if
x
==
nil
then
luci
.
http
.
write
(
"null"
)
elseif
type
(
x
)
==
"table"
then
local
k
,
v
if
type
(
next
(
x
))
==
"number"
then
luci
.
http
.
write
(
"[ "
)
for
k
,
v
in
ipairs
(
x
)
do
jsondump
(
v
)
if
next
(
x
,
k
)
then
luci
.
http
.
write
(
", "
)
end
end
luci
.
http
.
write
(
" ]"
)
else
luci
.
http
.
write
(
"{ "
)
for
k
,
v
in
pairs
(
x
)
do
luci
.
http
.
write
(
"%q: "
%
k
)
jsondump
(
v
)
if
next
(
x
,
k
)
then
luci
.
http
.
write
(
", "
)
end
end
luci
.
http
.
write
(
" }"
)
end
elseif
type
(
x
)
==
"number"
or
type
(
x
)
==
"boolean"
then
luci
.
http
.
write
(
tostring
(
x
))
elseif
type
(
x
)
==
"string"
then
luci
.
http
.
write
(
"%q"
%
tostring
(
x
))
end
end
local
path
=
luci
.
dispatcher
.
context
.
requestpath
local
dev
=
path
[
#
path
]
local
iw
=
luci
.
sys
.
wifi
.
getiwinfo
(
dev
)
if
iw
then
local
f
local
j
=
{
}
for
_
,
f
in
ipairs
({
"channel"
,
"frequency"
,
"txpower"
,
"bitrate"
,
"signal"
,
"noise"
,
"quality"
,
"quality_max"
,
"mode"
,
"ssid"
,
"bssid"
,
"country"
,
"encryption"
,
"mbssid_support"
,
"ifname"
})
do
j
[
f
]
=
iw
[
f
]
end
luci
.
http
.
prepare_content
(
"application/json"
)
jsondump
(
j
)
return
end
luci
.
http
.
status
(
404
,
"No such device"
)
end
modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua
浏览文件 @
7ae988f3
...
...
@@ -58,16 +58,9 @@ end
m
.
title
=
ww
:
get_i18n
(
wnet
)
local
iw
=
nil
local
tx_powers
=
nil
m
.
uci
:
foreach
(
"wireless"
,
"wifi-iface"
,
function
(
s
)
if
s
.
device
==
arg
[
1
]
and
not
iw
then
iw
=
luci
.
sys
.
wifi
.
getiwinfo
(
s
.
ifname
or
s
.
device
)
tx_powers
=
iw
.
txpwrlist
or
{
}
end
end
)
local
iw
=
luci
.
sys
.
wifi
.
getiwinfo
(
arg
[
1
])
local
tx_powers
=
iw
.
txpwrlist
or
{
}
s
=
m
:
section
(
NamedSection
,
arg
[
1
],
"wifi-device"
,
translate
(
"Device Configuration"
))
s
.
addremove
=
false
...
...
@@ -82,7 +75,11 @@ back.value = ""
back.titleref = luci.dispatcher.build_url("admin", "network", "wireless")
]]
en
=
s
:
taboption
(
"general"
,
Flag
,
"disabled"
,
translate
(
"enable"
))
st
=
s
:
taboption
(
"general"
,
DummyValue
,
"__status"
,
translate
(
"Status"
))
st
.
template
=
"admin_network/wifi_status"
st
.
ifname
=
arg
[
1
]
en
=
s
:
taboption
(
"general"
,
Flag
,
"disabled"
,
translate
(
"Enable device"
))
en
.
enabled
=
"0"
en
.
disabled
=
"1"
en
.
rmempty
=
false
...
...
@@ -91,7 +88,6 @@ function en.cfgvalue(self, section)
return
Flag
.
cfgvalue
(
self
,
section
)
or
"0"
end
s
:
taboption
(
"general"
,
DummyValue
,
"type"
,
translate
(
"Type"
))
local
hwtype
=
m
:
get
(
arg
[
1
],
"type"
)
local
htcaps
=
m
:
get
(
arg
[
1
],
"ht_capab"
)
and
true
or
false
...
...
@@ -102,7 +98,9 @@ local nsantenna = m:get(arg[1], "antenna")
ch
=
s
:
taboption
(
"general"
,
Value
,
"channel"
,
translate
(
"Channel"
))
ch
:
value
(
"auto"
,
translate
(
"auto"
))
for
_
,
f
in
ipairs
(
iw
and
iw
.
freqlist
or
luci
.
sys
.
wifi
.
channels
())
do
if
not
f
.
restricted
then
ch
:
value
(
f
.
channel
,
"%i (%.3f GHz)"
%
{
f
.
channel
,
f
.
mhz
/
1000
})
end
end
...
...
@@ -626,9 +624,9 @@ if wnet then
nasid
.
rmempty
=
true
eaptype
=
s
:
taboption
(
"encryption"
,
ListValue
,
"eap_type"
,
translate
(
"EAP-Method"
))
eaptype
:
value
(
"
TLS
"
)
eaptype
:
value
(
"
TTLS
"
)
eaptype
:
value
(
"
PEAP
"
)
eaptype
:
value
(
"
tls
"
)
eaptype
:
value
(
"
ttls
"
)
eaptype
:
value
(
"
peap
"
)
eaptype
:
depends
({
mode
=
"sta"
,
encryption
=
"wpa"
})
eaptype
:
depends
({
mode
=
"sta"
,
encryption
=
"wpa2"
})
...
...
@@ -637,12 +635,12 @@ if wnet then
cacert
:
depends
({
mode
=
"sta"
,
encryption
=
"wpa2"
})
privkey
=
s
:
taboption
(
"encryption"
,
FileUpload
,
"priv_key"
,
translate
(
"Path to Private Key"
))
privkey
:
depends
({
mode
=
"sta"
,
eap_type
=
"
TLS
"
,
encryption
=
"wpa2"
})
privkey
:
depends
({
mode
=
"sta"
,
eap_type
=
"
TLS
"
,
encryption
=
"wpa"
})
privkey
:
depends
({
mode
=
"sta"
,
eap_type
=
"
tls
"
,
encryption
=
"wpa2"
})
privkey
:
depends
({
mode
=
"sta"
,
eap_type
=
"
tls
"
,
encryption
=
"wpa"
})
privkeypwd
=
s
:
taboption
(
"encryption"
,
Value
,
"priv_key_pwd"
,
translate
(
"Password of Private Key"
))
privkeypwd
:
depends
({
mode
=
"sta"
,
eap_type
=
"
TLS
"
,
encryption
=
"wpa2"
})
privkeypwd
:
depends
({
mode
=
"sta"
,
eap_type
=
"
TLS
"
,
encryption
=
"wpa"
})
privkeypwd
:
depends
({
mode
=
"sta"
,
eap_type
=
"
tls
"
,
encryption
=
"wpa2"
})
privkeypwd
:
depends
({
mode
=
"sta"
,
eap_type
=
"
tls
"
,
encryption
=
"wpa"
})
auth
=
s
:
taboption
(
"encryption"
,
Value
,
"auth"
,
translate
(
"Authentication"
))
...
...
@@ -650,23 +648,23 @@ if wnet then
auth
:
value
(
"CHAP"
)
auth
:
value
(
"MSCHAP"
)
auth
:
value
(
"MSCHAPV2"
)
auth
:
depends
({
mode
=
"sta"
,
eap_type
=
"
PEAP
"
,
encryption
=
"wpa2"
})
auth
:
depends
({
mode
=
"sta"
,
eap_type
=
"
PEAP
"
,
encryption
=
"wpa"
})
auth
:
depends
({
mode
=
"sta"
,
eap_type
=
"
TTLS
"
,
encryption
=
"wpa2"
})
auth
:
depends
({
mode
=
"sta"
,
eap_type
=
"
TTLS
"
,
encryption
=
"wpa"
})
auth
:
depends
({
mode
=
"sta"
,
eap_type
=
"
peap
"
,
encryption
=
"wpa2"
})
auth
:
depends
({
mode
=
"sta"
,
eap_type
=
"
peap
"
,
encryption
=
"wpa"
})
auth
:
depends
({
mode
=
"sta"
,
eap_type
=
"
ttls
"
,
encryption
=
"wpa2"
})
auth
:
depends
({
mode
=
"sta"
,
eap_type
=
"
ttls
"
,
encryption
=
"wpa"
})
identity
=
s
:
taboption
(
"encryption"
,
Value
,
"identity"
,
translate
(
"Identity"
))
identity
:
depends
({
mode
=
"sta"
,
eap_type
=
"
PEAP
"
,
encryption
=
"wpa2"
})
identity
:
depends
({
mode
=
"sta"
,
eap_type
=
"
PEAP
"
,
encryption
=
"wpa"
})
identity
:
depends
({
mode
=
"sta"
,
eap_type
=
"
TTLS
"
,
encryption
=
"wpa2"
})
identity
:
depends
({
mode
=
"sta"
,
eap_type
=
"
TTLS
"
,
encryption
=
"wpa"
})
identity
:
depends
({
mode
=
"sta"
,
eap_type
=
"
peap
"
,
encryption
=
"wpa2"
})
identity
:
depends
({
mode
=
"sta"
,
eap_type
=
"
peap
"
,
encryption
=
"wpa"
})
identity
:
depends
({
mode
=
"sta"
,
eap_type
=
"
ttls
"
,
encryption
=
"wpa2"
})
identity
:
depends
({
mode
=
"sta"
,
eap_type
=
"
ttls
"
,
encryption
=
"wpa"
})
password
=
s
:
taboption
(
"encryption"
,
Value
,
"password"
,
translate
(
"Password"
))
password
:
depends
({
mode
=
"sta"
,
eap_type
=
"
PEAP
"
,
encryption
=
"wpa2"
})
password
:
depends
({
mode
=
"sta"
,
eap_type
=
"
PEAP
"
,
encryption
=
"wpa"
})
password
:
depends
({
mode
=
"sta"
,
eap_type
=
"
TTLS
"
,
encryption
=
"wpa2"
})
password
:
depends
({
mode
=
"sta"
,
eap_type
=
"
TTLS
"
,
encryption
=
"wpa"
})
password
:
depends
({
mode
=
"sta"
,
eap_type
=
"
peap
"
,
encryption
=
"wpa2"
})
password
:
depends
({
mode
=
"sta"
,
eap_type
=
"
peap
"
,
encryption
=
"wpa"
})
password
:
depends
({
mode
=
"sta"
,
eap_type
=
"
ttls
"
,
encryption
=
"wpa2"
})
password
:
depends
({
mode
=
"sta"
,
eap_type
=
"
ttls
"
,
encryption
=
"wpa"
})
end
end
...
...
modules/admin-full/luasrc/view/admin_network/wifi_status.htm
0 → 100644
浏览文件 @
7ae988f3
<
%+
cbi
/
valueheader
%
>
<script
type=
"text/javascript"
>
<!
[
CDATA
[
var
iwxhr
=
new
XHR
();
window
.
setInterval
(
function
()
{
iwxhr
.
get
(
'
<%=luci.dispatcher.build_url("admin", "network", "wireless_status", self.ifname)%>
'
,
null
,
function
(
x
)
{
var
iw
=
x
.
responseText
?
eval
(
'
(
'
+
x
.
responseText
+
'
)
'
)
:
null
;
if
(
iw
)
{
var
is_assoc
=
(
iw
.
bssid
&&
iw
.
channel
);
var
p
=
(
100
/
iw
.
quality_max
*
iw
.
quality
);
var
q
=
is_assoc
?
p
:
-
1
;
var
icon
;
if
(
q
<
0
)
icon
=
"
<%=resource%>/icons/signal-none.png
"
;
else
if
(
q
==
0
)
icon
=
"
<%=resource%>/icons/signal-0.png
"
;
else
if
(
q
<
25
)
icon
=
"
<%=resource%>/icons/signal-0-25.png
"
;
else
if
(
q
<
50
)
icon
=
"
<%=resource%>/icons/signal-25-50.png
"
;
else
if
(
q
<
75
)
icon
=
"
<%=resource%>/icons/signal-50-75.png
"
;
else
icon
=
"
<%=resource%>/icons/signal-75-100.png
"
;
var
s
=
document
.
getElementById
(
'
<%=self.option%>-iw-signal
'
);
if
(
s
)
s
.
innerHTML
=
String
.
format
(
'
<img src="%s" title="Signal: %d dBm / Noise: %d dBm" /><br />
'
+
'
<small>%d%%</small>
'
,
icon
,
iw
.
signal
,
iw
.
noise
,
p
);
var
d
=
document
.
getElementById
(
'
<%=self.option%>-iw-description
'
);
if
(
d
&&
is_assoc
)
d
.
innerHTML
=
String
.
format
(
'
<strong><%:Mode%>:</strong> %s |
'
+
'
<strong><%:SSID%>:</strong> %s<br />
'
+
'
<strong><%:BSSID%>:</strong> %s |
'
+
'
<strong><%:Encryption%>:</strong> %s<br />
'
+
'
<strong><%:Channel%>:</strong> %d (%.3f GHz) |
'
+
'
<strong><%:Tx-Power%>:</strong> %d dBm<br />
'
+
'
<strong><%:Signal%>:</strong> %d dBm |
'
+
'
<strong><%:Noise%>:</strong> %d dBm<br />
'
+
'
<strong><%:Bit Rate%>:</strong> %.1f MBit/s |
'
+
'
<strong><%:Country%>:</strong> %s
'
,
iw
.
mode
,
iw
.
ssid
,
iw
.
bssid
,
iw
.
encryption
?
iw
.
encryption
.
description
:
'
<%:None%>
'
,
iw
.
channel
,
iw
.
frequency
?
(
iw
.
frequency
/
1000
)
:
0
,
iw
.
txpower
,
iw
.
signal
,
iw
.
noise
,
iw
.
bitrate
?
(
iw
.
bitrate
/
1000
)
:
0
,
iw
.
country
);
else
if
(
d
)
d
.
innerHTML
=
'
<%:Wireless is disabled or not associated%>
'
;
}
}
)
},
5000
);
]]
>
</script>
<table>
<tr
class=
"cbi-section-table"
>
<td></td>
<td
class=
"cbi-value-field"
style=
"width:16px; padding:3px"
id=
"<%=self.option%>-iw-signal"
>
<img
src=
"<%=resource%>/icons/signal-none.png"
title=
"<%:Not associated%>"
/><br
/>
<small>
0%
</small>
</td>
<td
class=
"cbi-value-field"
style=
"vertical-align:middle; text-align:left; padding:3px"
id=
"<%=self.option%>-iw-description"
>
<em><
%
:Collecting
data...
%
></em>
</td>
</tr>
</table>
<
%+
cbi
/
valuefooter
%
>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录