返回首页
最后修改于:2018-03-27 20:03:12
修改
原理
ubus call hostapd.wlan1 del_client "{'addr':'AC:0D:1B:D0:60:29', 'reason':5, 'deauth':false, 'ban_time':0}"
步骤
修改
/usr/lib/lua/luci/view/admin_status/index.htm
@line 809
<fieldset class="cbi-section">
<legend><%:Associated Stations%></legend>
<table class="cbi-section-table valign-middle" id="wifi_assoc_table">
<tr class="cbi-section-table-titles">
<th class="cbi-section-table-cell"> </th>
<th class="cbi-section-table-cell"><%:Network%></th>
<th class="cbi-section-table-cell"><%:MAC-Address%></th>
<th class="cbi-section-table-cell"><%:Host%></th>
<th class="cbi-section-table-cell"><%:Signal%> / <%:Noise%></th>
<th class="cbi-section-table-cell"><%:RX Rate%> / <%:TX Rate%></th>
<th class="cbi-section-table-cell">Kick</th>
</tr>
<tr class="cbi-section-table-row">
<td colspan="6"><em><br /><%:Collecting data...%></em></td>
</tr>
</table>
</fieldset>
@file end
<script type="text/javascript">//<![CDATA[
function kick_client(iface, mac) {
(new XHR()).post('<%=url('admin/status/overview/kick')%>/', { token: '<%=token%>',
iface: iface,
mac: mac },
function(x)
{
}
);
}
//]]></script>
@line 602
tr.insertCell(-1).innerHTML = String.format(
'<span class="ifacebadge" title="<%:Signal%>: %d <%:dBm%> / <%:Noise%>: %d <%:dBm%> / <%:SNR%>: %d"><img src="%s" /> %d / %d <%:dBm%></span>',
assoclist[i].signal, assoclist[i].noise, assoclist[i].signal - assoclist[i].noise,
icon,
assoclist[i].signal, assoclist[i].noise
);
tr.insertCell(-1).innerHTML = wifirate(assoclist[i], true).nobr() + '<br />' + wifirate(assoclist[i], false).nobr();
tr.insertCell(-1).innerHTML = String.format("<input class='cbi-button cbi-input-remove' type='button' value='Kick' onclick='kick_client(\"%s\", \"%s\")' />", assoclist[i].ifname, assoclist[i].bssid)
修改
/usr/lib/lua/luci/controller/admin/status.lua
function index()
entry({"admin", "status"}, alias("admin", "status", "overview"), _("Status"), 20).index = true
entry({"admin", "status", "overview"}, template("admin_status/index"), _("Overview"), 1)
entry({"admin", "status", "overview", "kick"}, post("act_kick")).leaf = true
.....
end
-- 不要忘记增加这个方法,这个方法是踢人的!
function act_kick()
local iface = luci.http.formvalue("iface")
local mac = luci.http.formvalue("mac")
if iface and mac then
local cmd = string.format("ubus call hostapd.%s del_client \"{'addr':'%s', 'reason':5, 'deauth':false, 'ban_time':0}\"", iface, mac)
luci.sys.call(cmd)
end
luci.http.status(200, "OK")
end
重启OpenWrt
效果图